Lines Matching +full:ipv4 +full:- +full:no +full:- +full:config +full:- +full:for +full:- +full:cpp
1 diff --git a/src/DEPS b/src/DEPS
3 --- a/src/DEPS
5 @@ -253,7 +253,7 @@ vars = {
6 # Three lines of non-changing comments so that
9 - 'angle_revision': '29b222a3c07c541cafa459ae6886134da3493a4b',
11 # Three lines of non-changing comments so that
14 @@ -292,7 +292,7 @@ vars = {
15 # Three lines of non-changing comments so that
18 - 'freetype_revision': '034e5dbf92ea3a7ea7c9322e47a3a50ff23f7b55',
20 # Three lines of non-changing comments so that
23 @@ -300,7 +300,7 @@ vars = {
24 # Three lines of non-changing comments so that
27 - 'harfbuzz_revision': '0acf466c44143de2e9b9cc0375cb25ec67cb132f',
29 # Three lines of non-changing comments so that
32 diff --git a/src/base/tracing/protos/chrome_track_event.proto b/src/base/tracing/protos/chrome_trac…
34 --- a/src/base/tracing/protos/chrome_track_event.proto
36 @@ -514,6 +514,7 @@ message BackForwardCacheCanStoreDocumentResult {
44 diff --git a/src/cc/paint/paint_op_reader.cc b/src/cc/paint/paint_op_reader.cc
46 --- a/src/cc/paint/paint_op_reader.cc
48 @@ -329,6 +329,10 @@ void PaintOpReader::Read(PaintImage* image) {
59 diff --git a/src/cc/paint/paint_op_reader.h b/src/cc/paint/paint_op_reader.h
61 --- a/src/cc/paint/paint_op_reader.h
63 @@ -180,8 +180,9 @@ class CC_PAINT_EXPORT PaintOpReader {
69 - kMaxValue = kZeroSkColorFilterBytes,
74 diff --git a/src/chrome/browser/media/webrtc/region_capture_browsertest.cc b/src/chrome/browser/med…
76 --- a/src/chrome/browser/media/webrtc/region_capture_browsertest.cc
78 @@ -40,6 +40,11 @@
90 @@ -67,7 +72,7 @@ enum {
94 -enum {
99 @@ -102,6 +107,9 @@ struct TabInfo {
104 + browser->tab_strip_model()->ActivateTabAt(tab_strip_index);
108 web_contents->GetMainFrame(), "startCaptureFromEmbeddedFrame();",
109 @@ -155,6 +163,8 @@ struct TabInfo {
118 @@ -215,20 +225,18 @@ class RegionCaptureBrowserTest : public WebRtcTestBase {
122 - // Main page (for self-capture).
123 + // Other page (for other-tab-capture).
129 + // Main page (for self-capture). Instantiate it second to help it get focus.
135 - if (!self_capture) {
136 - // Other page (for other-tab-capture).
137 - SetUpPage("/webrtc/region_capture_other_main.html",
138 - servers_[kOtherPageTopLevelDocument].get(),
139 - "/webrtc/region_capture_other_embedded.html",
140 - servers_[kOtherPageEmbeddedDocument].get(), &tabs_[kOtherTab]);
141 - }
142 -
144 command_line_->AppendSwitchASCII(
146 @@ -376,28 +384,6 @@ IN_PROC_BROWSER_TEST_F(
147 EXPECT_EQ(tab.CropTo(""), "top-level-crop-success");
150 -IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest,
151 - CropToRejectedIfElementInAnotherTabTopLevel) {
152 - SetUpTest(Frame::kTopLevelDocument, /*self_capture=*/false);
153 -
154 - const std::string crop_id =
155 - tabs_[kOtherTab].ProduceCropId(Frame::kTopLevelDocument);
156 - ASSERT_THAT(crop_id, IsValidCropId());
157 -
158 - EXPECT_EQ(tabs_[kMainTab].CropTo(crop_id), "top-level-crop-error");
159 -}
160 -
161 -IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest,
162 - CropToRejectedIfElementInAnotherTabEmbeddedFrame) {
163 - SetUpTest(Frame::kTopLevelDocument, /*self_capture=*/false);
164 -
165 - const std::string crop_id =
166 - tabs_[kOtherTab].ProduceCropId(Frame::kEmbeddedFrame);
167 - ASSERT_THAT(crop_id, IsValidCropId());
168 -
169 - EXPECT_EQ(tabs_[kMainTab].CropTo(crop_id), "top-level-crop-error");
170 -}
171 -
175 @@ -495,4 +481,85 @@ IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest,
176 "embedded-produce-crop-id-error");
179 +// Suite of tests ensuring that only self-capture may crop, and that it may
196 + // from the top-level document of said tab, or an embedded frame.
202 + // Whether the element on whose crop-ID we'll call cropTo():
203 + // * |target_element_tab_| - whether it's in kMainTab or in kOtherTab.
204 + // * |target_frame_| - whether it's in the top-level or an embedded frame.
206 + const Frame target_frame_; // Top-level or embedded frame.
234 + // Prevent test false-positive - ensure that both tabs participating in the
235 + // test have at least one associated crop-ID, or otherwise they would not
237 + // To make things even clearer, ensure both the top-level and the embedded
238 + // frame have produced crop-IDs. (This should not be necessary, but is
239 + // done as an extra buffer against false-positives.)
254 + {capturing_entity_ == Frame::kTopLevelDocument ? "top-level" : "embedded",
255 + "-", expect_permitted ? "crop-success" : "crop-error"});
261 diff --git a/src/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc b/src/chrome/…
263 --- a/src/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc
265 @@ -1187,6 +1187,52 @@ IN_PROC_BROWSER_TEST_F(ChromeSitePerProcessTest,
274 + GURL main_url(embedded_test_server()->GetURL(
278 + browser()->tab_strip_model()->GetActiveWebContents();
281 + const std::string no_op_script = "// No-op script";
290 + GURL popup_url(embedded_test_server()->GetURL("popup.com", "/"));
306 + EXPECT_EQ(2, browser()->tab_strip_model()->count());
309 + browser()->tab_strip_model()->GetActiveWebContents();
310 + EXPECT_EQ(embedded_test_server()->GetURL("popup.com", "/title1.html"),
311 + popup->GetLastCommittedURL());
316 // Tests that a cross-site iframe runs its beforeunload handler when closing a
318 diff --git a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.cc b/src/chrome/brow…
320 --- a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.cc
322 @@ -129,16 +129,6 @@ int RecentlyUsedFoldersComboModel::GetDefaultIndex() const {
323 return it == items_.end() ? 0 : static_cast<int>(it - items_.begin());
326 -void RecentlyUsedFoldersComboModel::AddObserver(
327 - ui::ComboboxModelObserver* observer) {
328 - observers_.AddObserver(observer);
329 -}
330 -
331 -void RecentlyUsedFoldersComboModel::RemoveObserver(
332 - ui::ComboboxModelObserver* observer) {
333 - observers_.RemoveObserver(observer);
334 -}
335 -
339 @@ -175,7 +165,7 @@ void RecentlyUsedFoldersComboModel::OnWillRemoveBookmarks(
343 - for (ui::ComboboxModelObserver& observer : observers_)
344 + for (ui::ComboboxModelObserver& observer : observers())
348 @@ -218,7 +208,7 @@ void RecentlyUsedFoldersComboModel::BookmarkAllUserNodesRemoved(
352 - for (ui::ComboboxModelObserver& observer : observers_)
353 + for (ui::ComboboxModelObserver& observer : observers())
357 diff --git a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h b/src/chrome/brows…
359 --- a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model.h
361 @@ -38,8 +38,6 @@ class RecentlyUsedFoldersComboModel : public ui::ComboboxModel,
365 - void AddObserver(ui::ComboboxModelObserver* observer) override;
366 - void RemoveObserver(ui::ComboboxModelObserver* observer) override;
370 @@ -90,8 +88,6 @@ class RecentlyUsedFoldersComboModel : public ui::ComboboxModel,
374 -
375 - base::ObserverList<ui::ComboboxModelObserver> observers_;
379 diff --git a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc b/src/ch…
381 --- a/src/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc
383 @@ -41,6 +41,8 @@ class TestComboboxModelObserver : public ui::ComboboxModelObserver {
392 diff --git a/src/chrome/browser/ui/views/task_manager_view.cc b/src/chrome/browser/ui/views/task_ma…
394 --- a/src/chrome/browser/ui/views/task_manager_view.cc
396 @@ -125,6 +125,12 @@ bool TaskManagerView::IsColumnVisible(int column_id) const {
402 + // prevent this column visibility change. see crbug.com/1320307 for details.
403 + if (!new_visibility && tab_table_->visible_columns().size() <= 1)
406 tab_table_->SetColumnVisibility(column_id, new_visibility);
409 diff --git a/src/components/autofill/core/browser/ui/address_combobox_model.cc b/src/components/aut…
411 --- a/src/components/autofill/core/browser/ui/address_combobox_model.cc
413 @@ -83,14 +83,6 @@ int AddressComboboxModel::GetDefaultIndex() const {
417 -void AddressComboboxModel::AddObserver(ui::ComboboxModelObserver* observer) {
418 - observers_.AddObserver(observer);
419 -}
420 -
421 -void AddressComboboxModel::RemoveObserver(ui::ComboboxModelObserver* observer) {
422 - observers_.RemoveObserver(observer);
423 -}
424 -
428 @@ -130,7 +122,7 @@ void AddressComboboxModel::UpdateAddresses() {
429 for (size_t i = 0; i < profiles_cache_.size(); ++i)
430 addresses_.emplace_back(profiles_cache_[i]->guid(), labels[i]);
432 - for (auto& observer : observers_) {
433 + for (auto& observer : observers()) {
437 diff --git a/src/components/autofill/core/browser/ui/address_combobox_model.h b/src/components/auto…
439 --- a/src/components/autofill/core/browser/ui/address_combobox_model.h
441 @@ -40,8 +40,6 @@ class AddressComboboxModel : public ui::ComboboxModel {
445 - void AddObserver(ui::ComboboxModelObserver* observer) override;
446 - void RemoveObserver(ui::ComboboxModelObserver* observer) override;
450 @@ -72,9 +70,6 @@ class AddressComboboxModel : public ui::ComboboxModel {
454 -
455 - // To be called when the data for the given country code was loaded.
456 - base::ObserverList<ui::ComboboxModelObserver> observers_;
460 diff --git a/src/components/autofill/core/browser/ui/region_combobox_model.cc b/src/components/auto…
462 --- a/src/components/autofill/core/browser/ui/region_combobox_model.cc
464 @@ -66,14 +66,6 @@ bool RegionComboboxModel::IsItemSeparatorAt(int index) const {
468 -void RegionComboboxModel::AddObserver(ui::ComboboxModelObserver* observer) {
469 - observers_.AddObserver(observer);
470 -}
471 -
472 -void RegionComboboxModel::RemoveObserver(ui::ComboboxModelObserver* observer) {
473 - observers_.RemoveObserver(observer);
474 -}
475 -
479 @@ -94,7 +86,7 @@ void RegionComboboxModel::OnRegionDataLoaded(
483 - for (auto& observer : observers_) {
484 + for (auto& observer : observers()) {
488 diff --git a/src/components/autofill/core/browser/ui/region_combobox_model.h b/src/components/autof…
490 --- a/src/components/autofill/core/browser/ui/region_combobox_model.h
492 @@ -54,8 +54,6 @@ class RegionComboboxModel : public ui::ComboboxModel {
496 - void AddObserver(ui::ComboboxModelObserver* observer) override;
497 - void RemoveObserver(ui::ComboboxModelObserver* observer) override;
500 // Callback for the RegionDataLoader.
501 @@ -72,9 +70,6 @@ class RegionComboboxModel : public ui::ComboboxModel {
502 // List of <code, name> pairs for ADDRESS_HOME_STATE combobox values;
505 - // To be called when the data for the given country code was loaded.
506 - base::ObserverList<ui::ComboboxModelObserver> observers_;
507 -
511 diff --git a/src/components/background_fetch/background_fetch_delegate_base.cc b/src/components/bac…
513 --- a/src/components/background_fetch/background_fetch_delegate_base.cc
515 @@ -102,6 +102,7 @@ void BackgroundFetchDelegateBase::DownloadUrl(
522 if (job_details->job_state == JobDetails::State::kPendingWillStartPaused ||
523 @@ -171,8 +172,11 @@ void BackgroundFetchDelegateBase::CancelDownload(std::string job_id) {
529 client->OnJobCancelled(
530 - job_id, blink::mojom::BackgroundFetchFailureReason::CANCELLED_FROM_UI);
536 @@ -242,14 +246,15 @@ void BackgroundFetchDelegateBase::MarkJobComplete(const std::string& job_id) {
537 job_details->current_fetch_guids.clear();
540 -void BackgroundFetchDelegateBase::FailFetch(const std::string& job_id) {
548 client->OnJobCancelled(
549 - unique_id,
554 @@ -301,7 +306,7 @@ void BackgroundFetchDelegateBase::OnDownloadUpdated(
556 // this check is skipped. This is to allow for situations when the
558 - FailFetch(job_id);
563 diff --git a/src/components/background_fetch/background_fetch_delegate_base.h b/src/components/back…
565 --- a/src/components/background_fetch/background_fetch_delegate_base.h
567 @@ -59,7 +59,7 @@ class BackgroundFetchDelegateBase : public content::BackgroundFetchDelegate {
571 - void FailFetch(const std::string& job_id);
576 diff --git a/src/components/download/content/internal/download_driver_impl.cc b/src/components/down…
578 --- a/src/components/download/content/internal/download_driver_impl.cc
580 @@ -227,6 +227,8 @@ void DownloadDriverImpl::Start(
581 download_url_params->set_isolation_info(
584 + download_url_params->set_update_first_party_url_on_redirect(
587 download_manager_coordinator_->DownloadUrl(std::move(download_url_params));
589 diff --git a/src/components/download/internal/common/download_utils.cc b/src/components/download/in…
591 --- a/src/components/download/internal/common/download_utils.cc
593 @@ -349,8 +349,10 @@ std::unique_ptr<network::ResourceRequest> CreateResourceRequest(
594 // cross-site URL has been visited before.
595 url::Origin origin = url::Origin::Create(params->url());
596 request->trusted_params->isolation_info = net::IsolationInfo::Create(
597 - net::IsolationInfo::RequestType::kMainFrame, origin, origin,
598 - net::SiteForCookies::FromOrigin(origin));
599 + params->update_first_party_url_on_redirect()
603 request->site_for_cookies = net::SiteForCookies::FromUrl(params->url());
606 @@ -358,7 +360,8 @@ std::unique_ptr<network::ResourceRequest> CreateResourceRequest(
607 request->referrer = params->referrer();
608 request->referrer_policy = params->referrer_policy();
609 request->is_main_frame = true;
610 - request->update_first_party_url_on_redirect = true;
611 + request->update_first_party_url_on_redirect =
612 + params->update_first_party_url_on_redirect();
616 diff --git a/src/components/download/public/background_service/download_params.h b/src/components/d…
618 --- a/src/components/download/public/background_service/download_params.h
620 @@ -120,6 +120,12 @@ struct RequestParams {
625 + // First-party URL redirect policy: During server redirects, whether the
626 + // first-party URL for cookies will need to be changed. Download is normally
627 + // considered a main frame navigation. However, this is not true for
633 diff --git a/src/components/download/public/common/download_url_parameters.cc b/src/components/down…
635 --- a/src/components/download/public/common/download_url_parameters.cc
637 @@ -34,7 +34,8 @@ DownloadUrlParameters::DownloadUrlParameters(
641 - has_user_gesture_(false) {}
647 diff --git a/src/components/download/public/common/download_url_parameters.h b/src/components/downl…
649 --- a/src/components/download/public/common/download_url_parameters.h
651 @@ -279,6 +279,11 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadUrlParameters {
663 @@ -335,6 +340,9 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadUrlParameters {
671 // STATE CHANGING: All save_info_ sub-objects will be in an indeterminate
673 @@ -383,6 +391,7 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadUrlParameters {
681 diff --git a/src/components/history/core/browser/history_backend.cc b/src/components/history/core/b…
683 --- a/src/components/history/core/browser/history_backend.cc
685 @@ -287,6 +287,15 @@ HistoryBackend::~HistoryBackend() {
692 + // fatal (use-after-free). Additionally, as we're in shutdown, there isn't
696 + db_->reset_error_callback();
701 diff --git a/src/components/history/core/browser/history_database.h b/src/components/history/core/b…
703 --- a/src/components/history/core/browser/history_database.h
705 @@ -80,6 +80,7 @@ class HistoryDatabase : public DownloadDatabase,
712 // sql::INIT_OK on success. Otherwise, no other function should be called. You
713 diff --git a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc b/src/co…
715 --- a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc
717 @@ -315,8 +315,8 @@ void RealTimeUrlLookupServiceBase::MayBeCacheRealTimeUrlVerdict(
719 base::SequencedTaskRunnerHandle::Get()->PostTask(
721 - base::Unretained(cache_manager_), url,
722 - response, base::Time::Now()));
723 + cache_manager_->GetWeakPtr(), url, response,
728 diff --git a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc b/sr…
730 --- a/src/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc
732 @@ -136,7 +136,9 @@ class RealTimeUrlLookupServiceTest : public PlatformTest {
736 - content_setting_map_->ShutdownOnUIThread();
738 + content_setting_map_->ShutdownOnUIThread();
740 rt_service_->Shutdown();
743 @@ -1139,6 +1141,24 @@ TEST_F(RealTimeUrlLookupServiceTest, TestShutdown_CallbackNotPostedOnShutdow…
756 + rt_service()->Shutdown();
758 + content_setting_map_->ShutdownOnUIThread();
768 diff --git a/src/components/viz/service/display/skia_renderer.cc b/src/components/viz/service/displ…
770 --- a/src/components/viz/service/display/skia_renderer.cc
772 @@ -1426,34 +1426,20 @@ void SkiaRenderer::DrawQuadParams::ApplyScissor(
776 - float left_inset = local_scissor.x() - visible_rect.x();
777 - float top_inset = local_scissor.y() - visible_rect.y();
778 - float right_inset = visible_rect.right() - local_scissor.right();
779 - float bottom_inset = visible_rect.bottom() - local_scissor.bottom();
783 - // The scissor is a non-AA clip, so we unset the bit flag for clipped edges.
784 - if (left_inset >= kAAEpsilon) {
785 + // The scissor is a non-AA clip, so unset the bit flag for clipped edges.
786 + if (local_scissor.x() - visible_rect.x() >= x_epsilon)
788 - } else {
789 - left_inset = 0;
790 - }
791 - if (top_inset >= kAAEpsilon) {
792 + if (local_scissor.y() - visible_rect.y() >= y_epsilon)
794 - } else {
795 - top_inset = 0;
796 - }
797 - if (right_inset >= kAAEpsilon) {
798 + if (visible_rect.right() - local_scissor.right() >= x_epsilon)
800 - } else {
801 - right_inset = 0;
802 - }
803 - if (bottom_inset >= kAAEpsilon) {
804 + if (visible_rect.bottom() - local_scissor.bottom() >= y_epsilon)
806 - } else {
807 - bottom_inset = 0;
808 - }
810 - visible_rect.Inset(left_inset, top_inset, right_inset, bottom_inset);
815 diff --git a/src/content/browser/back_forward_cache_basics_browsertest.cc b/src/content/browser/bac…
817 --- a/src/content/browser/back_forward_cache_basics_browsertest.cc
819 @@ -32,6 +32,8 @@ using testing::UnorderedElementsAreArray;
827 ASSERT_TRUE(embedded_test_server()->Start());
828 @@ -742,8 +744,8 @@ IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
829 web_contents()->GetController().GoBack();
830 EXPECT_FALSE(WaitForLoadStop(shell()->web_contents()));
832 - {BackForwardCacheMetrics::NotRestoredReason::kHTTPStatusNotOK,
833 - BackForwardCacheMetrics::NotRestoredReason::kNoResponseHead},
839 diff --git a/src/content/browser/back_forward_cache_browsertest.cc b/src/content/browser/back_forwa…
841 --- a/src/content/browser/back_forward_cache_browsertest.cc
843 @@ -52,6 +52,7 @@
851 @@ -670,6 +671,22 @@ void BackForwardCacheBrowserTest::ExpectBrowsingInstanceNotSwappedReasons(
862 + shell()->GoBackOrForward(history_offset);
864 + shell()->LoadURL(url);
867 + ASSERT_EQ(current_frame_host()->GetLastCommittedURL(), url);
868 + ASSERT_TRUE(current_frame_host()->IsErrorDocument());
874 diff --git a/src/content/browser/back_forward_cache_browsertest.h b/src/content/browser/back_forwar…
876 --- a/src/content/browser/back_forward_cache_browsertest.h
878 @@ -167,6 +167,11 @@ class BackForwardCacheBrowserTest : public ContentBrowserTest,
890 diff --git a/src/content/browser/back_forward_cache_internal_browsertest.cc b/src/content/browser/b…
892 --- a/src/content/browser/back_forward_cache_internal_browsertest.cc
894 @@ -49,6 +49,8 @@ using ::testing::UnorderedElementsAreArray;
902 ASSERT_TRUE(embedded_test_server()->Start());
903 @@ -3671,4 +3673,69 @@ IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
907 +// Test that when we navigate away from an error page and back with no error
911 + ASSERT_TRUE(embedded_test_server()->Start());
913 + GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
914 + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
936 +// Test that when we navigate away from an error page and back with no error
940 + ASSERT_TRUE(embedded_test_server()->Start());
942 + GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
943 + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
953 + web_contents()->GetController().GetLastCommittedEntry()->GetUniqueID();
959 + // Navigate forward to b.com again with no error.
969 + web_contents()->GetController().GetLastCommittedEntry()->GetUniqueID());
973 diff --git a/src/content/browser/background_fetch/background_fetch_delegate_proxy.cc b/src/content/…
975 --- a/src/content/browser/background_fetch/background_fetch_delegate_proxy.cc
977 @@ -220,6 +220,7 @@ void BackgroundFetchDelegateProxy::MarkJobComplete(
985 @@ -232,8 +233,20 @@ void BackgroundFetchDelegateProxy::OnJobCancelled(
989 - if (const auto& controller = it->second)
990 + if (const auto& controller = it->second) {
995 + controller->DidCompleteRequest(
1002 controller->AbortFromDelegate(reason_to_abort);
1007 diff --git a/src/content/browser/background_fetch/background_fetch_delegate_proxy.h b/src/content/b…
1009 --- a/src/content/browser/background_fetch/background_fetch_delegate_proxy.h
1011 @@ -142,6 +142,7 @@ class CONTENT_EXPORT BackgroundFetchDelegateProxy
1019 diff --git a/src/content/browser/background_fetch/storage/mark_request_complete_task.cc b/src/conte…
1021 --- a/src/content/browser/background_fetch/storage/mark_request_complete_task.cc
1023 @@ -103,6 +103,8 @@ void MarkRequestCompleteTask::StoreResponse(base::OnceClosure done_closure) {
1027 + // Don't expose the initial URL in case of cross-origin redirects.
1028 + response_->url_list.resize(1);
1030 // No point writing the response to the cache since it won't be exposed.
1032 diff --git a/src/content/browser/cross_origin_opener_policy_browsertest.cc b/src/content/browser/cr…
1034 --- a/src/content/browser/cross_origin_opener_policy_browsertest.cc
1036 @@ -11,6 +11,7 @@
1044 @@ -3337,6 +3338,104 @@ IN_PROC_BROWSER_TEST_P(CrossOriginOpenerPolicyBrowserTest,
1048 +// This test is a reproducer for https://crbug.com/1305394.
1051 + // This test requires that a cross-origin iframe be placed in its own
1056 + GURL non_coop_page(https_server()->GetURL("a.test", "/title1.html"));
1058 + https_server()->GetURL("b.test", "/title1.html"));
1059 + GURL coop_page(https_server()->GetURL(
1060 + "a.test", "/set-header?cross-origin-opener-policy: same-origin"));
1062 + // Get an initial non-COOP page with an empty popup.
1070 + static_cast<WebContentsImpl*>(shell_observer.GetShell()->web_contents());
1071 + RenderFrameHostImpl* popup_rfh = popup->GetMainFrame();
1073 + // At this stage we have a single SiteInstance used both for the main page and
1074 + // the same-site popup.
1075 + SiteInstanceImpl* initial_main_si = initial_main_rfh->GetSiteInstance();
1076 + SiteInstanceImpl* popup_si = popup_rfh->GetSiteInstance();
1078 + RenderProcessHost* process_A = initial_main_si->GetProcess();
1086 + // Note: We need to wait for the RenderView deletion to be propagated in the
1087 + // renderer for window.opener to be cleared. To avoid flakes, we check the
1090 + SiteInstanceImpl* main_si = main_rfh->GetSiteInstance();
1091 + RenderProcessHost* process_B = main_si->GetProcess();
1092 + EXPECT_FALSE(popup_si->IsRelatedSiteInstance(main_si));
1095 + // process. No proxy should remain between the two site instances as the
1097 + EXPECT_EQ(process_A, popup_si->GetProcess());
1099 + EXPECT_TRUE(popup_rfh->frame_tree_node()
1100 + ->render_manager()
1101 + ->GetAllProxyHostsForTesting()
1103 + EXPECT_TRUE(main_rfh->frame_tree_node()
1104 + ->render_manager()
1105 + ->GetAllProxyHostsForTesting()
1108 + // Load an iframe that is cross-origin to the top frame's opener.
1117 + popup_rfh->child_at(0)->current_frame_host();
1118 + SiteInstanceImpl* iframe_si = iframe_rfh->GetSiteInstance();
1120 + // The iframe being cross-origin, it is put in a different but related
1122 + EXPECT_TRUE(iframe_si->IsRelatedSiteInstance(popup_si));
1123 + EXPECT_FALSE(iframe_si->IsRelatedSiteInstance(main_si));
1128 + RenderProcessHost* process_C = iframe_si->GetProcess();
1131 + EXPECT_EQ(1u, iframe_rfh->frame_tree_node()
1132 + ->render_manager()
1133 + ->GetAllProxyHostsForTesting()
1135 + EXPECT_EQ(1u, popup_rfh->frame_tree_node()
1136 + ->render_manager()
1137 + ->GetAllProxyHostsForTesting()
1147 // context group when using window.open from an iframe, same-origin and
1148 // cross-origin.
1149 diff --git a/src/content/browser/devtools/protocol/devtools_protocol_browsertest.cc b/src/content/b…
1151 --- a/src/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
1153 @@ -408,7 +408,8 @@ class CaptureScreenshotTest : public DevToolsProtocolTest {
1157 - bool capture_beyond_viewport = false) {
1161 params->SetStringKey("format", EncodingEnumToString(encoding));
1162 params->SetIntKey("quality", 100);
1163 @@ -427,18 +428,24 @@ class CaptureScreenshotTest : public DevToolsProtocolTest {
1167 - std::string base64;
1168 - EXPECT_TRUE(result_->GetString("data", &base64));
1170 - if (encoding == ScreenshotEncoding::PNG) {
1171 - result_bitmap = std::make_unique<SkBitmap>();
1172 - EXPECT_TRUE(DecodePNG(base64, result_bitmap.get()));
1173 - } else if (encoding == ScreenshotEncoding::JPEG) {
1174 - result_bitmap = DecodeJPEG(base64);
1180 - // Decode not implemented.
1182 + EXPECT_TRUE(result_->GetString("data", &base64));
1193 - EXPECT_TRUE(result_bitmap);
1197 @@ -538,6 +545,10 @@ class CaptureScreenshotTest : public DevToolsProtocolTest {
1208 @@ -839,6 +850,17 @@ IN_PROC_BROWSER_TEST_F(CaptureScreenshotTest, TransparentScreenshots) {
1215 + shell()->LoadURL(GURL("about:blank"));
1216 + EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
1226 diff --git a/src/content/browser/devtools/protocol/page_handler.cc b/src/content/browser/devtools/p…
1228 --- a/src/content/browser/devtools/protocol/page_handler.cc
1230 @@ -198,9 +198,12 @@ PageHandler::PageHandler(
1243 @@ -759,6 +762,11 @@ void PageHandler::CaptureScreenshot(
1248 + callback->sendFailure(
1252 widget_host->GetSnapshotFromBrowser(
1255 @@ -1419,6 +1427,8 @@ Page::BackForwardCacheNotRestoredReason NotRestoredReasonToProtocol(
1264 @@ -1698,6 +1708,7 @@ Page::BackForwardCacheNotRestoredReasonType MapNotRestoredReasonToType(
1272 diff --git a/src/content/browser/devtools/protocol/page_handler.h b/src/content/browser/devtools/pr…
1274 --- a/src/content/browser/devtools/protocol/page_handler.h
1276 @@ -65,6 +65,7 @@ class PageHandler : public DevToolsDomainHandler,
1284 @@ -212,6 +213,7 @@ class PageHandler : public DevToolsDomainHandler,
1292 diff --git a/src/content/browser/devtools/render_frame_devtools_agent_host.cc b/src/content/browser…
1294 --- a/src/content/browser/devtools/render_frame_devtools_agent_host.cc
1296 @@ -357,6 +357,7 @@ bool RenderFrameDevToolsAgentHost::AttachSession(DevToolsSession* session,
1297 session->AddHandler(std::make_unique<protocol::PageHandler>(
1299 session->GetClient()->AllowUnsafeOperations(),
1300 + session->GetClient()->MayAttachToBrowser(),
1301 session->GetClient()->GetNavigationInitiatorOrigin()));
1302 session->AddHandler(std::make_unique<protocol::SecurityHandler>());
1303 if (!frame_tree_node_ || !frame_tree_node_->parent()) {
1304 diff --git a/src/content/browser/download/download_browsertest.cc b/src/content/browser/download/do…
1306 --- a/src/content/browser/download/download_browsertest.cc
1308 @@ -3735,6 +3735,58 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, UpdateSiteForCookies) {
1313 +// will not behave like a top-level frame navigation and SameSite=Strict cookies
1323 + std::string("Set-Cookie"), std::string("A=strict; SameSite=Strict")));
1324 + cookie_headers.push_back(std::make_pair(std::string("Set-Cookie"),
1330 + "/sets-samesite-cookies", net::HTTP_OK, cookie_headers,
1331 + "application/octet-stream", "abcd"));
1334 + CreateRedirectHandler("/redirected-download",
1335 + site_a.GetURL("a.test", "/sets-samesite-cookies")));
1342 + shell()->web_contents(),
1343 + site_b.GetURL("b.test", "/redirected-download"),
1345 + download_parameters->set_update_first_party_url_on_redirect(false);
1347 + DownloadManagerForShell(shell())->DownloadUrl(std::move(download_parameters));
1348 + observer->WaitForFinished();
1354 + DownloadManagerForShell(shell())->GetAllDownloads(&downloads);
1356 + ASSERT_EQ(download::DownloadItem::COMPLETE, downloads[0]->GetState());
1360 + content::GetCookies(shell()->web_contents()->GetBrowserContext(),
1367 diff --git a/src/content/browser/indexed_db/indexed_db_context_impl.cc b/src/content/browser/indexe…
1369 --- a/src/content/browser/indexed_db/indexed_db_context_impl.cc
1371 @@ -120,7 +120,7 @@ void GetAllStorageKeysAndPaths(const base::FilePath& indexeddb_path,
1375 - if (!context->idb_task_runner_->RunsTasksInCurrentSequence()) {
1376 + if (!context->IDBTaskRunner()->RunsTasksInCurrentSequence()) {
1378 context_ptr->IDBTaskRunner()->ReleaseSoon(FROM_HERE, std::move(context));
1380 @@ -168,37 +168,32 @@ IndexedDBContextImpl::IndexedDBContextImpl(
1384 - // This is safe because the IndexedDBContextImpl must be destructed on the
1385 - // IDBTaskRunner, and this task will always happen before that.
1386 - idb_task_runner_->PostTask(
1387 - FROM_HERE,
1388 - base::BindOnce(
1389 - [](mojo::Remote<storage::mojom::BlobStorageContext>*
1390 - blob_storage_context,
1391 - mojo::Remote<storage::mojom::FileSystemAccessContext>*
1392 - file_system_access_context,
1393 - mojo::Receiver<storage::mojom::QuotaClient>* quota_client_receiver,
1394 - mojo::PendingRemote<storage::mojom::BlobStorageContext>
1395 - pending_blob_storage_context,
1396 - mojo::PendingRemote<storage::mojom::FileSystemAccessContext>
1397 - pending_file_system_access_context,
1398 - mojo::PendingReceiver<storage::mojom::QuotaClient>
1399 - quota_client_pending_receiver) {
1400 - quota_client_receiver->Bind(
1401 - std::move(quota_client_pending_receiver));
1402 - if (pending_blob_storage_context) {
1403 - blob_storage_context->Bind(
1404 - std::move(pending_blob_storage_context));
1405 - }
1406 - if (pending_file_system_access_context) {
1407 - file_system_access_context->Bind(
1408 - std::move(pending_file_system_access_context));
1409 - }
1410 - },
1411 - &blob_storage_context_, &file_system_access_context_,
1412 - "a_client_receiver_, std::move(blob_storage_context),
1413 - std::move(file_system_access_context),
1414 - std::move(quota_client_receiver)));
1415 + IDBTaskRunner()->PostTask(
1430 + DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence());
1444 @@ -466,7 +461,7 @@ void IndexedDBContextImpl::GetAllStorageKeysDetails(
1448 - idb_task_runner_->PostTask(
1449 + IDBTaskRunner()->PostTask(
1453 @@ -877,7 +872,7 @@ void IndexedDBContextImpl::BindIndexedDBWithBucket(
1457 - DCHECK(idb_task_runner_->RunsTasksInCurrentSequence());
1458 + DCHECK(IDBTaskRunner()->RunsTasksInCurrentSequence());
1462 @@ -909,7 +904,7 @@ void IndexedDBContextImpl::Shutdown() {
1466 - idb_task_runner_->PostTask(
1467 + IDBTaskRunner()->PostTask(
1471 diff --git a/src/content/browser/indexed_db/indexed_db_context_impl.h b/src/content/browser/indexed…
1473 --- a/src/content/browser/indexed_db/indexed_db_context_impl.h
1475 @@ -224,6 +224,14 @@ class CONTENT_EXPORT IndexedDBContextImpl
1488 // for a storage key.
1490 @@ -282,6 +290,8 @@ class CONTENT_EXPORT IndexedDBContextImpl
1494 + // weak_factory_->GetWeakPtr() may be used on any thread, but the resulting
1499 diff --git a/src/content/browser/loader/object_navigation_fallback_body_loader.cc b/src/content/bro…
1501 --- a/src/content/browser/loader/object_navigation_fallback_body_loader.cc
1503 @@ -157,10 +157,6 @@ blink::mojom::ResourceTimingInfoPtr GenerateResourceTiming(
1504 timing_info->allow_redirect_details = timing_info->allow_timing_details;
1505 timing_info->last_redirect_end_time =
1506 commit_params.redirect_response.back()->load_timing.receive_headers_end;
1507 -
1508 - if (!timing_info->allow_redirect_details) {
1509 - timing_info->start_time = response_head.load_timing.request_start;
1510 - }
1512 timing_info->allow_redirect_details = false;
1513 timing_info->last_redirect_end_time = base::TimeTicks();
1514 diff --git a/src/content/browser/media/capture/frame_sink_video_capture_device.cc b/src/content/bro…
1516 --- a/src/content/browser/media/capture/frame_sink_video_capture_device.cc
1518 @@ -290,17 +290,17 @@ void FrameSinkVideoCaptureDevice::OnStopped() {
1523 + GetIOThreadTaskRunner({})->PostTask(
1532 - if (BrowserThread::CurrentlyOn(BrowserThread::IO)) {
1533 - receiver_->OnLog(message);
1534 - } else {
1535 - GetIOThreadTaskRunner({})->PostTask(
1536 - FROM_HERE,
1537 - base::BindOnce(&media::VideoFrameReceiver::OnLog,
1538 - base::Unretained(receiver_.get()), message));
1539 - }
1540 + receiver_->OnLog(message);
1544 diff --git a/src/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc b/sr…
1546 --- a/src/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
1548 @@ -181,6 +181,8 @@ ProtoEnum::BackForwardCacheNotRestoredReason NotRestoredReasonToTraceEnum(
1557 @@ -392,6 +394,8 @@ std::string BackForwardCacheCanStoreDocumentResult::NotRestoredReasonToString(
1565 "PasswordProtectionService as a workaround for "
1566 diff --git a/src/content/browser/renderer_host/back_forward_cache_impl.cc b/src/content/browser/ren…
1568 --- a/src/content/browser/renderer_host/back_forward_cache_impl.cc
1570 @@ -763,6 +763,13 @@ void BackForwardCacheImpl::PopulateReasonsForMainDocument(
1571 if (rfh->last_http_status_code() != net::HTTP_OK)
1572 result.No(BackForwardCacheMetrics::NotRestoredReason::kHTTPStatusNotOK);
1575 + // code but there's no guarantee, e.g. https://crbug/1274308,
1578 + if (rfh->IsErrorDocument())
1579 + result.No(BackForwardCacheMetrics::NotRestoredReason::kErrorDocument);
1582 if (rfh->last_http_method() != net::HttpRequestHeaders::kGetMethod)
1583 result.No(BackForwardCacheMetrics::NotRestoredReason::kHTTPMethodNotGET);
1584 diff --git a/src/content/browser/renderer_host/back_forward_cache_metrics.h b/src/content/browser/r…
1586 --- a/src/content/browser/renderer_host/back_forward_cache_metrics.h
1588 @@ -111,7 +111,8 @@ class BackForwardCacheMetrics
1592 - kMaxValue = kActivationNavigationsDisallowedForBug1234857,
1598 diff --git a/src/content/browser/renderer_host/frame_tree.cc b/src/content/browser/renderer_host/fr…
1600 --- a/src/content/browser/renderer_host/frame_tree.cc
1602 @@ -788,7 +788,7 @@ void FrameTree::RegisterExistingOriginToPreventOptInIsolation(
1606 - RenderFrameHostImpl* opener,
1610 // main frame - let's do the same thing here.
1611 @@ -800,16 +800,16 @@ void FrameTree::Init(SiteInstance* main_frame_site_instance,
1615 - // different browsing context groups (`renderer_initiated_creation` is false),
1616 - // where it should use a new opaque origin.
1624 - DCHECK(!renderer_initiated_creation || opener);
1626 root_->current_frame_host()->SetOriginDependentStateOfNewFrame(
1627 - renderer_initiated_creation ? opener->GetLastCommittedOrigin()
1628 + renderer_initiated_creation ? opener_for_origin->GetLastCommittedOrigin()
1632 diff --git a/src/content/browser/renderer_host/frame_tree.h b/src/content/browser/renderer_host/fra…
1634 --- a/src/content/browser/renderer_host/frame_tree.h
1636 @@ -204,7 +204,7 @@ class CONTENT_EXPORT FrameTree {
1637 // Initializes the main frame for this FrameTree. That is it creates the
1640 - // is enabled) that potentially inherits `opener`'s origin in its
1645 @@ -213,7 +213,7 @@ class CONTENT_EXPORT FrameTree {
1649 - RenderFrameHostImpl* opener,
1654 diff --git a/src/content/browser/renderer_host/frame_tree_node.cc b/src/content/browser/renderer_ho…
1656 --- a/src/content/browser/renderer_host/frame_tree_node.cc
1658 @@ -50,7 +50,7 @@ base::LazyInstance<FrameTreeNodeIdMap>::DestructorAtExit
1662 -// owner's opener if the opener is destroyed.
1667 @@ -61,6 +61,15 @@ class FrameTreeNode::OpenerDestroyedObserver : public FrameTreeNode::Observer {
1681 // The "original owner" is special. It's used for attribution, and clients
1683 @@ -858,4 +867,13 @@ bool FrameTreeNode::IsErrorPageIsolationEnabled() const {
1690 + // Note: observers remove themselves from observers_, no need to take care of
1692 + for (auto& observer : observers_)
1697 diff --git a/src/content/browser/renderer_host/frame_tree_node.h b/src/content/browser/renderer_hos…
1699 --- a/src/content/browser/renderer_host/frame_tree_node.h
1701 @@ -63,6 +63,10 @@ class CONTENT_EXPORT FrameTreeNode {
1712 @@ -505,6 +509,10 @@ class CONTENT_EXPORT FrameTreeNode {
1723 diff --git a/src/content/browser/renderer_host/media/media_stream_dispatcher_host.cc b/src/content/…
1725 --- a/src/content/browser/renderer_host/media/media_stream_dispatcher_host.cc
1727 @@ -18,6 +18,7 @@
1735 @@ -69,26 +70,40 @@ StartObservingWebContents(int render_process_id,
1739 +// Helper for getting the top-level WebContents associated with a given ID.
1750 + return rfh ? WebContents::FromRenderFrameHost(rfh->GetMainFrame()) : nullptr;
1754 // (render_process_id, render_frame_id) may be cropped to the crop-target
1756 -bool IsCropTargetValid(int render_process_id,
1757 - int render_frame_id,
1758 - const base::Token& crop_id) {
1759 - RenderFrameHost* const rfh =
1760 - RenderFrameHost::FromID(render_process_id, render_frame_id);
1761 - if (!rfh) {
1772 - WebContents* const web_contents =
1773 - WebContents::FromRenderFrameHost(rfh->GetMainFrame());
1774 - if (!web_contents) {
1776 + if (capturing_wc != captured_wc) { // Null or not-same-tab.
1781 - CropIdWebContentsHelper::FromWebContents(web_contents);
1784 // No crop-IDs were ever produced on this WebContents.
1785 // Any non-zero crop-ID should be rejected on account of being
1786 @@ -512,14 +527,19 @@ void MediaStreamDispatcherHost::Crop(const base::UnguessableToken& device_id,
1791 + media_stream_manager_->video_capture_manager()->GetGlobalRoutingID(
1796 // for self-capture, so the crop_id has to be associated with the top-level
1798 GetUIThreadTaskRunner({})->PostTaskAndReplyWithResult(
1800 - base::BindOnce(&IsCropTargetValid, render_process_id_, render_frame_id_,
1801 - crop_id),
1808 diff --git a/src/content/browser/renderer_host/media/video_capture_manager.cc b/src/content/browser…
1810 --- a/src/content/browser/renderer_host/media/video_capture_manager.cc
1812 @@ -594,6 +594,29 @@ VideoCaptureManager::GetDeviceFormatInUse(
1813 return device_in_use ? device_in_use->GetVideoCaptureFormat() : absl::nullopt;
1822 + if (!controller || !controller->IsDeviceAlive() ||
1823 + !blink::IsVideoDesktopCaptureMediaType(controller->stream_type())) {
1828 + DesktopMediaID::Parse(controller->device_id());
1842 @@ -796,7 +819,7 @@ void VideoCaptureManager::DestroyControllerIfNoClients(
1846 - const base::UnguessableToken& session_id) {
1851 diff --git a/src/content/browser/renderer_host/media/video_capture_manager.h b/src/content/browser/…
1853 --- a/src/content/browser/renderer_host/media/video_capture_manager.h
1855 @@ -24,6 +24,7 @@
1863 @@ -169,6 +170,12 @@ class CONTENT_EXPORT VideoCaptureManager
1873 // Sets the platform-dependent window ID for the desktop capture notification
1874 // UI for the given session.
1876 @@ -242,7 +249,7 @@ class CONTENT_EXPORT VideoCaptureManager
1880 - const base::UnguessableToken& session_id);
1885 diff --git a/src/content/browser/renderer_host/render_frame_host_impl.cc b/src/content/browser/rend…
1887 --- a/src/content/browser/renderer_host/render_frame_host_impl.cc
1889 @@ -1486,7 +1486,12 @@ RenderFrameHostImpl::~RenderFrameHostImpl() {
1896 + // There are no known occurrences of it, so we assume this never happen and
1897 + // crash immediately if it does, because there are no easy ways to recover.
1902 @@ -2801,7 +2806,7 @@ void RenderFrameHostImpl::RenderProcessExited(
1906 - PendingDeletionCheckCompleted();
1911 @@ -3793,7 +3798,8 @@ void RenderFrameHostImpl::RemoveChild(FrameTreeNode* child) {
1912 // and `~RenderFrameProxyHost()` sends a Mojo `DetachAndDispose()` IPC for
1915 - PendingDeletionCheckCompleted();
1921 @@ -3867,6 +3873,7 @@ void RenderFrameHostImpl::Detach() {
1929 @@ -3883,6 +3890,7 @@ void RenderFrameHostImpl::Detach() {
1930 // Some children with no unload handler may be eligible for immediate
1937 @@ -4370,6 +4378,7 @@ void RenderFrameHostImpl::DetachFromProxy() {
1938 // Some children with no unload handler may be eligible for immediate
1945 @@ -4573,6 +4582,7 @@ void RenderFrameHostImpl::OnUnloadACK() {
1953 @@ -4583,7 +4593,14 @@ void RenderFrameHostImpl::OnUnloaded() {
1955 unload_event_monitor_timeout_->Stop();
1967 frame_tree_node_->render_manager()->DeleteFromPendingList(this);
1968 @@ -6635,18 +6652,23 @@ void RenderFrameHostImpl::CreateNewWindow(
1969 effective_transient_activation_state, params->opener_suppressed,
1972 - bool was_consumed = false;
1973 - if (can_create_window) {
1974 - // Consume activation even w/o User Activation v2, to sync other renderers
1975 - // with calling renderer.
1976 - was_consumed = frame_tree_node_->UpdateUserActivationState(
1977 - blink::mojom::UserActivationUpdateType::kConsumeTransientActivation,
1978 - blink::mojom::UserActivationNotificationType::kNone);
1979 - } else {
1980 - std::move(callback).Run(mojom::CreateNewWindowStatus::kIgnore, nullptr);
1992 + // proxies for this frame. The initiating renderer will consume its view of
1994 + bool was_consumed = frame_tree_node_->UpdateUserActivationState(
1998 // For Android WebView, we support a pop-up like behavior for window.open()
2001 @@ -7671,16 +7693,19 @@ void RenderFrameHostImpl::StartPendingDeletionOnSubtree() {
2005 - if (is_waiting_for_unload_ack_)
2006 - OnUnloaded();
2007 - else
2012 parent_->RemoveChild(frame_tree_node_);
2024 @@ -8601,7 +8626,12 @@ bool RenderFrameHostImpl::CreateWebUI(const GURL& dest_url,
2026 web_ui_->GetBindings() != entry_bindings) {
2031 + // There are no known occurrences of it, so we assume this never happen and
2032 + // crash immediately if it does, because there are no easy ways to recover.
2037 @@ -8626,7 +8656,8 @@ bool RenderFrameHostImpl::CreateWebUI(const GURL& dest_url,
2041 - web_ui_.reset();
2047 diff --git a/src/content/browser/renderer_host/render_frame_host_impl.h b/src/content/browser/rende…
2049 --- a/src/content/browser/renderer_host/render_frame_host_impl.h
2051 @@ -1244,6 +1244,8 @@ class CONTENT_EXPORT RenderFrameHostImpl
2060 diff --git a/src/content/browser/renderer_host/render_frame_host_impl_browsertest.cc b/src/content/…
2062 --- a/src/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
2064 @@ -6441,6 +6441,80 @@ IN_PROC_BROWSER_TEST_F(RenderFrameHostImplBrowserTest, ErrorDocuments) {
2065 EXPECT_TRUE(child_b->IsErrorDocument());
2070 +// Regression test for https://crbug.com/1311820 and https://crbug.com/1291764.
2073 + GURL main_url(embedded_test_server()->GetURL(
2075 + // Navigate to a page with a cross-site iframe.
2077 + FrameTreeNode* root = web_contents()->GetPrimaryFrameTree().root();
2078 + FrameTreeNode* child = root->child_at(0);
2082 + url::Origin b_origin = url::Origin::Create(child->current_url());
2083 + EXPECT_EQ(a_origin, root->current_frame_host()->GetLastCommittedOrigin());
2084 + EXPECT_EQ(b_origin, child->current_frame_host()->GetLastCommittedOrigin());
2094 + FrameTreeNode* popup_frame = popup->GetMainFrame()->frame_tree_node();
2096 + // The popup should inherit the subframe's origin. Before the fix for
2100 + popup_frame->current_frame_host()->GetLastCommittedOrigin());
2117 + EXPECT_EQ(child->current_url().spec(),
2129 + FrameTreeNode* popup_frame = popup->GetMainFrame()->frame_tree_node();
2135 + popup_frame->current_frame_host()->GetLastCommittedOrigin());
2137 + popup_frame->current_frame_host()->GetLastCommittedOrigin().opaque());
2145 diff --git a/src/content/browser/renderer_host/render_frame_host_manager.cc b/src/content/browser/r…
2147 --- a/src/content/browser/renderer_host/render_frame_host_manager.cc
2149 @@ -3450,9 +3450,19 @@ void RenderFrameHostManager::CommitPending(
2151 // If this is a top-level frame, and COOP triggered a BrowsingInstance swap,
2153 - // by removing the opener and proxies with unrelated SiteInstances.
2157 DCHECK(frame_tree_node_->IsMainFrame());
2163 + frame_tree_node_->ClearOpenerReferences();
2167 if (frame_tree_node_->opener() &&
2168 !render_frame_host_->GetSiteInstance()->IsRelatedSiteInstance(
2169 frame_tree_node_->opener()
2170 @@ -3464,6 +3474,8 @@ void RenderFrameHostManager::CommitPending(
2175 + // underlying proxies that were used for that purpose.
2177 for (auto& it : browsing_context_state_->proxy_hosts()) {
2179 diff --git a/src/content/browser/renderer_host/render_widget_host_view_android_unittest.cc b/src/co…
2181 --- a/src/content/browser/renderer_host/render_widget_host_view_android_unittest.cc
2183 @@ -276,9 +276,9 @@ TEST_F(RenderWidgetHostViewAndroidTest, InsetVisualViewport) {
2187 - std::unique_ptr<ui::WindowAndroid> window(
2188 - ui::WindowAndroid::CreateForTesting());
2189 - window->AddChild(parent_view());
2192 + window->get()->AddChild(parent_view());
2193 EXPECT_TRUE(render_widget_host_view_android()->IsShowing());
2196 @@ -287,7 +287,7 @@ TEST_F(RenderWidgetHostViewAndroidTest, HideWindowRemoveViewAddViewShowWindow) {
2197 ->hide_layer_and_subtree());
2200 - window->OnVisibilityChanged(nullptr, nullptr, false);
2201 + window->get()->OnVisibilityChanged(nullptr, nullptr, false);
2202 parent_view()->RemoveFromParent();
2203 EXPECT_TRUE(render_widget_host_view_android()->IsShowing());
2205 @@ -297,8 +297,8 @@ TEST_F(RenderWidgetHostViewAndroidTest, HideWindowRemoveViewAddViewShowWindow) {
2209 - window->AddChild(parent_view());
2210 - window->OnVisibilityChanged(nullptr, nullptr, true);
2211 + window->get()->AddChild(parent_view());
2212 + window->get()->OnVisibilityChanged(nullptr, nullptr, true);
2213 EXPECT_TRUE(render_widget_host_view_android()->IsShowing());
2215 ->GetNativeView()
2216 diff --git a/src/content/browser/site_per_process_browsertest.cc b/src/content/browser/site_per_pro…
2218 --- a/src/content/browser/site_per_process_browsertest.cc
2220 @@ -7700,8 +7700,8 @@ IN_PROC_BROWSER_TEST_P(
2224 -// Tests that when a frame contains a modal <dialog> element, out-of-process
2225 -// iframe children cannot take focus, because they are inert.
2226 +// Tests that when an out-of-process iframe becomes inert due to a modal
2231 @@ -7742,11 +7742,11 @@ IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
2235 - // Attempt to change focus in the inert subframe. This should fail.
2240 - "",
2245 @@ -7768,15 +7768,15 @@ IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
2249 - // Verify that inertness was preserved across the navigation.
2250 - EXPECT_EQ("",
2259 - // new local frame remains inert.
2260 + // new local frame remains non-inert.
2261 GURL same_site_url(embedded_test_server()->GetURL("a.com", "/title1.html"));
2264 @@ -7786,14 +7786,103 @@ IN_PROC_BROWSER_TEST_P(SitePerProcessBrowserTest,
2268 - // Verify that inertness was preserved across the navigation.
2269 - EXPECT_EQ("",
2281 + base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
2283 + GURL main_url(embedded_test_server()->GetURL(
2288 + static_cast<WebContentsImpl*>(shell()->web_contents())
2289 + ->GetPrimaryFrameTree()
2291 + ASSERT_EQ(1U, frame_a->child_count());
2292 + FrameTreeNode* frame_b = frame_a->child_at(0);
2293 + ASSERT_EQ(1U, frame_b->child_count());
2294 + FrameTreeNode* frame_c = frame_b->child_at(0);
2295 + RenderFrameProxyHost* proxy_b = frame_b->render_manager()->GetProxyToParent();
2296 + RenderFrameProxyHost* proxy_c = frame_c->render_manager()->GetProxyToParent();
2302 + for (FrameTreeNode* frame : {frame_a, frame_b, frame_c})
2307 + // as ExecJs, waiting for an browser<->renderer roundtrip using ExecJs
2309 + for (FrameTreeNode* frame : {frame_a, frame_b, frame_c})
2314 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2315 + EXPECT_FALSE(proxy_c->IsInertForTesting());
2320 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2321 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2323 + // Make b non-inert, this should also make c non-inert.
2326 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2327 + EXPECT_FALSE(proxy_c->IsInertForTesting());
2332 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2333 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2338 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2339 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2341 + // Try to make c non-inert, it should still be inert due to b.
2344 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2345 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2347 + // Make b non-inert, this should also make c non-inert.
2350 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2351 + EXPECT_FALSE(proxy_c->IsInertForTesting());
2357 + EXPECT_TRUE(proxy_b->IsInertForTesting());
2358 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2360 + // Make b non-inert, c should continue being inert.
2363 + EXPECT_FALSE(proxy_b->IsInertForTesting());
2364 + EXPECT_TRUE(proxy_c->IsInertForTesting());
2367 // Check that main frames for the same site rendering in unrelated tabs start
2370 diff --git a/src/content/browser/sms/sms_provider_gms_unittest.cc b/src/content/browser/sms/sms_pro…
2372 --- a/src/content/browser/sms/sms_provider_gms_unittest.cc
2374 @@ -67,7 +67,7 @@ class SmsProviderGmsBaseTest : public RenderViewHostTestHarness {
2375 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
2378 - test_window_ = ui::WindowAndroid::CreateForTesting();
2383 @@ -75,15 +75,12 @@ class SmsProviderGmsBaseTest : public RenderViewHostTestHarness {
2386 provider_->SetClientAndWindowForTesting(j_fake_sms_retriever_client_,
2387 - test_window_->GetJavaObject());
2388 + window_->get()->GetJavaObject());
2390 provider_->AddObserver(&observer_);
2393 - void TearDown() {
2394 - RenderViewHostTestHarness::TearDown();
2395 - test_window_->Destroy(nullptr, nullptr);
2396 - }
2401 @@ -152,7 +149,7 @@ class SmsProviderGmsBaseTest : public RenderViewHostTestHarness {
2405 - raw_ptr<ui::WindowAndroid> test_window_;
2410 diff --git a/src/content/browser/web_contents/web_contents_impl.cc b/src/content/browser/web_conten…
2412 --- a/src/content/browser/web_contents/web_contents_impl.cc
2414 @@ -2979,9 +2979,18 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params,
2415 ->PreventAssociationWithSpareProcess();
2419 + // Note that GetOpener() is used here to get the opener for origin
2421 + // - GetOriginalOpener(), which would always return the main frame of the
2423 + // - FindOpenerRFH(), which will still return the opener frame if the
2425 + // be used for origin inheritance purposes in those cases, so this should
2426 + // not pass the opener for those cases.
2429 - params.main_frame_name, GetOriginalOpener(), primary_main_frame_policy);
2433 GetContentClient()->browser()->GetWebContentsViewDelegate(this);
2434 diff --git a/src/content/common/frame.mojom b/src/content/common/frame.mojom
2436 --- a/src/content/common/frame.mojom
2438 @@ -554,8 +554,10 @@ struct CreateNewWindowParams {
2442 - // Ignore creation of the new window. This can happen because creation is
2443 - // blocked or because the new window should have no opener relationship.
2451 diff --git a/src/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentRec…
2453 --- a/src/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.j…
2455 @@ -45,7 +45,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver {
2459 - mContext.registerReceiver(this, filter);
2464 diff --git a/src/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/s…
2466 --- a/src/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
2468 @@ -4,14 +4,18 @@
2487 @@ -82,16 +86,34 @@ class Wrappers {
2491 - public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
2492 - if (filter.hasAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION)) {
2493 - mVerificationReceiver = receiver;
2494 - } else {
2495 - mUserConsentReceiver = receiver;
2496 - }
2528 diff --git a/src/content/public/browser/background_fetch_delegate.h b/src/content/public/browser/ba…
2530 --- a/src/content/public/browser/background_fetch_delegate.h
2532 @@ -66,6 +66,7 @@ class CONTENT_EXPORT BackgroundFetchDelegate {
2540 diff --git a/src/content/public/browser/web_contents.h b/src/content/public/browser/web_contents.h
2542 --- a/src/content/public/browser/web_contents.h
2544 @@ -1059,8 +1059,13 @@ class WebContents : public PageNavigator,
2548 - // Returns the original opener if HasOriginalOpener() is true, or nullptr
2549 - // otherwise.
2553 + // original opener if it is a subframe. See https://crbug.com/705316 for more
2560 diff --git a/src/content/renderer/render_view_impl.cc b/src/content/renderer/render_view_impl.cc
2562 --- a/src/content/renderer/render_view_impl.cc
2564 @@ -306,8 +306,27 @@ WebView* RenderViewImpl::CreateView(
2567 auto* frame_host = creator_frame->GetFrameHost();
2568 - bool err = !frame_host->CreateNewWindow(std::move(params), &status, &reply);
2569 - if (err || status == mojom::CreateNewWindowStatus::kIgnore)
2570 + if (!frame_host->CreateNewWindow(std::move(params), &status, &reply)) {
2580 + // activation for the rest of the frame tree.
2585 + consumed_user_gesture = creator->ConsumeTransientUserActivation(
2593 // For Android WebView, we support a pop-up like behavior for window.open()
2594 @@ -327,11 +346,6 @@ WebView* RenderViewImpl::CreateView(
2595 DCHECK_NE(MSG_ROUTING_NONE, reply->main_frame_route_id);
2596 DCHECK_NE(MSG_ROUTING_NONE, reply->widget_params->routing_id);
2598 - // The browser allowed creation of a new window and consumed the user
2599 - // activation.
2600 - consumed_user_gesture = creator->ConsumeTransientUserActivation(
2601 - blink::UserActivationUpdateSource::kBrowser);
2602 -
2606 diff --git a/src/content/test/data/gpu/webgl-overly-large-uniform.html b/src/content/test/data/gpu/…
2609 --- /dev/null
2610 +++ b/src/content/test/data/gpu/webgl-overly-large-uniform.html
2611 @@ -0,0 +1,137 @@
2614 +<script type="x-shader/x-vertex" id="vertex">
2622 +<script type="x-shader/x-fragment" id="fragment">
2650 + // this for now.
2654 + send("FAILURE", "Timed out waiting for context lost event");
2693 + // If allocation fails (for example, on 32-bit Android), fall back
2749 diff --git a/src/content/test/gpu/gpu_tests/context_lost_integration_test.py b/src/content/test/gpu…
2751 --- a/src/content/test/gpu/gpu_tests/context_lost_integration_test.py
2753 @@ -164,6 +164,8 @@ class ContextLostIntegrationTest(gpu_integration_test.GpuIntegrationTest):
2758 + 'webgl-overly-large-uniform.html'),
2760 'webgl-domain-blocking-page1.html'),
2762 @@ -402,6 +404,16 @@ class ContextLostIntegrationTest(gpu_integration_test.GpuIntegrationTest):
2767 + test_path: str) -> None:
2770 + '--enable-features=DisableArrayBufferSizeLimitsForTesting'
2773 + # No reason to wait more than 10 seconds for this test to complete.
2779 diff --git a/src/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/src/content/…
2781 --- a/src/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
2783 @@ -332,6 +332,9 @@ crbug.com/948141 Pixel_CanvasDisplaySRGBAccelerated2D [ Failure ]
2785 crbug.com/883500 [ android android-nexus-5 ] Pixel_BackgroundImage [ Failure ]
2788 +crbug.com/1307317 [ android android-chromium android-nexus-5x ] Pixel_PrecisionRoundedCorner [ Fai…
2791 …crbug.com/883500 [ android android-chromium android-nexus-5x ] Pixel_BackgroundImage [ RetryOnFail…
2792 …crbug.com/1065514 [ android android-chromium android-nexus-5x ] Pixel_WebGLReadPixelsTabSwitch [ R…
2793 diff --git a/src/gpu/command_buffer/client/client_discardable_manager_unittest.cc b/src/gpu/command…
2795 --- a/src/gpu/command_buffer/client/client_discardable_manager_unittest.cc
2797 @@ -45,6 +45,9 @@ class FakeCommandBuffer : public CommandBuffer {
2802 + // No-op; doesn't need to be exercised here.
2807 diff --git a/src/gpu/command_buffer/client/client_test_helper.cc b/src/gpu/command_buffer/client/cl…
2809 --- a/src/gpu/command_buffer/client/client_test_helper.cc
2811 @@ -155,6 +155,13 @@ void MockClientCommandBuffer::DelegateToFake() {
2817 + // TODO(kbr): add a test for a call to this method.
2825 diff --git a/src/gpu/command_buffer/client/client_test_helper.h b/src/gpu/command_buffer/client/cli…
2827 --- a/src/gpu/command_buffer/client/client_test_helper.h
2829 @@ -85,6 +85,8 @@ class MockClientCommandBuffer : public CommandBuffer,
2838 diff --git a/src/gpu/command_buffer/client/cmd_buffer_helper.cc b/src/gpu/command_buffer/client/cmd…
2840 --- a/src/gpu/command_buffer/client/cmd_buffer_helper.cc
2842 @@ -157,7 +157,8 @@ void CommandBufferHelper::UpdateCachedState(const CommandBuffer::State& state) {
2846 - context_lost_ = error::IsError(state.error);
2852 @@ -296,7 +297,6 @@ void CommandBufferHelper::WaitForAvailableEntries(int32_t count) {
2856 - DCHECK(count < total_entry_count_);
2860 @@ -344,7 +344,16 @@ void CommandBufferHelper::WaitForAvailableEntries(int32_t count) {
2864 - DCHECK_GE(immediate_entry_count_, count);
2868 + command_buffer_->ForceLostContext(error::kGuilty);
2878 diff --git a/src/gpu/command_buffer/common/command_buffer.h b/src/gpu/command_buffer/common/command…
2880 --- a/src/gpu/command_buffer/common/command_buffer.h
2882 @@ -126,6 +126,10 @@ class GPU_EXPORT CommandBuffer {
2887 + // Forcibly lose this context. Used by higher-level code when it determines
2888 + // the necessity to do so. Has no effect if the context has already been lost.
2893 diff --git a/src/gpu/command_buffer/service/command_buffer_direct.cc b/src/gpu/command_buffer/servi…
2895 --- a/src/gpu/command_buffer/service/command_buffer_direct.cc
2897 @@ -63,6 +63,11 @@ void CommandBufferDirect::DestroyTransferBuffer(int32_t id) {
2909 diff --git a/src/gpu/command_buffer/service/command_buffer_direct.h b/src/gpu/command_buffer/servic…
2911 --- a/src/gpu/command_buffer/service/command_buffer_direct.h
2913 @@ -41,6 +41,7 @@ class GPU_EXPORT CommandBufferDirect : public CommandBuffer,
2921 diff --git a/src/gpu/command_buffer/service/webgpu_decoder_impl.cc b/src/gpu/command_buffer/service…
2923 --- a/src/gpu/command_buffer/service/webgpu_decoder_impl.cc
2925 @@ -404,11 +404,12 @@ class WebGPUDecoderImpl final : public WebGPUDecoder {
2929 - void DoRequestDevice(DawnRequestDeviceSerial request_device_serial,
2930 - int32_t requested_adapter_index,
2931 - uint32_t device_id,
2932 - uint32_t device_generation,
2933 - const WGPUDeviceProperties& requested_device_properties);
2943 @@ -564,16 +565,16 @@ ContextResult WebGPUDecoderImpl::Initialize() {
2947 -void WebGPUDecoderImpl::DoRequestDevice(
2954 - DCHECK_LE(0, requested_adapter_index);
2955 -
2956 - DCHECK_LT(static_cast<size_t>(requested_adapter_index),
2957 - dawn_adapters_.size());
2965 @@ -648,6 +649,8 @@ void WebGPUDecoderImpl::DoRequestDevice(
2974 @@ -1073,9 +1076,8 @@ error::Error WebGPUDecoderImpl::HandleRequestDevice(
2978 - DoRequestDevice(request_device_serial, adapter_service_id, device_id,
2979 - device_generation, device_properties);
2980 - return error::kNoError;
2986 diff --git a/src/gpu/ipc/client/command_buffer_proxy_impl.cc b/src/gpu/ipc/client/command_buffer_pr…
2988 --- a/src/gpu/ipc/client/command_buffer_proxy_impl.cc
2990 @@ -393,6 +393,22 @@ void CommandBufferProxyImpl::DestroyTransferBuffer(int32_t id) {
3005 + // being in a GpuControlClient callback), so avoid re-entering the
3013 diff --git a/src/gpu/ipc/client/command_buffer_proxy_impl.h b/src/gpu/ipc/client/command_buffer_pro…
3015 --- a/src/gpu/ipc/client/command_buffer_proxy_impl.h
3017 @@ -120,6 +120,7 @@ class GPU_EXPORT CommandBufferProxyImpl : public gpu::CommandBuffer,
3025 diff --git a/src/gpu/ipc/in_process_command_buffer.cc b/src/gpu/ipc/in_process_command_buffer.cc
3027 --- a/src/gpu/ipc/in_process_command_buffer.cc
3029 @@ -1044,6 +1044,21 @@ void InProcessCommandBuffer::DestroyTransferBuffer(int32_t id) {
3044 + command_buffer_->SetContextLostReason(reason);
3045 + command_buffer_->SetParseError(error::kLostContext);
3050 command_buffer_->DestroyTransferBuffer(id);
3051 diff --git a/src/gpu/ipc/in_process_command_buffer.h b/src/gpu/ipc/in_process_command_buffer.h
3053 --- a/src/gpu/ipc/in_process_command_buffer.h
3055 @@ -147,6 +147,7 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer
3063 @@ -325,6 +326,7 @@ class GL_IN_PROCESS_CONTEXT_EXPORT InProcessCommandBuffer
3071 diff --git a/src/net/http/http_stream_parser.cc b/src/net/http/http_stream_parser.cc
3073 --- a/src/net/http/http_stream_parser.cc
3075 @@ -1014,15 +1014,23 @@ int HttpStreamParser::ParseResponseHeaders(int end_offset) {
3076 base::StringPiece(read_buf_->StartOfBuffer(), end_offset));
3081 // Enough data was read -- there is no status line, so this is HTTP/0.9, or
3084 - // If the port is not the default for the scheme, assume it's not a real
3085 - // HTTP/0.9 response, and fail the request.
3092 base::StringPiece scheme = request_->url.scheme_piece();
3094 request_->url.EffectiveIntPort()) {
3095 + // If the port is not the default for the scheme, assume it's not a real
3101 diff --git a/src/net/http/http_stream_parser.h b/src/net/http/http_stream_parser.h
3103 --- a/src/net/http/http_stream_parser.h
3105 @@ -275,6 +275,11 @@ class NET_EXPORT_PRIVATE HttpStreamParser {
3106 // True if reading a keep-alive response. False if not, or if don't yet know.
3111 + // for a response, this will remain true forever.
3117 diff --git a/src/net/http/http_stream_parser_unittest.cc b/src/net/http/http_stream_parser_unittest…
3119 --- a/src/net/http/http_stream_parser_unittest.cc
3121 @@ -1399,6 +1399,25 @@ TEST(HttpStreamParser, Http09PortTests) {
3135 + ASSERT_TRUE(get_runner.response_info()->headers);
3137 + get_runner.response_info()->headers->GetStatusLine());
3147 diff --git a/src/ppapi/proxy/ppapi_command_buffer_proxy.cc b/src/ppapi/proxy/ppapi_command_buffer_p…
3149 --- a/src/ppapi/proxy/ppapi_command_buffer_proxy.cc
3151 @@ -171,6 +171,12 @@ void PpapiCommandBufferProxy::DestroyTransferBuffer(int32_t id) {
3157 + // deprecation. No current clients determined its necessity, so it
3164 diff --git a/src/ppapi/proxy/ppapi_command_buffer_proxy.h b/src/ppapi/proxy/ppapi_command_buffer_pr…
3166 --- a/src/ppapi/proxy/ppapi_command_buffer_proxy.h
3168 @@ -58,6 +58,7 @@ class PPAPI_PROXY_EXPORT PpapiCommandBufferProxy : public gpu::CommandBuffer,
3176 diff --git a/src/services/network/public/cpp/server/http_server.cc b/src/services/network/public/cp…
3178 --- a/src/services/network/public/cpp/server/http_server.cc
3179 +++ b/src/services/network/public/cpp/server/http_server.cc
3180 @@ -107,8 +107,8 @@ void HttpServer::SendRaw(int connection_id,
3181 connection->write_watcher().Watch(
3182 connection->send_handle(),
3184 - base::BindRepeating(&HttpServer::OnWritable, base::Unretained(this),
3185 - connection->id()));
3187 + weak_ptr_factory_.GetWeakPtr(), connection->id()));
3191 @@ -182,9 +182,9 @@ bool HttpServer::SetSendBufferSize(int connection_id, int32_t size) {
3195 - server_socket_->Accept(
3196 - mojo::NullRemote(), /* observer */
3197 - base::BindOnce(&HttpServer::OnAcceptCompleted, base::Unretained(this)));
3198 + server_socket_->Accept(mojo::NullRemote(), /* observer */
3204 @@ -212,8 +212,8 @@ void HttpServer::OnAcceptCompleted(
3205 connection->receive_handle(),
3208 - base::BindRepeating(&HttpServer::OnReadable, base::Unretained(this),
3209 - connection->id()));
3211 + weak_ptr_factory_.GetWeakPtr(), connection->id()));
3215 diff --git a/src/services/network/url_loader.cc b/src/services/network/url_loader.cc
3217 --- a/src/services/network/url_loader.cc
3219 @@ -849,8 +849,8 @@ void URLLoader::OpenFilesForUpload(const ResourceRequest& request) {
3221 base::SequencedTaskRunnerHandle::Get()->PostTask(
3223 - base::BindOnce(&URLLoader::NotifyCompleted, base::Unretained(this),
3224 - net::ERR_ACCESS_DENIED));
3229 url_request_->LogBlockedBy("Opening Files");
3230 @@ -869,7 +869,7 @@ void URLLoader::SetUpUpload(const ResourceRequest& request,
3232 base::SequencedTaskRunnerHandle::Get()->PostTask(
3234 - base::Unretained(this), error_code));
3239 diff --git a/src/storage/browser/quota/quota_manager_proxy.cc b/src/storage/browser/quota/quota_man…
3241 --- a/src/storage/browser/quota/quota_manager_proxy.cc
3243 @@ -15,6 +15,7 @@
3251 @@ -123,8 +124,7 @@ void QuotaManagerProxy::GetOrCreateBucket(
3253 quota_manager_impl_->GetOrCreateBucket(
3255 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3256 - std::move(callback)));
3261 @@ -151,8 +151,7 @@ void QuotaManagerProxy::GetOrCreateBucketDeprecated(
3263 quota_manager_impl_->GetOrCreateBucketDeprecated(
3265 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3266 - std::move(callback)));
3271 @@ -179,8 +178,7 @@ void QuotaManagerProxy::CreateBucketForTesting(
3273 quota_manager_impl_->CreateBucketForTesting( // IN-TEST
3275 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3276 - std::move(callback)));
3281 @@ -207,8 +205,7 @@ void QuotaManagerProxy::GetBucket(
3283 quota_manager_impl_->GetBucket(
3285 - base::BindOnce(&DidGetBucket, std::move(callback_task_runner),
3286 - std::move(callback)));
3291 @@ -234,8 +231,7 @@ void QuotaManagerProxy::DeleteBucket(
3293 quota_manager_impl_->FindAndDeleteBucketData(
3295 - base::BindOnce(&DidGetStatus, std::move(callback_task_runner),
3296 - std::move(callback)));
3301 diff --git a/src/third_party/angle/src/libANGLE/Context.cpp b/src/third_party/angle/src/libANGLE/Co…
3303 --- a/src/third_party/angle/src/libANGLE/Context.cpp
3304 +++ b/src/third_party/angle/src/libANGLE/Context.cpp
3305 @@ -1304,6 +1304,7 @@ void Context::bindTransformFeedback(GLenum target, TransformFeedbackID transf…
3313 @@ -3039,6 +3040,7 @@ void Context::detachTransformFeedback(TransformFeedbackID transformFeedback)
3321 diff --git a/src/third_party/angle/src/libANGLE/State.cpp b/src/third_party/angle/src/libANGLE/Stat…
3323 --- a/src/third_party/angle/src/libANGLE/State.cpp
3324 +++ b/src/third_party/angle/src/libANGLE/State.cpp
3325 @@ -2174,10 +2174,7 @@ angle::Result State::detachBuffer(Context *context, const Buffer *buffer)
3328 ANGLE_TRY(curTransformFeedback->detachBuffer(context, bufferID));
3329 - if (isTransformFeedbackActiveUnpaused())
3330 - {
3331 - context->getStateCache().onActiveTransformFeedbackChange(context);
3332 - }
3333 + context->getStateCache().onActiveTransformFeedbackChange(context);
3336 if (getVertexArray()->detachBuffer(context, bufferID))
3337 diff --git a/src/third_party/angle/src/libANGLE/validationEGL.cpp b/src/third_party/angle/src/libAN…
3339 --- a/src/third_party/angle/src/libANGLE/validationEGL.cpp
3340 +++ b/src/third_party/angle/src/libANGLE/validationEGL.cpp
3341 @@ -4852,7 +4852,7 @@ bool ValidateBindTexImage(const ValidationContext *val,
3344 gl::Context *context = val->eglThread->getContext();
3345 - if (context)
3346 + if (context && !context->isContextLost())
3348 gl::TextureType type = egl_gl::EGLTextureTargetToTextureType(surface->getTextureTarget());
3349 gl::Texture *textureObject = context->getTextureByType(type);
3350 diff --git a/src/third_party/angle/src/libANGLE/validationES.cpp b/src/third_party/angle/src/libANG…
3352 --- a/src/third_party/angle/src/libANGLE/validationES.cpp
3353 +++ b/src/third_party/angle/src/libANGLE/validationES.cpp
3354 @@ -4178,7 +4178,7 @@ const char *ValidateDrawStates(const Context *context)
3358 - if (state.isTransformFeedbackActiveUnpaused())
3363 diff --git a/src/third_party/angle/src/libANGLE/validationES2.cpp b/src/third_party/angle/src/libAN…
3365 --- a/src/third_party/angle/src/libANGLE/validationES2.cpp
3366 +++ b/src/third_party/angle/src/libANGLE/validationES2.cpp
3367 @@ -3620,7 +3620,7 @@ bool ValidateBufferSubData(const Context *context,
3370 // Check for possible overflow of size + offset
3371 - angle::CheckedNumeric<size_t> checkedSize(size);
3376 diff --git a/src/third_party/angle/src/libGLESv2/egl_stubs.cpp b/src/third_party/angle/src/libGLESv…
3378 --- a/src/third_party/angle/src/libGLESv2/egl_stubs.cpp
3379 +++ b/src/third_party/angle/src/libGLESv2/egl_stubs.cpp
3380 @@ -61,7 +61,7 @@ EGLBoolean BindTexImage(Thread *thread, Display *display, Surface *eglSurface, E
3383 gl::Context *context = thread->getContext();
3384 - if (context)
3385 + if (context && !context->isContextLost())
3388 egl_gl::EGLTextureTargetToTextureType(eglSurface->getTextureTarget());
3389 @@ -569,15 +569,18 @@ EGLBoolean ReleaseTexImage(Thread *thread, Display *display, Surface *eglSurf…
3391 ANGLE_EGL_TRY_RETURN(thread, display->prepareForCall(), "eglReleaseTexImage",
3393 - gl::Texture *texture = eglSurface->getBoundTexture();
3394 -
3395 - if (texture)
3396 + gl::Context *context = thread->getContext();
3397 + if (context && !context->isContextLost())
3399 - ANGLE_EGL_TRY_RETURN(thread, eglSurface->releaseTexImage(thread->getContext(), buffer),
3400 - "eglReleaseTexImage", GetSurfaceIfValid(display, eglSurface),
3401 - EGL_FALSE);
3402 - }
3403 + gl::Texture *texture = eglSurface->getBoundTexture();
3407 + ANGLE_EGL_TRY_RETURN(thread, eglSurface->releaseTexImage(thread->getContext(), buffer),
3412 thread->setSuccess();
3415 diff --git a/src/third_party/angle/src/tests/gl_tests/BufferDataTest.cpp b/src/third_party/angle/sr…
3417 --- a/src/third_party/angle/src/tests/gl_tests/BufferDataTest.cpp
3418 +++ b/src/third_party/angle/src/tests/gl_tests/BufferDataTest.cpp
3419 @@ -914,6 +914,19 @@ TEST_P(BufferDataTest, MapWriteArrayBufferDataDrawArrays)
3423 +// Verify that buffer sub data uploads are properly validated within the buffer size range on 32-b…
3436 // Tests a null crash bug caused by copying from null back-end buffer pointer
3439 diff --git a/src/third_party/angle/src/tests/gl_tests/TransformFeedbackTest.cpp b/src/third_party/a…
3441 --- a/src/third_party/angle/src/tests/gl_tests/TransformFeedbackTest.cpp
3442 +++ b/src/third_party/angle/src/tests/gl_tests/TransformFeedbackTest.cpp
3443 @@ -3997,6 +3997,67 @@ TEST_P(TransformFeedbackTest, DeleteTransformFeedbackBuffer)
3461 + ASSERT_NE(-1, loc);
3511 diff --git a/src/third_party/blink/common/features.cc b/src/third_party/blink/common/features.cc
3513 --- a/src/third_party/blink/common/features.cc
3515 @@ -1202,5 +1202,9 @@ const base::Feature kCompositedCaret{"CompositedCaret",
3525 diff --git a/src/third_party/blink/common/messaging/string_message_codec.cc b/src/third_party/blink…
3527 --- a/src/third_party/blink/common/messaging/string_message_codec.cc
3529 @@ -6,6 +6,7 @@
3537 @@ -52,21 +53,22 @@ void WriteBytes(const char* bytes,
3538 buffer->insert(buffer->end(), bytes, bytes + num_bytes);
3541 -bool ReadUint8(const uint8_t** ptr, const uint8_t* end, uint8_t* value) {
3542 - if (*ptr >= end)
3543 - return false;
3544 - *value = *(*ptr)++;
3545 - return true;
3554 -bool ReadUint32(const uint8_t** ptr, const uint8_t* end, uint32_t* value) {
3560 - if (*ptr >= end)
3563 - current_byte = *(*ptr)++;
3568 @@ -106,36 +108,36 @@ std::vector<uint8_t> EncodeStringMessage(const std::u16string& data) {
3572 - const uint8_t* ptr = encoded_data.data();
3573 - const uint8_t* end = ptr + encoded_data.size();
3581 - if (!ReadUint8(&ptr, end, &tag))
3585 - if (tag == kVersionTag && !ReadUint32(&ptr, end, &version))
3593 - if (!ReadUint32(&ptr, end, &num_bytes))
3596 - result->assign(reinterpret_cast<const char*>(ptr),
3597 - reinterpret_cast<const char*>(ptr) + num_bytes);
3598 - return true;
3600 + result->assign(span.begin(), span.end());
3605 - if (!ReadUint32(&ptr, end, &num_bytes))
3608 - result->assign(reinterpret_cast<const char16_t*>(ptr), num_bytes / 2);
3609 - return true;
3611 + result->assign(span.begin(), span.end());
3616 diff --git a/src/third_party/blink/common/messaging/string_message_codec_unittest.cc b/src/third_pa…
3618 --- a/src/third_party/blink/common/messaging/string_message_codec_unittest.cc
3620 @@ -136,5 +136,13 @@ TEST(StringMessageCodecTest, V8ToSelfTest_NonASCIILongEnoughToForcePadding) {
3634 diff --git a/src/third_party/blink/public/common/features.h b/src/third_party/blink/public/common/f…
3636 --- a/src/third_party/blink/public/common/features.h
3638 @@ -593,6 +593,12 @@ BLINK_COMMON_EXPORT extern const base::Feature kCompositedCaret;
3651 diff --git a/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/src/third_party/…
3653 --- a/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl
3655 @@ -8023,6 +8023,7 @@ domain Page
3663 diff --git a/src/third_party/blink/renderer/build/scripts/core/css/templates/cssom_keywords.cc.tmpl…
3665 --- a/src/third_party/blink/renderer/build/scripts/core/css/templates/cssom_keywords.cc.tmpl
3667 @@ -20,8 +20,10 @@ bool CSSOMKeywords::ValidKeywordForProperty(CSSPropertyID id,
3671 - if (css_parsing_utils::IsCSSWideKeyword(valueID))
3672 - return true;
3674 + // TODO(crbug.com/1310761): Support CSS-wide keywords in custom props.
3679 {% for property in properties if property.keywordIDs and 'Keyword' in property.typedom_types %}
3680 diff --git a/src/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/src/third_party/b…
3682 --- a/src/third_party/blink/renderer/core/css/resolver/style_resolver.cc
3684 @@ -1303,9 +1303,6 @@ scoped_refptr<ComputedStyle> StyleResolver::InitialStyleForElement() const {
3686 initial_style->SetInitialData(std::move(initial_data));
3688 - if (frame && frame->IsInert())
3689 - initial_style->SetIsForcedInert();
3690 -
3694 diff --git a/src/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc b/src/third_pa…
3696 --- a/src/third_party/blink/renderer/core/css/resolver/style_resolver_test.cc
3698 @@ -1872,8 +1872,6 @@ TEST_F(StyleResolverTest, IsInertWithFullscreen) {
3702 - LocalFrame& frame = GetFrame();
3703 -
3704 document.body()->setInnerHTML(R"HTML(
3707 @@ -1898,27 +1896,9 @@ TEST_F(StyleResolverTest, IsInertWithFrameAndFullscreen) {
3708 EXPECT_FALSE(div->GetComputedStyle()->IsInert());
3709 EXPECT_FALSE(div_text->GetComputedStyle()->IsInert());
3711 - frame.SetIsInert(true);
3712 - UpdateAllLifecyclePhasesForTest();
3713 -
3714 - EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3715 - EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3716 - EXPECT_TRUE(body->GetComputedStyle()->IsInert());
3717 - EXPECT_TRUE(div->GetComputedStyle()->IsInert());
3718 - EXPECT_TRUE(div_text->GetComputedStyle()->IsInert());
3719 -
3723 - EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3724 - EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3725 - EXPECT_TRUE(body->GetComputedStyle()->IsInert());
3726 - EXPECT_TRUE(div->GetComputedStyle()->IsInert());
3727 - EXPECT_TRUE(div_text->GetComputedStyle()->IsInert());
3728 -
3729 - frame.SetIsInert(false);
3730 - UpdateAllLifecyclePhasesForTest();
3731 -
3732 EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3733 EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3734 EXPECT_FALSE(body->GetComputedStyle()->IsInert());
3735 @@ -1933,20 +1913,10 @@ TEST_F(StyleResolverTest, IsInertWithFrameAndFullscreen) {
3736 EXPECT_FALSE(body->GetComputedStyle()->IsInert());
3737 EXPECT_FALSE(div->GetComputedStyle()->IsInert());
3738 EXPECT_FALSE(div_text->GetComputedStyle()->IsInert());
3739 -
3740 - frame.SetIsInert(true);
3741 - UpdateAllLifecyclePhasesForTest();
3742 -
3743 - EXPECT_FALSE(document.GetComputedStyle()->IsInert());
3744 - EXPECT_TRUE(html->GetComputedStyle()->IsInert());
3745 - EXPECT_TRUE(body->GetComputedStyle()->IsInert());
3746 - EXPECT_TRUE(div->GetComputedStyle()->IsInert());
3747 - EXPECT_TRUE(div_text->GetComputedStyle()->IsInert());
3752 - LocalFrame& frame = GetFrame();
3755 document.documentElement()->setInnerHTML(R"HTML(
3756 @@ -1977,37 +1947,23 @@ TEST_F(StyleResolverTest, IsInertWithBackdrop) {
3760 - frame.SetIsInert(true);
3761 - UpdateAllLifecyclePhasesForTest();
3762 -
3763 - EXPECT_EQ(html->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3764 - EXPECT_TRUE(IsBackdropInert(body));
3765 - EXPECT_TRUE(IsBackdropInert(dialog));
3766 -
3767 dialog->close();
3770 EXPECT_EQ(html->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3771 - EXPECT_TRUE(IsBackdropInert(body));
3773 EXPECT_EQ(dialog->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3778 - EXPECT_TRUE(IsBackdropInert(html));
3780 EXPECT_EQ(body->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3781 EXPECT_EQ(dialog->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3783 dialog->showModal(exception_state);
3786 - EXPECT_TRUE(IsBackdropInert(html));
3787 - EXPECT_EQ(body->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3788 - EXPECT_TRUE(IsBackdropInert(dialog));
3789 -
3790 - frame.SetIsInert(false);
3791 - UpdateAllLifecyclePhasesForTest();
3792 -
3794 EXPECT_EQ(body->GetPseudoElement(kPseudoIdBackdrop), nullptr);
3796 diff --git a/src/third_party/blink/renderer/core/dom/attr.cc b/src/third_party/blink/renderer/core/…
3798 --- a/src/third_party/blink/renderer/core/dom/attr.cc
3800 @@ -24,10 +24,12 @@
3813 @@ -78,14 +80,23 @@ void Attr::setValue(const AtomicString& value,
3817 -void Attr::setNodeValue(const String& v) {
3819 // Attr uses AtomicString type for its value to save memory as there
3822 - if (element_)
3823 - element_->setAttribute(GetQualifiedName(), value);
3824 - else
3825 - standalone_value_or_attached_local_name_ = value;
3833 + if (value->IsString())
3834 + string_value = value->GetAsString();
3835 + else if (value->IsTrustedScript())
3836 + string_value = value->GetAsTrustedScript()->toString();
3842 diff --git a/src/third_party/blink/renderer/core/dom/attr.h b/src/third_party/blink/renderer/core/d…
3844 --- a/src/third_party/blink/renderer/core/dom/attr.h
3846 @@ -67,7 +67,9 @@ class CORE_EXPORT Attr final : public Node {
3850 - void setNodeValue(const String&) override;
3857 diff --git a/src/third_party/blink/renderer/core/dom/character_data.cc b/src/third_party/blink/rend…
3859 --- a/src/third_party/blink/renderer/core/dom/character_data.cc
3861 @@ -186,7 +186,7 @@ bool CharacterData::ContainsOnlyWhitespaceOrEmpty() const {
3865 -void CharacterData::setNodeValue(const String& node_value) {
3870 diff --git a/src/third_party/blink/renderer/core/dom/character_data.h b/src/third_party/blink/rende…
3872 --- a/src/third_party/blink/renderer/core/dom/character_data.h
3874 @@ -94,7 +94,7 @@ class CORE_EXPORT CharacterData : public Node {
3878 - void setNodeValue(const String&) final;
3883 diff --git a/src/third_party/blink/renderer/core/dom/node.cc b/src/third_party/blink/renderer/core/…
3885 --- a/src/third_party/blink/renderer/core/dom/node.cc
3887 @@ -368,7 +368,7 @@ String Node::nodeValue() const {
3891 -void Node::setNodeValue(const String&) {
3893 // By default, setting nodeValue has no effect.
3896 diff --git a/src/third_party/blink/renderer/core/dom/node.h b/src/third_party/blink/renderer/core/d…
3898 --- a/src/third_party/blink/renderer/core/dom/node.h
3900 @@ -197,7 +197,8 @@ class CORE_EXPORT Node : public EventTarget {
3904 - virtual void setNodeValue(const String&);
3910 diff --git a/src/third_party/blink/renderer/core/dom/node.idl b/src/third_party/blink/renderer/core…
3912 --- a/src/third_party/blink/renderer/core/dom/node.idl
3914 @@ -56,7 +56,7 @@
3918 - [CEReactions] attribute DOMString? nodeValue;
3923 diff --git a/src/third_party/blink/renderer/core/editing/serializers/serialization.cc b/src/third_p…
3925 --- a/src/third_party/blink/renderer/core/editing/serializers/serialization.cc
3927 @@ -835,6 +835,12 @@ static bool StripSVGUseDataURLs(Node& node) {
3940 @@ -844,42 +850,56 @@ DocumentFragment* CreateSanitizedFragmentFromMarkupWithContext(
3944 - Document* staging_document = CreateStagingDocumentForMarkupSanitization(
3945 - *document.GetFrame()->GetFrameScheduler()->GetAgentGroupScheduler());
3946 - Element* body = staging_document->body();
3947 -
3948 - DocumentFragment* fragment = CreateFragmentFromMarkupWithContext(
3949 - *staging_document, raw_markup, fragment_start, fragment_end, KURL(),
3950 - kDisallowScriptingAndPluginContent);
3951 - if (!fragment) {
3952 - staging_document->GetPage()->WillBeDestroyed();
3953 - return nullptr;
3954 - }
3959 + for (unsigned iteration = 0;
3965 + *document.GetFrame()->GetFrameScheduler()->GetAgentGroupScheduler());
3966 + Element* body = staging_document->body();
3972 + staging_document->GetPage()->WillBeDestroyed();
3976 - bool needs_sanitization = false;
3977 - if (ContainsStyleElements(*fragment))
3978 - needs_sanitization = true;
3979 - if (StripSVGUseDataURLs(*fragment))
3980 - needs_sanitization = true;
3987 - if (!needs_sanitization) {
3991 + body->appendChild(fragment);
3992 + staging_document->UpdateStyleAndLayout(DocumentUpdateReason::kEditing);
4002 staging_document->GetPage()->WillBeDestroyed();
4003 - return CreateFragmentFromMarkupWithContext(
4004 - document, raw_markup, fragment_start, fragment_end, base_url,
4005 - kDisallowScriptingAndPluginContent);
4011 - body->appendChild(fragment);
4012 - staging_document->UpdateStyleAndLayout(DocumentUpdateReason::kEditing);
4013 -
4014 - // This sanitizes stylesheets in the markup into element inline styles
4015 - String markup = CreateMarkup(Position::FirstPositionInNode(*body),
4016 - Position::LastPositionInNode(*body),
4017 - CreateMarkupOptions::Builder()
4018 - .SetShouldAnnotateForInterchange(true)
4019 - .SetIsForMarkupSanitization(true)
4020 - .Build());
4021 - staging_document->GetPage()->WillBeDestroyed();
4028 diff --git a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.cc b/src/third_p…
4030 --- a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.cc
4032 @@ -114,12 +114,15 @@ WebDocumentLoaderImpl::WebDocumentLoaderImpl(
4036 - std::unique_ptr<PolicyContainer> policy_container)
4037 - : DocumentLoader(frame,
4045 - response_wrapper_(DocumentLoader::GetResponse()) {}
4051 diff --git a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.h b/src/third_pa…
4053 --- a/src/third_party/blink/renderer/core/exported/web_document_loader_impl.h
4055 @@ -54,7 +54,8 @@ class CORE_EXPORT WebDocumentLoaderImpl final : public DocumentLoader,
4059 - std::unique_ptr<PolicyContainer> policy_container);
4065 diff --git a/src/third_party/blink/renderer/core/frame/frame.cc b/src/third_party/blink/renderer/co…
4067 --- a/src/third_party/blink/renderer/core/frame/frame.cc
4069 @@ -358,7 +358,8 @@ void Frame::UpdateInertIfPossible() {
4072 const ComputedStyle* style = frame_owner_element->GetComputedStyle();
4073 - SetIsInert(style && style->IsInert());
4075 + SetIsInert((style && style->IsInert()) || (parent && parent->IsInert()));
4079 diff --git a/src/third_party/blink/renderer/core/frame/local_frame.cc b/src/third_party/blink/rende…
4081 --- a/src/third_party/blink/renderer/core/frame/local_frame.cc
4083 @@ -904,13 +904,19 @@ void LocalFrame::SetIsInert(bool inert) {
4087 - if (Document* document = GetDocument()) {
4088 - if (Element* root = document->documentElement()) {
4089 - root->SetNeedsStyleRecalc(
4090 - kLocalStyleChange,
4091 - StyleChangeReasonForTracing::Create(style_change_reason::kFrame));
4092 - }
4095 + for (Frame* child = Tree().FirstChild(); child;
4096 + child = child->Tree().NextSibling()) {
4097 + child->UpdateInertIfPossible();
4105 + document->ClearAXObjectCache();
4109 @@ -2131,16 +2137,19 @@ void LocalFrame::ForceSynchronousDocumentInstall(
4112 .ForPrerendering(GetPage()->IsPrerendering()));
4114 DocumentParser* parser = document->OpenForNavigation(
4115 kForceSynchronousParsing, mime_type, AtomicString("UTF-8"));
4116 for (const auto& segment : *data)
4117 parser->AppendBytes(segment.data(), segment.size());
4118 parser->Finish();
4120 - // Upon loading of SVGImages, log PageVisits in UseCounter.
4122 + // replace the document in `parser->Finish()`, which may happen when XSLT
4124 // Do not track PageVisits for inspector, web page popups, and validation
4126 - if (document->IsSVGDocument())
4127 + if (document == GetDocument() && document->IsSVGDocument())
4128 loader_.GetDocumentLoader()->GetUseCounter().DidCommitLoad(this);
4131 diff --git a/src/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/src/third_party…
4133 --- a/src/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
4135 @@ -782,10 +782,9 @@ DocumentLoader* LocalFrameClientImpl::CreateDocumentLoader(
4139 - MakeGarbageCollected<WebDocumentLoaderImpl>(frame, navigation_type,
4140 - std::move(navigation_params),
4141 - std::move(policy_container));
4142 - document_loader->SetExtraData(std::move(extra_data));
4146 if (web_frame_->Client())
4147 web_frame_->Client()->DidCreateDocumentLoader(document_loader);
4149 diff --git a/src/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/src/third_party…
4151 --- a/src/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
4153 @@ -682,6 +682,8 @@ Response InspectorDOMAgent::collectClassNamesFromSubtree(
4158 + return Response::ServerError("No suitable node with given id found");
4160 if (!parent_element && !parent_node->IsDocumentNode() &&
4161 !parent_node->IsDocumentFragment())
4162 diff --git a/src/third_party/blink/renderer/core/layout/layout_embedded_content.cc b/src/third_part…
4164 --- a/src/third_party/blink/renderer/core/layout/layout_embedded_content.cc
4166 @@ -218,12 +218,8 @@ void LayoutEmbeddedContent::StyleDidChange(StyleDifference diff,
4170 - bool was_inert = old_style && old_style->IsInert();
4171 - bool is_inert = new_style.IsInert();
4172 - if (was_inert != is_inert) {
4173 - if (Frame* frame = GetFrameOwnerElement()->ContentFrame())
4174 - frame->SetIsInert(is_inert);
4175 - }
4176 + if (Frame* frame = GetFrameOwnerElement()->ContentFrame())
4177 + frame->UpdateInertIfPossible();
4181 diff --git a/src/third_party/blink/renderer/core/layout/table_layout_algorithm_auto.cc b/src/third_…
4183 --- a/src/third_party/blink/renderer/core/layout/table_layout_algorithm_auto.cc
4185 @@ -673,7 +673,7 @@ void TableLayoutAlgorithmAuto::InsertSpanCell(LayoutTableCell* cell) {
4186 span > span_cells_[pos]->ColSpan())
4189 - (size - pos - 1) * sizeof(LayoutTableCell*));
4190 + (size - pos - 1) * sizeof(decltype(span_cells_)::value_type));
4194 diff --git a/src/third_party/blink/renderer/core/loader/document_loader.cc b/src/third_party/blink/…
4196 --- a/src/third_party/blink/renderer/core/loader/document_loader.cc
4198 @@ -327,6 +327,7 @@ ASSERT_SIZE(DocumentLoader, SameSizeAsDocumentLoader);
4206 diff --git a/src/third_party/blink/renderer/core/loader/document_loader.h b/src/third_party/blink/r…
4208 --- a/src/third_party/blink/renderer/core/loader/document_loader.h
4210 @@ -102,6 +102,7 @@ class PrefetchedSignedExchangeManager;
4218 @@ -116,10 +117,15 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected<DocumentLoader>,
4222 - DocumentLoader(LocalFrame*,
4235 diff --git a/src/third_party/blink/renderer/core/loader/empty_clients.cc b/src/third_party/blink/re…
4237 --- a/src/third_party/blink/renderer/core/loader/empty_clients.cc
4239 @@ -36,6 +36,7 @@
4247 @@ -125,9 +126,11 @@ DocumentLoader* EmptyLocalFrameClient::CreateDocumentLoader(
4251 - return MakeGarbageCollected<DocumentLoader>(frame, navigation_type,
4252 - std::move(navigation_params),
4253 - std::move(policy_container));
4262 diff --git a/src/third_party/blink/renderer/core/messaging/message_port.cc b/src/third_party/blink/…
4264 --- a/src/third_party/blink/renderer/core/messaging/message_port.cc
4266 @@ -55,7 +55,11 @@
4270 - : ExecutionContextLifecycleObserver(&execution_context),
4279 @@ -167,10 +171,21 @@ void MessagePort::Entangle(MessagePortDescriptor port) {
4283 + // If the context was already destroyed, there is no reason to actually
4284 + // entangle the port and create a Connector. No messages will ever be able to
4298 connector_->set_incoming_receiver(this);
4299 connector_->set_connection_error_handler(
4301 diff --git a/src/third_party/blink/renderer/core/messaging/message_port.h b/src/third_party/blink/r…
4303 --- a/src/third_party/blink/renderer/core/messaging/message_port.h
4305 @@ -141,7 +141,7 @@ class CORE_EXPORT MessagePort : public EventTargetWithInlineData,
4309 - bool closed_ = false;
4314 diff --git a/src/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc b/src/third_party/b…
4316 --- a/src/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc
4318 @@ -7,8 +7,10 @@
4329 @@ -333,4 +335,41 @@ TEST_F(SVGImageSimTest, TwoImagesSameSVGImageDifferentSize) {
4348 +<?xml-stylesheet type="text/xsl" href="#stylesheet"?>
4371 diff --git a/src/third_party/blink/renderer/core/timing/performance.cc b/src/third_party/blink/rend…
4373 --- a/src/third_party/blink/renderer/core/timing/performance.cc
4375 @@ -562,16 +562,6 @@ mojom::blink::ResourceTimingInfoPtr Performance::GenerateResourceTiming(
4376 result->allow_redirect_details = false;
4377 result->last_redirect_end_time = base::TimeTicks();
4379 - if (!result->allow_redirect_details) {
4380 - // TODO(https://crbug.com/817691): There was previously a DCHECK that
4381 - // |final_timing| is non-null. However, it clearly can be null: removing
4382 - // this check caused https://crbug.com/803811. Figure out how this can
4383 - // happen so test coverage can be added.
4384 - if (ResourceLoadTiming* final_timing =
4385 - final_response.GetResourceLoadTiming()) {
4386 - result->start_time = final_timing->RequestTime();
4387 - }
4388 - }
4390 result->allow_redirect_details = false;
4391 result->last_redirect_end_time = base::TimeTicks();
4392 diff --git a/src/third_party/blink/renderer/core/timing/performance_resource_timing.cc b/src/third_…
4394 --- a/src/third_party/blink/renderer/core/timing/performance_resource_timing.cc
4396 @@ -258,8 +258,10 @@ DOMHighResTimeStamp PerformanceResourceTiming::redirectEnd() const {
4400 - if (!timing)
4408 diff --git a/src/third_party/blink/renderer/core/timing/profiler_group.cc b/src/third_party/blink/r…
4410 --- a/src/third_party/blink/renderer/core/timing/profiler_group.cc
4412 @@ -110,8 +110,7 @@ ProfilerGroup::ProfilerGroup(v8::Isolate* isolate)
4416 - num_active_profilers_(0) {
4417 -}
4422 @@ -234,6 +233,8 @@ void ProfilerGroup::WillBeDestroyed() {
4431 @@ -304,18 +305,49 @@ void ProfilerGroup::CancelProfiler(Profiler* profiler) {
4437 DCHECK(!profiler->stopped());
4442 + detached_profiler_ids_.push_back(profiler->ProfilerId());
4444 // Since it's possible for the profiler to get destructed along with its
4445 // associated context, dispatch a task to cleanup context-independent isolate
4447 ThreadScheduler::Current()->V8TaskRunner()->PostTask(
4448 - FROM_HERE, WTF::Bind(&ProfilerGroup::CancelProfilerImpl,
4450 WrapPersistent(this), profiler->ProfilerId()));
4473 + for (auto& detached_profiler_id : detached_profiler_ids_) {
4482 diff --git a/src/third_party/blink/renderer/core/timing/profiler_group.h b/src/third_party/blink/re…
4484 --- a/src/third_party/blink/renderer/core/timing/profiler_group.h
4486 @@ -81,6 +81,10 @@ class CORE_EXPORT ProfilerGroup
4490 + // Clean context independent resources for leaked profilers
4494 // Generates an unused string identifier to use for a new profiling session.
4497 @@ -88,9 +92,11 @@ class CORE_EXPORT ProfilerGroup
4501 -
4507 // A set of observers, one for each ExecutionContext that has profiling
4510 diff --git a/src/third_party/blink/renderer/core/timing/profiler_group_test.cc b/src/third_party/bl…
4512 --- a/src/third_party/blink/renderer/core/timing/profiler_group_test.cc
4514 @@ -262,4 +262,29 @@ TEST(ProfilerGroupTest, LeakProfilerWithContext) {
4524 + profiler_group->OnProfilingContextAdded(scope.GetExecutionContext());
4527 + init_options->setSampleInterval(0);
4528 + init_options->setMaxBufferSize(0);
4529 + Profiler* profiler = profiler_group->CreateProfiler(
4532 + EXPECT_FALSE(profiler->stopped());
4536 + ThreadState::Current()->CollectAllGarbageForTesting();
4544 diff --git a/src/third_party/blink/renderer/modules/accessibility/ax_object.cc b/src/third_party/bl…
4546 --- a/src/third_party/blink/renderer/modules/accessibility/ax_object.cc
4548 @@ -2596,6 +2596,14 @@ bool AXObject::ComputeIsInertViaStyle(const ComputedStyle* style,
4552 + } else if (const LocalFrame* frame = GetNode()->GetDocument().GetFrame()) {
4555 + if (frame->IsInert()) {
4557 + ignored_reasons->push_back(IgnoredReason(kAXInertSubtree));
4562 // Either GetNode() is null, or it's locked by content-visibility, or we
4563 diff --git a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_f…
4565 --- a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_file_del…
4567 @@ -19,6 +19,7 @@
4575 @@ -65,6 +66,8 @@ FileSystemAccessRegularFileDelegate::FileSystemAccessRegularFileDelegate(
4584 @@ -75,13 +78,14 @@ base::FileErrorOr<int> FileSystemAccessRegularFileDelegate::Read(
4588 - int64_t write_offset,
4596 - if (!base::CheckAdd(write_offset, write_size)
4597 - .AssignIfValid(&write_end_offset)) {
4602 @@ -89,8 +93,8 @@ base::FileErrorOr<int> FileSystemAccessRegularFileDelegate::Write(
4606 - int result = backing_file_.Write(
4607 - write_offset, reinterpret_cast<char*>(data.data()), write_size);
4611 capacity_tracker_->CommitFileSizeChange(write_end_offset);
4613 @@ -113,16 +117,19 @@ void FileSystemAccessRegularFileDelegate::GetLength(
4617 - std::move(wrapped_callback), task_runner_));
4625 - WTF::CrossThreadOnceFunction<void(base::FileErrorOr<int64_t>)>
4626 - wrapped_callback,
4630 - int64_t length = delegate->backing_file_.GetLength();
4637 @@ -131,7 +138,19 @@ void FileSystemAccessRegularFileDelegate::DoGetLength(
4641 - CrossThreadBindOnce(std::move(wrapped_callback), std::move(result)));
4651 + DCHECK(task_runner_->RunsTasksInCurrentSequence());
4658 @@ -162,6 +181,9 @@ void FileSystemAccessRegularFileDelegate::DidCheckSetLengthCapacity(
4667 // syscalls issued from renderers. For this reason, base::File::SetLength()
4668 @@ -174,81 +196,57 @@ void FileSystemAccessRegularFileDelegate::DidCheckSetLengthCapacity(
4670 file_utilities_host_->SetLength(
4672 - WTF::Bind(&FileSystemAccessRegularFileDelegate::DidSetLengthIPC,
4673 - WrapPersistent(this), std::move(callback), new_length));
4681 - auto wrapped_callback =
4682 - CrossThreadOnceFunction<void(bool)>(std::move(callback));
4683 -
4689 - std::move(wrapped_callback), task_runner_,
4690 - new_length));
4698 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4703 - bool result = delegate->backing_file_.SetLength(length);
4704 -
4705 - if (!result) {
4706 - // If the operation failed, the previously requested capacity is not
4707 - // returned and no change in file size is recorded. This assumes that
4708 - // setLength operations either succeed or do not change the file's length,
4709 - // which is consistent with the way other file operations are implemented in
4710 - // File System Access.
4711 - PostCrossThreadTask(
4712 - *task_runner, FROM_HERE,
4713 - CrossThreadBindOnce(std::move(wrapped_callback), std::move(result)));
4714 - return;
4715 - }
4722 - CrossThreadBindOnce(
4723 - &FileSystemAccessRegularFileDelegate::DidSuccessfulSetLength,
4724 - std::move(delegate), length, std::move(wrapped_callback)));
4725 -}
4726 -
4727 -void FileSystemAccessRegularFileDelegate::DidSuccessfulSetLength(
4728 - int64_t new_length,
4729 - CrossThreadOnceFunction<void(bool)> callback) {
4730 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
4731 - capacity_tracker_->CommitFileSizeChange(new_length);
4732 - std::move(callback).Run(true);
4738 -#if BUILDFLAG(IS_MAC)
4739 -void FileSystemAccessRegularFileDelegate::DidSetLengthIPC(
4740 - base::OnceCallback<void(bool)> callback,
4746 DCHECK(task_runner_->RunsTasksInCurrentSequence());
4749 - if (!success) {
4750 - // If the operation failed, the previously requested capacity is not
4751 - // returned and no change in file size is recorded. This assumes that
4752 - // setLength operations either succeed or do not change the file's length,
4753 - // which is consistent with the way other file operations are implemented in
4754 - // File System Access.
4755 - std::move(callback).Run(success);
4756 - return;
4757 - }
4758 - auto wrapped_callback =
4759 - CrossThreadOnceFunction<void(bool)>(std::move(callback));
4760 - DidSuccessfulSetLength(new_length, std::move(wrapped_callback));
4761 + // If the operation failed, no change in file size is recorded. This assumes
4766 + capacity_tracker_->CommitFileSizeChange(new_length);
4770 -#endif // BUILDFLAG(IS_MAC)
4774 @@ -260,17 +258,34 @@ void FileSystemAccessRegularFileDelegate::Flush(
4778 - std::move(wrapped_callback), task_runner_));
4786 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4790 - bool result = delegate->backing_file_.Flush();
4791 - PostCrossThreadTask(*task_runner, FROM_HERE,
4792 - CrossThreadBindOnce(std::move(wrapped_callback), result));
4807 + DCHECK(task_runner_->RunsTasksInCurrentSequence());
4814 @@ -281,16 +296,33 @@ void FileSystemAccessRegularFileDelegate::Close(base::OnceClosure callback) {
4818 - std::move(wrapped_callback), task_runner_));
4826 - CrossThreadOnceClosure wrapped_callback,
4830 - delegate->backing_file_.Close();
4831 - PostCrossThreadTask(*task_runner, FROM_HERE, std::move(wrapped_callback));
4845 + DCHECK(task_runner_->RunsTasksInCurrentSequence());
4852 diff --git a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_f…
4854 --- a/src/third_party/blink/renderer/modules/file_system_access/file_system_access_regular_file_del…
4856 @@ -28,6 +28,11 @@ namespace blink {
4858 // Non-incognito implementation of the FileSystemAccessFileDelegate. This class
4859 // is a thin wrapper around an OS-level file descriptor.
4861 +// For async file operations, ownership of the file descriptor is passed to
4864 +// used while there is an in-progress operation.
4868 @@ -71,24 +76,55 @@ class FileSystemAccessRegularFileDelegate final
4873 + // thread. To keep `backing_file_` from being garbage-collected, ownership is
4880 - CrossThreadOnceFunction<void(base::FileErrorOr<int64_t>)>
4881 - wrapped_callback,
4894 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4908 - CrossThreadOnceFunction<void(bool)> wrapped_callback,
4920 - CrossThreadOnceClosure wrapped_callback,
4927 // Called after preconditions for SetLength, including the requesting
4929 @@ -98,16 +134,7 @@ class FileSystemAccessRegularFileDelegate final
4933 - // Called after SetLength was successfully performed.
4934 - void DidSuccessfulSetLength(int64_t new_length,
4935 - CrossThreadOnceFunction<void(bool)> callback);
4936 -
4938 - void DidSetLengthIPC(base::OnceCallback<void(bool)> callback,
4939 - int64_t new_length,
4940 - base::File file,
4941 - bool result);
4942 -
4946 diff --git a/src/third_party/blink/renderer/modules/webcodecs/codec_logger.h b/src/third_party/blin…
4948 --- a/src/third_party/blink/renderer/modules/webcodecs/codec_logger.h
4950 @@ -7,6 +7,7 @@
4958 @@ -69,9 +70,17 @@ class MODULES_EXPORT CodecLogger final {
4961 media_log_ = parent_media_log_->Clone();
4966 - ~CodecLogger() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
4969 + // media logs must be posted for destruction, since they can cause the
4972 + task_runner_->DeleteSoon(FROM_HERE, std::move(parent_media_log_));
4977 @@ -132,6 +141,9 @@ class MODULES_EXPORT CodecLogger final {
4981 + // Keep task runner around for posting the media log to upon destruction.
4987 diff --git a/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/src/thi…
4989 --- a/src/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
4991 @@ -8374,6 +8374,22 @@ bool WebGLRenderingContextBase::ValidateUniformMatrixParameters(
4995 + // By design the command buffer has an internal (signed) 32-bit
4999 + // functions; each has 4-byte elements.
5002 + // Add on a fixed constant to account for internal metadata in the
5014 diff --git a/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc b/src/third_party/blink/re…
5016 --- a/src/third_party/blink/renderer/modules/webgpu/gpu_buffer.cc
5018 @@ -385,7 +385,8 @@ void GPUBuffer::ResetMappingState(v8::Isolate* isolate) {
5022 - DCHECK(array_buffer->IsDetached());
5024 + CHECK(array_buffer->IsDetached());
5028 diff --git a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.cc b/src/third_party/…
5030 --- a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.cc
5032 @@ -32,13 +32,10 @@ class BlobBytesStreamer {
5036 - mojo::ScopedDataPipeProducerHandle pipe,
5037 - scoped_refptr<base::SequencedTaskRunner> task_runner)
5041 - watcher_(FROM_HERE,
5042 - mojo::SimpleWatcher::ArmingPolicy::AUTOMATIC,
5043 - std::move(task_runner)) {
5048 @@ -46,6 +43,8 @@ class BlobBytesStreamer {
5057 @@ -85,15 +84,18 @@ class BlobBytesStreamer {
5061 - wtf_size_t current_item_ = 0;
5065 - size_t current_item_offset_ = 0;
5068 - Vector<scoped_refptr<RawData>> data_;
5075 - mojo::ScopedDataPipeProducerHandle pipe_;
5076 - mojo::SimpleWatcher watcher_;
5081 @@ -119,31 +121,8 @@ void DecreaseChildProcessRefCount() {
5085 -// static
5086 -BlobBytesProvider* BlobBytesProvider::CreateAndBind(
5087 - mojo::PendingReceiver<mojom::blink::BytesProvider> receiver) {
5088 - auto task_runner = base::ThreadPool::CreateSequencedTaskRunner(
5089 - {base::MayBlock(), base::TaskPriority::USER_VISIBLE});
5090 - auto provider = base::WrapUnique(new BlobBytesProvider(task_runner));
5091 - auto* result = provider.get();
5092 - // TODO(mek): Consider binding BytesProvider on the IPC thread instead, only
5093 - // using the MayBlock taskrunner for actual file operations.
5094 - PostCrossThreadTask(
5095 - *task_runner, FROM_HERE,
5096 - CrossThreadBindOnce(
5097 - [](std::unique_ptr<BlobBytesProvider> provider,
5098 - mojo::PendingReceiver<mojom::blink::BytesProvider> receiver) {
5099 - mojo::MakeSelfOwnedReceiver(std::move(provider),
5100 - std::move(receiver));
5101 - },
5102 - std::move(provider), std::move(receiver)));
5103 - return result;
5104 -}
5105 -
5106 -// static
5107 -std::unique_ptr<BlobBytesProvider> BlobBytesProvider::CreateForTesting(
5108 - scoped_refptr<base::SequencedTaskRunner> task_runner) {
5109 - return base::WrapUnique(new BlobBytesProvider(std::move(task_runner)));
5115 @@ -151,6 +130,8 @@ BlobBytesProvider::~BlobBytesProvider() {
5123 offsets_.push_back(last_offset + data_.back()->length());
5124 @@ -159,6 +140,8 @@ void BlobBytesProvider::AppendData(scoped_refptr<RawData> data) {
5131 data_.back()->length() + data.size() > kMaxConsolidatedItemSizeInBytes) {
5133 @@ -167,8 +150,32 @@ void BlobBytesProvider::AppendData(base::span<const char> data) {
5141 + DCHECK_CALLED_ON_VALID_SEQUENCE(provider->sequence_checker_);
5142 + DETACH_FROM_SEQUENCE(provider->sequence_checker_);
5147 + // using the MayBlock taskrunner for actual file operations.
5153 + DCHECK_CALLED_ON_VALID_SEQUENCE(provider->sequence_checker_);
5161 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
5167 @@ -179,9 +186,10 @@ void BlobBytesProvider::RequestAsReply(RequestAsReplyCallback callback) {
5171 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
5175 - new BlobBytesStreamer(std::move(data_), std::move(pipe), task_runner_);
5180 @@ -189,7 +197,7 @@ void BlobBytesProvider::RequestAsFile(uint64_t source_offset,
5184 - DCHECK(task_runner_->RunsTasksInCurrentSequence());
5189 @@ -257,10 +265,4 @@ void BlobBytesProvider::RequestAsFile(uint64_t source_offset,
5193 -BlobBytesProvider::BlobBytesProvider(
5194 - scoped_refptr<base::SequencedTaskRunner> task_runner)
5195 - : task_runner_(std::move(task_runner)) {
5196 - IncreaseChildProcessRefCount();
5197 -}
5198 -
5200 diff --git a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.h b/src/third_party/b…
5202 --- a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider.h
5204 @@ -6,6 +6,7 @@
5210 #include "third_party/blink/public/mojom/blob/blob_registry.mojom-blink-forward.h"
5211 #include "third_party/blink/public/mojom/blob/data_element.mojom-blink.h"
5212 @@ -17,8 +18,8 @@ namespace blink {
5216 -// then transfers ownership of the class to a different thread where it will be
5217 -// bound to a mojo pipe, such that the various Request* methods are called on a
5223 @@ -26,19 +27,17 @@ class PLATFORM_EXPORT BlobBytesProvider : public mojom::blink::BytesProvider {
5227 - // Creates a new instance, and binds it on a new SequencedTaskRunner. The
5228 - // returned instance should only be considered valid as long as the request
5229 - // passed in to this method is still known to be valid.
5230 - static BlobBytesProvider* CreateAndBind(
5231 - mojo::PendingReceiver<mojom::blink::BytesProvider>);
5232 - static std::unique_ptr<BlobBytesProvider> CreateForTesting(
5233 - scoped_refptr<base::SequencedTaskRunner>);
5234 -
5249 @@ -51,17 +50,13 @@ class PLATFORM_EXPORT BlobBytesProvider : public mojom::blink::BytesProvider {
5253 - BlobBytesProvider(scoped_refptr<base::SequencedTaskRunner>);
5254 -
5255 - // The task runner this class is bound on, as well as what is used by the
5256 - // RequestAsStream method to monitor the data pipe.
5257 - scoped_refptr<base::SequencedTaskRunner> task_runner_;
5258 -
5259 - Vector<scoped_refptr<RawData>> data_;
5263 // offsets_[x] is equal to the sum of data_[i].length for all i <= x.
5264 - Vector<uint64_t> offsets_;
5271 diff --git a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc b/src/third_p…
5273 --- a/src/third_party/blink/renderer/platform/blob/blob_bytes_provider_test.cc
5275 @@ -52,8 +52,7 @@ class BlobBytesProviderTest : public testing::Test {
5279 - auto result = BlobBytesProvider::CreateForTesting(
5280 - blink::scheduler::GetSequencedTaskRunnerForTesting());
5283 result->AppendData(std::move(data));
5285 @@ -73,6 +72,8 @@ class BlobBytesProviderTest : public testing::Test {
5289 + DCHECK_CALLED_ON_VALID_SEQUENCE(data->sequence_checker_);
5291 data->AppendData(base::make_span("abc", 3));
5292 data->AppendData(base::make_span("def", 3));
5293 data->AppendData(base::make_span("ps1", 3));
5294 diff --git a/src/third_party/blink/renderer/platform/blob/blob_data.cc b/src/third_party/blink/rend…
5296 --- a/src/third_party/blink/renderer/platform/blob/blob_data.cc
5298 @@ -107,6 +107,12 @@ BlobData::BlobData(FileCompositionStatus composition)
5311 @@ -141,16 +147,6 @@ std::unique_ptr<BlobData> BlobData::CreateForFileSystemURLWithUnknownSize(
5315 -void BlobData::DetachFromCurrentThread() {
5316 - content_type_ = content_type_.IsolatedCopy();
5317 - for (auto& element : elements_) {
5318 - if (element->is_file_filesystem()) {
5319 - auto& file_element = element->get_file_filesystem();
5320 - file_element->url = file_element->url.Copy();
5321 - }
5322 - }
5323 -}
5324 -
5328 @@ -274,6 +270,7 @@ void BlobData::AppendDataInternal(base::span<const char> data,
5329 if (!elements_.IsEmpty() && elements_.back()->is_bytes()) {
5333 const auto& bytes_element = elements_.back()->get_bytes();
5334 bytes_element->length += data.size();
5335 if (should_embed_bytes && bytes_element->embedded_data) {
5336 @@ -285,9 +282,18 @@ void BlobData::AppendDataInternal(base::span<const char> data,
5337 bytes_element->embedded_data = absl::nullopt;
5349 - last_bytes_provider_ = BlobBytesProvider::CreateAndBind(
5350 - bytes_provider_remote.InitWithNewPipeAndPassReceiver());
5357 diff --git a/src/third_party/blink/renderer/platform/blob/blob_data.h b/src/third_party/blink/rende…
5359 --- a/src/third_party/blink/renderer/platform/blob/blob_data.h
5361 @@ -44,6 +44,7 @@
5362 #include "mojo/public/cpp/bindings/pending_remote.h"
5363 #include "mojo/public/cpp/bindings/struct_ptr.h"
5364 #include "third_party/abseil-cpp/absl/types/optional.h"
5365 +#include "third_party/blink/public/mojom/blob/data_element.mojom-blink-forward.h"
5369 @@ -120,13 +121,10 @@ class PLATFORM_EXPORT BlobData {
5373 - // Detaches from current thread so that it can be passed to another thread.
5374 - void DetachFromCurrentThread();
5375 -
5379 - const Vector<mojom::blink::DataElementPtr>& Elements() const {
5384 @@ -168,7 +166,15 @@ class PLATFORM_EXPORT BlobData {
5388 - BlobBytesProvider* last_bytes_provider_ = nullptr;
5401 diff --git a/src/third_party/blink/renderer/platform/blob/blob_data_test.cc b/src/third_party/blink…
5403 --- a/src/third_party/blink/renderer/platform/blob/blob_data_test.cc
5405 @@ -315,7 +315,7 @@ TEST_F(BlobDataHandleTest, CreateFromMergedBytes) {
5407 data->AppendBytes(medium_test_data_.data(), medium_test_data_.size());
5408 data->AppendBytes(small_test_data_.data(), small_test_data_.size());
5409 - EXPECT_EQ(1u, data->Elements().size());
5410 + EXPECT_EQ(1u, data->ElementsForTesting().size());
5414 @@ -331,7 +331,7 @@ TEST_F(BlobDataHandleTest, CreateFromMergedLargeAndSmallBytes) {
5416 data->AppendBytes(large_test_data_.data(), large_test_data_.size());
5417 data->AppendBytes(small_test_data_.data(), small_test_data_.size());
5418 - EXPECT_EQ(1u, data->Elements().size());
5419 + EXPECT_EQ(1u, data->ElementsForTesting().size());
5423 @@ -347,7 +347,7 @@ TEST_F(BlobDataHandleTest, CreateFromMergedSmallAndLargeBytes) {
5425 data->AppendBytes(small_test_data_.data(), small_test_data_.size());
5426 data->AppendBytes(large_test_data_.data(), large_test_data_.size());
5427 - EXPECT_EQ(1u, data->Elements().size());
5428 + EXPECT_EQ(1u, data->ElementsForTesting().size());
5432 diff --git a/src/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.cc b/src/t…
5434 --- a/src/third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.cc
5436 @@ -3996,8 +3996,10 @@ bool WebGLImageConversion::ExtractTextureData(
5440 - ComputeImageSizeInBytes(format, type, width, height, 1, unpack_params,
5441 - &image_size_in_bytes, nullptr, &skip_size_in_bytes);
5449 diff --git a/src/third_party/blink/renderer/platform/heap/persistent.h b/src/third_party/blink/rend…
5451 --- a/src/third_party/blink/renderer/platform/heap/persistent.h
5453 @@ -30,9 +30,31 @@ using Persistent = cppgc::Persistent<T>;
5461 +// - Does not protect the heap owning an object from terminating. E.g., posting
5462 +// a task with a CrossThreadPersistent for `this` will result in a
5463 +// use-after-free in case the heap owning `this` is terminated before the task
5465 +// - Reaching transitively through the graph is unsupported as objects may be
5474 +// - Does not protect the heap owning an object from termination, as the
5476 +// - In order to access the underlying object
5480 +// - Reaching transitively through the graph is unsupported as objects may be
5485 diff --git a/src/third_party/blink/web_tests/TestExpectations b/src/third_party/blink/web_tests/Tes…
5487 --- a/src/third_party/blink/web_tests/TestExpectations
5489 @@ -3195,7 +3195,6 @@ crbug.com/626703 [ Mac10.14 ] external/wpt/web-share/share-url-invalid.https.…
5490 …crbug.com/626703 [ Mac10.14 ] external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.htt…
5491 …g.com/626703 [ Mac10.14 ] virtual/scroll-unification/external/wpt/dom/events/scrolling/overscroll-…
5492 …crbug.com/626703 [ Mac10.14 ] virtual/portals/external/wpt/portals/no-portal-in-sandboxed-popup.ht…
5493 -crbug.com/626703 [ Mac10.13 ] virtual/plz-dedicated-worker/external/wpt/resource-timing/object-not…
5494 crbug.com/626703 [ Mac11 ] external/wpt/css/css-color-adjust/inheritance.html [ Crash Failure ]
5495 …crbug.com/626703 [ Mac11-arm64 ] external/wpt/fetch/private-network-access/fetch.window.html [ Tim…
5496 …crbug.com/626703 [ Mac11 ] external/wpt/webaudio/the-audio-api/the-pannernode-interface/ctor-panne…
5497 @@ -3474,7 +3473,6 @@ crbug.com/626703 [ Mac10.15 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/R…
5498 …crbug.com/626703 [ Mac10.15 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCRtpReceiver-getPara…
5499 …rbug.com/626703 [ Mac10.15 ] virtual/without-coep-for-shared-worker/external/wpt/html/cross-origin…
5500 … Mac11 ] external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-backgro…
5501 -crbug.com/626703 [ Linux ] external/wpt/resource-timing/object-not-found-adds-entry.html [ Timeout…
5502 …crbug.com/626703 [ Mac11-arm64 ] external/wpt/webrtc/RTCIceConnectionState-candidate-pair.https.ht…
5503 crbug.com/626703 [ Mac11-arm64 ] external/wpt/webrtc/RTCPeerConnection-helper-test.html [ Timeout ]
5504 …crbug.com/626703 [ Mac11-arm64 ] external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Skip T…
5505 @@ -4092,19 +4090,14 @@ crbug.com/626703 external/wpt/html/browsers/the-window-object/apis-for-crea…
5506 …/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/op…
5507 …crbug.com/626703 external/wpt/css/css-will-change/will-change-abspos-cb-dynamic-001.html [ Failure…
5508 crbug.com/626703 external/wpt/css/css-will-change/will-change-abspos-cb-001.html [ Failure ]
5509 -crbug.com/626703 [ Linux ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects…
5510 crbug.com/626703 [ Linux ] external/wpt/url/a-element.html [ Failure ]
5511 …crbug.com/626703 [ Linux ] external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.…
5512 crbug.com/626703 [ Linux ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ]
5516 -crbug.com/626703 [ Linux ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-…
5517 -crbug.com/626703 [ Mac ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.h…
5518 …crbug.com/626703 [ Mac ] external/wpt/websockets/Create-blocked-port.any.worker.html?wpt_flags=h2 …
5519 -crbug.com/626703 [ Win ] external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.h…
5520 crbug.com/626703 [ Win ] external/wpt/websockets/Create-url-with-space.any.html [ Failure ]
5521 -crbug.com/626703 [ Win ] virtual/plz-dedicated-worker/external/wpt/resource-timing/cross-origin-st…
5522 …crbug.com/626703 [ Mac ] external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https.html [ Failure …
5523 …crbug.com/626703 [ Mac ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCDTMFSender-ontonechange-…
5525 @@ -7315,7 +7308,6 @@ crbug.com/1256763 [ Linux ] virtual/gpu-rasterization/images/color-profile-sv…
5526 crbug.com/1259277 fast/events/message-port-multi.html [ Skip ]
5528 # Sheriff 2021-10-26
5529 -crbug.com/1263349 [ Linux ] external/wpt/resource-timing/object-not-found-after-cross-origin-redir…
5530 …crbug.com/1249043 external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html […
5531 …crbug.com/1249043 [ Fuchsia ] external/wpt/html/cross-origin-embedder-policy/reporting-subresource…
5532 …crbug.com/1249043 [ Linux ] external/wpt/html/cross-origin-embedder-policy/reporting-subresource-c…
5533 @@ -7348,7 +7340,6 @@ crbug.com/1265311 http/tests/navigation/location-change-repeated-from-blank.h…
5534 # Sheriff 2021-11-03
5535 …crbug.com/1266199 [ Mac10.12 ] fast/css3-text/css3-text-decoration/text-decoration-style-wavy-font…
5536 ….com/1266221 [ Mac11-arm64 ] virtual/fsa-incognito/external/wpt/file-system-access/sandboxed_FileS…
5537 -crbug.com/1263354 [ Linux ] virtual/plz-dedicated-worker/external/wpt/resource-timing/object-not-f…
5539 # Sheriff 2021-11-08
5540 ….com/1267734 [ Win7 ] virtual/plz-dedicated-worker/external/wpt/resource-timing/object-not-found-a…
5541 diff --git a/src/third_party/blink/web_tests/editing/pasteboard/paste-svg-use.html b/src/third_part…
5543 --- a/src/third_party/blink/web_tests/editing/pasteboard/paste-svg-use.html
5544 +++ b/src/third_party/blink/web_tests/editing/pasteboard/paste-svg-use.html
5545 @@ -32,6 +32,6 @@ selection_test(
5549 - '<div contenteditable>|<noscript><u title="</noscript><div contenteditable="false"><svg></svg…
5553 …--git a/src/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-read…
5556 --- /dev/null
5557 +++ b/src/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-read-sa…
5558 @@ -0,0 +1,44 @@
5560 +<meta charset="utf-8">
5562 +<link rel="help" href="https://w3c.github.io/clipboard-apis/#dom-clipboard-read">
5567 +<script src="/resources/testdriver-vendor.js"></script>
5587 + await test_driver.set_permission({name: 'clipboard-read'}, 'granted');
5603 …--git a/src/third_party/blink/web_tests/external/wpt/css/css-typed-om/set-css-wide-in-custom-prope…
5606 --- /dev/null
5607 … b/src/third_party/blink/web_tests/external/wpt/css/css-typed-om/set-css-wide-in-custom-property-c…
5608 @@ -0,0 +1,15 @@
5610 +<title>Don't crash when setting a CSS-wide keyword on a custom property</title>
5611 +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
5617 + for (let keyword of ['initial', 'inherit', 'unset', 'revert', 'revert-layer']) {
5619 + target.attributeStyleMap.set('--x', new CSSKeywordValue(keyword));
5624 …--git a/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any-expected.txt …
5627 --- /dev/null
5628 +++ b/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any-expected.txt
5629 @@ -0,0 +1,7 @@
5630 +This is a testharness.js-based test.
5637 …--git a/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.js b/src/thir…
5640 --- /dev/null
5641 +++ b/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.js
5642 @@ -0,0 +1,28 @@
5647 + t, TypeError, fetch('/common/text-plain.txt?pipe=status(100)'));
5652 + const res = await fetch('/common/text-plain.txt?pipe=status(101)');
5662 + t, TypeError, fetch('/common/text-plain.txt?pipe=status(103)'));
5669 + t, TypeError, fetch('/common/text-plain.txt?pipe=status(199)'));
5671 …--git a/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.worker-expect…
5674 --- /dev/null
5675 +++ b/src/third_party/blink/web_tests/external/wpt/fetch/security/1xx-response.any.worker-expected.…
5676 @@ -0,0 +1,7 @@
5677 +This is a testharness.js-based test.
5684 …--git a/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-op…
5687 --- /dev/null
5688 …/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-opener-na…
5689 @@ -0,0 +1,84 @@
5692 + Cross-Origin-Opener-Policy: opener is lost because the opener navigates.
5694 +<!--
5698 +-->
5702 +<script src="/common/get-host-info.sub.js"></script>
5709 + '|header(Cross-Origin-Opener-Policy,same-origin)';
5711 + '|header(Cross-Origin-Opener-Policy,unsafe-none)';
5761 + // Give some time for things to settle across processes etc. before
5774 …--git a/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-op…
5777 --- /dev/null
5778 …/src/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-popup-opener-na…
5779 @@ -0,0 +1 @@
5780 +Cross-Origin-Opener-Policy: same-origin
5781 …--git a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialo…
5783 --- a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-e…
5784 …link/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/inert-focus-in-…
5785 @@ -37,7 +37,11 @@ promise_test(async () => {
5789 - assert_equals(focusedElement === element, expectFocus, element.id);
5798 @@ -46,7 +50,7 @@ promise_test(async () => {
5802 - testFocus(iframe.querySelector('.target'), false);
5807 …--git a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialo…
5809 --- a/src/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-dialog-e…
5810 …tests/external/wpt/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dia…
5811 @@ -4,9 +4,8 @@
5815 - but only in its document, not in the parent browsing context.
5816 - Also, when an iframe is marked as inert by a modal dialog,
5817 - all contents in the nested browsing context are marked as inert too.">
5823 @@ -103,30 +102,30 @@ promise_test(async function() {
5827 - checkSelection(outerIframeWindow, "");
5828 -}, "Modal dialog in the main document marks outer nodes as inert. All contents of the outer iframe…
5837 - checkSelection(outerIframeWindow, "");
5838 -}, "Modal dialogs in the main document and inner iframe mark outer nodes as inert. All contents of…
5847 - checkSelection(outerIframeWindow, "");
5848 -}, "Modal dialogs in the main document and outer iframe mark outer nodes as inert. All contents of…
5857 - checkSelection(outerIframeWindow, "");
5858 -}, "Modal dialogs in the main document and both iframes mark outer nodes as inert. All contents of…
5862 …--git a/src/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-…
5864 --- a/src/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-ori…
5865 …/src/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-origin-…
5866 @@ -2,45 +2,34 @@
5869 <meta charset="utf-8" />
5870 -<title>This test validates resource timing information for a cross-origin redirect chain.</title>
5871 -<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
5872 +<title>This test validates the values in resource timing for cross-origin
5875 +<link rel="help" href="https://www.w3.org/TR/resource-timing-2/#sec-performanceresourcetiming"/>
5878 -<script src=/common/get-host-info.sub.js></script>
5879 -<script src="resources/webperftestharness.js"></script>
5880 -<script src="resources/webperftestharnessextension.js"></script>
5881 -
5882 -<script>
5883 - setup({explicit_done: true});
5884 - test_namespace('getEntriesByName');
5885 -
5886 - function onload_test()
5887 - {
5888 - const context = new PerformanceContext(performance);
5889 - const entries = context.getEntriesByName(document.querySelector('object').data, 'resource'…
5890 - test_equals(entries.length, 1, 'There should be one entry.');
5891 - const entry = entries[0];
5892 -
5893 - test_equals(entry.redirectStart, 0, 'redirectStart == 0 in cross-origin redirect.');
5894 - test_equals(entry.redirectEnd, 0, 'redirectEnd == 0 in cross-origin redirect.');
5895 - test_greater_than(entry.fetchStart, 0, 'fetchStart > 0 in cross-origin redirect.');
5896 - test_equals(entry.startTime, entry.fetchStart, 'startTime == fetchStart in cross-origin re…
5897 - done();
5898 - }
5899 -</script>
5900 -
5901 +<script src="/common/get-host-info.sub.js"></script>
5902 +<script src="resources/resource-loaders.js"></script>
5903 +<script src="resources/entry-invariants.js"></script>
5907 - let destUrl = get_host_info().HTTP_REMOTE_ORIGIN + '/resource-timing/resources/multi_redirect.…
5908 - destUrl += 'page_origin=' + 'http://' + document.location.host;
5909 - destUrl += '&cross_origin=' + get_host_info().HTTP_REMOTE_ORIGIN;
5910 - destUrl += '&final_resource=' + encodeURIComponent("/resource-timing/resources/status-code.py?…
5911 - const objElement = document.createElement('object');
5912 - objElement.style = 'width: 0px; height: 0px;';
5913 - objElement.data = destUrl;
5914 - objElement.onerror = onload_test;
5915 - document.body.appendChild(objElement);
5918 +const not_found_page = encodeURIComponent("/resource-timing/resources/status-code.py?status=404");
5922 +const destUrl = `/common/slow-redirect.py?delay=${delay}&location=${REMOTE_ORIGIN}/${not_found_pag…
5928 + // See https://github.com/w3c/resource-timing/issues/264
5929 + assert_less_than(Math.round(entry.startTime - timeBefore), delay * 1000, 'startTime should not…
5930 +}, "Verify that cross-origin object resources don't implicitly expose their redirect timings")
5935 …--git a/src/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-attr…
5938 --- /dev/null
5939 …hird_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-attribute-via-att…
5940 @@ -0,0 +1,42 @@
5946 + <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
5966 +}, "Sanity check: Setting non-TT attributes still works.");
5968 +for (const element of document.querySelectorAll("#testcases *")) {
5983 …--git a/src/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/detached-iframe…
5986 --- /dev/null
5987 +++ b/src/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/detached-iframe.wi…
5988 @@ -0,0 +1,47 @@
5990 +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
5995 + REMOVE_BEFORE_CREATION: 'remove-before-creation',
5996 + REMOVE_AFTER_CREATION: 'remove-after-creation',
6018 + // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to
6019 + // some sort of cross-browser GC trigger.
6023 + // is good enough. We can't use any other API for an end condition because each MessagePort has
6024 + // its own independent port message queue, which has no ordering guarantees relative to other
6036 \ No newline at end of file
6037 …ff --git a/src/third_party/blink/web_tests/fast/dom/inert/inert-focus-in-frames.html b/src/third_p…
6039 --- a/src/third_party/blink/web_tests/fast/dom/inert/inert-focus-in-frames.html
6040 +++ b/src/third_party/blink/web_tests/fast/dom/inert/inert-focus-in-frames.html
6041 @@ -28,20 +28,20 @@ function frameLoaded() {
6045 - testCantFocus(target1);
6048 - testCantFocus(iframe.querySelector('.target'));
6049 - }, "Focus can't go into frames or iframes in inert subtree");
6056 -function testCantFocus(element) {
6062 - assert_false(focusedElement === theElement);
6067 …iff --git a/src/third_party/blink/web_tests/fast/peerconnection/simulcast-munge.html b/src/third_p…
6070 --- /dev/null
6071 +++ b/src/third_party/blink/web_tests/fast/peerconnection/simulcast-munge.html
6072 @@ -0,0 +1,50 @@
6090 + for (var i = 0; i < 2; i++) {
6123 \ No newline at end of file
6124 … --git a/src/third_party/blink/web_tests/loader/document-updated-by-xslt-expected.txt b/src/third_…
6127 --- /dev/null
6128 +++ b/src/third_party/blink/web_tests/loader/document-updated-by-xslt-expected.txt
6129 @@ -0,0 +1 @@
6131 diff --git a/src/third_party/blink/web_tests/loader/document-updated-by-xslt.html b/src/third_party…
6134 --- /dev/null
6135 +++ b/src/third_party/blink/web_tests/loader/document-updated-by-xslt.html
6136 @@ -0,0 +1,10 @@
6138 +<meta charset="utf-8">
6142 +<img src="resources/document-updated-by-xslt.svg">
6147 …--git a/src/third_party/blink/web_tests/loader/resources/document-updated-by-xslt.svg b/src/third_…
6150 --- /dev/null
6151 +++ b/src/third_party/blink/web_tests/loader/resources/document-updated-by-xslt.svg
6152 @@ -0,0 +1,9 @@
6154 +<?xml-stylesheet type="text/xsl" href="#stylesheet"?>
6162 \ No newline at end of file
6163 …--git a/src/third_party/blink/web_tests/platform/mac/inspector-protocol/layout-fonts/languages-emo…
6165 --- a/src/third_party/blink/web_tests/platform/mac/inspector-protocol/layout-fonts/languages-emoji-…
6166 …/third_party/blink/web_tests/platform/mac/inspector-protocol/layout-fonts/languages-emoji-rare-gly…
6167 @@ -25,7 +25,7 @@
6171 -"Apple Color Emoji" : 24
6176 …--git a/src/third_party/blink/web_tests/wpt_internal/fenced_frame/restrict-size.https.html b/src/t…
6179 --- /dev/null
6180 +++ b/src/third_party/blink/web_tests/wpt_internal/fenced_frame/restrict-size.https.html
6181 @@ -0,0 +1,15 @@
6197 diff --git a/src/third_party/dawn/third_party/tint/src/intrinsic_table.cc b/src/third_party/dawn/th…
6199 --- a/src/third_party/dawn/third_party/tint/src/intrinsic_table.cc
6201 @@ -973,11 +973,16 @@ const sem::Intrinsic* Impl::Match(sem::IntrinsicType intrinsic_type,
6205 - auto num_parameters = overload.num_parameters;
6206 - auto num_arguments = static_cast<decltype(num_parameters)>(args.size());
6214 + overload_matched = false; // No overload has this number of arguments.
6219 kScorePerParamArgMismatch * (std::max(num_parameters, num_arguments) -
6220 diff --git a/src/third_party/dawn/third_party/tint/src/intrinsic_table_test.cc b/src/third_party/da…
6222 --- a/src/third_party/dawn/third_party/tint/src/intrinsic_table_test.cc
6224 @@ -14,6 +14,8 @@
6233 @@ -609,5 +611,13 @@ TEST_F(IntrinsicTableTest, SameOverloadReturnsSameIntrinsicPointer) {
6240 + auto* result = table->Lookup(IntrinsicType::kAbs, std::move(arg_tys), Source{});
6242 + ASSERT_THAT(Diagnostics().str(), HasSubstr("no matching call"));
6247 diff --git a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleFormat.ts b/src/…
6249 --- a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleFormat.ts
6250 +++ b/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleFormat.ts
6251 @@ -196,3 +196,26 @@ export const format = (fmt: string, args: SDK.RemoteObject.RemoteObject[]): {
6263 + for (const property of buffer.style) {
6265 + prefix => property.startsWith(prefix) || property.startsWith(`-webkit-${prefix}`))) {
6278 diff --git a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleViewMessage.ts b…
6280 --- a/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleViewMessage.ts
6281 +++ b/src/third_party/devtools-frontend/src/front_end/panels/console/ConsoleViewMessage.ts
6282 @@ -53,7 +53,7 @@ import * as UI from '../../ui/legacy/legacy.js';
6284 …import type {Chrome} from '../../../extension-api/ExtensionAPI.js'; // eslint-disable-line rulesdi…
6286 -import {format} from './ConsoleFormat.js';
6291 @@ -903,26 +903,10 @@ export class ConsoleViewMessage implements ConsoleViewportElement {
6295 - case 'style': {
6298 - const ALLOWED_PROPERTY_PREFIXES =
6299 - ['background', 'border', 'color', 'font', 'line', 'margin', 'padding', 'text'];
6300 -
6301 - currentStyle.clear();
6302 - const buffer = document.createElement('span');
6303 - buffer.setAttribute('style', token.value);
6304 - for (const property of buffer.style) {
6305 - if (!ALLOWED_PROPERTY_PREFIXES.some(
6306 - prefix => property.startsWith(prefix) || property.startsWith(`-webkit-${prefix…
6307 - continue;
6308 - }
6309 - currentStyle.set(property, {
6310 - value: buffer.style.getPropertyValue(property),
6311 - priority: buffer.style.getPropertyPriority(property),
6312 - });
6313 - }
6316 - }
6320 …f --git a/src/third_party/devtools-frontend/src/test/e2e/console/console-log_test.ts b/src/third_p…
6322 --- a/src/third_party/devtools-frontend/src/test/e2e/console/console-log_test.ts
6323 +++ b/src/third_party/devtools-frontend/src/test/e2e/console/console-log_test.ts
6324 @@ -3,10 +3,11 @@
6331 import {describe, it} from '../../shared/mocha-extensions.js';
6332 -import {focusConsolePrompt, getConsoleMessages, getStructuredConsoleMessages, navigateToConsoleTab…
6333 … showVerboseMessages, waitForLastConsoleMessageToHaveContent} from '../helpers/console-helpers.js';
6335 /* eslint-disable no-console */
6337 @@ -301,4 +302,87 @@ describe('The Console Tab', async () => {
6347 + // For all nodes, extract text.
6349 + // For element nodes, get the requested styles.
6350 + for (const style of styles) {
6369 + console.log('--%s--', 'text');
6370 + console.log('--%s--', '%s%i', 'u', 2);
6377 + assert.deepEqual(texts, [[['--text--']], [['--u2--']], [['Number 42']], [['Float 1.5']]]);
6398 + 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAAAAAB…
6403 + const textsAndStyles = await getConsoleMessageTextChunksWithStyle(frontend, ['background-ima…
6415 + await target.evaluate(() => console.log('PRE%cBG', 'background-image: url(http://localhost/i…
6419 + // Check that the 'BG' text has no bakcground image.
6420 + const textsAndStyles = await getConsoleMessageTextChunksWithStyle(frontend, ['background-ima…
6425 diff --git a/src/third_party/devtools-frontend/src/test/unittests/front_end/panels/console/ConsoleF…
6427 --- a/src/third_party/devtools-frontend/src/test/unittests/front_end/panels/console/ConsoleFormat_t…
6428 +++ b/src/third_party/devtools-frontend/src/test/unittests/front_end/panels/console/ConsoleFormat_t…
6429 @@ -326,4 +326,104 @@ describe('ConsoleFormat', () => {
6435 + it('allows allow-listed styles', () => {
6438 + Console.ConsoleFormat.updateStyle(styles, 'border-top-style:solid');
6439 + assert.deepEqual(styles.get('border-top-style'), {value: 'solid', priority: ''});
6444 + Console.ConsoleFormat.updateStyle(styles, 'font-family:serif');
6445 + assert.deepEqual(styles.get('font-family'), {value: 'serif', priority: ''});
6447 + Console.ConsoleFormat.updateStyle(styles, 'line-height:100%');
6448 + assert.deepEqual(styles.get('line-height'), {value: '100%', priority: ''});
6450 + Console.ConsoleFormat.updateStyle(styles, 'margin-top:30px');
6451 + assert.deepEqual(styles.get('margin-top'), {value: '30px', priority: ''});
6453 + Console.ConsoleFormat.updateStyle(styles, 'padding-top : 20px');
6454 + assert.deepEqual(styles.get('padding-top'), {value: '20px', priority: ''});
6456 + Console.ConsoleFormat.updateStyle(styles, 'text-align : center');
6457 + assert.deepEqual(styles.get('text-align'), {value: 'center', priority: ''});
6463 + Console.ConsoleFormat.updateStyle(styles, 'font-size:14px; color:red');
6465 + assert.deepEqual(styles.get('font-size'), {value: '14px', priority: ''});
6471 + Console.ConsoleFormat.updateStyle(styles, 'font-size:14px; color:red');
6473 + assert.isFalse(styles.has('font-size'));
6476 + it('blocks styles outside of allow-list', () => {
6485 + Console.ConsoleFormat.updateStyle(styles, 'box-sizing:border-box');
6486 + assert.isFalse(styles.has('box-sizing'));
6489 + it('blocks block-listed url schemes in values', () => {
6492 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(http://localhost/a.png)');
6493 + assert.isFalse(styles.has('background-image'));
6495 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(https://localhost/a.png)');
6496 + assert.isFalse(styles.has('background-image'));
6498 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(resource://localhost/a.png)'…
6499 + assert.isFalse(styles.has('background-image'));
6501 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(app://com.foo.bar/index.html…
6502 + assert.isFalse(styles.has('background-image'));
6504 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(chrome://a/b.png)');
6505 + assert.isFalse(styles.has('background-image'));
6507 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(about:flags)');
6508 + assert.isFalse(styles.has('background-image'));
6510 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(ftp://localhost/a.png)');
6511 + assert.isFalse(styles.has('background-image'));
6513 + Console.ConsoleFormat.updateStyle(styles, 'background-image:url(file://c/a.txt)');
6514 + assert.isFalse(styles.has('background-image'));
6516 + Console.ConsoleFormat.updateStyle(styles, 'border-image-source:url(file://c/a.txt)');
6517 + assert.isFalse(styles.has('border-image-source'));
6526 + Console.ConsoleFormat.updateStyle(styles, `background-image:${dataUrl}`);
6527 + assert.include(styles.get('background-image').value, 'data:image/png;base64');
6529 + Console.ConsoleFormat.updateStyle(styles, `border-image-source:${dataUrl}`);
6530 + assert.include(styles.get('border-image-source').value, 'data:image/png;base64');
6534 diff --git a/src/third_party/freetype/BUILD.gn b/src/third_party/freetype/BUILD.gn
6536 --- a/src/third_party/freetype/BUILD.gn
6538 @@ -132,7 +132,7 @@ source_set("freetype_source") {
6542 - if (is_linux || is_chromeos || is_chromecast) {
6544 # Needed for content_shell on Linux and Chromecast, since fontconfig
6547 diff --git a/src/third_party/freetype/README.chromium b/src/third_party/freetype/README.chromium
6549 --- a/src/third_party/freetype/README.chromium
6551 @@ -1,7 +1,7 @@
6554 -Version: VER-2-11-1-112
6555 -Revision: 034e5dbf92ea3a7ea7c9322e47a3a50ff23f7b55
6556 +Version: VER-2-12-1-41-gbec4ef415
6561 diff --git a/src/third_party/freetype/src/.gitlab-ci.yml b/src/third_party/freetype/src/.gitlab-ci.…
6563 --- a/src/third_party/freetype/src/.gitlab-ci.yml
6564 +++ b/src/third_party/freetype/src/.gitlab-ci.yml
6565 @@ -5,7 +5,7 @@ stages:
6567 # FIXME: Use --werror once warnings are fixed.
6569 - MESON_ARGS: --fatal-meson-warnings
6570 + MESON_ARGS: --fatal-meson-warnings --default-library=both
6571 MESON_ARGS_WINDOWS: ${MESON_ARGS} --force-fallback-for=zlib
6574 @@ -47,8 +47,18 @@ variables:
6575 - Import-Certificate -CertStoreLocation "Cert:\LocalMachine\Root" "C:\roots.sst"
6578 - - pip3 install meson==0.59.1
6579 + - pip3 install -U 'meson==0.59.*'
6580 + - pip3 install --upgrade certifi
6581 - pip3 install -U ninja
6583 + # Generate a UWP cross-file in case it's used
6584 + - $PSDefaultParameterValues['Out-File:Encoding'] = 'ASCII'
6585 + - echo "[binaries]" > uwp-crossfile.meson
6586 + - echo "c = 'cl'" >> uwp-crossfile.meson
6587 + - echo "strip = ['true']" >> uwp-crossfile.meson
6588 + - echo "[built-in options]" >> uwp-crossfile.meson
6589 + - echo "c_args = ['-DWINAPI_FAMILY=WINAPI_FAMILY_APP', '-DUNICODE', '-D_WIN32_WINNT=0x0A00', '…
6590 + - echo "c_winlibs = ['windowsapp.lib']" >> uwp-crossfile.meson
6592 # For some reason, options are separated by newlines instead of spaces,
6594 @@ -59,11 +69,10 @@ variables:
6598 - - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
6599 - meson setup build $env:MESON_ARGS_WINDOWS &&
6600 - meson compile --verbose -C build &&
6601 - meson test -C build &&
6602 - meson test -C build --benchmark"
6603 + - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH $env:V…
6605 + meson compile --verbose -C build
6610 @@ -76,12 +85,20 @@ windows meson vs2017 amd64:
6614 + MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
6620 + MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
6626 + VS_UWP: '-app_platform=UWP'
6627 + MESON_ARGS_UWP: '--cross-file uwp-crossfile.meson -Dc_winlibs="windowsapp.lib"'
6631 @@ -130,7 +147,8 @@ linux autotools libs clang:
6635 - meson setup build -Dbrotli=disabled \
6637 + -Dbrotli=disabled \
6638 -Dbzip2=disabled \
6639 -Dharfbuzz=disabled \
6640 -Dpng=disabled \
6641 @@ -142,7 +160,8 @@ linux meson:
6645 - meson setup build -Dbrotli=enabled \
6647 + -Dbrotli=enabled \
6648 -Dbzip2=enabled \
6649 -Dharfbuzz=disabled \
6650 -Dpng=disabled \
6651 @@ -205,7 +224,7 @@ macos meson:
6652 - pip3 install -U meson
6653 - pip3 install --upgrade certifi
6654 - pip3 install -U ninja
6655 -
6656 - - meson setup build
6658 + - meson setup build ${MESON_ARGS}
6659 - meson compile --verbose -C build
6660 - sudo meson install -C build
6661 diff --git a/src/third_party/freetype/src/CMakeLists.txt b/src/third_party/freetype/src/CMakeLists.…
6663 --- a/src/third_party/freetype/src/CMakeLists.txt
6665 @@ -121,7 +121,6 @@ endif ()
6669 -include(FindPkgConfig)
6673 @@ -162,7 +161,7 @@ endif ()
6677 -set(VERSION_MINOR "11")
6682 @@ -245,6 +244,8 @@ endif ()
6691 @@ -491,46 +492,48 @@ if (BUILD_FRAMEWORK)
6695 - MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist
6696 + MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/builds/mac/freetype-Info.plist
6703 -set(PKG_CONFIG_REQUIRED_PRIVATE "")
6704 -set(PKG_CONFIG_LIBS_PRIVATE "")
6707 +set(PKGCONFIG_LIBS "-L\${libdir} -lfreetype")
6713 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "zlib")
6720 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "bzip2")
6723 - list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2")
6724 + list(APPEND PKGCONFIG_LIBS_PRIVATE "-lbz2")
6731 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libpng")
6737 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}")
6744 - list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libbrotlidec")
6749 @@ -557,7 +560,7 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
6750 # Generate the pkg-config file
6753 - string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}")
6758 @@ -569,10 +572,26 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
6762 - string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}"
6763 - FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
6764 - string(REPLACE "%LIBS_PRIVATE%" "${PKG_CONFIG_LIBS_PRIVATE}"
6765 - FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
6789 diff --git a/src/third_party/freetype/src/README b/src/third_party/freetype/src/README
6791 --- a/src/third_party/freetype/src/README
6793 @@ -1,4 +1,4 @@
6794 -FreeType 2.11.1
6799 @@ -16,7 +16,9 @@ Read the files `docs/INSTALL*` for installation instructions; see the
6800 file `docs/LICENSE.TXT` for the available licenses.
6802 For using FreeType's git repository instead of a distribution bundle,
6803 -please read file `README.git`.
6810 @@ -30,9 +32,9 @@ sites. Go to
6814 - freetype-doc-2.11.1.tar.xz
6815 - freetype-doc-2.11.1.tar.gz
6816 - ftdoc2111.zip
6817 + freetype-doc-2.12.1.tar.xz
6818 + freetype-doc-2.12.1.tar.gz
6823 diff --git a/src/third_party/freetype/src/autogen.sh b/src/third_party/freetype/src/autogen.sh
6825 --- a/src/third_party/freetype/src/autogen.sh
6827 @@ -182,7 +182,7 @@ copy_submodule_files ()
6831 -if test -d ".git"; then
6832 +if test -e ".git"; then
6836 diff --git a/src/third_party/freetype/src/builds/unix/configure.raw b/src/third_party/freetype/src/…
6838 --- a/src/third_party/freetype/src/builds/unix/configure.raw
6840 @@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.h.in])
6844 -version_info='24:1:18'
6849 @@ -530,16 +530,28 @@ AC_SEARCH_LIBS([clock_gettime],
6853 -# 'librsvg' is needed to demonstrate SVG support.
6854 -PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0],
6855 - [have_librsvg="yes (pkg-config)"], [have_librsvg=no])
6856 -
6860 -if test "$have_librsvg" != no; then
6861 - FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG"
6862 - FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS"
6865 + [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@],
6869 +have_librsvg=no
6870 +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then
6871 + PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0],
6872 + [have_librsvg="yes (pkg-config)"], [:])
6874 + if test "$have_librsvg" != no; then
6875 + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG"
6880 +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then
6885 @@ -985,32 +997,32 @@ fi
6889 -REQUIRES_PRIVATE="$zlib_reqpriv, \
6890 - $bzip2_reqpriv, \
6891 - $libpng_reqpriv, \
6892 - $harfbuzz_reqpriv, \
6893 - $brotli_reqpriv"
6900 -REQUIRES_PRIVATE=`echo "$REQUIRES_PRIVATE" \
6901 - | sed -e 's/^ *//' \
6902 - -e 's/ *$//' \
6903 - -e 's/, */,/g' \
6904 - -e 's/,,*/,/g' \
6905 - -e 's/^,*//' \
6906 - -e 's/,*$//' \
6907 - -e 's/,/, /g'`
6908 -
6909 -LIBS_PRIVATE="$zlib_libspriv \
6910 - $bzip2_libspriv \
6911 - $libpng_libspriv \
6912 - $harfbuzz_libspriv \
6913 - $brotli_libspriv \
6914 - $ft2_extra_libs"
6916 + | sed -e 's/^ *//' \
6917 + -e 's/ *$//' \
6918 + -e 's/, */,/g' \
6919 + -e 's/,,*/,/g' \
6920 + -e 's/^,*//' \
6921 + -e 's/,*$//' \
6922 + -e 's/,/, /g'`
6931 -LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \
6932 - | sed -e 's/^ *//' \
6933 - -e 's/ *$//' \
6934 - -e 's/ */ /g'`
6936 + | sed -e 's/^ *//' \
6937 + -e 's/ *$//' \
6938 + -e 's/ */ /g'`
6940 LIBSSTATIC_CONFIG="-lfreetype \
6942 @@ -1028,10 +1040,28 @@ LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \
6943 -e 's/ *$//' \
6944 -e 's/ */ /g'`
6946 +# If FreeType gets installed with `--disable-shared', don't use
6947 +# 'private' fields. `pkg-config' only looks into `.pc' files and is
6949 +# or not. As a consequence, the user had to specify `--static' while
6950 +# calling `pkg-config', which configure scripts are normally not
6951 +# prepared for.
6954 +PKGCONFIG_LIBS='-L${libdir} -lfreetype'
6956 +if test $enable_shared = "no"; then
6964 -AC_SUBST([REQUIRES_PRIVATE])
6965 -AC_SUBST([LIBS_PRIVATE])
6973 diff --git a/src/third_party/freetype/src/builds/unix/freetype2.in b/src/third_party/freetype/src/b…
6975 --- a/src/third_party/freetype/src/builds/unix/freetype2.in
6977 @@ -7,8 +7,8 @@ Name: FreeType 2
6979 Description: A free, high-quality, and portable font engine.
6981 -Requires:
6982 -Requires.private: %REQUIRES_PRIVATE%
6983 -Libs: -L${libdir} -lfreetype
6984 -Libs.private: %LIBS_PRIVATE%
6989 Cflags: -I${includedir}/freetype2
6990 diff --git a/src/third_party/freetype/src/builds/unix/unix-def.in b/src/third_party/freetype/src/bu…
6992 --- a/src/third_party/freetype/src/builds/unix/unix-def.in
6993 +++ b/src/third_party/freetype/src/builds/unix/unix-def.in
6994 @@ -68,12 +68,14 @@ version_info := @version_info@
6996 # Variables needed for `freetype-config' and `freetype.pc'.
6998 -PKG_CONFIG := @PKG_CONFIG@
6999 -REQUIRES_PRIVATE := @REQUIRES_PRIVATE@
7000 -LIBS_PRIVATE := @LIBS_PRIVATE@
7001 -LIBSSTATIC_CONFIG := @LIBSSTATIC_CONFIG@
7002 -build_libtool_libs := @build_libtool_libs@
7003 -ft_version := @ft_version@
7015 @@ -137,15 +139,17 @@ prefix_x := $(subst $(space),\\$(space),$(prefix))
7018 rm -f $@ $@.tmp
7019 - sed -e 's|%REQUIRES_PRIVATE%|$(REQUIRES_PRIVATE)|' \
7020 - -e 's|%LIBS_PRIVATE%|$(LIBS_PRIVATE)|' \
7021 - -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \
7022 - -e 's|%exec_prefix%|$(exec_prefix_x)|' \
7023 - -e 's|%ft_version%|$(ft_version)|' \
7024 - -e 's|%includedir%|$(includedir_x)|' \
7025 - -e 's|%libdir%|$(libdir_x)|' \
7026 - -e 's|%prefix%|$(prefix_x)|' \
7027 - $< \
7028 + sed -e 's|%PKGCONFIG_REQUIRES%|$(PKGCONFIG_REQUIRES)|' \
7029 + -e 's|%PKGCONFIG_REQUIRES_PRIVATE%|$(PKGCONFIG_REQUIRES_PRIVATE)|' \
7030 + -e 's|%PKGCONFIG_LIBS%|$(PKGCONFIG_LIBS)|' \
7031 + -e 's|%PKGCONFIG_LIBS_PRIVATE%|$(PKGCONFIG_LIBS_PRIVATE)|' \
7032 + -e 's|%build_libtool_libs%|$(build_libtool_libs)|' \
7033 + -e 's|%exec_prefix%|$(exec_prefix_x)|' \
7034 + -e 's|%ft_version%|$(ft_version)|' \
7035 + -e 's|%includedir%|$(includedir_x)|' \
7036 + -e 's|%libdir%|$(libdir_x)|' \
7037 + -e 's|%prefix%|$(prefix_x)|' \
7040 chmod a-w $@.tmp
7042 diff --git a/src/third_party/freetype/src/builds/wince/vc2005-ce/index.html b/src/third_party/freet…
7044 --- a/src/third_party/freetype/src/builds/wince/vc2005-ce/index.html
7045 +++ b/src/third_party/freetype/src/builds/wince/vc2005-ce/index.html
7046 @@ -21,7 +21,7 @@ the following targets:
7050 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7055 diff --git a/src/third_party/freetype/src/builds/wince/vc2008-ce/index.html b/src/third_party/freet…
7057 --- a/src/third_party/freetype/src/builds/wince/vc2008-ce/index.html
7058 +++ b/src/third_party/freetype/src/builds/wince/vc2008-ce/index.html
7059 @@ -21,7 +21,7 @@ the following targets:
7063 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7068 diff --git a/src/third_party/freetype/src/builds/windows/ftsystem.c b/src/third_party/freetype/src/…
7070 --- a/src/third_party/freetype/src/builds/windows/ftsystem.c
7072 @@ -196,37 +196,77 @@
7076 -#if defined( NTDDI_VERSION ) && NTDDI_VERSION < 0x0A000007 && \
7077 - defined( WINAPI_FAMILY_PARTITION ) && \
7078 - !WINAPI_FAMILY_PARTITION( WINAPI_PARTITION_DESKTOP )
7079 + /* non-desktop Universal Windows Platform */
7084 -#define CreateFileW( a, b, c, d, e, f, g ) \
7085 - CreateFileFromAppW( a, b, c, d, e, f, g )
7086 -#define CreateFileMapping( a, b, c, d, e, f ) \
7087 - CreateFileMappingFromApp( a, b, c, PACK_DWORD64( d, e ), f )
7088 -#define MapViewOfFile( a, b, c, d, e ) \
7089 - MapViewOfFileFromApp( a, b, PACK_DWORD64( c, d ), e )
7115 -#define UWP_LEGACY
7117 + /* allocate memory space for converted path name */
7119 + lpFileName, -1, NULL, 0 );
7131 + lpFileName, -1, lpFileNameW, len );
7141 -#if defined( _WIN32_WCE ) || defined( UWP_LEGACY )
7148 - CreateFileA( LPCSTR lpFileName,
7149 - DWORD dwDesiredAccess,
7150 - DWORD dwShareMode,
7151 - LPSECURITY_ATTRIBUTES lpSecurityAttributes,
7152 - DWORD dwCreationDisposition,
7153 - DWORD dwFlagsAndAttributes,
7154 - HANDLE hTemplateFile )
7163 - int len;
7164 - LPWSTR lpFileNameW;
7169 /* allocate memory space for converted path name */
7170 @@ -253,12 +293,13 @@
7179 - GetFileSizeEx( HANDLE hFile,
7180 - PLARGE_INTEGER lpFileSize )
7184 lpFileSize->u.LowPart = GetFileSize( hFile,
7185 (DWORD *)&lpFileSize->u.HighPart );
7186 diff --git a/src/third_party/freetype/src/builds/windows/vc2010/index.html b/src/third_party/freety…
7188 --- a/src/third_party/freetype/src/builds/windows/vc2010/index.html
7190 @@ -12,7 +12,7 @@
7191 <p>This directory contains solution and project files for
7194 -from the FreeType 2.11.1 sources:</p>
7199 diff --git a/src/third_party/freetype/src/builds/windows/visualc/index.html b/src/third_party/freet…
7201 --- a/src/third_party/freetype/src/builds/windows/visualc/index.html
7203 @@ -12,7 +12,7 @@
7204 <p>This directory contains project files <tt>freetype.dsp</tt> for
7205 Visual C++ 6.0, and <tt>freetype.vcproj</tt> for Visual C++ 2002
7207 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7212 diff --git a/src/third_party/freetype/src/builds/windows/visualce/index.html b/src/third_party/free…
7214 --- a/src/third_party/freetype/src/builds/windows/visualce/index.html
7216 @@ -21,7 +21,7 @@ the following targets:
7220 -It compiles the following libraries from the FreeType 2.11.1 sources:</p>
7225 diff --git a/src/third_party/freetype/src/docs/CHANGES b/src/third_party/freetype/src/docs/CHANGES
7227 --- a/src/third_party/freetype/src/docs/CHANGES
7229 @@ -1,3 +1,49 @@
7236 + - TrueType interpreter version 38 (aka Infinality) that was first
7239 + version 40 has been FreeType default version for 6 years now and
7250 + - Loading CFF fonts sometimes made FreeType crash (bug introduced in
7253 + - Loading a fully hinted TrueType glyph a second time (without
7257 + - The generation of the pkg-config file `freetype2.pc` was broken if
7263 + - New option `--with-librsvg` for the `configure` script for better
7266 + - The meson build no longer enforces both static and dynamic
7269 + - The internal zlib library was updated to version 1.2.12. Note,
7270 + however, that FreeType is *not* affected by CVE-2018-25032 since
7279 @@ -10,7 +56,41 @@ CHANGES BETWEEN 2.11.1 and 2.12.0
7283 - This work was Moazin Kathri's GSoC 2019 project.
7289 + - The handling of fonts with an 'sbix' table has been improved.
7291 + - Corrected bitmap offsets.
7293 + - A new tag `FT_PARAM_TAG_IGNORE_SBIX` for `FT_Open_Face` makes
7297 + - `FT_FACE_FLAG_SBIX` and `FT_FACE_FLAG_SBIX_OVERLAY` together
7302 + - The internal 'zlib' code has been updated to be in sync with the
7305 + - The previously internal load flag `FT_LOAD_SBITS_ONLY` is now
7308 + - Some minor improvements of the building systems, in particular
7311 + - Support for non-desktop Universal Windows Platform.
7313 + - Various other minor bug and documentation fixes.
7315 + - The `ftdump` demo program shows more information for Type1 fonts
7316 + if option `-n` is given.
7318 + - `ftgrid` can now display embedded bitmap strikes.
7322 diff --git a/src/third_party/freetype/src/docs/VERSIONS.TXT b/src/third_party/freetype/src/docs/VER…
7324 --- a/src/third_party/freetype/src/docs/VERSIONS.TXT
7326 @@ -60,6 +60,8 @@ found on _most_ systems, but not all of them:
7329 -------------------------------
7335 diff --git a/src/third_party/freetype/src/docs/freetype-config.1 b/src/third_party/freetype/src/doc…
7337 --- a/src/third_party/freetype/src/docs/freetype-config.1
7338 +++ b/src/third_party/freetype/src/docs/freetype-config.1
7339 @@ -1,4 +1,4 @@
7340 -.TH FREETYPE-CONFIG 1 "December 2021" "FreeType 2.11.1"
7341 +.TH FREETYPE-CONFIG 1 "May 2022" "FreeType 2.12.1"
7345 diff --git a/src/third_party/freetype/src/docs/markdown/images/favico.ico b/src/third_party/freetyp…
7349 zc${NkU}Ruo5D;Jh(h3Y2EDQ{43=9kk3K0GZpm-lpOamw;01{__h=TzO0|rovW&J<U
7350 z_|%<)|6$-XkWH){GKK+C<%X+%<gg+|KQb5y`{@;a>yIy@NdNPX53#0EQUE^x&<kUh
7351 z2&4fGXc^;xT+Rp#&T?iH4?HF}Pf#l_#r3=VKlcbTzk<X-a@5vGtbb^&Z`A%#`$z2`
7358 zHdiHq4NQaNWuh4V2Q*lL)f6uc{I8YH`CkEQze+s&|KjQK5WBmT|7)jn|2N1I_-~Xa
7359 z1eOD-k&k8mAJk|IR#Ubj<iAcP_kZO$HVpkC(=>o?76!BZy0reQCUC&@hcx5XUobru
7360 z#eX0i-fR9}3F-%8^;fNk`ybow4rbezD}%!Tq)s84`F}8)`$2laW&rgU&WHocxwp##
7361 z`HcU~a;5+40K-8ujRP1Sy#JNrSTOX1^lGGV{8vll{9ig3;(z~s)&FKiLjSe0+5hLx
7363 tr2U_@qXQlm0iC-4OXo*}*)_}K|NFFR{?DHmgb`-s;DJv6lwt-70RZNI8D9VZ
7365 diff --git a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.210 b/src/third_party/freetype/src…
7367 --- a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.210
7369 @@ -2411,9 +2411,9 @@
7373 - use 16.16 fixed point to get rid of a redundant truncation operation.
7374 + use 16.16 fixed-point to get rid of a redundant truncation operation.
7376 - bottlenecked by the emboldening function, which uses 26.6 fixed point.
7377 + bottlenecked by the emboldening function, which uses 26.6 fixed-point.
7381 diff --git a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.24 b/src/third_party/freetype/src/…
7383 --- a/src/third_party/freetype/src/docs/oldlogs/ChangeLog.24
7385 @@ -707,7 +707,7 @@
7389 - outgoing vectors and use fixed point arithmetic.
7390 + outgoing vectors and use fixed-point arithmetic.
7392 2013-01-23 Alexei Podtelezhnikov <apodtele@gmail.com>
7394 diff --git a/src/third_party/freetype/src/docs/release b/src/third_party/freetype/src/docs/release
7396 --- a/src/third_party/freetype/src/docs/release
7398 @@ -77,13 +77,14 @@ How to prepare a new release
7402 - VERSION=2.10.4
7410 - GPG='/usr/bin/gpg --batch --no-tty'
7411 + GPG="/usr/bin/gpg --batch --no-tty --local-user $GPG_KEY_ID"
7415 diff --git a/src/third_party/freetype/src/include/freetype/freetype.h b/src/third_party/freetype/sr…
7417 --- a/src/third_party/freetype/src/include/freetype/freetype.h
7419 @@ -154,6 +154,8 @@ FT_BEGIN_HEADER
7428 @@ -163,6 +165,8 @@ FT_BEGIN_HEADER
7437 @@ -227,6 +231,7 @@ FT_BEGIN_HEADER
7445 @@ -1235,6 +1240,16 @@ FT_BEGIN_HEADER
7452 + * For such fonts, @FT_FACE_FLAG_SCALABLE is not set by default to
7462 @@ -1253,6 +1268,8 @@ FT_BEGIN_HEADER
7471 @@ -1509,6 +1526,108 @@ FT_BEGIN_HEADER
7472 ( !!( (face)->face_flags & FT_FACE_FLAG_SVG ) )
7484 + * Currently, FreeType only supports bitmap glyphs in PNG format for this
7486 + * Apple-specific formats not part of the OpenType specification).
7489 + * For backward compatibility, a font with an 'sbix' table is treated as
7490 + * a bitmap-only face. Using @FT_Open_Face with
7511 + * <sort `face->available_size` as necessary into
7514 + * for ( i = 0; i < face->num_fixed_sizes; i++ )
7534 + * if ( i != face->num_fixed_sizes )
7538 + * if ( i == face->num_fixed_sizes ||
7556 + ( !!( (face)->face_flags & FT_FACE_FLAG_SBIX ) )
7568 + * outline glyph. See @FT_HAS_SBIX for pseudo code how to use it.
7574 + ( !!( (face)->face_flags & FT_FACE_FLAG_SBIX_OVERLAY ) )
7580 @@ -1773,13 +1892,13 @@ FT_BEGIN_HEADER
7584 - * WYSIWYG layout. Only relevant for outline glyphs.
7585 + * WYSIWYG layout. Only relevant for scalable glyphs.
7591 - * WYSIWYG layout. Only relevant for outline glyphs.
7592 + * WYSIWYG layout. Only relevant for scalable glyphs.
7596 @@ -2976,6 +3095,15 @@ FT_BEGIN_HEADER
7603 + * contains a bitmap strike for the given size (or the strike selected
7604 + * by @FT_Select_Size) but there is no glyph in the strike.
7610 * Load the glyph for vertical text layout. In particular, the
7612 @@ -3120,6 +3248,7 @@ FT_BEGIN_HEADER
7618 /* Bits 16-19 are used by `FT_LOAD_TARGET_` */
7620 @@ -3130,7 +3259,6 @@ FT_BEGIN_HEADER
7624 -#define FT_LOAD_SBITS_ONLY ( 1L << 14 )
7628 @@ -3409,6 +3537,44 @@ FT_BEGIN_HEADER
7633 + * FreeType has two rasterizers for generating SDF, namely:
7635 + * 1. `sdf` for generating SDF directly from glyph's outline, and
7637 + * 2. `bsdf` for generating SDF from rasterized bitmaps.
7640 + * rasterizers is chosen at runtime and used for generating SDFs. To
7643 + * then re-render with `FT_RENDER_MODE_SDF`.
7652 + * 2. The `sdf` rasterizer has limited support for handling intersecting
7653 + * contours and *cannot* handle self-intersecting contours whatsoever.
7654 + * Self-intersection happens when a single connected contour intersect
7658 + * 3. Generating SDF for really small glyphs may result in undesirable
7673 @@ -4775,7 +4941,7 @@ FT_BEGIN_HEADER
7677 -#define FREETYPE_MINOR 11
7682 diff --git a/src/third_party/freetype/src/include/freetype/ftcolor.h b/src/third_party/freetype/src…
7684 --- a/src/third_party/freetype/src/include/freetype/ftcolor.h
7686 @@ -528,14 +528,14 @@ FT_BEGIN_HEADER
7689 * The number of color stops for the requested glyph index. Set by
7690 - * @FT_Get_Colorline_Stops.
7697 - * An opaque pointer into 'COLR' table data. The caller must set this
7698 - * to `NULL` before the first call of @FT_Get_Colorline_Stops.
7703 * 2.11 -- **currently experimental only!** There might be changes
7704 @@ -592,7 +592,8 @@ FT_BEGIN_HEADER
7708 - * The stop offset between 0 and 1 along the gradient.
7709 + * The stop offset along the gradient, expressed as a 16.16 fixed-point
7713 * The color information for this stop, see @FT_ColorIndex.
7714 @@ -604,7 +605,7 @@ FT_BEGIN_HEADER
7718 - FT_F2Dot14 stop_offset;
7723 diff --git a/src/third_party/freetype/src/include/freetype/ftdriver.h b/src/third_party/freetype/sr…
7725 --- a/src/third_party/freetype/src/include/freetype/ftdriver.h
7727 @@ -214,9 +214,9 @@ FT_BEGIN_HEADER
7731 - * The TrueType driver's module name is 'truetype'; a single property
7732 - * @interpreter-version is available, as documented in the @properties
7733 - * section.
7735 + * available, @interpreter-version and @TEMPORARY-enable-variable-colrv1, as
7740 @@ -820,6 +820,48 @@ FT_BEGIN_HEADER
7747 + * TEMPORARY-enable-variable-colrv1
7754 + * on, variable COLRv1 deltas are applied for COLRv1 features for which they
7779 + * "TEMPORARY-enable-variable-colrv1",
7789 diff --git a/src/third_party/freetype/src/include/freetype/ftimage.h b/src/third_party/freetype/src…
7791 --- a/src/third_party/freetype/src/include/freetype/ftimage.h
7793 @@ -401,11 +401,11 @@ FT_BEGIN_HEADER
7797 - * This flag indicates that this outline contains overlapping contrours
7798 - * and the anti-aliased renderer should perform oversampling to
7799 - * mitigate possible artifacts. This flag should _not_ be set for
7800 - * well designed glyphs without overlaps because it quadruples the
7801 - * rendering time.
7803 + * overlapping contours and the anti-aliased renderer should perform
7805 + * be set for well designed glyphs without overlaps because it quadruples
7809 * This flag indicates that the scan-line converter should try to
7810 diff --git a/src/third_party/freetype/src/include/freetype/ftparams.h b/src/third_party/freetype/sr…
7812 --- a/src/third_party/freetype/src/include/freetype/ftparams.h
7814 @@ -112,6 +112,21 @@ FT_BEGIN_HEADER
7824 + * A tag for @FT_Parameter to make @FT_Open_Face ignore an 'sbix' table
7836 diff --git a/src/third_party/freetype/src/include/freetype/ftstroke.h b/src/third_party/freetype/sr…
7838 --- a/src/third_party/freetype/src/include/freetype/ftstroke.h
7840 @@ -293,7 +293,7 @@ FT_BEGIN_HEADER
7843 * The maximum reciprocal sine of half-angle at the miter join,
7844 - * expressed as 16.16 fixed point value.
7845 + * expressed as 16.16 fixed-point value.
7849 diff --git a/src/third_party/freetype/src/include/freetype/internal/cfftypes.h b/src/third_party/fr…
7851 --- a/src/third_party/freetype/src/include/freetype/internal/cfftypes.h
7853 @@ -315,7 +315,7 @@ FT_BEGIN_HEADER
7857 - /* Blended values are stored as 5-byte fixed point values. */
7858 + /* Blended values are stored as 5-byte fixed-point values. */
7862 diff --git a/src/third_party/freetype/src/include/freetype/internal/ftcalc.h b/src/third_party/free…
7864 --- a/src/third_party/freetype/src/include/freetype/internal/ftcalc.h
7866 @@ -278,6 +278,40 @@ FT_BEGIN_HEADER
7891 + * This function is currently used for the scaled delta computation of
7892 + * variation stores. It internally uses 64-bit data types when
7893 + * available, otherwise it emulates 64-bit math by using 32-bit
7907 diff --git a/src/third_party/freetype/src/include/freetype/internal/ftmmtypes.h b/src/third_party/f…
7910 --- /dev/null
7912 @@ -0,0 +1,85 @@
7917 + * OpenType Variations type definitions for internal use
7918 + * with the multi-masters service (specification).
7948 + /* use `innerIndex' for this array */
7957 + FT_Fixed peakCoord; /* zero means no effect (factor = 1) */
7975 + /* use `outerIndex' for this array */
7998 diff --git a/src/third_party/freetype/src/include/freetype/internal/ftstream.h b/src/third_party/fr…
8000 --- a/src/third_party/freetype/src/include/freetype/internal/ftstream.h
8002 @@ -238,42 +238,42 @@ FT_BEGIN_HEADER
8006 -#define FT_NEXT_SHORT( buffer ) \
8007 - ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) )
8009 + ( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) )
8011 -#define FT_NEXT_USHORT( buffer ) \
8012 - ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) )
8014 + ( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) )
8016 -#define FT_NEXT_OFF3( buffer ) \
8017 - ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) )
8019 + ( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) )
8021 -#define FT_NEXT_UOFF3( buffer ) \
8022 - ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) )
8024 + ( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) )
8026 -#define FT_NEXT_LONG( buffer ) \
8027 - ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) )
8029 + ( buffer += 4, FT_PEEK_LONG( buffer - 4 ) )
8031 -#define FT_NEXT_ULONG( buffer ) \
8032 - ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) )
8034 + ( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) )
8037 -#define FT_NEXT_SHORT_LE( buffer ) \
8038 - ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) )
8040 + ( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) )
8042 -#define FT_NEXT_USHORT_LE( buffer ) \
8043 - ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) )
8045 + ( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) )
8047 -#define FT_NEXT_OFF3_LE( buffer ) \
8048 - ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) )
8050 + ( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) )
8052 -#define FT_NEXT_UOFF3_LE( buffer ) \
8053 - ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) )
8055 + ( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) )
8057 -#define FT_NEXT_LONG_LE( buffer ) \
8058 - ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) )
8060 + ( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) )
8062 -#define FT_NEXT_ULONG_LE( buffer ) \
8063 - ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
8065 + ( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) )
8069 @@ -307,17 +307,17 @@ FT_BEGIN_HEADER
8073 -#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
8074 -#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
8075 -#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )
8076 -#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long )
8077 -#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
8078 -#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
8079 -
8080 -#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short )
8081 -#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort )
8082 -#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long )
8083 -#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )
8098 @@ -334,16 +334,16 @@ FT_BEGIN_HEADER
8102 -#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
8103 -#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
8104 -#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )
8105 -#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )
8106 -#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )
8113 -#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var )
8114 -#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var )
8115 -#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var )
8116 -#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var )
8124 @@ -459,23 +459,23 @@ FT_BEGIN_HEADER
8127 /* read a 16-bit big-endian unsigned integer from an entered frame */
8128 - FT_BASE( FT_UShort )
8132 /* read a 24-bit big-endian unsigned integer from an entered frame */
8133 - FT_BASE( FT_ULong )
8137 /* read a 32-bit big-endian unsigned integer from an entered frame */
8138 - FT_BASE( FT_ULong )
8142 /* read a 16-bit little-endian unsigned integer from an entered frame */
8143 - FT_BASE( FT_UShort )
8147 /* read a 32-bit little-endian unsigned integer from an entered frame */
8148 - FT_BASE( FT_ULong )
8153 @@ -485,7 +485,7 @@ FT_BEGIN_HEADER
8156 /* read a 16-bit big-endian unsigned integer from a stream */
8157 - FT_BASE( FT_UShort )
8162 @@ -495,17 +495,17 @@ FT_BEGIN_HEADER
8165 /* read a 32-bit big-endian integer from a stream */
8166 - FT_BASE( FT_ULong )
8171 /* read a 16-bit little-endian unsigned integer from a stream */
8172 - FT_BASE( FT_UShort )
8177 /* read a 32-bit little-endian unsigned integer from a stream */
8178 - FT_BASE( FT_ULong )
8183 diff --git a/src/third_party/freetype/src/include/freetype/internal/services/svmm.h b/src/third_par…
8185 --- a/src/third_party/freetype/src/include/freetype/internal/services/svmm.h
8187 @@ -5,7 +5,7 @@
8190 * Copyright (C) 2003-2022 by
8191 - * David Turner, Robert Wilhelm, and Werner Lemberg.
8196 @@ -20,6 +20,7 @@
8204 @@ -96,53 +97,94 @@ FT_BEGIN_HEADER
8237 - FT_Get_MM_Func get_mm;
8238 - FT_Set_MM_Design_Func set_mm_design;
8239 - FT_Set_MM_Blend_Func set_mm_blend;
8240 - FT_Get_MM_Blend_Func get_mm_blend;
8241 - FT_Get_MM_Var_Func get_mm_var;
8242 - FT_Set_Var_Design_Func set_var_design;
8243 - FT_Get_Var_Design_Func get_var_design;
8244 - FT_Set_Instance_Func set_instance;
8245 - FT_Set_MM_WeightVector_Func set_mm_weightvector;
8246 - FT_Get_MM_WeightVector_Func get_mm_weightvector;
8258 /* for internal use; only needed for code sharing between modules */
8259 - FT_Get_Var_Blend_Func get_var_blend;
8260 - FT_Done_Blend_Func done_blend;
8271 -#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_, \
8272 - get_mm_, \
8273 - set_mm_design_, \
8274 - set_mm_blend_, \
8275 - get_mm_blend_, \
8276 - get_mm_var_, \
8277 - set_var_design_, \
8278 - get_var_design_, \
8279 - set_instance_, \
8280 - set_weightvector_, \
8281 - get_weightvector_, \
8282 - get_var_blend_, \
8283 - done_blend_ ) \
8284 - static const FT_Service_MultiMastersRec class_ = \
8285 - { \
8286 - get_mm_, \
8287 - set_mm_design_, \
8288 - set_mm_blend_, \
8289 - get_mm_blend_, \
8290 - get_mm_var_, \
8291 - set_var_design_, \
8292 - get_var_design_, \
8293 - set_instance_, \
8294 - set_weightvector_, \
8295 - get_weightvector_, \
8296 - get_var_blend_, \
8297 - done_blend_ \
8338 diff --git a/src/third_party/freetype/src/meson.build b/src/third_party/freetype/src/meson.build
8340 --- a/src/third_party/freetype/src/meson.build
8342 @@ -25,7 +25,6 @@
8346 - default_options: ['default_library=both'],
8350 @@ -336,7 +335,8 @@ endif
8354 - required: get_option('harfbuzz'))
8359 ftoption_command += ['--enable=FT_CONFIG_OPTION_USE_HARFBUZZ']
8360 diff --git a/src/third_party/freetype/src/src/base/ftcalc.c b/src/third_party/freetype/src/src/base…
8362 --- a/src/third_party/freetype/src/src/base/ftcalc.c
8364 @@ -1085,4 +1085,71 @@
8383 + for ( i = 0; i < count; ++i )
8391 + for ( i = 0; i < count; ++i )
8436 diff --git a/src/third_party/freetype/src/src/base/ftglyph.c b/src/third_party/freetype/src/src/bas…
8438 --- a/src/third_party/freetype/src/src/base/ftglyph.c
8440 @@ -469,7 +469,7 @@
8442 FT_Memory memory = svg_glyph->library->memory;
8444 - FT_SVG_Document document;
8449 diff --git a/src/third_party/freetype/src/src/base/ftmac.c b/src/third_party/freetype/src/src/base/…
8451 --- a/src/third_party/freetype/src/src/base/ftmac.c
8453 @@ -314,7 +314,7 @@
8457 - return ((FInfo *)(info.finderInfo))->fdType;
8458 + return ( (FInfo *)( info.finderInfo ) )->fdType;
8462 @@ -462,7 +462,7 @@
8466 - ft_memcpy(ps_name, names[0] + 1, ps_name_len);
8470 if ( style->indexes[face_index] > 1 &&
8471 diff --git a/src/third_party/freetype/src/src/base/ftobjs.c b/src/third_party/freetype/src/src/base…
8473 --- a/src/third_party/freetype/src/src/base/ftobjs.c
8475 @@ -334,7 +334,7 @@
8476 /* if SVG table exists, allocate the space in `slot->other` */
8477 if ( slot->face->face_flags & FT_FACE_FLAG_SVG )
8479 - FT_SVG_Document document;
8484 @@ -605,7 +605,7 @@
8487 FT_FREE( doc->svg_document );
8488 - slot->internal->load_flags &= ~FT_GLYPH_OWN_GZIP_SVG;
8489 + slot->internal->flags &= ~FT_GLYPH_OWN_GZIP_SVG;
8493 @@ -2215,7 +2215,8 @@
8497 - if ( error ) {
8503 @@ -2527,6 +2528,16 @@
8512 + face_index = -face_index;
8514 + face_index = -face_index;
8520 @@ -3399,6 +3410,9 @@
8524 + if ( !face->size )
8527 if ( !req || req->width < 0 || req->height < 0 ||
8528 req->type >= FT_SIZE_REQUEST_TYPE_MAX )
8530 diff --git a/src/third_party/freetype/src/src/base/ftrfork.c b/src/third_party/freetype/src/src/bas…
8532 --- a/src/third_party/freetype/src/src/base/ftrfork.c
8534 @@ -402,17 +402,17 @@
8538 - CONST_FT_RFORK_RULE_ARRAY_BEGIN(ft_raccess_guess_table,
8539 - ft_raccess_guess_rec)
8540 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(apple_double, apple_double)
8541 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(apple_single, apple_single)
8542 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(darwin_ufs_export, darwin_ufs_export)
8543 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(darwin_newvfs, darwin_newvfs)
8544 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(darwin_hfsplus, darwin_hfsplus)
8545 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(vfat, vfat)
8546 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(linux_cap, linux_cap)
8547 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(linux_double, linux_double)
8548 - CONST_FT_RFORK_RULE_ARRAY_ENTRY(linux_netatalk, linux_netatalk)
8563 diff --git a/src/third_party/freetype/src/src/base/ftstream.c b/src/third_party/freetype/src/src/ba…
8565 --- a/src/third_party/freetype/src/src/base/ftstream.c
8567 @@ -363,11 +363,11 @@
8571 - FT_BASE_DEF( FT_UShort )
8576 - FT_UShort result;
8580 FT_ASSERT( stream && stream->cursor );
8581 @@ -382,11 +382,11 @@
8585 - FT_BASE_DEF( FT_UShort )
8590 - FT_UShort result;
8594 FT_ASSERT( stream && stream->cursor );
8595 @@ -401,11 +401,11 @@
8599 - FT_BASE_DEF( FT_ULong )
8604 - FT_ULong result;
8608 FT_ASSERT( stream && stream->cursor );
8609 @@ -419,11 +419,11 @@
8613 - FT_BASE_DEF( FT_ULong )
8618 - FT_ULong result;
8622 FT_ASSERT( stream && stream->cursor );
8623 @@ -437,11 +437,11 @@
8627 - FT_BASE_DEF( FT_ULong )
8632 - FT_ULong result;
8636 FT_ASSERT( stream && stream->cursor );
8637 @@ -493,13 +493,13 @@
8641 - FT_BASE_DEF( FT_UShort )
8648 - FT_UShort result = 0;
8653 @@ -538,13 +538,13 @@
8657 - FT_BASE_DEF( FT_UShort )
8664 - FT_UShort result = 0;
8669 @@ -628,13 +628,13 @@
8673 - FT_BASE_DEF( FT_ULong )
8680 - FT_ULong result = 0;
8685 @@ -673,13 +673,13 @@
8689 - FT_BASE_DEF( FT_ULong )
8696 - FT_ULong result = 0;
8701 diff --git a/src/third_party/freetype/src/src/base/ftver.rc b/src/third_party/freetype/src/src/base…
8703 --- a/src/third_party/freetype/src/src/base/ftver.rc
8705 @@ -18,8 +18,8 @@
8709 -#define FT_VERSION 2,11,1,0
8710 -#define FT_VERSION_STR "2.11.1"
8716 @@ -45,7 +45,7 @@ BEGIN
8720 - VALUE "LegalCopyright", "\251 2000-2021 The FreeType Project www.freetype.org. All rights …
8721 + VALUE "LegalCopyright", "\251 2000-2022 The FreeType Project www.freetype.org. All rights …
8725 diff --git a/src/third_party/freetype/src/src/bzip2/ftbzip2.c b/src/third_party/freetype/src/src/bz…
8727 --- a/src/third_party/freetype/src/src/bzip2/ftbzip2.c
8729 @@ -57,8 +57,9 @@
8733 - typedef void *(* alloc_func)(void*, int, int);
8734 - typedef void (* free_func)(void*, void*);
8741 diff --git a/src/third_party/freetype/src/src/cache/ftccache.h b/src/third_party/freetype/src/src/c…
8743 --- a/src/third_party/freetype/src/src/cache/ftccache.h
8745 @@ -210,7 +210,7 @@ FT_BEGIN_HEADER
8749 - FTC_Cache _cache = FTC_CACHE(cache); \
8754 diff --git a/src/third_party/freetype/src/src/cache/ftccmap.c b/src/third_party/freetype/src/src/ca…
8756 --- a/src/third_party/freetype/src/src/cache/ftccmap.c
8758 @@ -112,7 +112,7 @@
8761 FT_Memory memory = cache->memory;
8762 - FTC_CMapNode node;
8767 diff --git a/src/third_party/freetype/src/src/cache/ftcglyph.h b/src/third_party/freetype/src/src/c…
8769 --- a/src/third_party/freetype/src/src/cache/ftcglyph.h
8771 @@ -140,8 +140,8 @@ FT_BEGIN_HEADER
8775 -#define FTC_FAMILY(x) ( (FTC_Family)(x) )
8776 -#define FTC_FAMILY_P(x) ( (FTC_Family*)(x) )
8782 @@ -245,7 +245,7 @@ FT_BEGIN_HEADER
8786 - FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
8787 + FTC_GCACHE_CLASS( FTC_CACHE( x )->org_class )
8789 ( (FTC_MruListClass)FTC_CACHE_GCACHE_CLASS( x )->family_class )
8791 diff --git a/src/third_party/freetype/src/src/cache/ftcimage.c b/src/third_party/freetype/src/src/c…
8793 --- a/src/third_party/freetype/src/src/cache/ftcimage.c
8795 @@ -61,7 +61,7 @@
8797 FT_Memory memory = cache->memory;
8799 - FTC_INode inode;
8804 diff --git a/src/third_party/freetype/src/src/cache/ftcimage.h b/src/third_party/freetype/src/src/c…
8806 --- a/src/third_party/freetype/src/src/cache/ftcimage.h
8808 @@ -51,8 +51,8 @@ FT_BEGIN_HEADER
8812 -#define FTC_INODE_GINDEX( x ) FTC_GNODE(x)->gindex
8813 -#define FTC_INODE_FAMILY( x ) FTC_GNODE(x)->family
8814 +#define FTC_INODE_GINDEX( x ) FTC_GNODE( x )->gindex
8815 +#define FTC_INODE_FAMILY( x ) FTC_GNODE( x )->family
8819 @@ -72,7 +72,7 @@ FT_BEGIN_HEADER
8823 - FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS(x)->family_class )
8824 + FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
8828 diff --git a/src/third_party/freetype/src/src/cache/ftcsbits.c b/src/third_party/freetype/src/src/c…
8830 --- a/src/third_party/freetype/src/src/cache/ftcsbits.c
8832 @@ -171,7 +171,7 @@
8833 sbit->xadvance = (FT_Char)xadvance;
8834 sbit->yadvance = (FT_Char)yadvance;
8835 sbit->format = (FT_Byte)bitmap->pixel_mode;
8836 - sbit->max_grays = (FT_Byte)(bitmap->num_grays - 1);
8837 + sbit->max_grays = (FT_Byte)( bitmap->num_grays - 1 );
8839 if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
8841 diff --git a/src/third_party/freetype/src/src/cache/ftcsbits.h b/src/third_party/freetype/src/src/c…
8843 --- a/src/third_party/freetype/src/src/cache/ftcsbits.h
8845 @@ -61,7 +61,7 @@ FT_BEGIN_HEADER
8849 -#define FTC_SFAMILY_CLASS( x ) ((FTC_SFamilyClass)(x))
8853 FTC_SFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
8854 diff --git a/src/third_party/freetype/src/src/cff/cffcmap.c b/src/third_party/freetype/src/src/cff/…
8856 --- a/src/third_party/freetype/src/src/cff/cffcmap.c
8858 @@ -81,7 +81,7 @@
8862 - FT_UInt code = (FT_UInt)(char_code + 1);
8866 for (;;)
8867 diff --git a/src/third_party/freetype/src/src/cff/cffdrivr.c b/src/third_party/freetype/src/src/cff…
8869 --- a/src/third_party/freetype/src/src/cff/cffdrivr.c
8871 @@ -5,7 +5,7 @@
8874 * Copyright (C) 1996-2022 by
8875 - * David Turner, Robert Wilhelm, and Werner Lemberg.
8880 @@ -936,22 +936,103 @@
8889 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8892 + return mm->load_item_var_store( FT_FACE(face), offset, itemStore );
8903 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8906 + return mm->load_delta_set_idx_map( FT_FACE( face ), offset, map,
8917 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8920 + return mm->get_item_delta( FT_FACE( face ), itemStore,
8929 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8932 + mm->done_item_var_store( FT_FACE( face ), itemStore );
8940 + FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
8943 + mm->done_delta_set_idx_map( FT_FACE ( face ), deltaSetIdxMap );
8951 - (FT_Get_MM_Func) NULL, /* get_mm */
8952 - (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
8953 - (FT_Set_MM_Blend_Func) cff_set_mm_blend, /* set_mm_blend */
8954 - (FT_Get_MM_Blend_Func) cff_get_mm_blend, /* get_mm_blend */
8955 - (FT_Get_MM_Var_Func) cff_get_mm_var, /* get_mm_var */
8956 - (FT_Set_Var_Design_Func) cff_set_var_design, /* set_var_design */
8957 - (FT_Get_Var_Design_Func) cff_get_var_design, /* get_var_design */
8958 - (FT_Set_Instance_Func) cff_set_instance, /* set_instance */
8959 - (FT_Set_MM_WeightVector_Func)cff_set_mm_weightvector, /* set_mm_weightvector */
8960 - (FT_Get_MM_WeightVector_Func)cff_get_mm_weightvector, /* get_mm_weightvector */
8961 -
8962 - (FT_Get_Var_Blend_Func) cff_get_var_blend, /* get_var_blend */
8963 - (FT_Done_Blend_Func) cff_done_blend /* done_blend */
8997 diff --git a/src/third_party/freetype/src/src/cff/cffgload.c b/src/third_party/freetype/src/src/cff…
8999 --- a/src/third_party/freetype/src/src/cff/cffgload.c
9001 @@ -29,6 +29,14 @@
9016 @@ -67,7 +75,7 @@
9020 - CFF_Font cff = (CFF_Font)(face->extra.data);
9021 + CFF_Font cff = (CFF_Font)( face->extra.data );
9024 return cff_index_access_element( &cff->charstrings_index, glyph_index,
9025 @@ -103,7 +111,7 @@
9029 - CFF_Font cff = (CFF_Font)(face->extra.data);
9030 + CFF_Font cff = (CFF_Font)( face->extra.data );
9033 cff_index_forget_element( &cff->charstrings_index, pointer );
9034 @@ -255,8 +263,8 @@
9037 if ( size->strike_index != 0xFFFFFFFFUL &&
9038 - sfnt->load_eblc &&
9039 - ( load_flags & FT_LOAD_NO_BITMAP ) == 0 )
9041 + IS_DEFAULT_INSTANCE( size->root.face ) )
9045 @@ -362,8 +370,8 @@
9049 - if ( size->root.metrics.x_ppem < 1 ||
9050 - size->root.metrics.y_ppem < 1 )
9051 + if ( size && (size->root.metrics.x_ppem < 1 ||
9052 + size->root.metrics.y_ppem < 1 ) )
9056 @@ -396,6 +404,9 @@
9060 + glyph->root.linearHoriAdvance = advanceX;
9061 + glyph->root.linearVertAdvance = advanceY;
9065 glyph->root.face->size->metrics.x_ppem,
9066 diff --git a/src/third_party/freetype/src/src/cff/cffload.c b/src/third_party/freetype/src/src/cff/…
9068 --- a/src/third_party/freetype/src/src/cff/cffload.c
9070 @@ -1288,7 +1288,7 @@
9074 - /* Blend calculation is done in 16.16 fixed point. */
9075 + /* Blend calculation is done in 16.16 fixed-point. */
9079 @@ -1364,7 +1364,7 @@
9083 - /* convert inputs to 16.16 fixed point */
9084 + /* convert inputs to 16.16 fixed-point */
9085 sum = cff_parse_num( parser, &parser->stack[i + base] ) * 0x10000;
9087 for ( j = 1; j < blend->lenBV; j++ )
9088 @@ -1373,7 +1373,7 @@
9090 parser->stack[i + base] = subFont->blend_top;
9092 - /* Push blended result as Type 2 5-byte fixed point number. This */
9093 + /* Push blended result as Type 2 5-byte fixed-point number. This */
9095 /* opcode in both CFF and CFF2 DICTs. See `cff_parse_num' for */
9097 diff --git a/src/third_party/freetype/src/src/cff/cffparse.c b/src/third_party/freetype/src/src/cff…
9099 --- a/src/third_party/freetype/src/src/cff/cffparse.c
9101 @@ -530,7 +530,7 @@
9105 - /* 16.16 fixed point is used internally for CFF2 blend results. */
9106 + /* 16.16 fixed-point is used internally for CFF2 blend results. */
9110 diff --git a/src/third_party/freetype/src/src/gxvalid/gxvcommn.c b/src/third_party/freetype/src/src…
9112 --- a/src/third_party/freetype/src/src/gxvalid/gxvcommn.c
9114 @@ -1033,7 +1033,7 @@
9118 - (int)(*length_p), stateSize, (int)(maxClassID) ));
9123 @@ -1418,7 +1418,7 @@
9127 - (int)(*length_p), (int)stateSize, (int)(maxClassID) ));
9132 diff --git a/src/third_party/freetype/src/src/gzip/README.freetype b/src/third_party/freetype/src/s…
9134 --- a/src/third_party/freetype/src/src/gzip/README.freetype
9136 @@ -1,7 +1,7 @@
9140 -Version: 1.2.11
9145 diff --git a/src/third_party/freetype/src/src/gzip/crc32.c b/src/third_party/freetype/src/src/gzip/…
9147 --- a/src/third_party/freetype/src/src/gzip/crc32.c
9149 @@ -1,12 +1,10 @@
9150 /* crc32.c -- compute the CRC-32 of a data stream
9151 - * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
9152 + * Copyright (C) 1995-2022 Mark Adler
9153 * For conditions of distribution and use, see copyright notice in zlib.h
9155 - * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
9156 - * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
9157 - * tables for updating the shift register in one step with three exclusive-ors
9158 - * instead of four steps with four exclusive-ors. This results in about a
9159 - * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
9161 + * arithmetic-logic units, commonly found in modern CPU cores. It is due to
9162 + * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
9166 @@ -14,11 +12,12 @@
9168 Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
9169 protection on the static variables used to control the first-use generation
9170 - of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
9175 - DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
9181 @@ -28,417 +27,1090 @@
9185 -#include "zutil.h" /* for STDC and FAR definitions */
9186 +#include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */
9188 -/* Definitions for doing the crc four data bytes at a time. */
9189 -#if !defined(NOBYFOUR) && defined(Z_U4)
9190 -# define BYFOUR
9193 + each word consists of W bytes (4 or 8). If N is 3, for example, then three
9198 + into a single CRC at the end. For this code, N must be in the range 1..6 and
9204 + processor. The choices for N and W below were based on testing on Intel Kaby
9205 + Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
9208 + They were all tested with either gcc or clang, all using the -O3 optimization
9221 -#ifdef BYFOUR
9222 - local unsigned long crc32_little OF((unsigned long,
9223 - const unsigned char FAR *, z_size_t));
9224 - local unsigned long crc32_big OF((unsigned long,
9225 - const unsigned char FAR *, z_size_t));
9226 -# define TBLS 8
9240 +# if Z_TESTW-1 != -1
9244 -# define TBLS 1
9245 -#endif /* BYFOUR */
9247 +# define W 8 /* required for MAKECRCH */
9268 -/* Local functions for crc concatenation */
9269 -local unsigned long gf2_matrix_times OF((unsigned long *mat,
9270 - unsigned long vec));
9271 -local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
9272 -local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
9285 + self-respecting compiler will optimize this to a single machine byte-swap
9317 -local volatile int crc_table_empty = 1;
9318 -local z_crc_t FAR crc_table[TBLS][256];
9329 - local void write_table OF((FILE *, const z_crc_t FAR *));
9347 +/* Check for the availability of atomics. */
9353 +/* Structure for once(), which must be initialized with ONCE_INIT. */
9369 + if (!atomic_load(&state->done)) {
9370 + if (atomic_flag_test_and_set(&state->begun))
9371 + while (!atomic_load(&state->done))
9375 + atomic_store(&state->done, 1);
9380 +#else /* no atomics */
9382 +/* Structure for once(), which must be initialized with ONCE_INIT. */
9402 +/* Run the provided init() function once. This is not thread-safe. */
9407 + if (!state->done) {
9408 + if (test_and_set(&state->begun))
9409 + while (!state->done)
9413 + state->done = 1;
9420 +/* State for once(). */
9424 Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
9428 - with the lowest powers in the most significant bit. Then adding polynomials
9430 is just exclusive-or, and multiplying a polynomial by x is a right shift by
9431 - one. If we call the above polynomial p, and represent a byte as the
9434 - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
9438 This calculation is done using the shift-register method of multiplying and
9439 - taking the remainder. The register is initialized to zero, and for each
9440 + taking the remainder. The register is initialized to zero, and for each
9442 - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
9443 - x (which is shifting right by one and adding x^32 mod p if the bit shifted
9444 - out is a one). We start with the highest power (least significant bit) of
9445 - q and repeat for all eight bits of q.
9446 -
9447 - The first table is simply the CRC of all possible eight bit values. This is
9448 - all the information needed to generate CRCs on data a byte at a time for all
9449 - combinations of CRC register values and incoming bytes. The remaining tables
9450 - allow for word-at-a-time CRC calculation for both big-endian and little-
9451 - endian machines, where a word is four bytes.
9452 -*/
9456 + repeat for all eight bits of q.
9459 + information needed to generate CRCs on data a byte at a time for all
9465 - z_crc_t c;
9466 - int n, k;
9467 - z_crc_t poly; /* polynomial exclusive-or pattern */
9468 - /* terms of polynomial defining this crc (except x^32): */
9469 - static volatile int first = 1; /* flag to limit concurrent making */
9470 - static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
9471 -
9472 - /* See if another task is already doing this (not thread-safe, but better
9473 - than nothing -- significantly reduces duration of vulnerability in
9474 - case the advice about DYNAMIC_CRC_TABLE is ignored) */
9475 - if (first) {
9476 - first = 0;
9477 -
9478 - /* make exclusive-or pattern from polynomial (0xedb88320UL) */
9479 - poly = 0;
9480 - for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
9481 - poly |= (z_crc_t)1 << (31 - p[n]);
9482 -
9483 - /* generate a crc for every 8-bit value */
9484 - for (n = 0; n < 256; n++) {
9485 - c = (z_crc_t)n;
9486 - for (k = 0; k < 8; k++)
9487 - c = c & 1 ? poly ^ (c >> 1) : c >> 1;
9488 - crc_table[0][n] = c;
9489 - }
9493 -#ifdef BYFOUR
9494 - /* generate crc for each value followed by one, two, and three zeros,
9495 - and then the byte reversal of those as well as the first table */
9496 - for (n = 0; n < 256; n++) {
9497 - c = crc_table[0][n];
9498 - crc_table[4][n] = ZSWAP32(c);
9499 - for (k = 1; k < 4; k++) {
9500 - c = crc_table[0][c & 0xff] ^ (c >> 8);
9501 - crc_table[k][n] = c;
9502 - crc_table[k + 4][n] = ZSWAP32(c);
9503 - }
9504 - }
9505 -#endif /* BYFOUR */
9506 -
9507 - crc_table_empty = 0;
9508 - }
9509 - else { /* not first */
9510 - /* wait for the other guy to finish (not efficient, but rare) */
9511 - while (crc_table_empty)
9512 - ;
9514 + for (i = 0; i < 256; i++) {
9516 + for (j = 0; j < 8; j++)
9527 + for (n = 1; n < 32; n++)
9531 + /* initialize the braiding tables -- needs x2n_table[] */
9536 - /* write out CRC tables to crc32.h */
9539 + The crc32.h header file contains tables for both 32-bit and 64-bit
9540 + z_word_t's, and so requires a 64-bit type be available. In that case,
9541 + z_word_t must be defined to be 64-bits. This code then also generates
9542 + and writes out the tables for the case that z_word_t is 32 bits.
9545 +# error Need a 64-bit integer type in order to generate crc32.h.
9554 - fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
9555 - fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
9556 - fprintf(out, "local const z_crc_t FAR ");
9557 - fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
9558 - write_table(out, crc_table[0]);
9559 -# ifdef BYFOUR
9560 - fprintf(out, "#ifdef BYFOUR\n");
9561 - for (k = 1; k < 8; k++) {
9562 - fprintf(out, " },\n {\n");
9563 - write_table(out, crc_table[k]);
9565 + /* write out little-endian CRC table to crc32.h */
9567 + "/* crc32.h -- tables for rapid CRC calculation\n"
9576 + /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
9589 + /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
9602 + /* write out braid tables for each value of N */
9603 + for (n = 1; n <= 6; n++) {
9608 + /* compute braid tables for this N and 64-bit word_t */
9611 + /* write out braid tables for 64-bit z_word_t to crc32.h */
9617 + for (k = 0; k < 8; k++) {
9626 + for (k = 0; k < 8; k++) {
9634 + /* compute braid tables for this N and 32-bit word_t */
9637 + /* write out braid tables for 32-bit z_word_t to crc32.h */
9643 + for (k = 0; k < 4; k++) {
9652 + for (k = 0; k < 4; k++) {
9664 - fprintf(out, "#endif\n");
9665 -# endif /* BYFOUR */
9666 - fprintf(out, " }\n};\n");
9687 + Write the 32-bit values in table[0..k-1] to out, five per line in
9692 - const z_crc_t FAR *table)
9698 - for (n = 0; n < 256; n++)
9699 - fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ",
9700 + for (n = 0; n < k; n++)
9703 - n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
9704 + n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
9708 + Write the high 32-bits of each value in table[0..k-1] to out, five per line
9718 + for (n = 0; n < k; n++)
9721 + n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
9725 + Write the 64-bit values in table[0..k-1] to out, three per line in
9726 + hexadecimal separated by commas. This assumes that if there is a 64-bit
9738 + for (n = 0; n < k; n++)
9741 + n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
9755 + Generate the little and big-endian braid tables for the given n and z_word_t
9756 + size w. Each array must have room for w blocks of 256 elements.
9766 + for (k = 0; k < w; k++) {
9767 + p = x2nmodp((n * w + 3 - k) << 3, 0);
9769 + big[w - 1 - k][0] = 0;
9770 + for (i = 1; i < 256; i++) {
9772 + big[w - 1 - k][i] = byte_swap(q);
9780 - * Tables of CRC-32s of all single-byte values, made by make_crc_table().
9781 + * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
9782 + * of x for combining CRC-32s, all made by make_crc_table().
9788 + * Routines used for CRC calculation. Some are also required for the table
9794 + reflected. For speed, this requires that a not be zero.
9804 + for (;;) {
9807 + if ((a & (m - 1)) == 0)
9837 - * This function can be used by asm versions of crc32()
9844 - if (crc_table_empty)
9845 - make_crc_table();
9851 -/* ========================================================================= */
9852 -#undef DO1
9853 -#undef DO8
9854 -#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
9855 -#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
9858 + * ten times faster than the braided calculation. This code does not check for
9861 + * that has the instructions. For example, compiling with -march=armv8.1-a or
9862 + * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
9869 + measurements on a Cortex-A57. Your mileage may vary.
9875 -/* ========================================================================= */
9881 - if (buf == Z_NULL) return 0UL;
9893 - if (crc_table_empty)
9894 - make_crc_table();
9898 -#ifdef BYFOUR
9899 - if (sizeof(void *) == sizeof(ptrdiff_t)) {
9900 - z_crc_t endian;
9901 + /* Pre-condition the CRC */
9904 - endian = 1;
9905 - if (*((unsigned char *)(&endian)))
9906 - return crc32_little(crc, buf, len);
9907 - else
9908 - return crc32_big(crc, buf, len);
9911 + len--;
9915 -#endif /* BYFOUR */
9916 - crc = crc ^ 0xffffffffUL;
9917 - while (len >= 8) {
9918 - DO8;
9919 - len -= 8;
9921 + /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
9932 + for (i = 0; i < Z_BATCH; i++) {
9941 + num -= 3 * Z_BATCH;
9945 - if (len) do {
9946 - DO1;
9947 - } while (--len);
9948 - return crc ^ 0xffffffffUL;
9949 -}
9951 -/* ========================================================================= */
9952 -unsigned long ZEXPORT crc32(
9953 - unsigned long crc,
9954 - const unsigned char FAR *buf,
9955 - uInt len)
9956 -{
9957 - return crc32_z(crc, buf, len);
9959 + to pay for the combination of CRCs. */
9965 + for (i = 0; i < last; i++) {
9974 + num -= 3 * last;
9981 + for (i = 0; i < num; i++) {
9990 + len--;
9995 + /* Return the CRC, post-conditioned. */
9999 -#ifdef BYFOUR
10005 - This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
10006 - integer pointer type. This violates the strict aliasing rule, where a
10007 - compiler can assume, for optimization purposes, that two pointers to
10008 - fundamentally different types won't ever point to the same memory. This can
10009 - manifest as a problem only if one of the pointers is written to. This code
10010 - only reads from those pointers. So long as this code remains isolated in
10011 - this compilation unit, there won't be a problem. For this reason, this code
10012 - should not be copied and pasted into a compilation unit in which other code
10013 - writes to the buffer that is passed to these routines.
10015 + least-significant byte of the word as the first byte of data, without any pre
10022 + for (k = 0; k < W; k++)
10027 -/* ========================================================================= */
10028 -#define DOLIT4 c ^= *buf4++; \
10029 - c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
10030 - crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
10031 -#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
10036 + for (k = 0; k < W; k++)
10038 + crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
10045 -local unsigned long crc32_little(
10051 - register z_crc_t c;
10052 - register const z_crc_t FAR *buf4;
10056 - c = (z_crc_t)crc;
10057 - c = ~c;
10058 - while (len && ((ptrdiff_t)buf & 3)) {
10059 - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
10060 - len--;
10061 - }
10066 - buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
10067 - while (len >= 32) {
10068 - DOLIT32;
10069 - len -= 32;
10070 - }
10071 - while (len >= 4) {
10072 - DOLIT4;
10073 - len -= 4;
10074 - }
10075 - buf = (const unsigned char FAR *)buf4;
10076 + /* Pre-condition the CRC */
10079 - if (len) do {
10080 - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
10081 - } while (--len);
10082 - c = ~c;
10083 - return (unsigned long)c;
10084 -}
10087 -/* ========================================================================= */
10088 -#define DOBIG4 c ^= *buf4++; \
10089 - c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
10090 - crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
10091 -#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
10093 + if (len >= N * W + W - 1) {
10099 -/* ========================================================================= */
10100 -local unsigned long crc32_big(
10101 - unsigned long crc,
10102 - const unsigned char FAR *buf,
10103 - z_size_t len)
10104 -{
10105 - register z_crc_t c;
10106 - register const z_crc_t FAR *buf4;
10108 + while (len && ((z_size_t)buf & (W - 1)) != 0) {
10109 + len--;
10113 - c = ZSWAP32((z_crc_t)crc);
10114 - c = ~c;
10115 - while (len && ((ptrdiff_t)buf & 3)) {
10116 - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
10117 - len--;
10120 + len -= blks * N * W;
10154 + /* Initialize the CRC for each braid. */
10173 + Process the first blks-1 blocks, computing the CRCs on each braid
10176 + while (--blks) {
10177 + /* Load the word for each braid into registers. */
10196 + /* Compute and update the CRC for each word. The loop should
10214 + for (k = 1; k < W; k++) {
10276 + /* Initialize the CRC for each braid. */
10295 + Process the first blks-1 blocks, computing the CRCs on each braid
10298 + while (--blks) {
10299 + /* Load the word for each braid into registers. */
10318 + /* Compute and update the CRC for each word. The loop should
10336 + for (k = 1; k < W; k++) {
10386 - buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
10387 - while (len >= 32) {
10388 - DOBIG32;
10389 - len -= 32;
10394 + len -= 8;
10404 - while (len >= 4) {
10405 - DOBIG4;
10406 - len -= 4;
10408 + len--;
10411 - buf = (const unsigned char FAR *)buf4;
10413 - if (len) do {
10414 - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
10415 - } while (--len);
10416 - c = ~c;
10417 - return (unsigned long)(ZSWAP32(c));
10418 + /* Return the CRC, post-conditioned. */
10422 -#endif /* BYFOUR */
10423 -
10424 -#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
10428 -local unsigned long gf2_matrix_times(
10429 - unsigned long *mat,
10430 - unsigned long vec)
10436 - unsigned long sum;
10437 -
10438 - sum = 0;
10439 - while (vec) {
10440 - if (vec & 1)
10441 - sum ^= *mat;
10442 - vec >>= 1;
10443 - mat++;
10444 - }
10445 - return sum;
10450 -local void gf2_matrix_square(
10451 - unsigned long *square,
10452 - unsigned long *mat)
10458 - int n;
10459 -
10460 - for (n = 0; n < GF2_DIM; n++)
10461 - square[n] = gf2_matrix_times(mat, mat[n]);
10469 -local uLong crc32_combine_(
10473 - z_off64_t len2)
10476 - int n;
10477 - unsigned long row;
10478 - unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
10479 - unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
10480 -
10481 - /* degenerate case (also disallow negative lengths) */
10482 - if (len2 <= 0)
10483 - return crc1;
10484 -
10485 - /* put operator for one zero bit in odd */
10486 - odd[0] = 0xedb88320UL; /* CRC-32 polynomial */
10487 - row = 1;
10488 - for (n = 1; n < GF2_DIM; n++) {
10489 - odd[n] = row;
10490 - row <<= 1;
10491 - }
10495 - /* put operator for two zero bits in even */
10496 - gf2_matrix_square(even, odd);
10497 -
10498 - /* put operator for four zero bits in odd */
10499 - gf2_matrix_square(odd, even);
10500 -
10501 - /* apply len2 zeros to crc1 (first square will put the operator for one
10502 - zero byte, eight zero bits, in even) */
10503 - do {
10504 - /* apply zeros operator for this bit of len2 */
10505 - gf2_matrix_square(even, odd);
10506 - if (len2 & 1)
10507 - crc1 = gf2_matrix_times(even, crc1);
10508 - len2 >>= 1;
10509 -
10510 - /* if no more bits set, then done */
10511 - if (len2 == 0)
10512 - break;
10513 -
10514 - /* another iteration of the loop with odd and even swapped */
10515 - gf2_matrix_square(odd, even);
10516 - if (len2 & 1)
10517 - crc1 = gf2_matrix_times(odd, crc1);
10518 - len2 >>= 1;
10519 -
10520 - /* if no more bits set, then done */
10521 - } while (len2 != 0);
10522 -
10523 - /* return combined crc */
10524 - crc1 ^= crc2;
10525 - return crc1;
10537 -uLong ZEXPORT crc32_combine(
10538 - uLong crc1,
10539 - uLong crc2,
10543 - return crc32_combine_(crc1, crc2, len2);
10547 -uLong ZEXPORT crc32_combine64(
10552 - z_off64_t len2)
10555 - return crc32_combine_(crc1, crc2, len2);
10558 diff --git a/src/third_party/freetype/src/src/gzip/crc32.h b/src/third_party/freetype/src/src/gzip/…
10560 --- a/src/third_party/freetype/src/src/gzip/crc32.h
10562 @@ -2,440 +2,9445 @@
10566 -local const z_crc_t FAR crc_table[TBLS][256] =
10567 -{
10568 - {
10569 - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
10570 - 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
10571 - 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
10572 - 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
10573 - 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
10574 - 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
10575 - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
10576 - 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
10577 - 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
10578 - 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
10579 - 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
10580 - 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
10581 - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
10582 - 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
10583 - 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
10584 - 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
10585 - 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
10586 - 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
10587 - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
10588 - 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
10589 - 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
10590 - 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
10591 - 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
10592 - 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
10593 - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
10594 - 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
10595 - 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
10596 - 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
10597 - 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
10598 - 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
10599 - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
10600 - 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
10601 - 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
10602 - 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
10603 - 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
10604 - 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
10605 - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
10606 - 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
10607 - 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
10608 - 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
10609 - 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
10610 - 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
10611 - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
10612 - 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
10613 - 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
10614 - 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
10615 - 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
10616 - 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
10617 - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
10618 - 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
10619 - 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
10620 - 0x2d02ef8dUL
10621 -#ifdef BYFOUR
10622 - },
10623 - {
10624 - 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
10625 - 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
10626 - 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
10627 - 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
10628 - 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
10629 - 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
10630 - 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
10631 - 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
10632 - 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
10633 - 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
10634 - 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
10635 - 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
10636 - 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
10637 - 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
10638 - 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
10639 - 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
10640 - 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
10641 - 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
10642 - 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
10643 - 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
10644 - 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
10645 - 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
10646 - 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
10647 - 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
10648 - 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
10649 - 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
10650 - 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
10651 - 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
10652 - 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
10653 - 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
10654 - 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
10655 - 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
10656 - 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
10657 - 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
10658 - 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
10659 - 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
10660 - 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
10661 - 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
10662 - 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
10663 - 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
10664 - 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
10665 - 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
10666 - 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
10667 - 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
10668 - 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
10669 - 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
10670 - 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
10671 - 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
10672 - 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
10673 - 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
10674 - 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
10675 - 0x9324fd72UL
10676 - },
10677 - {
10678 - 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
10679 - 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
10680 - 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
10681 - 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
10682 - 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
10683 - 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
10684 - 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
10685 - 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
10686 - 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
10687 - 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
10688 - 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
10689 - 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
10690 - 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
10691 - 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
10692 - 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
10693 - 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
10694 - 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
10695 - 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
10696 - 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
10697 - 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
10698 - 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
10699 - 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
10700 - 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
10701 - 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
10702 - 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
10703 - 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
10704 - 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
10705 - 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
10706 - 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
10707 - 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
10708 - 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
10709 - 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
10710 - 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
10711 - 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
10712 - 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
10713 - 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
10714 - 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
10715 - 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
10716 - 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
10717 - 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
10718 - 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
10719 - 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
10720 - 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
10721 - 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
10722 - 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
10723 - 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
10724 - 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
10725 - 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
10726 - 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
10727 - 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
10728 - 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
10729 - 0xbe9834edUL
10730 - },
10731 - {
10732 - 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
10733 - 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
10734 - 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
10735 - 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
10736 - 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
10737 - 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
10738 - 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
10739 - 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
10740 - 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
10741 - 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
10742 - 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
10743 - 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
10744 - 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
10745 - 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
10746 - 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
10747 - 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
10748 - 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
10749 - 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
10750 - 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
10751 - 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
10752 - 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
10753 - 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
10754 - 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
10755 - 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
10756 - 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
10757 - 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
10758 - 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
10759 - 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
10760 - 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
10761 - 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
10762 - 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
10763 - 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
10764 - 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
10765 - 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
10766 - 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
10767 - 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
10768 - 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
10769 - 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
10770 - 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
10771 - 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
10772 - 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
10773 - 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
10774 - 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
10775 - 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
10776 - 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
10777 - 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
10778 - 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
10779 - 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
10780 - 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
10781 - 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
10782 - 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
10783 - 0xde0506f1UL
10784 - },
10785 - {
10786 - 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
10787 - 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
10788 - 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
10789 - 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
10790 - 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
10791 - 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
10792 - 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
10793 - 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
10794 - 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
10795 - 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
10796 - 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
10797 - 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
10798 - 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
10799 - 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
10800 - 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
10801 - 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
10802 - 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
10803 - 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
10804 - 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
10805 - 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
10806 - 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
10807 - 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
10808 - 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
10809 - 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
10810 - 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
10811 - 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
10812 - 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
10813 - 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
10814 - 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
10815 - 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
10816 - 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
10817 - 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
10818 - 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
10819 - 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
10820 - 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
10821 - 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
10822 - 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
10823 - 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
10824 - 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
10825 - 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
10826 - 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
10827 - 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
10828 - 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
10829 - 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
10830 - 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
10831 - 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
10832 - 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
10833 - 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
10834 - 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
10835 - 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
10836 - 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
10837 - 0x8def022dUL
10838 - },
10839 - {
10840 - 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
10841 - 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
10842 - 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
10843 - 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
10844 - 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
10845 - 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
10846 - 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
10847 - 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
10848 - 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
10849 - 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
10850 - 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
10851 - 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
10852 - 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
10853 - 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
10854 - 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
10855 - 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
10856 - 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
10857 - 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
10858 - 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
10859 - 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
10860 - 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
10861 - 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
10862 - 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
10863 - 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
10864 - 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
10865 - 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
10866 - 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
10867 - 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
10868 - 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
10869 - 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
10870 - 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
10871 - 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
10872 - 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
10873 - 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
10874 - 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
10875 - 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
10876 - 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
10877 - 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
10878 - 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
10879 - 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
10880 - 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
10881 - 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
10882 - 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
10883 - 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
10884 - 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
10885 - 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
10886 - 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
10887 - 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
10888 - 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
10889 - 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
10890 - 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
10891 - 0x72fd2493UL
10892 - },
10893 - {
10894 - 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
10895 - 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
10896 - 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
10897 - 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
10898 - 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
10899 - 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
10900 - 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
10901 - 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
10902 - 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
10903 - 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
10904 - 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
10905 - 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
10906 - 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
10907 - 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
10908 - 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
10909 - 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
10910 - 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
10911 - 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
10912 - 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
10913 - 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
10914 - 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
10915 - 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
10916 - 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
10917 - 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
10918 - 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
10919 - 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
10920 - 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
10921 - 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
10922 - 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
10923 - 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
10924 - 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
10925 - 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
10926 - 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
10927 - 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
10928 - 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
10929 - 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
10930 - 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
10931 - 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
10932 - 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
10933 - 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
10934 - 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
10935 - 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
10936 - 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
10937 - 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
10938 - 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
10939 - 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
10940 - 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
10941 - 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
10942 - 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
10943 - 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
10944 - 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
10945 - 0xed3498beUL
10946 - },
10947 - {
10948 - 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
10949 - 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
10950 - 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
10951 - 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
10952 - 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
10953 - 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
10954 - 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
10955 - 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
10956 - 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
10957 - 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
10958 - 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
10959 - 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
10960 - 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
10961 - 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
10962 - 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
10963 - 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
10964 - 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
10965 - 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
10966 - 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
10967 - 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
10968 - 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
10969 - 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
10970 - 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
10971 - 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
10972 - 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
10973 - 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
10974 - 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
10975 - 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
10976 - 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
10977 - 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
10978 - 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
10979 - 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
10980 - 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
10981 - 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
10982 - 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
10983 - 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
10984 - 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
10985 - 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
10986 - 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
10987 - 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
10988 - 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
10989 - 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
10990 - 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
10991 - 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
10992 - 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
10993 - 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
10994 - 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
10995 - 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
10996 - 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
10997 - 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
10998 - 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
10999 - 0xf10605deUL
14277 - }
14278 -};
20444 diff --git a/src/third_party/freetype/src/src/gzip/ftgzip.c b/src/third_party/freetype/src/src/gzip…
20446 --- a/src/third_party/freetype/src/src/gzip/ftgzip.c
20448 @@ -790,6 +790,9 @@
20458 diff --git a/src/third_party/freetype/src/src/gzip/gzguts.h b/src/third_party/freetype/src/src/gzip…
20460 --- a/src/third_party/freetype/src/src/gzip/gzguts.h
20462 @@ -1,5 +1,5 @@
20463 /* gzguts.h -- zlib internal header definitions for gz* operations
20464 - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
20465 + * Copyright (C) 2004-2019 Mark Adler
20466 * For conditions of distribution and use, see copyright notice in zlib.h
20469 @@ -39,7 +39,7 @@
20473 -#if defined(_WIN32) || defined(__CYGWIN__)
20478 @@ -190,6 +190,7 @@ typedef struct {
20479 /* just for writing */
20486 diff --git a/src/third_party/freetype/src/src/gzip/infback.c b/src/third_party/freetype/src/src/gzi…
20488 --- a/src/third_party/freetype/src/src/gzip/infback.c
20490 @@ -1,5 +1,5 @@
20491 /* infback.c -- inflate using a call-back interface
20492 - * Copyright (C) 1995-2016 Mark Adler
20493 + * Copyright (C) 1995-2022 Mark Adler
20494 * For conditions of distribution and use, see copyright notice in zlib.h
20497 @@ -477,6 +477,7 @@ int ZEXPORT inflateBack(
20500 state->mode = LEN;
20505 diff --git a/src/third_party/freetype/src/src/gzip/inffast.c b/src/third_party/freetype/src/src/gzi…
20507 --- a/src/third_party/freetype/src/src/gzip/inffast.c
20509 @@ -70,7 +70,7 @@ void ZLIB_INTERNAL inflate_fast(
20510 code const FAR *dcode; /* local strm->distcode */
20511 unsigned lmask; /* mask for first level of length codes */
20512 unsigned dmask; /* mask for first level of distance codes */
20513 - code here; /* retrieved table entry */
20518 @@ -107,20 +107,20 @@ void ZLIB_INTERNAL inflate_fast(
20522 - here = lcode[hold & lmask];
20525 - op = (unsigned)(here.bits);
20526 + op = (unsigned)(here->bits);
20528 bits -= op;
20529 - op = (unsigned)(here.op);
20530 + op = (unsigned)(here->op);
20532 - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
20533 + Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
20535 - "inflate: literal 0x%02x\n", here.val));
20536 - *out++ = (unsigned char)(here.val);
20537 + "inflate: literal 0x%02x\n", here->val));
20538 + *out++ = (unsigned char)(here->val);
20541 - len = (unsigned)(here.val);
20542 + len = (unsigned)(here->val);
20546 @@ -138,14 +138,14 @@ void ZLIB_INTERNAL inflate_fast(
20550 - here = dcode[hold & dmask];
20553 - op = (unsigned)(here.bits);
20554 + op = (unsigned)(here->bits);
20556 bits -= op;
20557 - op = (unsigned)(here.op);
20558 + op = (unsigned)(here->op);
20560 - dist = (unsigned)(here.val);
20561 + dist = (unsigned)(here->val);
20565 @@ -264,7 +264,7 @@ void ZLIB_INTERNAL inflate_fast(
20569 - here = dcode[here.val + (hold & ((1U << op) - 1))];
20570 + here = dcode + here->val + (hold & ((1U << op) - 1));
20574 @@ -274,7 +274,7 @@ void ZLIB_INTERNAL inflate_fast(
20578 - here = lcode[here.val + (hold & ((1U << op) - 1))];
20579 + here = lcode + here->val + (hold & ((1U << op) - 1));
20582 else if (op & 32) { /* end-of-block */
20583 diff --git a/src/third_party/freetype/src/src/gzip/inflate.c b/src/third_party/freetype/src/src/gzi…
20585 --- a/src/third_party/freetype/src/src/gzip/inflate.c
20587 @@ -1,5 +1,5 @@
20588 /* inflate.c -- zlib decompression
20589 - * Copyright (C) 1995-2016 Mark Adler
20590 + * Copyright (C) 1995-2022 Mark Adler
20591 * For conditions of distribution and use, see copyright notice in zlib.h
20594 @@ -132,6 +132,7 @@ int ZEXPORT inflateResetKeep(
20595 state->mode = HEAD;
20596 state->last = 0;
20597 state->havedict = 0;
20598 + state->flags = -1;
20599 state->dmax = 32768U;
20600 state->head = Z_NULL;
20601 state->hold = 0;
20602 @@ -269,7 +270,7 @@ int ZEXPORT inflatePrime(
20606 -#endif /* Z_FREETYPE */
20611 @@ -453,10 +454,10 @@ local int updatewindow(
20613 /* check function to use adler32() for zlib or crc32() for gzip */
20615 -# define UPDATE(check, buf, len) \
20617 (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
20619 -# define UPDATE(check, buf, len) adler32(check, buf, len)
20623 /* check macros for header crc */
20624 @@ -676,7 +677,6 @@ int ZEXPORT inflate(
20625 state->mode = FLAGS;
20628 - state->flags = 0; /* expect zlib header */
20629 if (state->head != Z_NULL)
20630 state->head->done = -1;
20631 if (!(state->wrap & 1) || /* check if zlib header allowed */
20632 @@ -703,6 +703,7 @@ int ZEXPORT inflate(
20635 state->dmax = 1U << len;
20636 + state->flags = 0; /* indicate zlib header */
20638 strm->adler = state->check = adler32(0L, Z_NULL, 0);
20639 state->mode = hold & 0x200 ? DICTID : TYPE;
20640 @@ -728,6 +729,7 @@ int ZEXPORT inflate(
20641 CRC2(state->check, hold);
20643 state->mode = TIME;
20647 if (state->head != Z_NULL)
20648 @@ -736,6 +738,7 @@ int ZEXPORT inflate(
20649 CRC4(state->check, hold);
20651 state->mode = OS;
20655 if (state->head != Z_NULL) {
20656 @@ -746,6 +749,7 @@ int ZEXPORT inflate(
20657 CRC2(state->check, hold);
20659 state->mode = EXLEN;
20662 if (state->flags & 0x0400) {
20664 @@ -759,6 +763,7 @@ int ZEXPORT inflate(
20665 else if (state->head != Z_NULL)
20666 state->head->extra = Z_NULL;
20667 state->mode = EXTRA;
20670 if (state->flags & 0x0400) {
20671 copy = state->length;
20672 @@ -781,6 +786,7 @@ int ZEXPORT inflate(
20674 state->length = 0;
20675 state->mode = NAME;
20678 if (state->flags & 0x0800) {
20680 @@ -802,6 +808,7 @@ int ZEXPORT inflate(
20681 state->head->name = Z_NULL;
20682 state->length = 0;
20683 state->mode = COMMENT;
20686 if (state->flags & 0x1000) {
20688 @@ -822,6 +829,7 @@ int ZEXPORT inflate(
20689 else if (state->head != Z_NULL)
20690 state->head->comment = Z_NULL;
20691 state->mode = HCRC;
20694 if (state->flags & 0x0200) {
20696 @@ -845,6 +853,7 @@ int ZEXPORT inflate(
20697 strm->adler = state->check = ZSWAP32(hold);
20699 state->mode = DICT;
20702 if (state->havedict == 0) {
20704 @@ -852,8 +861,10 @@ int ZEXPORT inflate(
20706 strm->adler = state->check = adler32(0L, Z_NULL, 0);
20707 state->mode = TYPE;
20713 if (state->last) {
20715 @@ -904,8 +915,10 @@ int ZEXPORT inflate(
20717 state->mode = COPY_;
20721 state->mode = COPY;
20724 copy = state->length;
20726 @@ -941,6 +954,7 @@ int ZEXPORT inflate(
20728 state->have = 0;
20729 state->mode = LENLENS;
20732 while (state->have < state->ncode) {
20734 @@ -962,6 +976,7 @@ int ZEXPORT inflate(
20736 state->have = 0;
20737 state->mode = CODELENS;
20740 while (state->have < state->nlen + state->ndist) {
20741 for (;;) {
20742 @@ -1045,8 +1060,10 @@ int ZEXPORT inflate(
20744 state->mode = LEN_;
20748 state->mode = LEN;
20753 @@ -1096,6 +1113,7 @@ int ZEXPORT inflate(
20755 state->extra = (unsigned)(here.op) & 15;
20756 state->mode = LENEXT;
20759 if (state->extra) {
20760 NEEDBITS(state->extra);
20761 @@ -1106,6 +1124,7 @@ int ZEXPORT inflate(
20762 Tracevv((stderr, "inflate: length %u\n", state->length));
20763 state->was = state->length;
20764 state->mode = DIST;
20767 for (;;) {
20768 here = state->distcode[BITS(state->distbits)];
20769 @@ -1133,6 +1152,7 @@ int ZEXPORT inflate(
20770 state->offset = (unsigned)here.val;
20771 state->extra = (unsigned)(here.op) & 15;
20772 state->mode = DISTEXT;
20775 if (state->extra) {
20776 NEEDBITS(state->extra);
20777 @@ -1149,6 +1169,7 @@ int ZEXPORT inflate(
20779 Tracevv((stderr, "inflate: distance %u\n", state->offset));
20780 state->mode = MATCH;
20784 copy = out - left;
20785 @@ -1208,7 +1229,7 @@ int ZEXPORT inflate(
20786 state->total += out;
20787 if ((state->wrap & 4) && out)
20788 strm->adler = state->check =
20789 - UPDATE(state->check, put - out, out);
20790 + UPDATE_CHECK(state->check, put - out, out);
20792 if ((state->wrap & 4) && (
20794 @@ -1224,10 +1245,11 @@ int ZEXPORT inflate(
20797 state->mode = LENGTH;
20800 if (state->wrap && state->flags) {
20802 - if (hold != (state->total & 0xffffffffUL)) {
20803 + if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
20804 strm->msg = (char *)"incorrect length check";
20805 state->mode = BAD;
20807 @@ -1237,6 +1259,7 @@ int ZEXPORT inflate(
20810 state->mode = DONE;
20815 @@ -1246,6 +1269,7 @@ int ZEXPORT inflate(
20823 @@ -1271,7 +1295,7 @@ int ZEXPORT inflate(
20824 state->total += out;
20825 if ((state->wrap & 4) && out)
20826 strm->adler = state->check =
20827 - UPDATE(state->check, strm->next_out - out, out);
20828 + UPDATE_CHECK(state->check, strm->next_out - out, out);
20829 strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
20830 (state->mode == TYPE ? 128 : 0) +
20831 (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
20832 @@ -1409,6 +1433,7 @@ int ZEXPORT inflateSync(
20840 @@ -1441,9 +1466,15 @@ int ZEXPORT inflateSync(
20842 /* return no joy or set up to restart inflate() on a new block */
20843 if (state->have != 4) return Z_DATA_ERROR;
20844 + if (state->flags == -1)
20845 + state->wrap = 0; /* if no header yet, treat as raw */
20847 + state->wrap &= ~4; /* no point in computing a check value now */
20848 + flags = state->flags;
20849 in = strm->total_in; out = strm->total_out;
20851 strm->total_in = in; strm->total_out = out;
20852 + state->flags = flags;
20853 state->mode = TYPE;
20856 @@ -1468,7 +1499,7 @@ int ZEXPORT inflateSyncPoint(
20857 return state->mode == STORED && state->bits == 0;
20860 -#if !Z_FREETYPE
20865 @@ -1545,7 +1576,7 @@ int ZEXPORT inflateValidate(
20868 state = (struct inflate_state FAR *)strm->state;
20869 - if (check)
20870 + if (check && state->wrap)
20871 state->wrap |= 4;
20873 state->wrap &= ~4;
20874 diff --git a/src/third_party/freetype/src/src/gzip/inflate.h b/src/third_party/freetype/src/src/gzi…
20876 --- a/src/third_party/freetype/src/src/gzip/inflate.h
20878 @@ -1,5 +1,5 @@
20879 /* inflate.h -- internal inflate state definition
20880 - * Copyright (C) 1995-2016 Mark Adler
20881 + * Copyright (C) 1995-2019 Mark Adler
20882 * For conditions of distribution and use, see copyright notice in zlib.h
20885 @@ -89,7 +89,8 @@ struct inflate_state {
20886 int wrap; /* bit 0 true for zlib, bit 1 true for gzip,
20889 - int flags; /* gzip header method and flags (0 if zlib) */
20891 + -1 if raw or no header yet */
20895 diff --git a/src/third_party/freetype/src/src/gzip/inftrees.c b/src/third_party/freetype/src/src/gz…
20897 --- a/src/third_party/freetype/src/src/gzip/inftrees.c
20899 @@ -1,5 +1,5 @@
20900 /* inftrees.c -- generate Huffman trees for efficient decoding
20901 - * Copyright (C) 1995-2017 Mark Adler
20902 + * Copyright (C) 1995-2022 Mark Adler
20903 * For conditions of distribution and use, see copyright notice in zlib.h
20906 @@ -9,7 +9,7 @@
20910 - " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
20911 + " inflate 1.2.12 Copyright 1995-2022 Mark Adler ";
20914 in the documentation of your product. If for some reason you cannot
20915 @@ -62,7 +62,7 @@ int ZLIB_INTERNAL inflate_table(
20919 - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
20924 diff --git a/src/third_party/freetype/src/src/gzip/patches/freetype-zlib.diff b/src/third_party/fre…
20926 --- a/src/third_party/freetype/src/src/gzip/patches/freetype-zlib.diff
20927 +++ b/src/third_party/freetype/src/src/gzip/patches/freetype-zlib.diff
20928 @@ -6,8 +6,6 @@ are compiled as part of `src/gzip/ftgzip.c`.
20932 -* src/gzip/crc32.c (DO1, DO8): Undefine. Already defined in `adler32.c`.
20933 -
20937 @@ -25,10 +23,10 @@ Omit unused function declarations when `Z_FREETYPE` is defined.
20941 -diff --git b/src/gzip/adler32.c a/src/gzip/adler32.c
20942 +diff --git a/src/gzip/adler32.c b/src/gzip/adler32.c
20944 ---- b/src/gzip/adler32.c
20945 -+++ a/src/gzip/adler32.c
20946 +--- a/src/gzip/adler32.c
20948 @@ -7,7 +7,9 @@
20951 @@ -54,23 +52,10 @@ index be5e8a247..aa032e1dd 100644
20955 -diff --git b/src/gzip/crc32.c a/src/gzip/crc32.c
20956 -index 3e3eb1794..ffced1ea7 100644
20957 ---- b/src/gzip/crc32.c
20958 -+++ a/src/gzip/crc32.c
20959 -@@ -195,6 +195,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table()
20960 - }
20961 -
20962 - /* ========================================================================= */
20963 -+#undef DO1
20964 -+#undef DO8
20965 - #define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
20966 - #define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
20967 -
20968 -diff --git b/src/gzip/gzguts.h a/src/gzip/gzguts.h
20969 -index 990a4d251..c81f8f392 100644
20970 ---- b/src/gzip/gzguts.h
20971 -+++ a/src/gzip/gzguts.h
20972 +diff --git a/src/gzip/gzguts.h b/src/gzip/gzguts.h
20974 +--- a/src/gzip/gzguts.h
20976 @@ -163,7 +163,7 @@
20978 /* values for gz_state how */
20979 @@ -80,10 +65,10 @@ index 990a4d251..c81f8f392 100644
20983 -diff --git b/src/gzip/inflate.c a/src/gzip/inflate.c
20984 -index 3f7ea647b..7387e6f57 100644
20985 ---- b/src/gzip/inflate.c
20986 -+++ a/src/gzip/inflate.c
20987 +diff --git a/src/gzip/inflate.c b/src/gzip/inflate.c
20989 +--- a/src/gzip/inflate.c
20991 @@ -99,8 +99,10 @@ local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
20994 @@ -95,7 +80,7 @@ index 3f7ea647b..7387e6f57 100644
20998 -@@ -244,6 +246,8 @@ int ZEXPORT inflateInit_(
20999 +@@ -245,6 +247,8 @@ int ZEXPORT inflateInit_(
21003 @@ -104,16 +89,16 @@ index 3f7ea647b..7387e6f57 100644
21007 -@@ -265,6 +269,8 @@ int ZEXPORT inflatePrime(
21008 +@@ -266,6 +270,8 @@ int ZEXPORT inflatePrime(
21012 -+#endif /* Z_FREETYPE */
21018 -@@ -1288,6 +1294,8 @@ int ZEXPORT inflateEnd(
21019 +@@ -1312,6 +1318,8 @@ int ZEXPORT inflateEnd(
21023 @@ -122,7 +107,7 @@ index 3f7ea647b..7387e6f57 100644
21027 -@@ -1440,6 +1448,8 @@ int ZEXPORT inflateSync(
21028 +@@ -1471,6 +1479,8 @@ int ZEXPORT inflateSync(
21032 @@ -131,16 +116,16 @@ index 3f7ea647b..7387e6f57 100644
21036 -@@ -1458,6 +1468,8 @@ int ZEXPORT inflateSyncPoint(
21037 +@@ -1489,6 +1499,8 @@ int ZEXPORT inflateSyncPoint(
21038 return state->mode == STORED && state->bits == 0;
21041 -+#if !Z_FREETYPE
21047 -@@ -1505,6 +1517,8 @@ int ZEXPORT inflateCopy(
21048 +@@ -1536,6 +1548,8 @@ int ZEXPORT inflateCopy(
21052 @@ -149,7 +134,7 @@ index 3f7ea647b..7387e6f57 100644
21056 -@@ -1538,6 +1552,8 @@ int ZEXPORT inflateValidate(
21057 +@@ -1569,6 +1583,8 @@ int ZEXPORT inflateValidate(
21061 @@ -158,16 +143,16 @@ index 3f7ea647b..7387e6f57 100644
21065 -@@ -1559,3 +1575,5 @@ unsigned long ZEXPORT inflateCodesUsed(
21066 +@@ -1590,3 +1606,5 @@ unsigned long ZEXPORT inflateCodesUsed(
21067 state = (struct inflate_state FAR *)strm->state;
21068 return (unsigned long)(state->next - state->codes);
21072 -diff --git b/src/gzip/inflate.h a/src/gzip/inflate.h
21073 -index a46cce6b6..92ea758e2 100644
21074 ---- b/src/gzip/inflate.h
21075 -+++ a/src/gzip/inflate.h
21076 +diff --git a/src/gzip/inflate.h b/src/gzip/inflate.h
21078 +--- a/src/gzip/inflate.h
21080 @@ -3,6 +3,9 @@
21081 * For conditions of distribution and use, see copyright notice in zlib.h
21083 @@ -178,16 +163,16 @@ index a46cce6b6..92ea758e2 100644
21087 -@@ -123,3 +126,5 @@ struct inflate_state {
21088 +@@ -124,3 +127,5 @@ struct inflate_state {
21094 -diff --git b/src/gzip/inftrees.h a/src/gzip/inftrees.h
21095 +diff --git a/src/gzip/inftrees.h b/src/gzip/inftrees.h
21097 ---- b/src/gzip/inftrees.h
21098 -+++ a/src/gzip/inftrees.h
21099 +--- a/src/gzip/inftrees.h
21101 @@ -3,6 +3,9 @@
21102 * For conditions of distribution and use, see copyright notice in zlib.h
21104 @@ -204,10 +189,10 @@ index baa53a0b1..c94eb78b5 100644
21108 -diff --git b/src/gzip/zlib.h a/src/gzip/zlib.h
21109 -index f09cdaf1e..1807c0645 100644
21110 ---- b/src/gzip/zlib.h
21111 -+++ a/src/gzip/zlib.h
21112 +diff --git a/src/gzip/zlib.h b/src/gzip/zlib.h
21114 +--- a/src/gzip/zlib.h
21116 @@ -31,7 +31,7 @@
21119 @@ -251,7 +236,7 @@ index f09cdaf1e..1807c0645 100644
21123 -@@ -954,6 +958,8 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
21124 +@@ -956,6 +960,8 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
21128 @@ -260,7 +245,7 @@ index f09cdaf1e..1807c0645 100644
21132 -@@ -978,6 +984,8 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
21133 +@@ -980,6 +986,8 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
21137 @@ -269,7 +254,7 @@ index f09cdaf1e..1807c0645 100644
21141 -@@ -1067,6 +1075,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
21142 +@@ -1069,6 +1077,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
21146 @@ -278,7 +263,7 @@ index f09cdaf1e..1807c0645 100644
21150 -@@ -1093,6 +1103,8 @@ typedef unsigned (*in_func) OF((void FAR *,
21151 +@@ -1095,6 +1105,8 @@ typedef unsigned (*in_func) OF((void FAR *,
21155 @@ -287,7 +272,7 @@ index f09cdaf1e..1807c0645 100644
21159 -@@ -1212,6 +1224,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
21160 +@@ -1214,6 +1226,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
21161 27-31: 0 (reserved)
21164 @@ -296,16 +281,16 @@ index f09cdaf1e..1807c0645 100644
21168 -@@ -1739,6 +1753,8 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21169 +@@ -1742,6 +1756,8 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21175 - ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
21179 -@@ -1805,6 +1821,19 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
21180 +@@ -1822,6 +1838,19 @@ ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
21184 @@ -325,13 +310,14 @@ index f09cdaf1e..1807c0645 100644
21188 -@@ -1879,12 +1908,15 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility …
21189 +@@ -1901,13 +1930,16 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility …
21200 @@ -341,7 +327,7 @@ index f09cdaf1e..1807c0645 100644
21204 -@@ -1904,6 +1936,7 @@ ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
21205 +@@ -1927,6 +1959,7 @@ ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file,
21209 @@ -349,21 +335,11 @@ index f09cdaf1e..1807c0645 100644
21213 -diff --git b/src/gzip/zutil.h a/src/gzip/zutil.h
21214 -index b079ea6a8..2d734a835 100644
21215 ---- b/src/gzip/zutil.h
21216 -+++ a/src/gzip/zutil.h
21217 -@@ -30,7 +30,9 @@
21218 - #endif
21219 -
21220 - #ifdef Z_SOLO
21221 -+# ifndef Z_FREETYPE
21222 - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
21223 -+# endif
21224 - #endif
21225 -
21226 - #ifndef local
21227 -@@ -185,6 +187,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21228 +diff --git a/src/gzip/zutil.h b/src/gzip/zutil.h
21230 +--- a/src/gzip/zutil.h
21232 +@@ -188,6 +188,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21233 #pragma warn -8066
21236 @@ -372,7 +348,7 @@ index b079ea6a8..2d734a835 100644
21237 /* provide prototypes for these when building zlib without LFS */
21239 (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
21240 -@@ -192,6 +196,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21241 +@@ -195,6 +197,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21245 @@ -381,7 +357,7 @@ index b079ea6a8..2d734a835 100644
21249 -@@ -223,9 +229,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21250 +@@ -226,9 +230,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21254 diff --git a/src/third_party/freetype/src/src/gzip/zlib.h b/src/third_party/freetype/src/src/gzip/z…
21256 --- a/src/third_party/freetype/src/src/gzip/zlib.h
21258 @@ -1,7 +1,7 @@
21259 /* zlib.h -- interface of the 'zlib' general purpose compression library
21260 - version 1.2.11, January 15th, 2017
21263 - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
21264 + Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
21266 This software is provided 'as-is', without any express or implied
21267 warranty. In no event will the authors be held liable for any damages
21268 @@ -37,11 +37,11 @@
21272 -#define ZLIB_VERSION "1.2.11"
21273 -#define ZLIB_VERNUM 0x12b0
21278 -#define ZLIB_VER_REVISION 11
21283 @@ -547,8 +547,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
21287 - fields next_in, zalloc, zfree and opaque must be initialized before by the
21288 - caller.
21293 @@ -716,11 +715,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
21297 - strategy is changed, and if any input has been consumed in a previous
21298 - deflate() call, then the input available so far is compressed with the old
21299 - level and strategy using deflate(strm, Z_BLOCK). There are three approaches
21300 - for the compression levels 0, 1..3, and 4..9 respectively. The new level
21301 - and strategy will take effect at the next call of deflate().
21305 + There are three approaches for the compression levels 0, 1..3, and 4..9
21311 @@ -869,9 +869,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
21313 return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
21314 CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
21315 - below), inflate() will not automatically decode concatenated gzip streams.
21316 - inflate() will return Z_STREAM_END at the end of the gzip stream. The state
21317 - would need to be reset to continue decoding a subsequent gzip stream.
21321 + *must* be done if there is more data after a gzip member, in order for the
21326 @@ -1316,14 +1318,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
21330 - Opens a gzip (.gz) file for reading or writing. The mode parameter is as
21331 - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
21332 - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
21333 - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
21334 - for fixed code compression as in "wb9F". (See the description of
21335 - deflateInit2 for more information about the strategy parameter.) 'T' will
21336 - request transparent writing or appending with no compression and not using
21337 - the gzip format.
21338 + Open the gzip (.gz) file at path for reading and decompressing, or
21340 + but can also include a compression level ("wb9") or a strategy: 'f' for
21341 + filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
21342 + 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
21343 + as in "wb9F". (See the description of deflateInit2 for more information
21345 + appending with no compression and not using the gzip format.
21349 @@ -1353,9 +1355,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
21353 - gzdopen associates a gzFile with the file descriptor fd. File descriptors
21354 - are obtained from calls like open, dup, creat, pipe or fileno (if the file
21355 - has been previously opened with fopen). The mode parameter is as in gzopen.
21362 @@ -1376,13 +1378,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
21366 - Set the internal buffer size used by this library's functions. The
21367 - default buffer size is 8192 bytes. This function must be called after
21368 - gzopen() or gzdopen(), and before any other calls that read or write the
21369 - file. The buffer memory allocation is always deferred to the first read or
21370 - write. Three times that size in buffer space is allocated. A larger buffer
21371 - size of, for example, 64K or 128K bytes will noticeably increase the speed
21372 - of decompression (reading).
21373 + Set the internal buffer size used by this library's functions for file to
21378 + buffer size of, for example, 64K or 128K bytes will noticeably increase the
21381 The new buffer size also affects the maximum length for gzprintf().
21383 @@ -1392,9 +1394,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
21387 - Dynamically update the compression level or strategy. See the description
21388 - of deflateInit2 for the meaning of these parameters. Previously provided
21389 - data is flushed before the parameter change.
21390 + Dynamically update the compression level and strategy for file. See the
21391 + description of deflateInit2 for the meaning of these parameters. Previously
21395 opened for writing, Z_ERRNO if there is an error writing the flushed data,
21396 @@ -1403,7 +1405,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
21400 - Reads the given number of uncompressed bytes from the compressed file. If
21405 @@ -1434,11 +1436,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
21409 - Read up to nitems items of size size from file to buf, otherwise operating
21410 - as gzread() does. This duplicates the interface of stdio's fread(), with
21411 - size_t request and return types. If the library defines size_t, then
21412 - z_size_t is identical to size_t. If not, then z_size_t is an unsigned
21413 - integer type that can contain a pointer.
21422 @@ -1457,18 +1459,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nit…
21423 file, reseting and retrying on end-of-file, when size is not 1.
21426 -ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
21427 - voidpc buf, unsigned len));
21430 - Writes the given number of uncompressed bytes into the compressed file.
21431 - gzwrite returns the number of uncompressed bytes written or 0 in case of
21432 - error.
21440 - gzfwrite() writes nitems items of size size from buf to file, duplicating
21445 @@ -1481,22 +1481,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
21449 - Converts, formats, and writes the arguments to the compressed file under
21450 - control of the format string, as in fprintf. gzprintf returns the number of
21459 - zlib was compiled with the insecure functions sprintf() or vsprintf()
21467 - Writes the given null-terminated string to the compressed file, excluding
21468 + Compress and write the given null-terminated string s to file, excluding
21471 gzputs returns the number of characters written, or -1 in case of error.
21472 @@ -1504,11 +1504,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
21476 - Reads bytes from the compressed file until len-1 characters are read, or a
21477 - newline character is read and transferred to buf, or an end-of-file
21478 - condition is encountered. If any characters are read or if len == 1, the
21479 - string is terminated with a null character. If no characters are read due
21480 - to an end-of-file or len < 1, then the buffer is left untouched.
21481 + Read and decompress bytes from file into buf, until len-1 characters are
21483 + end-of-file condition is encountered. If any characters are read or if len
21484 + is one, the string is terminated with a null character. If no characters
21485 + are read due to an end-of-file or len is less than one, then the buffer is
21488 gzgets returns buf which is a null-terminated string, or it returns NULL
21489 for end-of-file or in case of error. If there was an error, the contents at
21490 @@ -1517,13 +1518,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
21494 - Writes c, converted to an unsigned char, into the compressed file. gzputc
21496 returns the value that was written, or -1 in case of error.
21501 - Reads one byte from the compressed file. gzgetc returns this byte or -1
21502 + Read and decompress one byte from file. gzgetc returns this byte or -1
21503 in case of end of file or error. This is implemented as a macro for speed.
21506 @@ -1532,8 +1533,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
21510 - Push one character back onto the stream to be read as the first character
21511 - on the next read. At least one character of push-back is allowed.
21512 + Push c back onto the stream for file to be read as the first character on
21513 + the next read. At least one character of push-back is always allowed.
21514 gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
21515 fail if c is -1, and may fail if a character has been pushed but not read
21517 @@ -1544,9 +1545,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
21521 - Flushes all pending output into the compressed file. The parameter flush
21522 - is as in the deflate() function. The return value is the zlib error number
21523 - (see function gzerror below). gzflush is only permitted when writing.
21530 @@ -1561,8 +1562,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
21534 - Sets the starting position for the next gzread or gzwrite on the given
21535 - compressed file. The offset represents a number of bytes in the
21536 + Set the starting position to offset relative to whence for the next gzread
21541 @@ -1579,18 +1580,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
21545 - Rewinds the given file. This function is supported only for reading.
21546 + Rewind file. This function is supported only for reading.
21548 - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
21555 - Returns the starting position for the next gzread or gzwrite on the given
21556 - compressed file. This position represents a number of bytes in the
21557 - uncompressed data stream, and is zero when starting, even if appending or
21558 - reading a gzip stream from the middle of a file using gzdopen().
21559 + Return the starting position for the next gzread or gzwrite on file.
21566 @@ -1598,22 +1599,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
21570 - Returns the current offset in the file being read or written. This offset
21571 - includes the count of bytes that precede the gzip stream, for example when
21572 - appending or when using gzdopen() for reading. When reading, the offset
21573 - does not include as yet unused buffered input. This information can be used
21574 - for a progress indicator. On error, gzoffset() returns -1.
21576 + offset includes the count of bytes that precede the gzip stream, for example
21577 + when appending or when using gzdopen() for reading. When reading, the
21579 + be used for a progress indicator. On error, gzoffset() returns -1.
21584 - Returns true (1) if the end-of-file indicator has been set while reading,
21585 - false (0) otherwise. Note that the end-of-file indicator is set only if the
21586 - read tried to go past the end of the input, but came up short. Therefore,
21587 - just like feof(), gzeof() may return false even if there is no more data to
21588 - read, in the event that the last read request was for the exact number of
21589 - bytes remaining in the input file. This will happen if the input file size
21590 - is an exact multiple of the buffer size.
21591 + Return true (1) if the end-of-file indicator for file has been set while
21592 + reading, false (0) otherwise. Note that the end-of-file indicator is set
21594 + Therefore, just like feof(), gzeof() may return false even if there is no
21595 + more data to read, in the event that the last read request was for the exact
21599 If gzeof() returns true, then the read functions will return no more data,
21600 unless the end-of-file indicator is reset by gzclearerr() and the input file
21601 @@ -1622,7 +1623,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
21605 - Returns true (1) if file is being copied directly while reading, or false
21610 @@ -1643,8 +1644,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
21614 - Flushes all pending output if necessary, closes the compressed file and
21615 - deallocates the (de)compression state. Note that once file is closed, you
21616 + Flush all pending output for file, if necessary, close file and
21621 @@ -1668,10 +1669,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
21625 - Returns the error message for the last error which occurred on the given
21626 - compressed file. errnum is set to zlib error number. If an error occurred
21627 - in the file system and not in the compression library, errnum is set to
21628 - Z_ERRNO and the application may consult errno to get the exact error code.
21629 + Return the error message for the last error which occurred on file.
21636 @@ -1684,7 +1685,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
21640 - Clears the error and end-of-file flags for file. This is analogous to the
21641 + Clear the error and end-of-file flags for file. This is analogous to the
21642 clearerr() function in stdio. This is useful for continuing to read a gzip
21645 @@ -1702,8 +1703,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
21648 Update a running Adler-32 checksum with the bytes buf[0..len-1] and
21649 - return the updated checksum. If buf is Z_NULL, this function returns the
21650 - required initial value for the checksum.
21651 + return the updated checksum. An Adler-32 value is in the range of a 32-bit
21653 + initial value for the checksum.
21655 An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
21657 @@ -1736,12 +1738,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
21658 negative, the result has no meaning or utility.
21661 -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21664 Update a running CRC-32 with the bytes buf[0..len-1] and return the
21665 - updated CRC-32. If buf is Z_NULL, this function returns the required
21666 - initial value for the crc. Pre- and post-conditioning (one's complement) is
21667 - performed within this function so it shouldn't be done by the application.
21668 + updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
21669 + If buf is Z_NULL, this function returns the required initial value for the
21670 + crc. Pre- and post-conditioning (one's complement) is performed within this
21675 @@ -1755,7 +1758,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
21679 -ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
21684 @@ -1771,6 +1774,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2…
21705 @@ -1871,6 +1888,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21713 @@ -1881,6 +1899,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21721 @@ -1888,6 +1907,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21729 @@ -1896,6 +1916,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21737 @@ -1904,6 +1925,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21745 @@ -1911,6 +1933,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
21753 @@ -1925,7 +1948,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
21757 -#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
21762 diff --git a/src/third_party/freetype/src/src/gzip/zutil.c b/src/third_party/freetype/src/src/gzip/…
21764 --- a/src/third_party/freetype/src/src/gzip/zutil.c
21766 @@ -136,8 +136,8 @@ const char * ZEXPORT zError(
21770 -#if defined(_WIN32_WCE)
21771 - /* The Microsoft C Run-Time Library for Windows CE doesn't have
21773 + /* The older Microsoft C Run-Time Library for Windows CE doesn't have
21777 diff --git a/src/third_party/freetype/src/src/gzip/zutil.h b/src/third_party/freetype/src/src/gzip/…
21779 --- a/src/third_party/freetype/src/src/gzip/zutil.h
21781 @@ -1,5 +1,5 @@
21782 /* zutil.h -- internal interface and configuration of the compression library
21783 - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
21784 + * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
21785 * For conditions of distribution and use, see copyright notice in zlib.h
21788 @@ -29,12 +29,6 @@
21792 -#ifdef Z_SOLO
21793 -# ifndef Z_FREETYPE
21794 - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
21795 -# endif
21796 -#endif
21797 -
21801 @@ -48,6 +42,17 @@ typedef unsigned short ush;
21816 extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21819 @@ -172,10 +177,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
21822 # define fdopen(fd,mode) NULL /* No fdopen() */
21823 -# ifndef _PTRDIFF_T_DEFINED
21824 - typedef int ptrdiff_t;
21825 -# define _PTRDIFF_T_DEFINED
21826 -# endif
21830 diff --git a/src/third_party/freetype/src/src/lzw/ftlzw.c b/src/third_party/freetype/src/src/lzw/ft…
21832 --- a/src/third_party/freetype/src/src/lzw/ftlzw.c
21834 @@ -344,7 +344,7 @@
21838 - FT_LZWFile zip;
21843 diff --git a/src/third_party/freetype/src/src/lzw/ftzopen.c b/src/third_party/freetype/src/src/lzw/…
21845 --- a/src/third_party/freetype/src/src/lzw/ftzopen.c
21847 @@ -143,7 +143,7 @@
21848 return -1;
21851 - if ( FT_QRENEW_ARRAY( state->stack, old_size, new_size ) )
21852 + if ( FT_QREALLOC( state->stack, old_size, new_size ) )
21853 return -1;
21856 diff --git a/src/third_party/freetype/src/src/pfr/pfrobjs.c b/src/third_party/freetype/src/src/pfr/…
21858 --- a/src/third_party/freetype/src/src/pfr/pfrobjs.c
21860 @@ -207,7 +207,7 @@
21862 pfrface->height = (FT_Short)( ( pfrface->units_per_EM * 12 ) / 10 );
21863 if ( pfrface->height < pfrface->ascender - pfrface->descender )
21864 - pfrface->height = (FT_Short)(pfrface->ascender - pfrface->descender);
21865 + pfrface->height = (FT_Short)( pfrface->ascender - pfrface->descender );
21867 if ( phy_font->num_strikes > 0 )
21869 diff --git a/src/third_party/freetype/src/src/psaux/cffdecode.c b/src/third_party/freetype/src/src/…
21871 --- a/src/third_party/freetype/src/src/psaux/cffdecode.c
21873 @@ -248,7 +248,7 @@
21877 - CFF_Font cff = (CFF_Font)(face->extra.data);
21878 + CFF_Font cff = (CFF_Font)( face->extra.data );
21882 diff --git a/src/third_party/freetype/src/src/psaux/psconv.c b/src/third_party/freetype/src/src/psa…
21884 --- a/src/third_party/freetype/src/src/psaux/psconv.c
21886 @@ -535,11 +535,11 @@
21890 - *buffer = (FT_Byte)(*buffer + c);
21895 - *buffer = (FT_Byte)(c << 4);
21900 @@ -572,8 +572,8 @@
21904 - if ( n > (FT_UInt)(limit - p) )
21905 - n = (FT_UInt)(limit - p);
21906 + if ( n > (FT_UInt)( limit - p ) )
21907 + n = (FT_UInt)( limit - p );
21909 for ( r = 0; r < n; r++ )
21911 diff --git a/src/third_party/freetype/src/src/psaux/psfixed.h b/src/third_party/freetype/src/src/ps…
21913 --- a/src/third_party/freetype/src/src/psaux/psfixed.h
21915 @@ -2,7 +2,7 @@
21919 - * Adobe's code for Fixed Point Mathematics (specification only).
21920 + * Adobe's code for Fixed-Point Mathematics (specification only).
21922 * Copyright 2007-2013 Adobe Systems Incorporated.
21924 @@ -43,10 +43,10 @@
21928 - /* rasterizer integer and fixed point arithmetic must be 32-bit */
21929 + /* rasterizer integer and fixed-point arithmetic must be 32-bit */
21932 - typedef FT_Int32 CF2_Frac; /* 2.30 fixed point */
21933 + typedef FT_Int32 CF2_Frac; /* 2.30 fixed-point */
21937 diff --git a/src/third_party/freetype/src/src/psaux/psglue.h b/src/third_party/freetype/src/src/psa…
21939 --- a/src/third_party/freetype/src/src/psaux/psglue.h
21941 @@ -72,7 +72,7 @@ FT_BEGIN_HEADER
21945 - /* a matrix of fixed point values */
21946 + /* a matrix of fixed-point values */
21950 diff --git a/src/third_party/freetype/src/src/psaux/psobjs.c b/src/third_party/freetype/src/src/psa…
21952 --- a/src/third_party/freetype/src/src/psaux/psobjs.c
21954 @@ -518,7 +518,7 @@
21958 - if ( cur + 1 < limit && *(cur + 1) == '<' ) /* << */
21963 @@ -1115,7 +1115,7 @@
21965 FT_Memory memory = parser->memory;
21966 FT_UInt len = (FT_UInt)( limit - cur );
21967 - FT_String* string;
21972 diff --git a/src/third_party/freetype/src/src/psaux/psstack.h b/src/third_party/freetype/src/src/ps…
21974 --- a/src/third_party/freetype/src/src/psaux/psstack.h
21976 @@ -49,8 +49,8 @@ FT_BEGIN_HEADER
21980 - CF2_Fixed r; /* 16.16 fixed point */
21981 - CF2_Frac f; /* 2.30 fixed point (for font matrix) */
21982 + CF2_Fixed r; /* 16.16 fixed-point */
21983 + CF2_Frac f; /* 2.30 fixed-point (for font matrix) */
21987 diff --git a/src/third_party/freetype/src/src/pshinter/pshglob.c b/src/third_party/freetype/src/src…
21989 --- a/src/third_party/freetype/src/src/pshinter/pshglob.c
21991 @@ -646,7 +646,7 @@
21995 - PSH_Globals globals;
22000 diff --git a/src/third_party/freetype/src/src/raster/ftraster.c b/src/third_party/freetype/src/src/…
22002 --- a/src/third_party/freetype/src/src/raster/ftraster.c
22004 @@ -2269,7 +2269,7 @@
22007 while ( --c2 > 0 )
22008 - *(++target) = 0xFF;
22013 diff --git a/src/third_party/freetype/src/src/sdf/ftsdf.c b/src/third_party/freetype/src/src/sdf/ft…
22015 --- a/src/third_party/freetype/src/src/sdf/ftsdf.c
22017 @@ -738,6 +738,18 @@
22019 contour = shape->contours;
22024 + if ( ( contour->last_pos.x == control_1->x &&
22025 + contour->last_pos.y == control_1->y ) ||
22026 + ( control_1->x == to->x &&
22027 + control_1->y == to->y ) )
22035 edge->edge_type = SDF_EDGE_CONIC;
22036 @@ -764,9 +776,9 @@
22040 - SDF_Shape* shape = ( SDF_Shape* )user;
22041 - SDF_Edge* edge = NULL;
22042 - SDF_Contour* contour = NULL;
22048 FT_Memory memory = shape->memory;
22049 @@ -1065,7 +1077,7 @@
22053 - FT_Int max_splits,
22058 @@ -1134,26 +1146,41 @@
22062 - FT_Int max_splits,
22066 - FT_Error error = FT_Err_Ok;
22067 - FT_26D6_Vec cpos[7];
22068 - SDF_Edge* left,* right;
22075 - if ( !memory || !out )
22082 - /* split the conic */
22093 + /* smaller than the pre-defined `threshold` value. */
22094 + if ( FT_ABS( 2 * cpos[0].x - 3 * cpos[1].x + cpos[3].x ) < threshold &&
22095 + FT_ABS( 2 * cpos[0].y - 3 * cpos[1].y + cpos[3].y ) < threshold &&
22096 + FT_ABS( cpos[0].x - 3 * cpos[2].x + 2 * cpos[3].x ) < threshold &&
22097 + FT_ABS( cpos[0].y - 3 * cpos[2].y + 2 * cpos[3].y ) < threshold )
22106 @@ -1250,13 +1277,32 @@
22114 ctrls[0] = edge->start_pos;
22115 ctrls[1] = edge->control_a;
22116 ctrls[2] = edge->end_pos;
22118 - error = split_sdf_conic( memory, ctrls, 32, &new_edges );
22119 + dx = FT_ABS( ctrls[2].x + ctrls[0].x - 2 * ctrls[1].x );
22120 + dy = FT_ABS( ctrls[2].y + ctrls[0].y - 2 * ctrls[1].y );
22125 + /* bisection causes a four-fold reduction of the deviation, */
22127 + /* becomes less than 1/8th of a pixel. For more details */
22140 @@ -1893,7 +1939,7 @@
22144 - /* clamp the factor between 0.0 and 1.0 in fixed point */
22145 + /* clamp the factor between 0.0 and 1.0 in fixed-point */
22149 @@ -2968,7 +3014,7 @@
22150 diff = current_dist.distance - min_dist.distance;
22153 - if ( FT_ABS(diff ) < CORNER_CHECK_EPSILON )
22158 @@ -3118,7 +3164,7 @@
22162 - /* square_root the values and fit in a 6.10 fixed point */
22163 + /* square_root the values and fit in a 6.10 fixed-point */
22167 @@ -3242,7 +3288,7 @@
22168 buffer = (FT_SDFFormat*)bitmap->buffer;
22171 - sp_sq = FT_INT_16D16( spread * spread );
22176 @@ -3286,6 +3332,7 @@
22184 @@ -3313,7 +3360,7 @@
22188 - /* square_root the values and fit in a 6.10 fixed-point */
22193 @@ -3325,11 +3372,15 @@
22197 - else if ( dists[index].distance > dist.distance )
22198 - dists[index] = dist;
22199 - else if ( FT_ABS( dists[index].distance - dist.distance )
22200 - < CORNER_CHECK_EPSILON )
22201 - dists[index] = resolve_corner( dists[index], dist );
22204 + diff = FT_ABS( dists[index].distance - dist.distance );
22214 diff --git a/src/third_party/freetype/src/src/sdf/ftsdfcommon.c b/src/third_party/freetype/src/src/…
22216 --- a/src/third_party/freetype/src/src/sdf/ftsdfcommon.c
22218 @@ -33,7 +33,7 @@
22222 - * Use this to compute the square root of a 16.16 fixed point number.
22223 + * Use this to compute the square root of a 16.16 fixed-point number.
22227 @@ -72,8 +72,8 @@
22231 - * Convert 16.16 fixed point values to the desired output format.
22232 - * In this case we reduce 16.16 fixed point values to normalized
22233 + * Convert 16.16 fixed-point values to the desired output format.
22234 + * In this case we reduce 16.16 fixed-point values to normalized
22235 * 8-bit values.
22238 diff --git a/src/third_party/freetype/src/src/sdf/ftsdfcommon.h b/src/third_party/freetype/src/src/…
22240 --- a/src/third_party/freetype/src/src/sdf/ftsdfcommon.h
22242 @@ -48,6 +48,8 @@ FT_BEGIN_HEADER
22251 diff --git a/src/third_party/freetype/src/src/sdf/ftsdfrend.c b/src/third_party/freetype/src/src/sd…
22253 --- a/src/third_party/freetype/src/src/sdf/ftsdfrend.c
22255 @@ -298,15 +298,9 @@
22259 - /* the rows and pitch must be valid after presetting the */
22260 - /* bitmap using outline */
22262 if ( !bitmap->rows || !bitmap->pitch )
22263 - {
22264 - FT_ERROR(( "ft_sdf_render: failed to preset bitmap\n" ));
22265 -
22266 - error = FT_THROW( Cannot_Render_Glyph );
22267 - goto Exit;
22268 - }
22272 x_pad = sdf_module->spread;
22273 @@ -525,13 +519,9 @@
22278 if ( !bitmap->rows || !bitmap->pitch )
22279 - {
22280 - FT_ERROR(( "ft_bsdf_render: invalid bitmap size\n" ));
22281 -
22282 - error = FT_THROW( Invalid_Argument );
22283 - goto Exit;
22284 - }
22289 diff --git a/src/third_party/freetype/src/src/sfnt/pngshim.c b/src/third_party/freetype/src/src/sfn…
22291 --- a/src/third_party/freetype/src/src/sfnt/pngshim.c
22293 @@ -367,7 +367,7 @@
22297 - if ( png_get_valid(png, info, PNG_INFO_tRNS ) )
22302 @@ -387,7 +387,7 @@
22306 - png_read_update_info(png, info );
22311 diff --git a/src/third_party/freetype/src/src/sfnt/sfdriver.c b/src/third_party/freetype/src/src/sf…
22313 --- a/src/third_party/freetype/src/src/sfnt/sfdriver.c
22315 @@ -657,7 +657,7 @@
22319 - * Find the shortest decimal representation of a 16.16 fixed point
22320 + * Find the shortest decimal representation of a 16.16 fixed-point
22324 @@ -733,7 +733,7 @@
22327 The above FOR loop always finds the larger of the two values; I
22328 - verified this by iterating over all possible fixed point numbers.
22329 + verified this by iterating over all possible fixed-point numbers.
22333 @@ -741,7 +741,7 @@
22337 - also found by testing all possible fixed point values).
22338 + also found by testing all possible fixed-point values).
22342 diff --git a/src/third_party/freetype/src/src/sfnt/sfobjs.c b/src/third_party/freetype/src/src/sfnt…
22344 --- a/src/third_party/freetype/src/src/sfnt/sfobjs.c
22346 @@ -566,7 +566,7 @@
22349 /* value -(N+1) requests information on index N */
22350 - if ( face_instance_index < 0 )
22352 face_index--;
22354 if ( face_index >= face->ttc_header.count )
22355 @@ -784,17 +784,23 @@
22359 - FT_Error error;
22362 - FT_Error psnames_error;
22365 - FT_Bool has_outline;
22366 - FT_Bool is_apple_sbit;
22367 - FT_Bool is_apple_sbix;
22368 - FT_Bool has_CBLC;
22369 - FT_Bool has_CBDT;
22370 - FT_Bool ignore_typographic_family = FALSE;
22371 - FT_Bool ignore_typographic_subfamily = FALSE;
22386 SFNT_Service sfnt = (SFNT_Service)face->sfnt;
22388 @@ -813,6 +819,8 @@
22397 @@ -848,14 +856,17 @@
22401 - is_apple_sbit = 0;
22402 - is_apple_sbix = !face->goto_table( face, TTAG_sbix, stream, 0 );
22404 + has_CBLC = !face->goto_table( face, TTAG_CBLC, stream, 0 );
22405 + has_CBDT = !face->goto_table( face, TTAG_CBDT, stream, 0 );
22406 + has_EBLC = !face->goto_table( face, TTAG_EBLC, stream, 0 );
22407 + has_bloc = !face->goto_table( face, TTAG_bloc, stream, 0 );
22408 + has_sbix = !face->goto_table( face, TTAG_sbix, stream, 0 );
22410 - /* Apple 'sbix' color bitmaps are rendered scaled and then the 'glyf'
22411 - * outline rendered on top. We don't support that yet, so just ignore
22412 - * the 'glyf' outline and advertise it as a bitmap-only font. */
22413 - if ( is_apple_sbix )
22414 - has_outline = FALSE;
22422 @@ -867,16 +878,13 @@
22426 - if ( !is_apple_sbit || is_apple_sbix )
22434 - has_CBLC = !face->goto_table( face, TTAG_CBLC, stream, 0 );
22435 - has_CBDT = !face->goto_table( face, TTAG_CBDT, stream, 0 );
22436 -
22437 /* Ignore outlines for CBLC/CBDT fonts. */
22440 @@ -986,7 +994,11 @@
22444 - if ( sfnt->load_eblc )
22445 + /* TODO: Replace this clumsy check for all possible sbit tables */
22446 + /* with something better (for example, by passing a parameter */
22448 + if ( sfnt->load_eblc &&
22453 @@ -1054,11 +1066,19 @@
22455 if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_CBLC ||
22456 face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX ||
22457 - face->colr )
22458 + face->colr ||
22459 + face->svg )
22463 - flags |= FT_FACE_FLAG_SCALABLE; /* scalable outlines */
22465 + /* by default (and for backward compatibility) we handle */
22466 + /* fonts with an 'sbix' table as bitmap-only */
22475 @@ -1281,7 +1301,8 @@
22479 - if ( FT_IS_SCALABLE( root ) )
22485 diff --git a/src/third_party/freetype/src/src/sfnt/sfwoff.c b/src/third_party/freetype/src/src/sfnt…
22487 --- a/src/third_party/freetype/src/src/sfnt/sfwoff.c
22489 @@ -162,8 +162,7 @@
22493 - if ( FT_QALLOC( sfnt, 12 + woff.num_tables * 16UL ) ||
22494 - FT_NEW( sfnt_stream ) )
22499 @@ -196,8 +195,8 @@
22503 - if ( FT_NEW_ARRAY( tables, woff.num_tables ) ||
22504 - FT_NEW_ARRAY( indices, woff.num_tables ) )
22510 @@ -328,9 +327,7 @@
22514 - if ( FT_REALLOC( sfnt,
22515 - 12 + woff.num_tables * 16UL,
22516 - woff.totalSfntSize ) )
22521 diff --git a/src/third_party/freetype/src/src/sfnt/sfwoff2.c b/src/third_party/freetype/src/src/sfn…
22523 --- a/src/third_party/freetype/src/src/sfnt/sfwoff2.c
22525 @@ -84,6 +84,8 @@
22534 @@ -227,9 +229,9 @@
22538 - if ( FT_REALLOC( dst,
22539 - (FT_ULong)( *dst_size ),
22540 - (FT_ULong)( *offset + size ) ) )
22547 @@ -522,6 +524,7 @@
22555 @@ -549,6 +552,9 @@
22556 FT_Int dy = point.y - last_y;
22564 else if ( dx > -256 && dx < 256 )
22565 @@ -778,7 +784,7 @@
22569 - if ( FT_QNEW_ARRAY( loca_buf, loca_buf_size ) )
22574 @@ -833,15 +839,18 @@
22585 - FT_ULong bitmap_length;
22594 @@ -854,18 +863,20 @@
22598 - if ( FT_NEW_ARRAY( substreams, num_substreams ) )
22602 - if ( FT_STREAM_SKIP( 4 ) )
22612 - FT_TRACE4(( "num_glyphs = %u; index_format = %u\n",
22613 - num_glyphs, index_format ));
22617 info->num_glyphs = num_glyphs;
22619 @@ -878,7 +889,7 @@
22620 if ( info->loca_table->dst_length != expected_loca_length )
22623 - offset = ( 2 + num_substreams ) * 4;
22625 if ( offset > info->glyf_table->TransformLength )
22628 @@ -901,21 +912,36 @@
22632 - if ( FT_NEW_ARRAY( loca_values, num_glyphs + 1 ) )
22637 + if ( overlap_bitmap_length > info->glyf_table->TransformLength - offset )
22654 - bitmap_length = ( ( num_glyphs + 31U ) >> 5 ) << 2;
22655 - substreams[BBOX_STREAM].offset += bitmap_length;
22661 - if ( FT_NEW_ARRAY( glyph_buf, glyph_buf_size ) )
22665 - if ( FT_NEW_ARRAY( info->x_mins, num_glyphs ) )
22666 + if ( FT_QNEW_ARRAY( info->x_mins, num_glyphs ) )
22669 for ( i = 0; i < num_glyphs; ++i )
22670 @@ -947,7 +973,7 @@
22674 - FT_ULong composite_size;
22679 @@ -973,7 +999,7 @@
22683 - if ( FT_RENEW_ARRAY( glyph_buf, glyph_buf_size, size_needed ) )
22688 @@ -1025,8 +1051,11 @@
22692 - FT_Byte* flags_buf = NULL;
22693 - FT_Byte* triplet_buf = NULL;
22702 @@ -1035,7 +1064,18 @@
22706 - if ( FT_NEW_ARRAY( n_points_arr, n_contours ) )
22722 @@ -1072,7 +1112,7 @@
22726 - if ( FT_NEW_ARRAY( points, points_size ) )
22731 @@ -1101,7 +1141,7 @@
22735 - if ( FT_RENEW_ARRAY( glyph_buf, glyph_buf_size, size_needed ) )
22740 @@ -1155,6 +1195,7 @@
22748 @@ -1185,8 +1226,7 @@
22752 - if ( n_contours > 0 )
22753 - info->x_mins[i] = (FT_Short)x_min;
22754 + info->x_mins[i] = (FT_Short)x_min;
22757 info->glyf_table->dst_length = dest_offset - info->glyf_table->dst_offset;
22758 @@ -1303,7 +1343,7 @@
22762 - if ( FT_NEW_ARRAY( info->x_mins, num_glyphs ) )
22763 + if ( FT_QNEW_ARRAY( info->x_mins, num_glyphs ) )
22766 loca_offset = info->loca_table->src_offset;
22767 @@ -1391,8 +1431,8 @@
22771 - if ( FT_NEW_ARRAY( advance_widths, num_hmetrics ) ||
22772 - FT_NEW_ARRAY( lsbs, num_glyphs ) )
22778 @@ -1443,7 +1483,7 @@
22782 - if ( FT_NEW_ARRAY( hmtx_table, hmtx_table_size ) )
22787 @@ -1500,10 +1540,10 @@
22791 - FT_Error error = FT_Err_Ok;
22792 - FT_Stream stream = NULL;
22793 - FT_Byte* buf_cursor = NULL;
22794 - FT_Byte* table_entry = NULL;
22800 /* We are reallocating memory for `sfnt', so its pointer may change. */
22802 @@ -1544,10 +1584,6 @@
22806 - /* Create buffer for table entries. */
22807 - if ( FT_NEW_ARRAY( table_entry, 16 ) )
22808 - goto Fail;
22809 -
22810 /* Create a stream for the uncompressed buffer. */
22813 @@ -1710,7 +1746,6 @@
22817 - FT_FREE( table_entry );
22821 @@ -1723,7 +1758,6 @@
22825 - FT_FREE( table_entry );
22829 @@ -1836,8 +1870,8 @@
22833 - if ( FT_NEW_ARRAY( tables, woff2.num_tables ) ||
22834 - FT_NEW_ARRAY( indices, woff2.num_tables ) )
22840 @@ -1908,10 +1942,11 @@
22844 + table->flags = flags;
22845 table->src_offset = src_offset;
22846 table->src_length = table->TransformLength;
22847 src_offset += table->TransformLength;
22848 - table->flags = flags;
22849 + table->dst_offset = 0;
22852 (FT_Char)( table->Tag >> 24 ),
22853 @@ -1969,6 +2004,7 @@
22857 + /* pre-zero pointers within in case of failure */
22861 @@ -1982,7 +2018,7 @@
22862 if ( FT_READ_ULONG( ttc_font->flavor ) )
22865 - if ( FT_NEW_ARRAY( ttc_font->table_indices, ttc_font->num_tables ) )
22866 + if ( FT_QNEW_ARRAY( ttc_font->table_indices, ttc_font->num_tables ) )
22870 @@ -2063,7 +2099,7 @@
22874 - file_offset = ROUND4(woff2.metaOffset + woff2.metaLength);
22879 @@ -2073,7 +2109,7 @@
22883 - file_offset = ROUND4(woff2.privOffset + woff2.privLength);
22888 @@ -2085,7 +2121,7 @@
22891 /* value -(N+1) requests information on index N */
22892 - if ( *face_instance_index < 0 )
22894 face_index--;
22897 @@ -2261,9 +2297,9 @@
22901 - if ( FT_REALLOC( sfnt,
22902 - (FT_ULong)( sfnt_size ),
22903 - (FT_ULong)( woff2.actual_sfnt_size ) ) )
22910 diff --git a/src/third_party/freetype/src/src/sfnt/sfwoff2.h b/src/third_party/freetype/src/src/sfn…
22912 --- a/src/third_party/freetype/src/src/sfnt/sfwoff2.h
22914 @@ -56,6 +56,7 @@ FT_BEGIN_HEADER
22922 diff --git a/src/third_party/freetype/src/src/sfnt/ttcmap.c b/src/third_party/freetype/src/src/sfnt…
22924 --- a/src/third_party/freetype/src/src/sfnt/ttcmap.c
22926 @@ -465,7 +465,7 @@
22930 - FT_UInt idx = (FT_UInt)(char_code & 0xFF);
22935 diff --git a/src/third_party/freetype/src/src/sfnt/ttcolr.c b/src/third_party/freetype/src/src/sfnt…
22937 --- a/src/third_party/freetype/src/src/sfnt/ttcolr.c
22939 @@ -857,10 +857,10 @@
22941 p = colr->clip_list;
22943 - /* limit points to the first byte after the end of the color table. */
22944 - /* Thus, in subsequent limit checks below we need to check whether the */
22945 - /* read pointer is strictly greater than a position offset */
22946 - /* by certain field sizes to the left of that position. */
22951 limit = (FT_Byte*)colr->table + colr->table_size;
22954 @@ -1054,7 +1054,7 @@
22956 p = iterator->p;
22958 - color_stop->stop_offset = FT_NEXT_SHORT( p );
22959 + color_stop->stop_offset = (FT_Fixed)FT_NEXT_SHORT( p ) << 2;
22961 color_stop->color.palette_index = FT_NEXT_USHORT( p );
22963 diff --git a/src/third_party/freetype/src/src/sfnt/ttkern.c b/src/third_party/freetype/src/src/sfnt…
22965 --- a/src/third_party/freetype/src/src/sfnt/ttkern.c
22967 @@ -190,10 +190,16 @@
22971 - FT_Byte* p = face->kern_table;
22972 - FT_Byte* p_limit = p + face->kern_table_size;
22977 + if ( !face->kern_table )
22980 + p = face->kern_table;
22981 + p_limit = p + face->kern_table_size;
22986 diff --git a/src/third_party/freetype/src/src/sfnt/ttmtx.c b/src/third_party/freetype/src/src/sfnt/…
22988 --- a/src/third_party/freetype/src/src/sfnt/ttmtx.c
22990 @@ -306,7 +306,7 @@
22994 - if ( var )
22995 + if ( var && face->blend )
22999 diff --git a/src/third_party/freetype/src/src/sfnt/ttsbit.c b/src/third_party/freetype/src/src/sfnt…
23001 --- a/src/third_party/freetype/src/src/sfnt/ttsbit.c
23003 @@ -172,17 +172,8 @@
23007 -#ifdef FT_DEBUG_LEVEL_TRACE
23008 - /* we currently don't support bit 1; however, it is better to */
23009 - /* draw at least something... */
23011 - {
23012 - FT_TRACE1(( "tt_face_load_sbit_strikes:"
23013 - " sbix overlay not supported yet\n" ));
23014 - FT_TRACE1(( " "
23015 - " expect bad rendering results\n" ));
23016 - }
23017 -#endif
23018 + face->root.face_flags |= FT_FACE_FLAG_SBIX_OVERLAY;
23022 @@ -1580,17 +1571,34 @@
23026 - FT_Short abearing;
23033 metrics->horiBearingX = (FT_Short)originOffsetX;
23034 - metrics->horiBearingY = (FT_Short)( -originOffsetY + metrics->height );
23035 + metrics->vertBearingX = (FT_Short)originOffsetX;
23037 + metrics->horiBearingY = (FT_Short)( originOffsetY + metrics->height );
23038 + metrics->vertBearingY = (FT_Short)originOffsetY;
23040 metrics->horiAdvance = (FT_UShort)( aadvance *
23041 face->root.size->metrics.x_ppem /
23042 face->header.Units_Per_EM );
23044 + if ( face->vertical_info )
23046 + else if ( face->os2.version != 0xFFFFU )
23047 + aadvance = (FT_UShort)FT_ABS( face->os2.sTypoAscender -
23048 + face->os2.sTypoDescender );
23050 + aadvance = (FT_UShort)FT_ABS( face->horizontal.Ascender -
23051 + face->horizontal.Descender );
23053 + metrics->vertAdvance = (FT_UShort)( aadvance *
23054 + face->root.size->metrics.x_ppem /
23055 + face->header.Units_Per_EM );
23059 diff --git a/src/third_party/freetype/src/src/sfnt/ttsvg.c b/src/third_party/freetype/src/src/sfnt/…
23061 --- a/src/third_party/freetype/src/src/sfnt/ttsvg.c
23063 @@ -39,11 +39,11 @@
23067 -#define SVG_TABLE_HEADER_SIZE 10U
23068 -#define SVG_DOCUMENT_RECORD_SIZE 12U
23069 -#define SVG_DOCUMENT_LIST_MINIMUM_SIZE 2U + SVG_DOCUMENT_RECORD_SIZE
23070 -#define SVG_MINIMUM_SIZE SVG_TABLE_HEADER_SIZE + \
23071 - SVG_DOCUMENT_LIST_MINIMUM_SIZE
23080 @@ -319,7 +319,7 @@
23084 - FT_Byte* uncomp_buffer;
23089 diff --git a/src/third_party/freetype/src/src/smooth/ftgrays.c b/src/third_party/freetype/src/src/s…
23091 --- a/src/third_party/freetype/src/src/smooth/ftgrays.c
23093 @@ -1909,10 +1909,10 @@ typedef ptrdiff_t FT_PtrDist;
23097 - gray_convert_glyph_inner( RAS_ARG,
23101 - int error;
23106 @@ -2004,7 +2004,7 @@ typedef ptrdiff_t FT_PtrDist;
23110 - error = gray_convert_glyph_inner( RAS_VAR, continued );
23115 diff --git a/src/third_party/freetype/src/src/truetype/ttdriver.c b/src/third_party/freetype/src/sr…
23117 --- a/src/third_party/freetype/src/src/truetype/ttdriver.c
23119 @@ -108,6 +108,23 @@
23123 + if ( !ft_strcmp( property_name, "TEMPORARY-enable-variable-colrv1" ) )
23131 + driver->enable_variable_colrv1 = *bv;
23143 @@ -507,19 +524,34 @@
23147 - (FT_Get_MM_Func) NULL, /* get_mm */
23148 - (FT_Set_MM_Design_Func) NULL, /* set_mm_design */
23149 - (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, /* set_mm_blend */
23150 - (FT_Get_MM_Blend_Func) TT_Get_MM_Blend, /* get_mm_blend */
23151 - (FT_Get_MM_Var_Func) TT_Get_MM_Var, /* get_mm_var */
23152 - (FT_Set_Var_Design_Func) TT_Set_Var_Design, /* set_var_design */
23153 - (FT_Get_Var_Design_Func) TT_Get_Var_Design, /* get_var_design */
23154 - (FT_Set_Instance_Func) TT_Set_Named_Instance, /* set_instance */
23155 - (FT_Set_MM_WeightVector_Func)NULL, /* set_mm_weightvector */
23156 - (FT_Get_MM_WeightVector_Func)NULL, /* get_mm_weightvector */
23157 -
23158 - (FT_Get_Var_Blend_Func) tt_get_var_blend, /* get_var_blend */
23159 - (FT_Done_Blend_Func) tt_done_blend /* done_blend */
23191 diff --git a/src/third_party/freetype/src/src/truetype/ttgload.c b/src/third_party/freetype/src/src…
23193 --- a/src/third_party/freetype/src/src/truetype/ttgload.c
23195 @@ -801,7 +801,7 @@
23199 - zone->n_points = (FT_UShort)load->outline.n_points -
23200 + zone->n_points = (FT_UShort)load->outline.n_points + 4 -
23202 zone->n_contours = load->outline.n_contours -
23204 @@ -970,11 +970,6 @@
23205 outline->points[n_points + 2] = loader->pp3;
23206 outline->points[n_points + 3] = loader->pp4;
23208 - outline->tags[n_points ] = 0;
23209 - outline->tags[n_points + 1] = 0;
23210 - outline->tags[n_points + 2] = 0;
23211 - outline->tags[n_points + 3] = 0;
23212 -
23216 @@ -985,24 +980,9 @@
23220 - error = TT_Vary_Apply_Glyph_Deltas( loader->face,
23221 - loader->glyph_index,
23224 - unrounded,
23225 - (FT_UInt)n_points );
23226 -
23227 - /* recalculate linear horizontal and vertical advances */
23228 - /* if we don't have HVAR and VVAR, respectively */
23229 -
23230 - /* XXX: change all FreeType modules to store `linear' and `vadvance' */
23231 - /* in 26.6 format before the `base' module scales them to 16.16 */
23232 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
23233 - loader->linear = FT_PIX_ROUND( unrounded[n_points - 3].x -
23234 - unrounded[n_points - 4].x ) / 64;
23235 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
23236 - loader->vadvance = FT_PIX_ROUND( unrounded[n_points - 1].x -
23237 - unrounded[n_points - 2].x ) / 64;
23238 -
23243 @@ -1014,7 +994,7 @@
23244 tt_prepare_zone( &loader->zone, &gloader->current, 0, 0 );
23246 FT_ARRAY_COPY( loader->zone.orus, loader->zone.cur,
23247 - loader->zone.n_points + 4 );
23248 + loader->zone.n_points );
23252 @@ -1104,8 +1084,8 @@
23254 for ( ; vec < limit; vec++, u++ )
23256 - vec->x = ( FT_MulFix( u->x, x_scale ) + 32 ) >> 6;
23257 - vec->y = ( FT_MulFix( u->y, y_scale ) + 32 ) >> 6;
23258 + vec->x = ADD_LONG( FT_MulFix( u->x, x_scale ), 32 ) >> 6;
23259 + vec->y = ADD_LONG( FT_MulFix( u->y, y_scale ), 32 ) >> 6;
23263 @@ -1156,11 +1136,7 @@
23266 if ( IS_HINTED( loader->load_flags ) )
23267 - {
23268 - loader->zone.n_points += 4;
23269 -
23271 - }
23275 @@ -1228,8 +1204,8 @@
23276 p1 = gloader->base.outline.points + k;
23277 p2 = gloader->base.outline.points + l;
23279 - x = p1->x - p2->x;
23280 - y = p1->y - p2->y;
23281 + x = SUB_LONG( p1->x, p2->x );
23282 + y = SUB_LONG( p1->y, p2->y );
23286 @@ -1373,11 +1349,6 @@
23287 outline->points[outline->n_points + 2] = loader->pp3;
23288 outline->points[outline->n_points + 3] = loader->pp4;
23290 - outline->tags[outline->n_points ] = 0;
23291 - outline->tags[outline->n_points + 1] = 0;
23292 - outline->tags[outline->n_points + 2] = 0;
23293 - outline->tags[outline->n_points + 3] = 0;
23294 -
23298 @@ -1436,11 +1407,9 @@
23302 - for ( i = 0; i < loader->zone.n_points; i++ )
23303 + for ( i = 0; i < loader->zone.n_points - 4U; i++ )
23304 loader->zone.tags[i] &= ~FT_CURVE_TAG_TOUCH_BOTH;
23306 - loader->zone.n_points += 4;
23307 -
23311 @@ -1761,57 +1730,29 @@
23312 /* a small outline structure with four elements for */
23315 - char tags[4] = { 1, 1, 1, 1 };
23316 - short contours[4] = { 0, 1, 2, 3 };
23323 - points[0].x = loader->pp1.x;
23324 - points[0].y = loader->pp1.y;
23325 - points[1].x = loader->pp2.x;
23326 - points[1].y = loader->pp2.y;
23327 -
23328 - points[2].x = loader->pp3.x;
23329 - points[2].y = loader->pp3.y;
23330 - points[3].x = loader->pp4.x;
23331 - points[3].y = loader->pp4.y;
23332 + points[0] = loader->pp1;
23333 + points[1] = loader->pp2;
23334 + points[2] = loader->pp3;
23335 + points[3] = loader->pp4;
23337 - outline.n_points = 4;
23338 - outline.n_contours = 4;
23342 - outline.tags = tags;
23343 - outline.contours = contours;
23348 - error = TT_Vary_Apply_Glyph_Deltas( loader->face,
23349 - glyph_index,
23352 - unrounded,
23353 - (FT_UInt)outline.n_points );
23357 -
23358 - loader->pp1.x = points[0].x;
23359 - loader->pp1.y = points[0].y;
23360 - loader->pp2.x = points[1].x;
23361 - loader->pp2.y = points[1].y;
23362 -
23363 - loader->pp3.x = points[2].x;
23364 - loader->pp3.y = points[2].y;
23365 - loader->pp4.x = points[3].x;
23366 - loader->pp4.y = points[3].y;
23367 -
23368 - /* recalculate linear horizontal and vertical advances */
23369 - /* if we don't have HVAR and VVAR, respectively */
23370 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
23371 - loader->linear = FT_PIX_ROUND( unrounded[1].x -
23372 - unrounded[0].x ) / 64;
23373 - if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
23374 - loader->vadvance = FT_PIX_ROUND( unrounded[3].x -
23375 - unrounded[2].x ) / 64;
23379 @@ -1959,17 +1900,16 @@
23381 /* construct an outline structure for */
23383 - outline.n_points = (short)( gloader->current.num_subglyphs + 4 );
23384 - outline.n_contours = outline.n_points;
23391 - if ( FT_NEW_ARRAY( points, outline.n_points ) ||
23392 - FT_NEW_ARRAY( tags, outline.n_points ) ||
23393 - FT_NEW_ARRAY( contours, outline.n_points ) ||
23394 - FT_NEW_ARRAY( unrounded, outline.n_points ) )
23401 subglyph = gloader->current.subglyphs;
23402 @@ -1985,28 +1925,10 @@
23406 - points[i].x = loader->pp1.x;
23407 - points[i].y = loader->pp1.y;
23408 - tags[i] = 1;
23409 - contours[i] = i;
23410 -
23411 - i++;
23412 - points[i].x = loader->pp2.x;
23413 - points[i].y = loader->pp2.y;
23414 - tags[i] = 1;
23415 - contours[i] = i;
23416 -
23417 - i++;
23418 - points[i].x = loader->pp3.x;
23419 - points[i].y = loader->pp3.y;
23420 - tags[i] = 1;
23421 - contours[i] = i;
23422 -
23423 - i++;
23424 - points[i].x = loader->pp4.x;
23425 - points[i].y = loader->pp4.y;
23426 - tags[i] = 1;
23427 - contours[i] = i;
23428 + points[i++] = loader->pp1;
23429 + points[i++] = loader->pp2;
23430 + points[i++] = loader->pp3;
23431 + points[i ] = loader->pp4;
23435 @@ -2014,12 +1936,9 @@
23438 /* for each component's translation */
23439 - if ( FT_SET_ERROR( TT_Vary_Apply_Glyph_Deltas(
23440 - face,
23441 - glyph_index,
23442 - &outline,
23443 - unrounded,
23444 - (FT_UInt)outline.n_points ) ) )
23450 subglyph = gloader->current.subglyphs;
23451 @@ -2033,27 +1952,6 @@
23455 - loader->pp1.x = points[i + 0].x;
23456 - loader->pp1.y = points[i + 0].y;
23457 - loader->pp2.x = points[i + 1].x;
23458 - loader->pp2.y = points[i + 1].y;
23459 -
23460 - loader->pp3.x = points[i + 2].x;
23461 - loader->pp3.y = points[i + 2].y;
23462 - loader->pp4.x = points[i + 3].x;
23463 - loader->pp4.y = points[i + 3].y;
23464 -
23465 - /* recalculate linear horizontal and vertical advances */
23466 - /* if we don't have HVAR and VVAR, respectively */
23467 - if ( !( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
23468 - loader->linear =
23469 - FT_PIX_ROUND( unrounded[outline.n_points - 3].x -
23470 - unrounded[outline.n_points - 4].x ) / 64;
23471 - if ( !( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
23472 - loader->vadvance =
23473 - FT_PIX_ROUND( unrounded[outline.n_points - 1].x -
23474 - unrounded[outline.n_points - 2].x ) / 64;
23475 -
23479 @@ -2255,7 +2153,7 @@
23480 if ( loader->widthp )
23481 glyph->metrics.horiAdvance = loader->widthp[glyph_index] * 64;
23483 - glyph->metrics.horiAdvance = SUB_LONG(loader->pp2.x, loader->pp1.x);
23484 + glyph->metrics.horiAdvance = SUB_LONG( loader->pp2.x, loader->pp1.x );
23487 glyph->metrics.width = SUB_LONG( bbox.xMax, bbox.xMin );
23488 @@ -2897,8 +2795,12 @@
23492 - if ( FT_IS_SCALABLE( glyph->face ) )
23493 + if ( FT_IS_SCALABLE( glyph->face ) ||
23494 + FT_HAS_SBIX( glyph->face ) )
23496 + TT_Face face = (TT_Face)glyph->face;
23499 /* for the bbox we need the header only */
23502 @@ -2906,6 +2808,35 @@
23503 glyph->linearHoriAdvance = loader.linear;
23504 glyph->linearVertAdvance = loader.vadvance;
23509 + /* glyph bounding box, also taking the left-side bearing */
23511 + if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX &&
23531 + glyph->bitmap_left += FT_MulFix( bitmap_left, x_scale ) >> 6;
23532 + glyph->bitmap_top += FT_MulFix( bitmap_top, y_scale ) >> 6;
23537 if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance )
23538 @@ -2972,6 +2903,9 @@
23542 + glyph->linearHoriAdvance = advanceX;
23543 + glyph->linearVertAdvance = advanceY;
23546 glyph->face->size->metrics.x_ppem,
23547 glyph->face->units_per_EM );
23548 diff --git a/src/third_party/freetype/src/src/truetype/ttgxvar.c b/src/third_party/freetype/src/src…
23550 --- a/src/third_party/freetype/src/src/truetype/ttgxvar.c
23552 @@ -438,8 +438,8 @@
23556 - static FT_Error
23557 - ft_var_load_item_variation_store( TT_Face face,
23563 @@ -465,7 +465,7 @@
23567 - FT_TRACE2(( "ft_var_load_item_variation_store: bad store format %d\n",
23572 @@ -479,7 +479,17 @@
23573 /* we need at least one entry in `itemStore->varData' */
23574 if ( !itemStore->dataCount )
23576 - FT_TRACE2(( "ft_var_load_item_variation_store: missing varData\n" ));
23583 + /* has a special meaning (i.e., no variation data for this item) */
23584 + if ( itemStore->dataCount == 0xFFFFU )
23591 @@ -505,7 +515,7 @@
23593 if ( itemStore->axisCount != (FT_Long)blend->mmvar->num_axis )
23595 - FT_TRACE2(( "ft_var_load_item_variation_store:"
23600 @@ -516,7 +526,7 @@
23602 if ( itemStore->regionCount >= 32768U )
23604 - FT_TRACE2(( "ft_var_load_item_variation_store:"
23609 @@ -621,44 +631,25 @@
23610 varData->regionIdxCount * varData->itemCount ) )
23613 - /* the delta set is stored as a 2-dimensional array of shorts */
23614 - if ( long_words )
23615 - {
23616 - /* new in OpenType 1.9, currently for 'COLR' table only; */
23617 - /* the deltas are interpreted as 16.16 fixed-point scaling values */
23618 -
23619 - /* not supported yet */
23620 -
23621 - error = FT_THROW( Invalid_Table );
23622 - goto Exit;
23623 - }
23624 - else
23625 + for ( j = 0; j < varData->itemCount * varData->regionIdxCount; )
23627 - for ( j = 0; j < varData->itemCount * varData->regionIdxCount; )
23630 for ( k = 0; k < wordDeltaCount; k++, j++ )
23631 - {
23632 - /* read the short deltas */
23633 - FT_Short delta;
23634 -
23635 -
23636 - if ( FT_READ_SHORT( delta ) )
23637 + if ( FT_READ_LONG( varData->deltaSet[j] ) )
23639 -
23640 - varData->deltaSet[j] = delta;
23641 - }
23642 -
23643 for ( ; k < varData->regionIdxCount; k++, j++ )
23644 - {
23645 - /* read the (signed) byte deltas */
23646 - FT_Char delta;
23647 -
23648 -
23649 - if ( FT_READ_CHAR( delta ) )
23650 + if ( FT_READ_SHORT( varData->deltaSet[j] ) )
23655 + for ( k = 0; k < wordDeltaCount; k++, j++ )
23656 + if ( FT_READ_SHORT( varData->deltaSet[j] ) )
23658 + for ( ; k < varData->regionIdxCount; k++, j++ )
23659 + if ( FT_READ_CHAR( varData->deltaSet[j] ) )
23661 -
23662 - varData->deltaSet[j] = delta;
23663 - }
23667 @@ -670,8 +661,8 @@
23671 - static FT_Error
23672 - ft_var_load_delta_set_index_mapping( TT_Face face,
23678 @@ -728,7 +719,7 @@
23680 if ( map->mapCount * entrySize > table_len )
23682 - FT_TRACE1(( "ft_var_load_delta_set_index_mapping:"
23684 " invalid number of delta-set index mappings\n" ));
23687 @@ -758,6 +749,16 @@
23694 + /* no variation data for this item */
23695 + map->outerIndex[i] = 0xFFFFU;
23696 + map->innerIndex[i] = 0xFFFFU;
23703 if ( outerIndex >= itemStore->dataCount )
23704 @@ -887,7 +888,7 @@
23705 table = blend->hvar_table;
23708 - error = ft_var_load_item_variation_store(
23712 &table->itemStore );
23713 @@ -896,7 +897,7 @@
23717 - error = ft_var_load_delta_set_index_mapping(
23721 &table->widthMap,
23722 @@ -938,20 +939,28 @@
23726 - static FT_Int
23727 - ft_var_get_item_delta( TT_Face face,
23734 - GX_ItemVarData varData;
23735 - FT_Short* deltaSet;
23737 + FT_Memory memory = stream->memory;
23740 - FT_UInt master, j;
23741 - FT_Fixed netAdjustment = 0; /* accumulated adjustment */
23742 - FT_Fixed scaledDelta;
23743 - FT_Fixed delta;
23752 + /* OpenType 1.8.4+: No variation data for this item
23759 @@ -959,6 +968,9 @@
23760 varData = &itemStore->varData[outerIndex];
23761 deltaSet = &varData->deltaSet[varData->regionIdxCount * innerIndex];
23763 + if ( FT_QNEW_ARRAY( scalars, varData->regionIdxCount ) )
23767 for ( master = 0; master < varData->regionIdxCount; master++ )
23769 @@ -1008,18 +1020,33 @@
23771 axis->endCoord - face->blend->normalizedcoords[j],
23772 axis->endCoord - axis->peakCoord );
23773 - } /* per-axis loop */
23775 - /* get the scaled delta for this region */
23776 - delta = FT_intToFixed( deltaSet[master] );
23777 - scaledDelta = FT_MulFix( scalar, delta );
23778 + } /* per-axis loop */
23780 - /* accumulate the adjustments from each region */
23781 - netAdjustment = netAdjustment + scaledDelta;
23784 } /* per-region loop */
23786 - return FT_fixedToInt( netAdjustment );
23788 + /* Compute the scaled delta for this region.
23790 …ps://docs.microsoft.com/en-us/typography/opentype/spec/otvarcommonformats#item-variation-store-hea…
23792 + * `Fixed` is a 32-bit (16.16) type and, in the general case, requires
23793 + * 32-bit deltas. As described above, the `DeltaSet` record can
23794 + * accommodate deltas that are, logically, either 16-bit or 32-bit.
23796 + * is treated like a 32-bit integer.
23798 + * `FT_MulAddFix` internally uses 64-bit precision; it thus can handle
23799 + * deltas ranging from small 8-bit to large 32-bit values that are
23802 + returnValue = FT_MulAddFix( scalars, deltaSet, varData->regionIdxCount );
23810 @@ -1128,19 +1155,22 @@
23814 - delta = ft_var_get_item_delta( face,
23816 &table->itemStore,
23820 - FT_TRACE5(( "%s value %d adjusted by %d unit%s (%s)\n",
23821 - vertical ? "vertical height" : "horizontal width",
23822 - *avalue,
23823 - delta,
23824 - delta == 1 ? "" : "s",
23825 - vertical ? "VVAR" : "HVAR" ));
23826 -
23827 - *avalue += delta;
23842 @@ -1307,7 +1337,7 @@
23846 - error = ft_var_load_item_variation_store(
23850 &blend->mvar_table->itemStore );
23851 @@ -1332,6 +1362,13 @@
23852 value->outerIndex = FT_GET_USHORT();
23853 value->innerIndex = FT_GET_USHORT();
23856 + if ( value->outerIndex == 0xFFFFU && value->innerIndex == 0xFFFFU )
23858 + /* no variation data for this item */
23862 if ( value->outerIndex >= itemStore->dataCount ||
23863 value->innerIndex >= itemStore->varData[value->outerIndex]
23865 @@ -1422,12 +1459,12 @@
23869 - delta = ft_var_get_item_delta( face,
23871 &blend->mvar_table->itemStore,
23872 value->outerIndex,
23873 value->innerIndex );
23875 - if ( p )
23879 (FT_Char)( value->tag >> 24 ),
23880 @@ -3813,20 +3850,12 @@
23884 - * @Input:
23885 - * face ::
23886 - * A handle to the target face object.
23887 - *
23888 - * glyph_index ::
23889 - * The index of the glyph being modified.
23890 - *
23891 - * n_points ::
23892 - * The number of the points in the glyph, including
23893 - * phantom points.
23894 - *
23900 - * The outline to change.
23905 @@ -3837,15 +3866,16 @@
23909 - TT_Vary_Apply_Glyph_Deltas( TT_Face face,
23910 - FT_UInt glyph_index,
23913 - FT_Vector* unrounded,
23914 - FT_UInt n_points )
23918 + TT_Face face = loader->face;
23919 FT_Stream stream = face->root.stream;
23920 FT_Memory memory = stream->memory;
23921 + FT_UInt glyph_index = loader->glyph_index;
23922 + FT_UInt n_points = (FT_UInt)outline->n_points + 4;
23926 @@ -4063,36 +4093,8 @@
23930 - if ( j < n_points - 4 )
23931 - {
23932 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23933 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23934 - }
23935 - else
23936 - {
23937 - /* To avoid double adjustment of advance width or height, */
23938 - /* adjust phantom points only if there is no HVAR or VVAR */
23939 - /* support, respectively. */
23940 - if ( j == ( n_points - 4 ) &&
23941 - !( face->variation_support &
23942 - TT_FACE_FLAG_VAR_LSB ) )
23943 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23944 -
23945 - else if ( j == ( n_points - 3 ) &&
23946 - !( face->variation_support &
23947 - TT_FACE_FLAG_VAR_HADVANCE ) )
23948 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23949 -
23950 - else if ( j == ( n_points - 2 ) &&
23951 - !( face->variation_support &
23952 - TT_FACE_FLAG_VAR_TSB ) )
23953 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23954 -
23955 - else if ( j == ( n_points - 1 ) &&
23956 - !( face->variation_support &
23957 - TT_FACE_FLAG_VAR_VADVANCE ) )
23958 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23959 - }
23965 @@ -4165,36 +4167,8 @@
23966 FT_Pos point_delta_y = points_out[j].y - points_org[j].y;
23969 - if ( j < n_points - 4 )
23970 - {
23971 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23972 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23973 - }
23974 - else
23975 - {
23976 - /* To avoid double adjustment of advance width or height, */
23977 - /* adjust phantom points only if there is no HVAR or VVAR */
23978 - /* support, respectively. */
23979 - if ( j == ( n_points - 4 ) &&
23980 - !( face->variation_support &
23981 - TT_FACE_FLAG_VAR_LSB ) )
23982 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23983 -
23984 - else if ( j == ( n_points - 3 ) &&
23985 - !( face->variation_support &
23986 - TT_FACE_FLAG_VAR_HADVANCE ) )
23987 - point_deltas_x[j] = old_point_delta_x + point_delta_x;
23988 -
23989 - else if ( j == ( n_points - 2 ) &&
23990 - !( face->variation_support &
23991 - TT_FACE_FLAG_VAR_TSB ) )
23992 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23993 -
23994 - else if ( j == ( n_points - 1 ) &&
23995 - !( face->variation_support &
23996 - TT_FACE_FLAG_VAR_VADVANCE ) )
23997 - point_deltas_y[j] = old_point_delta_y + point_delta_y;
23998 - }
24004 @@ -4232,6 +4206,24 @@
24011 + if ( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE )
24013 + point_deltas_x[n_points - 4] = 0;
24014 + point_deltas_y[n_points - 4] = 0;
24015 + point_deltas_x[n_points - 3] = 0;
24016 + point_deltas_y[n_points - 3] = 0;
24018 + if ( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE )
24020 + point_deltas_x[n_points - 2] = 0;
24021 + point_deltas_y[n_points - 2] = 0;
24022 + point_deltas_x[n_points - 1] = 0;
24023 + point_deltas_y[n_points - 1] = 0;
24026 for ( i = 0; i < n_points; i++ )
24029 @@ -4241,6 +4233,24 @@
24030 outline->points[i].y += FT_fixedToInt( point_deltas_y[i] );
24034 + /* adjust phantom points only if there is no HVAR or VVAR */
24036 + if ( !( face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
24038 + loader->pp1 = outline->points[n_points - 4];
24039 + loader->pp2 = outline->points[n_points - 3];
24040 + loader->linear = FT_PIX_ROUND( unrounded[n_points - 3].x -
24041 + unrounded[n_points - 4].x ) / 64;
24043 + if ( !( face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) )
24045 + loader->pp3 = outline->points[n_points - 2];
24046 + loader->pp4 = outline->points[n_points - 1];
24047 + loader->vadvance = FT_PIX_ROUND( unrounded[n_points - 1].y -
24048 + unrounded[n_points - 2].y ) / 64;
24054 @@ -4305,8 +4315,8 @@
24058 - static void
24059 - ft_var_done_item_variation_store( TT_Face face,
24065 @@ -4334,6 +4344,18 @@
24076 + FT_FREE( deltaSetIdxMap->innerIndex );
24077 + FT_FREE( deltaSetIdxMap->outerIndex );
24084 @@ -4371,27 +4393,27 @@
24086 if ( blend->hvar_table )
24088 - ft_var_done_item_variation_store( face,
24090 &blend->hvar_table->itemStore );
24092 - FT_FREE( blend->hvar_table->widthMap.innerIndex );
24093 - FT_FREE( blend->hvar_table->widthMap.outerIndex );
24095 + &blend->hvar_table->widthMap );
24096 FT_FREE( blend->hvar_table );
24099 if ( blend->vvar_table )
24101 - ft_var_done_item_variation_store( face,
24103 &blend->vvar_table->itemStore );
24105 - FT_FREE( blend->vvar_table->widthMap.innerIndex );
24106 - FT_FREE( blend->vvar_table->widthMap.outerIndex );
24108 + &blend->vvar_table->widthMap );
24109 FT_FREE( blend->vvar_table );
24112 if ( blend->mvar_table )
24114 - ft_var_done_item_variation_store( face,
24116 &blend->mvar_table->itemStore );
24118 FT_FREE( blend->mvar_table->values );
24119 diff --git a/src/third_party/freetype/src/src/truetype/ttgxvar.h b/src/third_party/freetype/src/src…
24121 --- a/src/third_party/freetype/src/src/truetype/ttgxvar.h
24123 @@ -62,57 +62,6 @@ FT_BEGIN_HEADER
24127 - typedef struct GX_ItemVarDataRec_
24128 - {
24129 - FT_UInt itemCount; /* number of delta sets per item */
24130 - FT_UInt regionIdxCount; /* number of region indices in this data */
24131 - FT_UInt* regionIndices; /* array of `regionCount' indices; */
24132 - /* these index `varRegionList' */
24133 - FT_Short* deltaSet; /* array of `itemCount' deltas */
24134 - /* use `innerIndex' for this array */
24135 -
24136 - } GX_ItemVarDataRec, *GX_ItemVarData;
24137 -
24138 -
24139 - /* contribution of one axis to a region */
24140 - typedef struct GX_AxisCoordsRec_
24141 - {
24142 - FT_Fixed startCoord;
24143 - FT_Fixed peakCoord; /* zero means no effect (factor = 1) */
24144 - FT_Fixed endCoord;
24145 -
24146 - } GX_AxisCoordsRec, *GX_AxisCoords;
24147 -
24148 -
24149 - typedef struct GX_VarRegionRec_
24150 - {
24151 - GX_AxisCoords axisList; /* array of axisCount records */
24152 -
24153 - } GX_VarRegionRec, *GX_VarRegion;
24154 -
24155 -
24156 - /* item variation store */
24157 - typedef struct GX_ItemVarStoreRec_
24158 - {
24159 - FT_UInt dataCount;
24160 - GX_ItemVarData varData; /* array of dataCount records; */
24161 - /* use `outerIndex' for this array */
24162 - FT_UShort axisCount;
24163 - FT_UInt regionCount; /* total number of regions defined */
24164 - GX_VarRegion varRegionList;
24165 -
24166 - } GX_ItemVarStoreRec, *GX_ItemVarStore;
24167 -
24168 -
24169 - typedef struct GX_DeltaSetIdxMapRec_
24170 - {
24171 - FT_ULong mapCount;
24172 - FT_UInt* outerIndex; /* indices to item var data */
24173 - FT_UInt* innerIndex; /* indices to delta set */
24174 -
24175 - } GX_DeltaSetIdxMapRec, *GX_DeltaSetIdxMap;
24176 -
24177 -
24181 @@ -412,11 +361,9 @@ FT_BEGIN_HEADER
24185 - TT_Vary_Apply_Glyph_Deltas( TT_Face face,
24186 - FT_UInt glyph_index,
24189 - FT_Vector* unrounded,
24190 - FT_UInt n_points );
24195 @@ -431,6 +378,34 @@ FT_BEGIN_HEADER
24230 diff --git a/src/third_party/freetype/src/src/truetype/ttinterp.c b/src/third_party/freetype/src/sr…
24232 --- a/src/third_party/freetype/src/src/truetype/ttinterp.c
24234 @@ -516,14 +516,6 @@
24235 exec->GS.round_state = 1;
24236 exec->GS.loop = 1;
24238 -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
24239 - exec->iup_called = FALSE;
24240 -#endif
24241 -#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
24242 - exec->iupx_called = FALSE;
24243 - exec->iupy_called = FALSE;
24244 -#endif
24245 -
24248 exec->top = 0;
24249 @@ -7847,6 +7839,15 @@
24251 Compute_Round( exc, (FT_Byte)exc->GS.round_state );
24255 + exc->iup_called = FALSE;
24258 + exc->iupx_called = FALSE;
24259 + exc->iupy_called = FALSE;
24264 exc->opcode = exc->code[exc->IP];
24265 @@ -8569,7 +8570,8 @@
24268 /* run this program for too long (e.g. infinite loops). */
24269 - if ( ++ins_counter > TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES ) {
24272 exc->error = FT_THROW( Execution_Too_Long );
24275 diff --git a/src/third_party/freetype/src/src/truetype/ttobjs.c b/src/third_party/freetype/src/src/…
24277 --- a/src/third_party/freetype/src/src/truetype/ttobjs.c
24279 @@ -727,7 +727,8 @@
24283 - if ( FT_IS_SCALABLE( ttface ) )
24288 if ( !ttface->internal->incremental_interface )
24289 diff --git a/src/third_party/freetype/src/src/truetype/ttobjs.h b/src/third_party/freetype/src/src/…
24291 --- a/src/third_party/freetype/src/src/truetype/ttobjs.h
24293 @@ -337,6 +337,8 @@ FT_BEGIN_HEADER
24302 diff --git a/src/third_party/freetype/src/src/type1/t1afm.c b/src/third_party/freetype/src/src/type…
24304 --- a/src/third_party/freetype/src/src/type1/t1afm.c
24306 @@ -203,7 +203,7 @@
24307 kp->index1 = FT_Get_Char_Index( t1_face, p[0] );
24308 kp->index2 = FT_Get_Char_Index( t1_face, p[1] );
24310 - kp->x = (FT_Int)FT_PEEK_SHORT_LE(p + 2);
24311 + kp->x = (FT_Int)FT_PEEK_SHORT_LE( p + 2 );
24312 kp->y = 0;
24315 diff --git a/src/third_party/freetype/src/src/type1/t1driver.c b/src/third_party/freetype/src/src/t…
24317 --- a/src/third_party/freetype/src/src/type1/t1driver.c
24319 @@ -121,19 +121,30 @@
24323 - (FT_Get_MM_Func) T1_Get_Multi_Master, /* get_mm */
24324 - (FT_Set_MM_Design_Func) T1_Set_MM_Design, /* set_mm_design */
24325 - (FT_Set_MM_Blend_Func) T1_Set_MM_Blend, /* set_mm_blend */
24326 - (FT_Get_MM_Blend_Func) T1_Get_MM_Blend, /* get_mm_blend */
24327 - (FT_Get_MM_Var_Func) T1_Get_MM_Var, /* get_mm_var */
24328 - (FT_Set_Var_Design_Func) T1_Set_Var_Design, /* set_var_design */
24329 - (FT_Get_Var_Design_Func) T1_Get_Var_Design, /* get_var_design */
24330 - (FT_Set_Instance_Func) T1_Reset_MM_Blend, /* set_instance */
24331 - (FT_Set_MM_WeightVector_Func)T1_Set_MM_WeightVector, /* set_mm_weightvector */
24332 - (FT_Get_MM_WeightVector_Func)T1_Get_MM_WeightVector, /* get_mm_weightvector */
24333 -
24334 - (FT_Get_Var_Blend_Func) NULL, /* get_var_blend */
24335 - (FT_Done_Blend_Func) T1_Done_Blend /* done_blend */
24363 diff --git a/src/third_party/freetype/src/src/type1/t1load.c b/src/third_party/freetype/src/src/typ…
24365 --- a/src/third_party/freetype/src/src/type1/t1load.c
24367 @@ -2057,9 +2057,9 @@
24368 name_table->elements[n][len] = '\0';
24371 - if ( *cur == '.' &&
24374 - (const char*)(name_table->elements[n]) ) == 0 )
24375 + (const char*)( name_table->elements[n] ) ) == 0 )
24379 @@ -2331,8 +2331,8 @@
24380 /* in valid Type 1 fonts we don't see `RD' or `-|' directly */
24383 - else if ( *cur == 'R' && cur + 6 < limit && *(cur + 1) == 'D' &&
24384 - have_integer )
24390 @@ -2344,8 +2344,8 @@
24394 - else if ( *cur == '-' && cur + 6 < limit && *(cur + 1) == '|' &&
24395 - have_integer )
24396 + else if ( *cur == '-' && cur + 6 < limit && *( cur + 1 ) == '|' &&
24401 diff --git a/src/third_party/freetype/src/src/type1/t1parse.c b/src/third_party/freetype/src/src/ty…
24403 --- a/src/third_party/freetype/src/src/type1/t1parse.c
24405 @@ -330,50 +330,25 @@
24409 - /* first of all, look at the `eexec' keyword */
24410 + /* First look for the `eexec' keyword. Ensure `eexec' is real -- */
24413 FT_Byte* cur = parser->base_dict;
24414 FT_Byte* limit = cur + parser->base_len;
24419 - Again:
24420 - for (;;)
24421 - {
24422 - if ( cur[0] == 'e' &&
24423 - cur + 9 < limit ) /* 9 = 5 letters for `eexec' + */
24424 - /* whitespace + 4 chars */
24425 - {
24426 - if ( cur[1] == 'e' &&
24427 - cur[2] == 'x' &&
24428 - cur[3] == 'e' &&
24429 - cur[4] == 'c' )
24430 - break;
24431 - }
24432 - cur++;
24433 - if ( cur >= limit )
24434 - {
24435 - FT_ERROR(( "T1_Get_Private_Dict:"
24436 - " could not find `eexec' keyword\n" ));
24437 - error = FT_THROW( Invalid_File_Format );
24438 - goto Exit;
24439 - }
24440 - }
24441 -
24442 - /* check whether `eexec' was real -- it could be in a comment */
24443 - /* or string (as e.g. in u003043t.gsf from ghostscript) */
24444 -
24445 parser->root.cursor = parser->base_dict;
24446 - /* set limit to `eexec' + whitespace + 4 characters */
24447 - parser->root.limit = cur + 10;
24448 + parser->root.limit = parser->base_dict + parser->base_len;
24450 cur = parser->root.cursor;
24451 limit = parser->root.limit;
24455 - if ( cur[0] == 'e' &&
24456 - cur + 5 < limit )
24457 + /* 9 = 5 letters for `eexec' + whitespace + 4 chars */
24462 @@ -389,21 +364,9 @@
24463 cur = parser->root.cursor;
24466 - /* we haven't found the correct `eexec'; go back and continue */
24467 - /* searching */
24468 -
24469 - cur = limit;
24470 - limit = parser->base_dict + parser->base_len;
24471 -
24472 - if ( cur >= limit )
24473 - {
24474 - FT_ERROR(( "T1_Get_Private_Dict:"
24475 - " premature end in private dictionary\n" ));
24476 - error = FT_THROW( Invalid_File_Format );
24477 - goto Exit;
24478 - }
24479 -
24480 - goto Again;
24486 /* dictionary. We overwrite the base dictionary for disk-based */
24487 diff --git a/src/third_party/freetype/src/src/type42/t42objs.c b/src/third_party/freetype/src/src/t…
24489 --- a/src/third_party/freetype/src/src/type42/t42objs.c
24491 @@ -148,7 +148,7 @@
24495 - FT_FREE(face->ttf_data);
24496 + FT_FREE( face->ttf_data );
24497 face->ttf_size = 0;
24500 diff --git a/src/third_party/freetype/src/src/type42/t42parse.c b/src/third_party/freetype/src/src/…
24502 --- a/src/third_party/freetype/src/src/type42/t42parse.c
24504 @@ -92,7 +92,7 @@
24508 - T1_FIELD_BBOX("FontBBox", xMin, 0 )
24513 @@ -1008,9 +1008,9 @@
24514 name_table->elements[n][len] = '\0';
24517 - if ( *cur == '.' &&
24520 - (const char*)(name_table->elements[n]) ) == 0 )
24521 + (const char*)( name_table->elements[n] ) ) == 0 )
24525 diff --git a/src/third_party/freetype/src/src/winfonts/winfnt.c b/src/third_party/freetype/src/src/…
24527 --- a/src/third_party/freetype/src/src/winfonts/winfnt.c
24529 @@ -489,7 +489,7 @@
24533 - if ( !(dir_entry1.offset & 0x80000000UL ) /* DataIsDirectory */ )
24538 @@ -513,7 +513,7 @@
24542 - if ( !(dir_entry2.offset & 0x80000000UL ) /* DataIsDirectory */ )
24547 diff --git a/src/third_party/freetype/src/subprojects/harfbuzz.wrap b/src/third_party/freetype/src/…
24550 --- /dev/null
24552 @@ -0,0 +1,12 @@
24553 +[wrap-file]
24554 +directory = harfbuzz-4.3.0
24556 +source_url = https://github.com/harfbuzz/harfbuzz/releases/download/4.3.0/harfbuzz-4.3.0.tar.xz
24557 +source_filename = harfbuzz-4.3.0.tar.xz
24562 +harfbuzz-subset = libharfbuzz_subset_dep
24563 +harfbuzz-icu = libharfbuzz_icu_dep
24564 +harfbuzz-gobject = libharfbuzz_gobject_dep
24565 diff --git a/src/third_party/freetype/src/subprojects/zlib.wrap b/src/third_party/freetype/src/subp…
24567 --- a/src/third_party/freetype/src/subprojects/zlib.wrap
24569 @@ -1,11 +1,11 @@
24570 [wrap-file]
24571 -directory = zlib-1.2.11
24572 -source_url = http://zlib.net/fossils/zlib-1.2.11.tar.gz
24573 -source_filename = zlib-1.2.11.tar.gz
24574 -source_hash = c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
24575 -patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch
24576 -patch_filename = zlib-1.2.11-5-wrap.zip
24577 -patch_hash = 728c8e24acbc2e6682fbd950fec39e2fc77528af361adb87259f8a8511434004
24578 +directory = zlib-1.2.12
24579 +source_url = http://zlib.net/fossils/zlib-1.2.12.tar.gz
24580 +source_filename = zlib-1.2.12.tar.gz
24582 +patch_filename = zlib_1.2.12-1_patch.zip
24583 +patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.12-1/get_patch
24588 diff --git a/src/third_party/harfbuzz-ng/BUILD.gn b/src/third_party/harfbuzz-ng/BUILD.gn
24590 --- a/src/third_party/harfbuzz-ng/BUILD.gn
24591 +++ b/src/third_party/harfbuzz-ng/BUILD.gn
24592 @@ -91,6 +91,7 @@ if (use_system_harfbuzz) {
24593 "src/src/hb-buffer-deserialize-json.hh",
24594 "src/src/hb-buffer-deserialize-text.hh",
24595 "src/src/hb-buffer-serialize.cc",
24596 + "src/src/hb-buffer-verify.cc",
24597 "src/src/hb-buffer.cc",
24598 "src/src/hb-buffer.hh",
24599 "src/src/hb-cache.hh",
24600 @@ -118,7 +119,6 @@ if (use_system_harfbuzz) {
24601 "src/src/hb-map.cc",
24602 "src/src/hb-map.hh",
24603 "src/src/hb-meta.hh",
24604 - "src/src/hb-ms-feature-ranges.cc",
24605 "src/src/hb-ms-feature-ranges.hh",
24606 "src/src/hb-mutex.hh",
24607 "src/src/hb-null.hh",
24608 @@ -256,6 +256,8 @@ if (use_system_harfbuzz) {
24609 "src/src/hb-subset-input.hh",
24610 "src/src/hb-subset-plan.cc",
24611 "src/src/hb-subset-plan.hh",
24612 + "src/src/hb-subset-repacker.cc",
24613 + "src/src/hb-subset-repacker.h",
24614 "src/src/hb-subset.cc",
24615 "src/src/hb-subset.hh",
24616 "src/src/hb-ucd-table.hh",
24617 @@ -312,11 +314,6 @@ if (use_system_harfbuzz) {
24621 - # TODO(https://crbug.com/992390): Don't use the HarfBuzz metrics
24622 - # implementation, as we're retrieving metrics from Skia. Consider using this
24623 - # implementation at least for vertical metrics.
24624 - "HB_NO_METRICS",
24625 -
24626 # Disable .fon file support, not needed for Chrome, and code behind this
24629 @@ -324,6 +321,15 @@ if (use_system_harfbuzz) {
24633 + # No experimental font format extensions yet.
24644 # stricter warning under -Wfoowarning-subgroup. HarfBuzz pragma-enables
24645 @@ -352,15 +358,17 @@ if (use_system_harfbuzz) {
24649 -
24652 # the same time. This can cause issues for libraries that indirectly
24653 - # load harfbuzz like pango (see https://crbug.com/1146397), so include
24654 - # metrics symbols to prevent pango from using the system library.
24659 + # https://github.com/harfbuzz/harfbuzz/issues/3482 - if that changes
24663 - defines -= [ "HB_NO_METRICS" ]
24667 diff --git a/src/third_party/harfbuzz-ng/README.chromium b/src/third_party/harfbuzz-ng/README.chrom…
24669 --- a/src/third_party/harfbuzz-ng/README.chromium
24670 +++ b/src/third_party/harfbuzz-ng/README.chromium
24671 @@ -1,10 +1,10 @@
24672 Name: harfbuzz-ng
24673 Short Name: harfbuzz-ng
24675 -Version: 3.2.0-50
24676 -CPEPrefix: cpe:/a:harfbuzz_project:harfbuzz:3.2.0
24677 -Date: 20220113
24678 -Revision: 0acf466c44143de2e9b9cc0375cb25ec67cb132f
24679 +Version: 4.1.0-33
24686 diff --git a/src/third_party/harfbuzz-ng/fuzz/hb_shape_fuzzer.cc b/src/third_party/harfbuzz-ng/fuzz…
24688 --- a/src/third_party/harfbuzz-ng/fuzz/hb_shape_fuzzer.cc
24689 +++ b/src/third_party/harfbuzz-ng/fuzz/hb_shape_fuzzer.cc
24690 @@ -11,7 +11,8 @@
24691 #include <hb-ot.h>
24692 // clang-format on
24694 -#include "base/cxx17_backports.h"
24697 #include "third_party/harfbuzz-ng/utils/hb_scoped.h"
24700 @@ -40,7 +41,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
24702 memcpy(text32, data + size - sizeof(text32), sizeof(text32));
24704 - hb_buffer_add_utf32(buffer.get(), text32, base::size(text32), 0, -1);
24705 + hb_buffer_add_utf32(buffer.get(), text32, std::size(text32), 0, -1);
24709 diff --git a/src/third_party/harfbuzz-ng/fuzz/hb_subset_fuzzer.cc b/src/third_party/harfbuzz-ng/fuz…
24711 --- a/src/third_party/harfbuzz-ng/fuzz/hb_subset_fuzzer.cc
24712 +++ b/src/third_party/harfbuzz-ng/fuzz/hb_subset_fuzzer.cc
24713 @@ -11,8 +11,9 @@
24714 #include <hb-subset.h>
24715 // clang-format on
24720 -#include "base/cxx17_backports.h"
24721 #include "third_party/harfbuzz-ng/utils/hb_scoped.h"
24724 @@ -88,14 +89,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
24728 - TrySubset(face.get(), text, base::size(text), subset_flags);
24733 memcpy(text_from_data, data + size - sizeof(text_from_data),
24735 subset_flags = data[size - sizeof(text_from_data) - 1];
24736 - size_t text_size = base::size(text_from_data);
24741 diff --git a/src/third_party/harfbuzz-ng/src/.ci/build-win32.sh b/src/third_party/harfbuzz-ng/src/.…
24743 --- a/src/third_party/harfbuzz-ng/src/.ci/build-win32.sh
24744 +++ b/src/third_party/harfbuzz-ng/src/.ci/build-win32.sh
24745 @@ -3,7 +3,6 @@ set -e
24747 meson --cross-file=.ci/win32-cross-file.txt \
24748 --wrap-mode=forcefallback \
24749 - --buildtype=release \
24750 -Dtests=disabled \
24751 -Dcairo=enabled \
24752 -Dcairo:fontconfig=disabled \
24753 diff --git a/src/third_party/harfbuzz-ng/src/.ci/build-win64.sh b/src/third_party/harfbuzz-ng/src/.…
24755 --- a/src/third_party/harfbuzz-ng/src/.ci/build-win64.sh
24756 +++ b/src/third_party/harfbuzz-ng/src/.ci/build-win64.sh
24757 @@ -3,7 +3,6 @@ set -e
24759 meson --cross-file=.ci/win64-cross-file.txt \
24760 --wrap-mode=forcefallback \
24761 - --buildtype=release \
24762 -Dtests=disabled \
24763 -Dcairo=enabled \
24764 -Dcairo:fontconfig=disabled \
24765 diff --git a/src/third_party/harfbuzz-ng/src/BUILD.md b/src/third_party/harfbuzz-ng/src/BUILD.md
24767 --- a/src/third_party/harfbuzz-ng/src/BUILD.md
24768 +++ b/src/third_party/harfbuzz-ng/src/BUILD.md
24769 @@ -18,7 +18,8 @@ meson like above.
24772 …or gcc/clang is already on your path, and if you use something like `meson build --wrap-mode=defau…
24773 -it fetches and compiles most of the dependencies also.
24779 diff --git a/src/third_party/harfbuzz-ng/src/NEWS b/src/third_party/harfbuzz-ng/src/NEWS
24781 --- a/src/third_party/harfbuzz-ng/src/NEWS
24782 +++ b/src/third_party/harfbuzz-ng/src/NEWS
24783 @@ -1,7 +1,201 @@
24787 +- Various OSS-Fuzz fixes. (Behdad Esfahbod)
24788 +- Make fallback vertical-origin match FreeType’s. (Behdad Esfahbod)
24789 +- Treat visible viramas like dependent vowels in USE shaper. (David Corbett)
24790 +- Apply presentation forms features and discretionary features in one go in
24793 +- Various bug fixes.
24795 +- New API
24801 +- Update OpenType to AAT mappings for “hist” and “vrtr” features.
24803 +- Update IANA Language Subtag Registry to 2022-03-02. (David Corbett)
24804 +- Update USE shaper to allow any non-numeric tail in a symbol cluster, and
24806 +- Fix handling of baseline variations to return correctly scaled values.
24808 +- A new experimental hb_subset_repack_or_fail() to repack an array of objects,
24812 +- New experimental API
24821 +- New public API to create subset plan and gather information on things like
24824 +- Draw API for extracting glyph shapes have been extended and finalized and is
24825 + no longer an experimental API. The draw API supports glyf, CFF and CFF2
24828 + previous, non-public, experimental API. (Behdad Esfahbod)
24829 +- The hb-view tool will use HarfBuzz draw API to render the glyphs instead of
24830 + cairo-ft when compiled with Cairo 1.17.5 or newer, setting HB_DRAW
24833 +- The hb-shape and hb-view tools now default to using HarfBuzz’s own font
24835 + option, --font-slant, to apply synthetic slant to the font. (Behdad Esfahbod)
24836 +- HarfBuzz now supports more than 65535 (the OpenType limit) glyph shapes and
24837 + metrics. See https://github.com/be-fonts/boring-expansion-spec/issues/6 and
24838 + https://github.com/be-fonts/boring-expansion-spec/issues/7 for details.
24840 +- New API to get the dominant horizontal baseline tag for a given script.
24842 +- New API to get the baseline positions from the font, and synthesize missing
24845 +- Improvements to finding dependencies on Windows when building with Visual
24846 + Studio. (Chun-wei Fan)
24847 +- New buffer flag, HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT, that must be set
24848 + during shaping for HB_GLYPH_FLAG_UNSAFE_TO_CONCAT flag to be reliably
24851 +- Documentation improvements. (Matthias Clasen)
24853 +- New API
24854 + - General:
24858 + - Draw:
24886 + - OpenType layout
24892 + - Metrics:
24895 + - Subset:
24911 +- Perform sanity checks on shaping results is now part of “harfbuzz” library
24914 +- Arabic Mark Transient Reordering Algorithm have been updated to revision 6.
24916 +- ISO 15924 code for mathematical notation, ‘Zmth’, now maps to the OpenType
24918 +- It is now possible to get at once all math kerning values for a given glyph
24920 +- Fix locale_t portability issues on systems the typedef’s it to a void
24923 +- New API:
24930 +- Deprecated API
24937 +- Revert splitting of pair positioning values introduced in 3.3.0 as it proved
24944 +- Fix heap-use-after-free in harfbuzz-subset introduced in previous release.
24951 +- Improved documentation. (Matthias Clasen)
24952 +- Internal code cleanup, using C++ standard library more. (Behdad Esfahbod)
24953 +- The low 16-bits of face index will be used by hb_face_create() to select a
24954 + face inside a font collection file format, while the high 16-bits will be
24956 +- Glyph positions and other font metrics now apply synthetic slant set by
24957 + hb_font_set_synthetic_slant(), for improved positioning for synthetically
24959 +- Fixed unintentional locale dependency in hb_variation_to_string() for decimal
24961 +- When applying pair positioning (kerning) the positioning value is split
24962 + between the two sides of the pair for improved cursor positioning between
24964 +- Introduced new HB_GLYPH_FLAG_UNSAFE_TO_CONCAT, to be used in conjunction
24965 + with HB_GLYPH_FLAG_UNSAFE_TO_BREAK for optimizing re-shaping during line
24966 + breaking. Check the documentation for further details. (Behdad Esfahbod)
24967 +- Improved handling of macrolanguages when mapping BCP 47 codes to OpenType
24970 +- New API:
24982 -
24984 - Fixed shaping of Apple Color Emoji flags in right-to-left context. (Behdad Esfahbod)
24985 - Fixed positioning of CFF fonts in HB_TINY profile. (Behdad Esfahbod)
24986 @@ -384,7 +578,7 @@ Friday, May 24, 2019
24987 code-base changes. We now require C++11. Support for gcc 4.8 and earlier has been
24989 - New hb-config.hh facility for compiling smaller library for embedded and web usecases.
24990 -- New Unicode Character Databse implementation that is half the size of previously-used
24991 +- New Unicode Character Database implementation that is half the size of previously-used
24993 - Subsetter improvements.
24994 - Improved documentation, thanks to Nathan Willis.
24995 @@ -1232,7 +1426,7 @@ Thursday, February 25, 2016
24996 due to bug in glyph class of ASCII double-quote character. This should
24999 - This fourth release in a week should finally stablize things...
25002 - hb-ot-font's get_glyph() implementation saw some optimizations. Though,
25003 might be really hard to measure in real-world situations.
25004 @@ -2280,7 +2474,7 @@ o Changed API:
25005 - hb_buffer_create() takes zero arguments now.
25006 Use hb_buffer_pre_allocate() to pre-allocate.
25008 - - hb_buffer_add_utf*() now accept -1 for length parameteres,
25009 + - hb_buffer_add_utf*() now accept -1 for length parameters,
25010 meaning "nul-terminated".
25012 - hb_direction_t enum values changed.
25013 diff --git a/src/third_party/harfbuzz-ng/src/RELEASING.md b/src/third_party/harfbuzz-ng/src/RELEASI…
25015 --- a/src/third_party/harfbuzz-ng/src/RELEASING.md
25016 +++ b/src/third_party/harfbuzz-ng/src/RELEASING.md
25017 @@ -28,7 +28,7 @@
25018 …- [ ] Commit NEWS, meson.build, configure.ac, and src/hb-version.h, as well as any REPLACEME chang…
25021 -- [ ] Do a `meson dist -Cbuild` that runs the tests against the latest commited changes.
25022 +- [ ] Do a `meson dist -Cbuild` that runs the tests against the latest committed changes.
25025 - [ ] Tag the release and sign it: e.g. `git tag -s 1.4.7 -m 1.4.7`.
25026 diff --git a/src/third_party/harfbuzz-ng/src/TODO b/src/third_party/harfbuzz-ng/src/TODO
25029 --- a/src/third_party/harfbuzz-ng/src/TODO
25031 @@ -1,28 +0,0 @@
25032 -API issues:
25033 -===========
25034 -
25035 -- API to accept a list of languages?
25036 -
25037 -- Remove hb_ot_shape_glyphs_closure()?
25038 -
25039 -
25040 -API additions
25041 -=============
25042 -
25043 -- Language to/from script.
25044 -
25045 -- Add hb-cairo glue
25046 -
25047 -- Add sanitize API.
25048 -
25049 -- Add query / enumeration API for aalt-like features?
25050 -
25051 -- Add segmentation API
25052 -
25053 -- Add hb-fribidi glue?
25054 -
25055 -
25056 -hb-view / hb-shape enhancements:
25057 -===============================
25058 -
25059 -- Add --width, --height, --auto-size, --ink-box, --align, etc?
25060 diff --git a/src/third_party/harfbuzz-ng/src/configure.ac b/src/third_party/harfbuzz-ng/src/configu…
25062 --- a/src/third_party/harfbuzz-ng/src/configure.ac
25063 +++ b/src/third_party/harfbuzz-ng/src/configure.ac
25064 @@ -1,6 +1,6 @@
25067 - [3.2.0],
25072 @@ -194,6 +194,10 @@ AC_ARG_WITH(cairo,
25074 if test "x$with_cairo" = "xyes" -o "x$with_cairo" = "xauto"; then
25081 if test "x$with_cairo" = "xyes" -a "x$have_cairo" != "xtrue"; then
25083 diff --git a/src/third_party/harfbuzz-ng/src/docs/Makefile.am b/src/third_party/harfbuzz-ng/src/doc…
25085 --- a/src/third_party/harfbuzz-ng/src/docs/Makefile.am
25086 +++ b/src/third_party/harfbuzz-ng/src/docs/Makefile.am
25087 @@ -83,7 +83,7 @@ content_files= \
25088 usermanual-integration.xml \
25091 -# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
25092 +# SGML files where gtk-doc abbreviations (#GtkWidget) are expanded
25096 diff --git a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-docs.xml b/src/third_party/harfbuzz-ng/s…
25098 --- a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-docs.xml
25099 +++ b/src/third_party/harfbuzz-ng/src/docs/harfbuzz-docs.xml
25100 @@ -56,6 +56,7 @@
25101 <xi:include href="xml/hb-blob.xml"/>
25102 <xi:include href="xml/hb-buffer.xml"/>
25103 <xi:include href="xml/hb-common.xml"/>
25104 + <xi:include href="xml/hb-draw.xml"/>
25105 <xi:include href="xml/hb-deprecated.xml"/>
25106 <xi:include href="xml/hb-face.xml"/>
25107 <xi:include href="xml/hb-font.xml"/>
25108 @@ -116,6 +117,10 @@
25109 …<index id="api-index-full"><title>API Index</title><xi:include href="xml/api-index-full.xml"><xi:f…
25110 …<index id="deprecated-api-index" role="deprecated"><title>Index of deprecated API</title><xi:inclu…
25112 + <index id="api-index-4-1-0" role="4.1.0"><title>Index of new symbols in 4.1.0</title><xi:inc…
25113 + <index id="api-index-4-0-0" role="4.0.0"><title>Index of new symbols in 4.0.0</title><xi:inc…
25114 + <index id="api-index-3-4-0" role="3.4.0"><title>Index of new symbols in 3.4.0</title><xi:inc…
25115 + <index id="api-index-3-3-0" role="3.3.0"><title>Index of new symbols in 3.3.0</title><xi:inc…
25116 …<index id="api-index-3-1-0" role="3.1.0"><title>Index of new symbols in 3.1.0</title><xi:include h…
25117 …<index id="api-index-3-0-0" role="3.0.0"><title>Index of new symbols in 3.0.0</title><xi:include h…
25118 …<index id="api-index-2-9-1" role="2.9.1"><title>Index of new symbols in 2.9.1</title><xi:include h…
25119 @@ -138,7 +143,6 @@
25120 …<index id="api-index-1-8-1" role="1.8.1"><title>Index of new symbols in 1.8.1</title><xi:include h…
25121 …<index id="api-index-1-8-0" role="1.8.0"><title>Index of new symbols in 1.8.0</title><xi:include h…
25122 …<index id="api-index-1-7-7" role="1.7.7"><title>Index of new symbols in 1.7.7</title><xi:include h…
25123 - <index id="api-index-1-7-5" role="1.7.5"><title>Index of new symbols in 1.7.5</title><xi:inc…
25124 …<index id="api-index-1-7-2" role="1.7.2"><title>Index of new symbols in 1.7.2</title><xi:include h…
25125 …<index id="api-index-1-6-0" role="1.6.0"><title>Index of new symbols in 1.6.0</title><xi:include h…
25126 …<index id="api-index-1-5-0" role="1.5.0"><title>Index of new symbols in 1.5.0</title><xi:include h…
25127 diff --git a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-sections.txt b/src/third_party/harfbuzz-…
25129 --- a/src/third_party/harfbuzz-ng/src/docs/harfbuzz-sections.txt
25130 +++ b/src/third_party/harfbuzz-ng/src/docs/harfbuzz-sections.txt
25131 @@ -169,6 +169,7 @@ HB_FEATURE_GLOBAL_START
25139 @@ -183,6 +184,33 @@ HB_DEPRECATED
25144 +<FILE>hb-draw</FILE>
25171 <FILE>hb-deprecated</FILE>
25173 @@ -191,6 +219,7 @@ HB_SCRIPT_CANADIAN_ABORIGINAL
25181 @@ -280,6 +309,7 @@ hb_font_funcs_set_glyph_h_advances_func
25189 @@ -317,6 +347,8 @@ hb_font_get_glyph_name
25198 @@ -503,7 +535,9 @@ hb_ot_layout_feature_get_lookups
25208 @@ -531,20 +565,15 @@ hb_ot_layout_table_get_lookup_count
25212 -<SUBSECTION Private>
25213 -Xhb_ot_layout_lookup_enumerate_sequences
25214 -Xhb_ot_layout_lookup_position
25215 -Xhb_ot_layout_lookup_substitute
25216 -hb_ot_layout_glyph_sequence_t
25217 -hb_ot_layout_glyph_sequence_func_t
25221 <FILE>hb-ot-math</FILE>
25223 -HB_OT_MATH_SCRIPT
25231 @@ -553,6 +582,7 @@ hb_ot_math_get_constant
25239 @@ -570,6 +600,7 @@ hb_ot_meta_reference_entry
25240 <FILE>hb-ot-metrics</FILE>
25247 @@ -606,6 +637,7 @@ hb_ot_var_normalize_coords
25255 @@ -626,6 +658,7 @@ hb_set_is_equal
25263 @@ -725,6 +758,7 @@ hb_style_get_value
25271 @@ -736,4 +770,17 @@ hb_subset_input_unicode_set
25289 diff --git a/src/third_party/harfbuzz-ng/src/docs/repacker.md b/src/third_party/harfbuzz-ng/src/doc…
25291 --- a/src/third_party/harfbuzz-ng/src/docs/repacker.md
25292 +++ b/src/third_party/harfbuzz-ng/src/docs/repacker.md
25293 @@ -40,7 +40,7 @@ Other implementations exist, such as in
25297 -* Subtable Graph: a table's internal structure is abstraced out into a lightweight graph
25302 @@ -54,7 +54,7 @@ There's four key pieces to the harfbuzz approach:
25306 -* Offset resolution strategies: given a particular occurence of an overflow these strategies
25311 @@ -111,7 +111,7 @@ to be as fast as possible. There's a few things that are done to speed up subseq
25315 - portion of boths sorts. Where possible when the graph is modified we manually update the cached
25320 @@ -165,7 +165,7 @@ The above is an ideal situation where the subgraphs are disconnected from each o
25324 -* That subgraph can be treated as an indepedent unit and all nodes of the subgraph packed in isol…
25329 @@ -217,7 +217,7 @@ and then assign each such subgraph to a unique non-zero space. The algorithm is
25332 For each overflow in each iteration the algorithm will attempt to apply offset overflow resolution
25333 -strategies to eliminate the overflow. The type of strategy applied is dependant on the characteris…
25338 @@ -235,7 +235,7 @@ of the overflowing link:
25340 …s defined using generic graphs: https://github.com/harfbuzz/harfbuzz/blob/main/src/test-repacker.cc
25342 -# Future Improvments
25345 The above resolution strategies are not sufficient to resolve all overflows. For example consider
25347 diff --git a/src/third_party/harfbuzz-ng/src/docs/serializer.md b/src/third_party/harfbuzz-ng/src/d…
25350 --- /dev/null
25351 +++ b/src/third_party/harfbuzz-ng/src/docs/serializer.md
25352 @@ -0,0 +1,178 @@
25355 +In hb-subset serialization is the process of writing the subsetted font
25358 +([hb_serialize_context_t](https://github.com/harfbuzz/harfbuzz/blob/main/src/hb-serialize.hh)).
25360 +Internally the serialize context holds a fixed size memory buffer. For simple
25378 ++-------+-------+-----+-------+--------------+
25380 ++-------+-------+-----+-------+--------------+
25394 +|- in progress objects -| |--- packed objects --|
25395 ++-----------+-----------+--------------+-------+-----+-------+
25397 ++-----------+-----------+--------------+-------+-----+-------+
25398 +|-----------------------> <---------------------|
25415 ++---------+--------------+---------+-------+-----+-------+
25417 ++---------+--------------+---------+-------+-----+-------+
25431 +### Object De-duplication
25433 +An important optimization in packing offset graphs is de-duplicating equivalent objects. If you
25451 +fields. Prior to this point all links in the graph have been recorded using object id's. For each
25468 +a--b--d
25490 +ctx->push();
25491 +root* a = ctx->start_embed<root> ();
25492 +ctx->extend_min (a);
25493 +a->name = 'a';
25496 +ctx->push();
25497 +child* b = ctx->start_embed<child> ();
25498 +ctx->extend_min (b);
25499 +b->name = 'b';
25502 +ctx->push();
25503 +*ctx->allocate_size<char> (1) = 'd';
25504 +unsigned d_id = ctx->pop_pack ();
25506 +ctx->add_link (b->leaf, d_id);
25507 +unsigned b_id = ctx->pop_pack ();
25510 +ctx->push();
25511 +child* c = ctx->start_embed<child> ();
25512 +ctx->extend_min (c);
25513 +c->name = 'c';
25516 +ctx->push();
25517 +*ctx->allocate_size<char> (1) = 'd';
25518 +d_id = ctx->pop_pack (); // Serializer will automatically de-dup this with the previous 'd'
25520 +ctx->add_link (c->leaf, d_id);
25521 +unsigned c_id = ctx->pop_pack ();
25524 +ctx->add_link (a->child_1, b_id);
25525 +ctx->add_link (a->child_2, c_id);
25526 +ctx->pop_pack ();
25528 +ctx->end_serialize ();
25531 diff --git a/src/third_party/harfbuzz-ng/src/docs/usermanual-integration.xml b/src/third_party/harf…
25533 --- a/src/third_party/harfbuzz-ng/src/docs/usermanual-integration.xml
25534 +++ b/src/third_party/harfbuzz-ng/src/docs/usermanual-integration.xml
25535 @@ -347,7 +347,7 @@
25539 - Your client program only needs to ensure that it coverts
25541 correctly between HarfBuzz's low-level data types (such as
25544 @@ -445,7 +445,7 @@
25545 is slightly lower-level than Core Text, provides
25548 - <ulink url="https://developer.apple.com/documentation/coretext/ctfont-q6r"><type>CTFontRef</…
25549 + <ulink url="https://developer.apple.com/documentation/coretext/ctfont-q6r"><type>CTFontRef</…
25553 diff --git a/src/third_party/harfbuzz-ng/src/docs/usermanual-object-model.xml b/src/third_party/har…
25555 --- a/src/third_party/harfbuzz-ng/src/docs/usermanual-object-model.xml
25556 +++ b/src/third_party/harfbuzz-ng/src/docs/usermanual-object-model.xml
25557 @@ -12,7 +12,7 @@
25558 HarfBuzz features two kinds of data types: non-opaque,
25559 pass-by-value types and opaque, heap-allocated types. This kind
25561 - API/ABI compatibility (almost) indefinitely.
25565 <emphasis>Value types:</emphasis> The non-opaque, pass-by-value
25566 @@ -32,8 +32,8 @@
25569 methods for such structs, allowing users of the API do
25570 - effectively deal with the type without having to
25571 - adapt their code to future changes.
25577 @@ -42,7 +42,7 @@
25581 -
25583 <section id="object-model-object-types">
25586 @@ -63,13 +63,17 @@
25590 - <function>hb_buffer_destroy()</function> to dereference.
25599 + Note that many object types can be marked as read-only or immutable,
25600 + facilitating their use in multi-threaded environments.
25605 @@ -110,11 +114,11 @@
25609 -
25613 -
25614 -
25617 <section id="object-model-lifecycle">
25620 @@ -131,7 +135,7 @@
25624 - program is finished with an object, it should call its
25629 @@ -141,8 +145,8 @@
25630 All of HarfBuzz's object-lifecycle-management APIs are
25631 thread-safe (unless you compiled HarfBuzz from source with the
25633 - object as a whole is not thread-safe.
25634 - It is also permissible to <function>reference()</function> or to
25635 + object as a whole is not thread-safe.
25640 @@ -160,7 +164,7 @@
25644 - Reference manual for specifics.
25645 + Reference manual for specifics.
25648 Note also that there are no "make mutable" methods. If client
25649 @@ -187,7 +191,7 @@
25653 -
25655 <section id="object-model-user-data">
25658 @@ -195,7 +199,7 @@
25660 arbitrary data to the object. User-data attachment can be
25661 useful for tying the lifecycles of various pieces of data
25662 - together, or for creating language bindings.
25663 + together, or for creating language bindings.
25667 @@ -220,10 +224,10 @@
25671 - </section>
25676 -
25677 -
25678 <section id="object-model-blobs">
25681 @@ -238,9 +242,9 @@
25685 - This allows you to take advantage of HarffBuzz's
25687 reference-counting and <function>destroy</function>
25688 - callbacks. If you allocated the memory for the data using
25689 + callbacks. If you allocated the memory for the data using
25693 @@ -251,8 +255,12 @@
25696 about freeing memory and let the reference-counting machinery
25697 - take care of that.
25701 + Most of the time, blobs are read-only, facilitating their use in
25705 -
25708 diff --git a/src/third_party/harfbuzz-ng/src/meson.build b/src/third_party/harfbuzz-ng/src/meson.bu…
25710 --- a/src/third_party/harfbuzz-ng/src/meson.build
25711 +++ b/src/third_party/harfbuzz-ng/src/meson.build
25712 @@ -1,6 +1,6 @@
25713 project('harfbuzz', 'c', 'cpp',
25715 - version: '3.2.0',
25718 'cpp_rtti=false', # Just to support msvc, we are passing -fno-exceptions also anyway
25720 @@ -57,6 +57,12 @@ if host_machine.cpu_family() == 'arm' and cpp.alignment('struct { char c; }') !=
25725 + add_project_arguments(cpp.get_supported_arguments([
25726 + '-Wa,-mbig-obj'
25727 + ]), language : 'cpp')
25733 @@ -77,52 +83,31 @@ check_funcs = [
25735 m_dep = cpp.find_library('m', required: false)
25737 -freetype_dep = null_dep
25738 -if not get_option('freetype').disabled()
25739 - freetype_dep = dependency('freetype2', required: false)
25740 -
25741 - if (not freetype_dep.found() and
25742 - cpp.get_id() == 'msvc' and
25743 - cpp.has_header('ft2build.h'))
25744 - freetype_dep = cpp.find_library('freetype', required: false)
25745 - endif
25746 -
25747 - if not freetype_dep.found()
25748 - # https://github.com/harfbuzz/harfbuzz/pull/2498
25749 - freetype_dep = dependency('freetype2', required: get_option('freetype'),
25750 - fallback: ['freetype2', 'freetype_dep'],
25751 - default_options: ['harfbuzz=disabled'])
25752 - endif
25753 -endif
25755 +freetype_dep = dependency(cpp.get_argument_syntax() == 'msvc' ? 'freetype' : 'freetype2',
25759 -glib_dep = dependency('glib-2.0', required: get_option('glib'),
25760 - fallback: ['glib', 'libglib_dep'])
25761 -gobject_dep = dependency('gobject-2.0', required: get_option('gobject'),
25762 - fallback: ['glib', 'libgobject_dep'])
25763 +glib_dep = dependency('glib-2.0', required: get_option('glib'))
25764 +gobject_dep = dependency('gobject-2.0', required: get_option('gobject'))
25768 -icu_dep = null_dep
25769 -if not get_option('icu').disabled()
25770 - icu_dep = dependency('icu-uc', required: false)
25771 -
25772 - if (not icu_dep.found() and
25773 - cpp.get_id() == 'msvc' and
25774 - cpp.has_header('unicode/uchar.h') and
25775 - cpp.has_header('unicode/unorm2.h') and
25776 - cpp.has_header('unicode/ustring.h') and
25777 - cpp.has_header('unicode/utf16.h') and
25778 - cpp.has_header('unicode/uversion.h') and
25779 - cpp.has_header('unicode/uscript.h'))
25780 - if get_option('buildtype') == 'debug'
25781 - icu_dep = cpp.find_library('icuucd', required: false)
25782 - else
25783 - icu_dep = cpp.find_library('icuuc', required: false)
25784 - endif
25785 - endif
25786 +if cpp.get_argument_syntax() == 'msvc'
25792 + icu_dep = dependency('icu-uc',
25794 + method: 'pkg-config')
25797 - if not icu_dep.found()
25798 - icu_dep = dependency('icu-uc', required: get_option('icu'))
25802 + add_project_arguments(icu_defs, language: ['c', 'cpp'])
25806 @@ -148,8 +133,8 @@ if not get_option('cairo').disabled()
25810 - cairo_dep = dependency('cairo', fallback: 'cairo', required: get_option('cairo'))
25811 - cairo_ft_dep = dependency('cairo-ft', fallback: 'cairo', required: get_option('cairo'))
25813 + cairo_ft_dep = dependency('cairo-ft', required: get_option('cairo'))
25817 @@ -176,6 +161,11 @@ endif
25829 diff --git a/src/third_party/harfbuzz-ng/src/perf/perf.cc b/src/third_party/harfbuzz-ng/src/perf/pe…
25831 --- a/src/third_party/harfbuzz-ng/src/perf/perf.cc
25832 +++ b/src/third_party/harfbuzz-ng/src/perf/perf.cc
25833 @@ -8,9 +8,7 @@
25836 #include "perf-extents.hh"
25837 -#ifdef HB_EXPERIMENTAL_API
25838 #include "perf-draw.hh"
25840 -#endif
25843 diff --git a/src/third_party/harfbuzz-ng/src/src/Makefile.am b/src/third_party/harfbuzz-ng/src/src/…
25845 --- a/src/third_party/harfbuzz-ng/src/src/Makefile.am
25846 +++ b/src/third_party/harfbuzz-ng/src/src/Makefile.am
25847 @@ -345,15 +345,17 @@ test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
25849 test-algs \
25850 test-array \
25851 + test-bimap \
25852 test-iter \
25853 + test-machinery \
25854 test-map \
25855 test-number \
25856 test-ot-tag \
25857 test-priority-queue \
25858 test-set \
25859 + test-serialize \
25860 test-unicode-ranges \
25861 test-vector \
25862 - test-bimap \
25863 test-repacker \
25865 COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG
25866 @@ -369,18 +371,18 @@ test_array_SOURCES = test-array.cc
25870 -test_priority_queue_SOURCES = test-priority-queue.cc hb-static.cc
25871 -test_priority_queue_CPPFLAGS = $(HBCFLAGS)
25872 -test_priority_queue_LDADD = libharfbuzz.la $(HBLIBS)
25873 -
25874 -test_repacker_SOURCES = test-repacker.cc hb-static.cc
25875 -test_repacker_CPPFLAGS = $(HBCFLAGS)
25876 -test_repacker_LDADD = libharfbuzz.la libharfbuzz-subset.la $(HBLIBS)
25877 +test_bimap_SOURCES = test-bimap.cc hb-static.cc
25881 test_iter_SOURCES = test-iter.cc hb-static.cc
25885 +test_machinery_SOURCES = test-machinery.cc hb-static.cc
25889 test_map_SOURCES = test-map.cc hb-static.cc
25892 @@ -393,10 +395,22 @@ test_ot_tag_SOURCES = hb-ot-tag.cc
25896 +test_priority_queue_SOURCES = test-priority-queue.cc hb-static.cc
25900 +test_repacker_SOURCES = test-repacker.cc hb-static.cc
25902 +test_repacker_LDADD = libharfbuzz.la libharfbuzz-subset.la $(HBLIBS)
25904 test_set_SOURCES = test-set.cc hb-static.cc
25908 +test_serialize_SOURCES = test-serialize.cc hb-static.cc
25912 test_unicode_ranges_SOURCES = test-unicode-ranges.cc
25915 @@ -405,10 +419,6 @@ test_vector_SOURCES = test-vector.cc hb-static.cc
25919 -test_bimap_SOURCES = test-bimap.cc hb-static.cc
25920 -test_bimap_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
25921 -test_bimap_LDADD = $(COMPILED_TESTS_LDADD)
25922 -
25924 check-c-linkage-decls.py \
25925 check-externs.py \
25926 diff --git a/src/third_party/harfbuzz-ng/src/src/Makefile.sources b/src/third_party/harfbuzz-ng/src…
25928 --- a/src/third_party/harfbuzz-ng/src/src/Makefile.sources
25929 +++ b/src/third_party/harfbuzz-ng/src/src/Makefile.sources
25930 @@ -25,6 +25,7 @@ HB_BASE_sources = \
25931 hb-blob.cc \
25932 hb-blob.hh \
25933 hb-buffer-serialize.cc \
25934 + hb-buffer-verify.cc \
25935 hb-buffer.cc \
25936 hb-buffer.hh \
25937 hb-cache.hh \
25938 @@ -50,7 +51,6 @@ HB_BASE_sources = \
25939 hb-map.cc \
25940 hb-map.hh \
25941 hb-meta.hh \
25942 - hb-ms-feature-ranges.cc \
25943 hb-ms-feature-ranges.hh \
25944 hb-mutex.hh \
25945 hb-null.hh \
25946 @@ -88,6 +88,28 @@ HB_BASE_sources = \
25947 hb-ot-layout-gdef-table.hh \
25948 hb-ot-layout-gpos-table.hh \
25949 hb-ot-layout-gsub-table.hh \
25972 hb-ot-layout-gsubgpos.hh \
25973 hb-ot-layout-jstf-table.hh \
25974 hb-ot-layout.cc \
25975 @@ -275,6 +297,7 @@ HB_SUBSET_sources = \
25976 hb-subset-input.hh \
25977 hb-subset-plan.cc \
25978 hb-subset-plan.hh \
25979 + hb-subset-repacker.cc \
25980 hb-subset.cc \
25981 hb-subset.hh \
25982 hb-repacker.hh \
25983 @@ -282,6 +305,7 @@ HB_SUBSET_sources = \
25986 hb-subset.h \
25987 + hb-subset-repacker.h \
25990 HB_GOBJECT_DIST_sources = hb-gobject-structs.cc
25991 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSet.hh b/src/third_party/h…
25994 --- /dev/null
25995 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSet.hh
25996 @@ -0,0 +1,110 @@
26010 + alternates; /* Array of alternate GlyphIDs--in
26025 + { c->output->add_array (alternates.arrayZ, alternates.len); }
26028 + { c->output->add_array (alternates.arrayZ, alternates.len); }
26037 + hb_mask_t glyph_mask = c->buffer->cur().mask;
26038 + hb_mask_t lookup_mask = c->lookup_mask;
26045 + if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
26047 + /* Maybe we can do better than unsafe-to-break all; but since we are
26049 + c->buffer->unsafe_to_break (0, c->buffer->len);
26050 + alt_index = c->random_number () % count + 1;
26055 + c->replace_glyph (alternates[alt_index - 1]);
26086 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26087 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26095 + auto *out = c->serializer->start_embed (*this);
26096 + return_trace (out->serialize (c->serializer, it) &&
26097 + out->alternates);
26107 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubst.hh b/src/third_party…
26110 --- /dev/null
26111 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubst.hh
26112 @@ -0,0 +1,51 @@
26136 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
26138 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
26139 + default:return_trace (c->default_return_value ());
26149 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
26164 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubstFormat1.hh b/src/thir…
26167 --- /dev/null
26168 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/AlternateSubstFormat1.hh
26169 @@ -0,0 +1,128 @@
26183 + HBUINT16 format; /* Format identifier--format = 1 */
26185 + coverage; /* Offset to Coverage table--from
26208 + | hb_filter (c->parent_active_glyphs (), hb_first)
26220 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
26231 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
26245 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
26257 + if (unlikely (!c->extend_min (this))) return_trace (false);
26259 + for (unsigned int i = 0; i < glyphs.length; i++)
26273 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26274 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26276 + auto *out = c->serializer->start_embed (*this);
26277 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
26278 + out->format = format;
26283 + | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second)
26288 + out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
26298 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ChainContextSubst.hh b/src/third_pa…
26301 --- /dev/null
26302 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ChainContextSubst.hh
26303 @@ -0,0 +1,18 @@
26308 +#include "../../../hb-ot-layout-gsubgpos.hh"
26322 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Common.hh b/src/third_party/harfbuz…
26325 --- /dev/null
26326 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Common.hh
26327 @@ -0,0 +1,21 @@
26331 +#include "../../../hb-serialize.hh"
26332 +#include "../../../hb-ot-layout-gsubgpos.hh"
26349 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ContextSubst.hh b/src/third_party/h…
26352 --- /dev/null
26353 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ContextSubst.hh
26354 @@ -0,0 +1,18 @@
26359 +#include "../../../hb-ot-layout-gsubgpos.hh"
26373 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ExtensionSubst.hh b/src/third_party…
26376 --- /dev/null
26377 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ExtensionSubst.hh
26378 @@ -0,0 +1,22 @@
26383 +#include "../../../hb-ot-layout-gsubgpos.hh"
26401 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/GSUB.hh b/src/third_party/harfbuzz-…
26404 --- /dev/null
26405 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/GSUB.hh
26406 @@ -0,0 +1,58 @@
26411 +#include "../../../hb-ot-layout-gsubgpos.hh"
26422 + * GSUB -- Glyph Substitution
26423 + * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
26435 + hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_langsys, c->pl…
26465 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Ligature.hh b/src/third_party/harfb…
26468 --- /dev/null
26469 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Ligature.hh
26470 @@ -0,0 +1,135 @@
26485 + component; /* Array of component GlyphIDs--start
26486 + * with the second component--ordered
26502 + if (!intersects (c->glyphs)) return;
26503 + c->output->add (ligGlyph);
26508 + c->input->add_array (component.arrayZ, component.get_length ());
26509 + c->output->add (ligGlyph);
26514 + if (c->len != component.lenP1)
26517 + for (unsigned int i = 1; i < c->len; i++)
26518 + if (likely (c->glyphs[i] != component[i]))
26531 + /* Special-case to make it in-place and not consider this
26535 + c->replace_glyph (ligGlyph);
26552 + c->buffer->unsafe_to_concat (c->buffer->idx, match_end);
26573 + if (unlikely (!c->extend_min (this))) return_trace (false);
26582 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26583 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26587 + c->serializer->add_virtual_link (coverage_idx);
26594 + auto *out = c->serializer->start_embed (*this);
26595 + return_trace (out->serialize (c->serializer,
26606 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSet.hh b/src/third_party/ha…
26609 --- /dev/null
26610 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSet.hh
26611 @@ -0,0 +1,118 @@
26677 + for (unsigned int i = 0; i < num_ligs; i++)
26689 + hb_array_t<const HBGlyphID16> &component_list /* Starting from second for each l…
26692 + if (unlikely (!c->extend_min (this))) return_trace (false);
26694 + for (unsigned int i = 0; i < ligatures.length; i++)
26696 + unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
26709 + auto *out = c->serializer->start_embed (*this);
26710 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
26713 + | hb_filter (subset_offset_array (c, out->ligature, this, coverage_idx))
26717 + if (bool (out->ligature))
26719 + c->serializer->add_virtual_link (coverage_idx);
26721 + return_trace (bool (out->ligature));
26730 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubst.hh b/src/third_party/…
26733 --- /dev/null
26734 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubst.hh
26735 @@ -0,0 +1,59 @@
26759 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
26761 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
26762 + default:return_trace (c->default_return_value ());
26771 + hb_array_t<const HBGlyphID16> component_list /* Starting from second for each li…
26774 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
26795 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubstFormat1.hh b/src/third…
26798 --- /dev/null
26799 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/LigatureSubstFormat1.hh
26800 @@ -0,0 +1,165 @@
26814 + HBUINT16 format; /* Format identifier--format = 1 */
26816 + coverage; /* Offset to Coverage table--from
26848 + | hb_filter (c->parent_active_glyphs (), hb_first)
26860 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
26873 + unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
26884 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
26896 + hb_array_t<const HBGlyphID16> component_list /* Starting from second for each li…
26899 + if (unlikely (!c->extend_min (this))) return_trace (false);
26901 + for (unsigned int i = 0; i < first_glyphs.length; i++)
26918 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
26919 + const hb_map_t &glyph_map = *c->plan->glyph_map;
26921 + auto *out = c->serializer->start_embed (*this);
26922 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
26923 + out->format = format;
26937 + if (!c->serializer->push<Coverage> ()
26938 + ->serialize (c->serializer,
26941 + c->serializer->pop_discard ();
26945 + unsigned coverage_idx = c->serializer->pop_pack ();
26946 + c->serializer->add_link (out->coverage, coverage_idx);
26954 + | hb_apply (subset_offset_array (c, out->ligatureSet, this, coverage_idx))
26966 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubst.hh b/src/third_party/…
26969 --- /dev/null
26970 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubst.hh
26971 @@ -0,0 +1,53 @@
26996 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
26998 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
26999 + default:return_trace (c->default_return_value ());
27009 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
27025 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubstFormat1.hh b/src/third…
27028 --- /dev/null
27029 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/MultipleSubstFormat1.hh
27030 @@ -0,0 +1,120 @@
27044 + HBUINT16 format; /* Format identifier--format = 1 */
27046 + coverage; /* Offset to Coverage table--from
27069 + | hb_filter (c->parent_active_glyphs (), hb_first)
27080 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27091 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27097 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
27109 + if (unlikely (!c->extend_min (this))) return_trace (false);
27111 + for (unsigned int i = 0; i < glyphs.length; i++)
27125 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27126 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27128 + auto *out = c->serializer->start_embed (*this);
27129 + if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
27130 + out->format = format;
27135 + | hb_filter (subset_offset_array (c, out->sequence, this), hb_second)
27140 + out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
27151 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh b/src/th…
27154 --- /dev/null
27155 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh
27156 @@ -0,0 +1,36 @@
27180 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
27182 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
27183 + default:return_trace (c->default_return_value ());
27193 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh b…
27196 --- /dev/null
27197 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh
27198 @@ -0,0 +1,228 @@
27211 + HBUINT16 format; /* Format identifier--format = 1 */
27213 + coverage; /* Offset to Coverage table--from
27225 + * GlyphIDs--ordered by Coverage Index */
27251 + for (unsigned int i = 0; i < count; i++)
27256 + for (unsigned int i = 0; i < count; i++)
27268 + if (!intersects (c->glyphs)) return;
27274 + | hb_filter (c->parent_active_glyphs (), hb_first)
27276 + | hb_sink (c->output)
27284 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27289 + for (unsigned int i = 0; i < count; i++)
27290 + if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return;
27294 + for (unsigned int i = 0; i < count; i++)
27295 + if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return;
27299 + c->output->add_array (substitute.arrayZ, substitute.len);
27305 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27310 + if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
27311 + return_trace (false); /* No chaining to this type */
27313 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
27329 + c->buffer->idx + 1, &end_index))
27331 + c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
27332 + c->replace_glyph_inplace (substitute[index]);
27333 + /* Note: We DON'T decrease buffer->idx. The main loop does it
27334 + * for us. This is useful for preventing surprises if someone
27340 + c->buffer->unsafe_to_concat_from_outbuffer (start_index, end_index);
27350 + auto *out = c->serializer->start_embed<Array16OfOffset16To<Coverage>> ();
27352 + if (unlikely (!c->serializer->allocate_size<HBUINT16> (HBUINT16::static_size)))
27355 + for (auto& offset : it) {
27356 + auto *o = out->serialize_append (c->serializer);
27357 + if (unlikely (!o) || !o->serialize_subset (c, offset, this))
27375 + auto *out = c->serializer->start_embed (this);
27376 + if (unlikely (!c->serializer->check_success (out))) return_trace (false);
27377 + if (unlikely (!c->serializer->embed (this->format))) return_trace (false);
27378 + if (unlikely (!c->serializer->embed (this->coverage))) return_trace (false);
27383 + auto *substitute_out = c->serializer->start_embed<Array16Of<HBGlyphID16>> ();
27393 + if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substi…
27396 + if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
27404 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27405 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27414 + | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
27427 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Sequence.hh b/src/third_party/harfb…
27430 --- /dev/null
27431 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/Sequence.hh
27432 @@ -0,0 +1,103 @@
27460 + { c->output->add_array (substitute.arrayZ, substitute.len); }
27463 + { c->output->add_array (substitute.arrayZ, substitute.len); }
27470 + /* Special-case to make it in-place and not consider this
27474 + c->replace_glyph (substitute.arrayZ[0]);
27481 + c->buffer->delete_glyph ();
27485 + unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
27487 + unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
27489 + for (unsigned int i = 0; i < count; i++)
27494 + _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
27495 + c->output_glyph_for_component (substitute.arrayZ[i], klass);
27497 + c->buffer->skip_glyph ();
27514 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27515 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27524 + auto *out = c->serializer->start_embed (*this);
27525 + return_trace (out->serialize (c->serializer, it));
27536 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubst.hh b/src/third_party/ha…
27539 --- /dev/null
27540 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubst.hh
27541 @@ -0,0 +1,75 @@
27568 + if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
27570 + case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
27571 + case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
27572 + default:return_trace (c->default_return_value ());
27583 + if (unlikely (!c->extend_min (u.format))) return_trace (false);
27590 + { return (unsigned) (_.second - _.first) & 0xFFFF; };
27610 +{ c->start_embed<SingleSubst> ()->serialize (c, it); }
27617 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat1.hh b/src/third_p…
27620 --- /dev/null
27621 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat1.hh
27622 @@ -0,0 +1,122 @@
27635 + HBUINT16 format; /* Format identifier--format = 1 */
27637 + coverage; /* Offset to Coverage table--from
27662 + | hb_filter (c->parent_active_glyphs ())
27664 + | hb_sink (c->output)
27673 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27677 + | hb_sink (c->output)
27684 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27689 + hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
27696 + c->replace_glyph (glyph_id);
27708 + if (unlikely (!c->extend_min (this))) return_trace (false);
27710 + c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
27717 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27718 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27729 + | hb_map_retains_sorting ([&] (hb_codepoint_pair_t p) -> hb_codepoint_pair_t
27734 + SingleSubst_serialize (c->serializer, it);
27745 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat2.hh b/src/third_p…
27748 --- /dev/null
27749 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SingleSubstFormat2.hh
27750 @@ -0,0 +1,120 @@
27763 + HBUINT16 format; /* Format identifier--format = 2 */
27765 + coverage; /* Offset to Coverage table--from
27769 + * GlyphIDs--ordered by Coverage Index */
27789 + | hb_filter (c->parent_active_glyphs (), hb_first)
27791 + | hb_sink (c->output)
27800 + if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
27803 + | hb_sink (c->output)
27810 + { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
27815 + unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
27820 + c->replace_glyph (substitute[index]);
27840 + if (unlikely (!c->extend_min (this))) return_trace (false);
27849 + const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
27850 + const hb_map_t &glyph_map = *c->plan->glyph_map;
27856 + | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
27861 + SingleSubst_serialize (c->serializer, it);
27871 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookup.hh b/src/third_party/ha…
27874 --- /dev/null
27875 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookup.hh
27876 @@ -0,0 +1,224 @@
27928 + if (!c->should_visit_lookup (this_index))
27931 + c->set_recurse_func (dispatch_closure_recurse_func);
27935 + c->flush ();
27942 + if (c->is_lookup_visited (this_index))
27945 + c->set_lookup_visited (this_index);
27946 + if (!intersects (c->glyphs))
27948 + c->set_lookup_inactive (this_index);
27952 + c->set_recurse_func (dispatch_closure_lookups_recurse_func);
27960 + c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
27974 + if (unlikely (!c->len)) return false;
27975 + if (!accel->may_have (c->glyphs[0])) return false;
27988 + if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
27990 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
27993 + c->pop_discard ();
28005 + if (c->push<SubTable> ()->u.multiple.
28011 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
28014 + c->pop_discard ();
28027 + if (c->push<SubTable> ()->u.alternate.
28033 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
28036 + c->pop_discard ();
28046 … hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
28050 + if (c->push<SubTable> ()->u.ligature.
28058 + c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
28061 + c->pop_discard ();
28072 + if (!c->should_visit_lookup (lookup_index))
28079 + * HB_CLOSURE_MAX_STAGES time, which should be enough for every realistic font. */
28080 + //c->flush ();
28101 diff --git a/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookupSubTable.hh b/src/third_…
28104 --- /dev/null
28105 +++ b/src/third_party/harfbuzz-ng/src/src/OT/Layout/GSUB/SubstLookupSubTable.hh
28106 @@ -0,0 +1,77 @@
28167 + default: return_trace (c->default_return_value ());
28184 diff --git a/src/third_party/harfbuzz-ng/src/src/check-c-linkage-decls.py b/src/third_party/harfbuz…
28186 --- a/src/third_party/harfbuzz-ng/src/src/check-c-linkage-decls.py
28187 +++ b/src/third_party/harfbuzz-ng/src/src/check-c-linkage-decls.py
28188 @@ -4,11 +4,19 @@ import sys, os
28198 HBHEADERS = [os.path.basename (x) for x in os.getenv ('HBHEADERS', '').split ()] or \
28199 [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith ('.h')]
28200 -HBSOURCES = [os.path.basename (x) for x in os.getenv ('HBSOURCES', '').split ()] or \
28201 - [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))]
28202 -
28204 + removeprefix(x, 'src%s' % os.path.sep) for x in os.getenv ('HBSOURCES', '').split ()
28206 + x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))
28210 for x in HBHEADERS:
28211 diff --git a/src/third_party/harfbuzz-ng/src/src/check-header-guards.py b/src/third_party/harfbuzz-…
28213 --- a/src/third_party/harfbuzz-ng/src/src/check-header-guards.py
28214 +++ b/src/third_party/harfbuzz-ng/src/src/check-header-guards.py
28215 @@ -4,19 +4,30 @@ import sys, os, re
28226 HBHEADERS = [os.path.basename (x) for x in os.getenv ('HBHEADERS', '').split ()] or \
28227 [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith ('.h')]
28228 -HBSOURCES = [os.path.basename (x) for x in os.getenv ('HBSOURCES', '').split ()] or \
28229 - [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))]
28231 + removeprefix(x, 'src%s' % os.path.sep) for x in os.getenv ('HBSOURCES', '').split ()
28233 + x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))
28239 for x in HBHEADERS + HBSOURCES:
28240 if not x.endswith ('h') or x == 'hb-gobject-structs.h': continue
28241 - tag = x.upper ().replace ('.', '_').replace ('-', '_')
28242 + tag = x.upper ().replace ('.', '_').replace ('-', '_').replace(os.path.sep, '_').replace('/', '_')
28243 with open (x, 'r', encoding='utf-8') as f: content = f.read ()
28245 - print ('Ouch, header file %s does not have correct preprocessor guards' % x)
28250 diff --git a/src/third_party/harfbuzz-ng/src/src/check-includes.py b/src/third_party/harfbuzz-ng/sr…
28252 --- a/src/third_party/harfbuzz-ng/src/src/check-includes.py
28253 +++ b/src/third_party/harfbuzz-ng/src/src/check-includes.py
28254 @@ -4,10 +4,21 @@ import sys, os, re
28264 HBHEADERS = [os.path.basename (x) for x in os.getenv ('HBHEADERS', '').split ()] or \
28265 [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith ('.h')]
28266 -HBSOURCES = [os.path.basename (x) for x in os.getenv ('HBSOURCES', '').split ()] or \
28267 - [x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))]
28270 + removeprefix(x, 'src%s' % os.path.sep) for x in os.getenv ('HBSOURCES', '').split ()
28272 + x for x in os.listdir ('.') if x.startswith ('hb') and x.endswith (('.cc', '.hh'))
28278 @@ -25,7 +36,7 @@ for x in HBSOURCES:
28279 with open (x, 'r', encoding='utf-8') as f: content = f.read ()
28282 - if not len (re.findall (r'"hb.*\.hh"', includes[0])):
28287 diff --git a/src/third_party/harfbuzz-ng/src/src/check-static-inits.py b/src/third_party/harfbuzz-n…
28289 --- a/src/third_party/harfbuzz-ng/src/src/check-static-inits.py
28290 +++ b/src/third_party/harfbuzz-ng/src/src/check-static-inits.py
28291 @@ -14,7 +14,7 @@ if sys.version_info < (3, 5):
28292 print ('check-static-inits.py: needs python 3.5 for recursive support in glob')
28295 -OBJS = glob.glob (os.path.join (builddir, libs, '**', '*.o'), recursive=True)
28298 print ('check-static-inits.py: object files not found; skipping test')
28300 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-def.py b/src/third_party/harfbuzz-ng/src/src/g…
28302 --- a/src/third_party/harfbuzz-ng/src/src/gen-def.py
28303 +++ b/src/third_party/harfbuzz-ng/src/src/gen-def.py
28304 @@ -19,23 +19,7 @@ symbols = sorted (re.findall (r"^hb_\w+(?= \()", "\n".join (headers_content), re
28305 if '--experimental-api' not in sys.argv:
28306 # Move these to harfbuzz-sections.txt when got stable
28308 -"""hb_font_draw_glyph
28309 -hb_draw_funcs_t
28310 -hb_draw_close_path_func_t
28311 -hb_draw_cubic_to_func_t
28312 -hb_draw_line_to_func_t
28313 -hb_draw_move_to_func_t
28314 -hb_draw_quadratic_to_func_t
28315 -hb_draw_funcs_create
28316 -hb_draw_funcs_destroy
28317 -hb_draw_funcs_is_immutable
28318 -hb_draw_funcs_make_immutable
28319 -hb_draw_funcs_reference
28320 -hb_draw_funcs_set_close_path_func
28321 -hb_draw_funcs_set_cubic_to_func
28322 -hb_draw_funcs_set_line_to_func
28323 -hb_draw_funcs_set_move_to_func
28324 -hb_draw_funcs_set_quadratic_to_func""".splitlines ()
28326 symbols = [x for x in symbols if x not in experimental_symbols]
28329 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-harfbuzzcc.py b/src/third_party/harfbuzz-ng/sr…
28331 --- a/src/third_party/harfbuzz-ng/src/src/gen-harfbuzzcc.py
28332 +++ b/src/third_party/harfbuzz-ng/src/src/gen-harfbuzzcc.py
28333 @@ -14,5 +14,9 @@ sources = sys.argv[3:]
28335 …f.write ("".join ('#include "{}"\n'.format (os.path.basename (x)) for x in sources if x.endswith (…
28337 -# copy it also to src/
28338 -shutil.copyfile (OUTPUT, os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)))
28345 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-hb-version.py b/src/third_party/harfbuzz-ng/sr…
28347 --- a/src/third_party/harfbuzz-ng/src/src/gen-hb-version.py
28348 +++ b/src/third_party/harfbuzz-ng/src/src/gen-hb-version.py
28349 @@ -32,5 +32,9 @@ with open (INPUT, "r", encoding='utf-8') as template:
28353 -# copy it also to src/
28354 -shutil.copyfile (OUTPUT, os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)))
28361 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-os2-unicode-ranges.py b/src/third_party/harfbu…
28363 --- a/src/third_party/harfbuzz-ng/src/src/gen-os2-unicode-ranges.py
28364 +++ b/src/third_party/harfbuzz-ng/src/src/gen-os2-unicode-ranges.py
28365 @@ -1,7 +1,7 @@
28368 """Generates the code for a sorted unicode range array as used in hb-ot-os2-unicode-ranges.hh
28369 -Input is a tab seperated list of unicode ranges from the otspec
28371 (https://docs.microsoft.com/en-us/typography/opentype/spec/os2#ur).
28374 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-tag-table.py b/src/third_party/harfbuzz-ng/src…
28376 --- a/src/third_party/harfbuzz-ng/src/src/gen-tag-table.py
28377 +++ b/src/third_party/harfbuzz-ng/src/src/gen-tag-table.py
28378 @@ -329,6 +329,10 @@ class OpenTypeRegistryParser (HTMLParser):
28389 @@ -338,6 +342,7 @@ class OpenTypeRegistryParser (HTMLParser):
28397 @@ -462,30 +467,51 @@ class OpenTypeRegistryParser (HTMLParser):
28404 + languages. For example, INUK (Nunavik Inuktitut) is mapped to
28409 If a BCP 47 tag for a macrolanguage has no OpenType mapping but
28410 - all of its individual languages do and they all map to the same
28411 - tags, the mapping is copied to the macrolanguage.
28416 - original_ot_from_bcp_47 = dict (self.from_bcp_47)
28420 for macrolanguage, languages in dict (bcp_47.macrolanguages).items ():
28421 - ot_macrolanguages = set (original_ot_from_bcp_47.get (macrolanguage, set ()))
28423 + ot_macrolanguage for ot_macrolanguage in self.from_bcp_47_uninherited.get (macrolanguage, set …
28427 + for ot_macrolanguage in ot_macrolanguages:
28429 + l for l in self.to_bcp_47[ot_macrolanguage]
28433 + l for l in languages
28440 for ot_macrolanguage in ot_macrolanguages:
28441 - for language in languages:
28442 - self.add_language (language, ot_macrolanguage)
28443 - self.ranks[ot_macrolanguage] += 1
28444 - else:
28446 + for language in languages:
28451 for language in languages:
28452 - if language in original_ot_from_bcp_47:
28453 - if ot_macrolanguages:
28454 - ml = original_ot_from_bcp_47[language]
28455 - if ml:
28456 - ot_macrolanguages &= ml
28457 - else:
28458 - pass
28459 - else:
28460 - ot_macrolanguages |= original_ot_from_bcp_47[language]
28466 @@ -570,7 +596,7 @@ class BCP47Parser (object):
28470 - scope = ' [family]'
28475 @@ -715,6 +741,7 @@ ot.add_language ('no', 'NOR')
28477 ot.add_language ('oc-provenc', 'PRO')
28483 @@ -747,7 +774,6 @@ ot.add_language ('qxr', 'QVI')
28487 -bcp_47.macrolanguages['ro'].remove ('mo')
28488 bcp_47.macrolanguages['ro-MD'].add ('mo')
28491 @@ -987,6 +1013,8 @@ for initial, items in sorted (complex_tags.items ()):
28494 for lt, tags in items:
28500 @@ -1021,6 +1049,8 @@ for initial, items in sorted (complex_tags.items ()):
28503 for lt, tags in items:
28509 @@ -1121,9 +1151,13 @@ def verify_disambiguation_dict ():
28511 … expect (ot_tag not in disambiguation, 'There is no possible valid disambiguation for %s' % ot_tag)
28513 - macrolanguages = list (t for t in primary_tags if bcp_47.scopes.get (t) == ' [macrolanguage]')
28514 + original_languages = [t for t in primary_tags if t in ot.from_bcp_47_uninherited and 'retired c…
28518 + macrolanguages = [t for t in primary_tags if bcp_47.scopes.get (t) == ' [macrolanguage]']
28520 - macrolanguages = list (t for t in primary_tags if bcp_47.scopes.get (t) == ' [family]')
28521 + macrolanguages = list (t for t in primary_tags if bcp_47.scopes.get (t) == ' [collection]')
28523 … macrolanguages = list (t for t in primary_tags if 'retired code' not in bcp_47.scopes.get (t, ''))
28525 diff --git a/src/third_party/harfbuzz-ng/src/src/gen-use-table.py b/src/third_party/harfbuzz-ng/src…
28527 --- a/src/third_party/harfbuzz-ng/src/src/gen-use-table.py
28528 +++ b/src/third_party/harfbuzz-ng/src/src/gen-use-table.py
28529 @@ -39,7 +39,7 @@ for j in range(7, 9):
28530 headers[j - 1].append(line)
28533 -data = [{} for _ in files]
28534 +unicode_data = [{} for _ in files]
28535 values = [{} for _ in files]
28536 for i, f in enumerate (files):
28537 for line in f:
28538 @@ -73,38 +73,16 @@ for i, f in enumerate (files):
28540 i0 = i if i < 7 else i - 7
28541 for u in range (start, end + 1):
28542 - data[i0][u] = t
28544 values[i0][t] = values[i0].get (t, 0) + end - start + 1
28548 -# TODO Characters that are not in Unicode Indic files, but used in USE
28549 -data[0][0x1B61] = defaults[0]
28550 -data[0][0x1B63] = defaults[0]
28551 -data[0][0x1B64] = defaults[0]
28552 -data[0][0x1B65] = defaults[0]
28553 -data[0][0x1B66] = defaults[0]
28554 -data[0][0x1B67] = defaults[0]
28555 -data[0][0x1B69] = defaults[0]
28556 -data[0][0x1B6A] = defaults[0]
28557 -data[0][0x2060] = defaults[0]
28558 -# TODO https://github.com/harfbuzz/harfbuzz/pull/1685
28559 -data[0][0x1B5B] = 'Consonant_Placeholder'
28560 -data[0][0x1B5C] = 'Consonant_Placeholder'
28561 -data[0][0x1B5F] = 'Consonant_Placeholder'
28562 -data[0][0x1B62] = 'Consonant_Placeholder'
28563 -data[0][0x1B68] = 'Consonant_Placeholder'
28564 -# TODO https://github.com/harfbuzz/harfbuzz/issues/1035
28565 -data[0][0x11C44] = 'Consonant_Placeholder'
28566 -data[0][0x11C45] = 'Consonant_Placeholder'
28567 -# TODO https://github.com/harfbuzz/harfbuzz/pull/1399
28568 -data[0][0x111C8] = 'Consonant_Placeholder'
28569 -
28571 for i,v in enumerate (defaults):
28574 -for i,d in enumerate (data):
28575 +for i,d in enumerate (unicode_data):
28576 for u,v in d.items ():
28579 @@ -112,8 +90,6 @@ for i,d in enumerate (data):
28582 combined = {k: v for k, v in combined.items() if v[6] not in DISABLED_SCRIPTS}
28583 -data = combined
28584 -del combined
28588 @@ -226,8 +202,8 @@ def is_BASE_OTHER(U, UISC, UDI, UGC, AJT):
28592 - # Also includes VARIATION_SELECTOR, WJ, and ZWJ
28593 - return U == 0x200D or UDI and UGC in [Mc, Me, Mn]
28599 @@ -245,13 +221,7 @@ def is_CONS_SUB(U, UISC, UDI, UGC, AJT):
28603 - return (UISC in [Virama, Invisible_Stacker]
28604 - and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UDI, UGC, AJT)
28605 - and not is_SAKOT(U, UISC, UDI, UGC, AJT))
28606 -def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UDI, UGC, AJT):
28607 - # Split off of HALANT
28608 - # https://github.com/harfbuzz/harfbuzz/issues/1379
28609 - return U == 0x1134D
28614 @@ -262,15 +232,21 @@ def is_HIEROGLYPH_SEGMENT_BEGIN(U, UISC, UDI, UGC, AJT):
28626 - # Also includes BASE_IND, Rsv, and SYM
28627 - return ((UGC in [Cn, Po] or UISC in [Consonant_Dead, Joiner, Modifying_Letter, Other])
28638 @@ -280,13 +256,17 @@ def is_SAKOT(U, UISC, UDI, UGC, AJT):
28642 - # https://github.com/harfbuzz/harfbuzz/issues/376
28644 - (UGC != Lo and UISC in [Vowel, Vowel_Dependent] and U not in [0xAA29]))
28647 - # https://github.com/harfbuzz/harfbuzz/issues/376
28649 - (UGC != Lo and (UISC == Bindu or U in [0xAA29])))
28660 @@ -300,8 +280,8 @@ use_mapping = {
28664 - 'HVM': is_HALANT_OR_VOWEL_MODIFIER,
28670 @@ -313,6 +293,7 @@ use_mapping = {
28678 @@ -348,7 +329,7 @@ use_positions = {
28682 - 'HVM': None,
28687 @@ -380,9 +361,6 @@ def map_to_use(data):
28688 # the nasalization marks, maybe only for U+1CE9..U+1CF1.
28691 - # TODO: https://github.com/microsoft/font-tools/issues/1
28692 - if U == 0xA982: UISC = Consonant_Succeeding_Repha
28693 -
28694 values = [k for k,v in items if v(U, UISC, UDI, UGC, AJT)]
28697 @@ -416,8 +394,7 @@ def map_to_use(data):
28701 -defaults = ('O', 'No_Block')
28702 -data = map_to_use(data)
28707 @@ -443,7 +420,7 @@ print ()
28711 -def print_block (block, start, end, data):
28716 @@ -458,17 +435,23 @@ def print_block (block, start, end, data):
28720 - if u in data:
28723 - d = data.get (u, defaults)
28724 - print ("%6s," % d[0], end='')
28734 total += end - start + 1
28739 -uu = sorted (data.keys ())
28742 last = -100000
28744 @@ -491,19 +474,19 @@ print ("static const uint8_t use_table[] = {")
28745 for u in uu:
28748 - if data[u][0] == 'O':
28751 - block = data[u][1]
28756 - while end in uu and block == data[end][1]:
28759 end = (end-1)//8*8 + 7
28762 if start - last <= 1+16*3:
28763 - print_block (None, last+1, start-1, data)
28764 + print_block (None, last+1, start-1, use_data)
28768 @@ -513,7 +496,7 @@ for u in uu:
28772 - print_block (block, start, end, data)
28776 offset += ends[-1] - starts[-1]
28777 @@ -524,8 +507,9 @@ page_bits = 12
28781 -print ("hb_use_get_category (hb_codepoint_t u)")
28787 pages = set([u>>page_bits for u in starts+ends])
28788 @@ -540,7 +524,9 @@ for p in sorted(pages):
28792 -print (" return USE(O);")
28798 for k in sorted(use_mapping.keys()):
28799 diff --git a/src/third_party/harfbuzz-ng/src/src/harfbuzz-subset.pc.in b/src/third_party/harfbuzz-n…
28801 --- a/src/third_party/harfbuzz-ng/src/src/harfbuzz-subset.pc.in
28802 +++ b/src/third_party/harfbuzz-ng/src/src/harfbuzz-subset.pc.in
28803 @@ -3,10 +3,10 @@ exec_prefix=%exec_prefix%
28807 -Name: harfbuzz
28812 -Requires: harfbuzz
28814 Libs: -L${libdir} -lharfbuzz-subset
28815 Cflags: -I${includedir}/harfbuzz
28816 diff --git a/src/third_party/harfbuzz-ng/src/src/harfbuzz.cc b/src/third_party/harfbuzz-ng/src/src/…
28818 --- a/src/third_party/harfbuzz-ng/src/src/harfbuzz.cc
28819 +++ b/src/third_party/harfbuzz-ng/src/src/harfbuzz.cc
28820 @@ -2,6 +2,7 @@
28821 #include "hb-aat-map.cc"
28822 #include "hb-blob.cc"
28823 #include "hb-buffer-serialize.cc"
28824 +#include "hb-buffer-verify.cc"
28825 #include "hb-buffer.cc"
28826 #include "hb-common.cc"
28827 #include "hb-draw.cc"
28828 @@ -9,7 +10,6 @@
28829 #include "hb-fallback-shape.cc"
28830 #include "hb-font.cc"
28831 #include "hb-map.cc"
28832 -#include "hb-ms-feature-ranges.cc"
28833 #include "hb-number.cc"
28834 #include "hb-ot-cff1-table.cc"
28835 #include "hb-ot-cff2-table.cc"
28836 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout-just-table.hh b/src/third_party/harf…
28838 --- a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout-just-table.hh
28839 +++ b/src/third_party/harfbuzz-ng/src/src/hb-aat-layout-just-table.hh
28840 @@ -146,7 +146,7 @@ struct DuctileGlyphAction
28841 HBUINT32 variationAxis; /* The 4-byte tag identifying the ductile axis.
28844 - HBFixed minimumLimit; /* The lowest value for the ductility axis tha
28845 + HBFixed minimumLimit; /* The lowest value for the ductility axis that
28849 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout.cc b/src/third_party/harfbuzz-ng/src…
28851 --- a/src/third_party/harfbuzz-ng/src/src/hb-aat-layout.cc
28852 +++ b/src/third_party/harfbuzz-ng/src/src/hb-aat-layout.cc
28853 @@ -108,7 +108,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
28857 - {HB_TAG ('h','i','s','t'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES, HB_AAT_LAYOUT_FEA…
28862 @@ -170,6 +170,7 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
28870 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-algs.hh b/src/third_party/harfbuzz-ng/src/src/h…
28872 --- a/src/third_party/harfbuzz-ng/src/src/hb-algs.hh
28873 +++ b/src/third_party/harfbuzz-ng/src/src/hb-algs.hh
28874 @@ -211,6 +211,14 @@ struct
28889 @@ -219,7 +227,7 @@ struct
28893 - impl (const T& v, hb_priority<1>) const HB_RETURN (uint32_t, std::hash<decltype (hb_deref (v))>{…
28898 @@ -439,23 +447,29 @@ struct
28902 - impl (T1&& v1, T2 &&v2, hb_priority<2>) const HB_AUTO_RETURN
28909 - impl (T1&& v1, T2 &&v2, hb_priority<1>) const HB_AUTO_RETURN
28916 - impl (T1&& v1, T2 &&v2, hb_priority<0>) const HB_AUTO_RETURN
28931 @@ -476,11 +490,15 @@ struct hb_pair_t
28943 - hb_is_convertible (T2, T2))>
28948 @@ -874,7 +892,7 @@ hb_bsearch_impl (unsigned *pos, /* Out */
28949 #pragma GCC diagnostic ignored "-Wcast-align"
28952 - int c = compar ((const void *) hb_addressof (key), (const void *) p, ds...);
28955 max = mid - 1;
28957 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-array.hh b/src/third_party/harfbuzz-ng/src/src/…
28959 --- a/src/third_party/harfbuzz-ng/src/src/hb-array.hh
28960 +++ b/src/third_party/harfbuzz-ng/src/src/hb-array.hh
28961 @@ -412,7 +412,7 @@ bool hb_array_t<T>::operator == (const hb_array_t<T> &o) const
28965 -/* TODO Specialize opeator== for hb_bytes_t and hb_ubytes_t. */
28966 +/* TODO Specialize operator== for hb_bytes_t and hb_ubytes_t. */
28970 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bimap.hh b/src/third_party/harfbuzz-ng/src/src/…
28972 --- a/src/third_party/harfbuzz-ng/src/src/hb-bimap.hh
28973 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bimap.hh
28974 @@ -33,20 +33,6 @@
28975 /* Bi-directional map */
28978 - /* XXX(remove) */
28979 - void init ()
28980 - {
28981 - forw_map.init ();
28982 - back_map.init ();
28983 - }
28984 -
28985 - /* XXX(remove) */
28986 - void fini ()
28987 - {
28988 - forw_map.fini ();
28989 - back_map.fini ();
28990 - }
28991 -
28995 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bit-page.hh b/src/third_party/harfbuzz-ng/src/s…
28997 --- a/src/third_party/harfbuzz-ng/src/src/hb-bit-page.hh
28998 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bit-page.hh
28999 @@ -86,6 +86,72 @@ struct hb_bit_page_t
29014 + for (unsigned i = start_v; i < len () && count < size; i++)
29018 + for (unsigned int j = start_bit; j < ELT_BITS && count < size; j++)
29045 + for (unsigned i = start_v; i < len () && count < size; i++)
29049 + for (unsigned int j = start_bit; j < ELT_BITS && count < size; j++)
29054 + // Emit all the missing values from next_value up to value - 1.
29055 + for (hb_codepoint_t k = *next_value; k < value && count < size; k++)
29072 @@ -179,6 +245,9 @@ struct hb_bit_page_t
29075 static_assert ((PAGE_BITS & ((PAGE_BITS) - 1)) == 0, "");
29078 + static constexpr unsigned PAGE_BITMASK = PAGE_BITS - 1;
29081 static unsigned int elt_get_max (const elt_t &elt) { return hb_bit_storage (elt) - 1; }
29082 @@ -186,7 +255,10 @@ struct hb_bit_page_t
29088 static constexpr unsigned ELT_MASK = ELT_BITS - 1;
29091 static constexpr unsigned MASK = BITS - 1;
29093 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bit-set-invertible.hh b/src/third_party/harfbuz…
29095 --- a/src/third_party/harfbuzz-ng/src/src/hb-bit-set-invertible.hh
29096 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bit-set-invertible.hh
29097 @@ -323,6 +323,14 @@ struct hb_bit_set_invertible_t
29112 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-bit-set.hh b/src/third_party/harfbuzz-ng/src/sr…
29114 --- a/src/third_party/harfbuzz-ng/src/src/hb-bit-set.hh
29115 +++ b/src/third_party/harfbuzz-ng/src/src/hb-bit-set.hh
29116 @@ -203,7 +203,7 @@ struct hb_bit_set_t
29120 - if (!count) return true;
29125 @@ -222,7 +222,7 @@ struct hb_bit_set_t
29127 page->add (g);
29129 - array = (const T *) ((const char *) array + stride);
29131 count--;
29134 @@ -700,6 +700,99 @@ struct hb_bit_set_t
29160 + // The export-after value was last in the page. Start on next page.
29167 + for (unsigned int i = start_page; i < page_map.length && size; i++)
29172 + size -= n;
29175 + return initial_size - size;
29200 + size--;
29202 + return initial_size - size;
29209 + // The export-after value was last in the page. Start on next page.
29216 + for (unsigned int i=start_page; i<page_map.length && size; i++)
29221 + size -= n;
29226 + size--;
29228 + return initial_size - size;
29234 @@ -809,8 +902,9 @@ struct hb_bit_set_t
29238 - unsigned int get_major (hb_codepoint_t g) const { return g / page_t::PAGE_BITS; }
29239 - hb_codepoint_t major_start (unsigned int major) const { return major * page_t::PAGE_BITS; }
29246 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.hh b/src/third_party/ha…
29248 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.hh
29249 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.hh
29250 @@ -478,7 +478,7 @@ _resume:
29252 #line 58 "hb-buffer-deserialize-text.rl"
29254 - /* TODO Unescape delimeters. */
29257 tok, p - tok,
29259 @@ -535,7 +535,7 @@ _resume:
29261 #line 58 "hb-buffer-deserialize-text.rl"
29263 - /* TODO Unescape delimeters. */
29266 tok, p - tok,
29268 @@ -635,7 +635,7 @@ _resume:
29270 #line 58 "hb-buffer-deserialize-text.rl"
29272 - /* TODO Unescape delimeters. */
29275 tok, p - tok,
29277 @@ -645,7 +645,7 @@ _resume:
29279 #line 58 "hb-buffer-deserialize-text.rl"
29281 - /* TODO Unescape delimeters. */
29284 tok, p - tok,
29286 @@ -674,7 +674,7 @@ _resume:
29288 #line 58 "hb-buffer-deserialize-text.rl"
29290 - /* TODO Unescape delimeters. */
29293 tok, p - tok,
29295 @@ -701,7 +701,7 @@ _resume:
29297 #line 58 "hb-buffer-deserialize-text.rl"
29299 - /* TODO Unescape delimeters. */
29302 tok, p - tok,
29304 @@ -733,7 +733,7 @@ _again:
29306 #line 58 "hb-buffer-deserialize-text.rl"
29308 - /* TODO Unescape delimeters. */
29311 tok, p - tok,
29313 @@ -820,7 +820,7 @@ _again:
29315 #line 58 "hb-buffer-deserialize-text.rl"
29317 - /* TODO Unescape delimeters. */
29320 tok, p - tok,
29322 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.rl b/src/third_party/ha…
29324 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.rl
29325 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer-deserialize-text.rl
29326 @@ -56,7 +56,7 @@ action ensure_glyphs { if (unlikely (!buffer->ensure_glyphs ())) return false; }
29327 action ensure_unicode { if (unlikely (!buffer->ensure_unicode ())) return false; }
29330 - /* TODO Unescape delimeters. */
29333 tok, p - tok,
29335 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer-verify.cc b/src/third_party/harfbuzz-ng/…
29338 --- /dev/null
29339 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer-verify.cc
29340 @@ -0,0 +1,422 @@
29348 + * software and its documentation for any purpose, provided that the
29352 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
29360 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
29361 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
29371 +#include "hb-buffer.hh"
29389 + if (buffer->messaging ())
29391 + buffer->message_impl (font, fmt, ap);
29407 + if (buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES ||
29408 + buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
29415 + for (unsigned int i = 1; i < num_glyphs; i++)
29416 + if (info[i-1].cluster != info[i].cluster &&
29417 + (info[i-1].cluster < info[i].cluster) != is_forward)
29435 + if (buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES &&
29436 + buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
29442 + /* Check that breaking up shaping at safe-to-break is indeed safe. */
29460 + for (unsigned int end = 1; end < num_glyphs + 1; end++)
29463 + (info[end].cluster == info[end-1].cluster ||
29464 + info[end-(forward?0:1)].mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK))
29485 + unsigned int cluster = info[end - 1].cluster;
29486 + while (text_start && text[text_start - 1].cluster >= cluster)
29487 + text_start--;
29512 + hb_buffer_append (reconstruction, fragment, 0, -1);
29522 + hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
29525 + buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-break test failed.");
29530 + hb_buffer_append (buffer, reconstruction, 0, -1);
29547 + if (buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES &&
29548 + buffer->cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
29554 + /* Check that shuffling up text before shaping at safe-to-concat points
29559 + * 1. We shape text once. Then segment the text at all the safe-to-concat
29565 + * 3. Because all these segments were safe-to-concat at both ends, we
29569 + * segment boundaries, and that those all are safe-to-concat points.
29570 + * Moreover, that there are NOT any safe-to-concat points within the
29610 + for (unsigned end = 1; end < num_glyphs + 1; end++)
29613 + (info[end].cluster == info[end-1].cluster ||
29644 + fragment_idx = 1 - fragment_idx;
29681 + for (unsigned i = 0; i < 2; i++)
29688 …nfo[fragment_idx][fragment_end].cluster == fragment_info[fragment_idx][fragment_end - 1].cluster ||
29695 + fragment_idx = 1 - fragment_idx;
29708 + diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
29711 + buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-concat test failed.");
29716 + hb_buffer_append (buffer, reconstruction, 0, -1);
29745 + unsigned len = text_buffer->len;
29763 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer.cc b/src/third_party/harfbuzz-ng/src/src…
29765 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer.cc
29766 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer.cc
29767 @@ -102,7 +102,7 @@ hb_segment_properties_hash (const hb_segment_properties_t *p)
29771 - * Since: REPLACEME
29776 @@ -295,7 +295,6 @@ hb_buffer_t::clear ()
29780 -
29784 @@ -405,6 +404,7 @@ hb_buffer_t::sync ()
29792 @@ -572,33 +572,6 @@ done:
29796 -void
29797 -hb_buffer_t::unsafe_to_break_impl (unsigned int start, unsigned int end)
29798 -{
29799 - unsigned int cluster = UINT_MAX;
29800 - cluster = _infos_find_min_cluster (info, start, end, cluster);
29801 - _unsafe_to_break_set_mask (info, start, end, cluster);
29802 -}
29803 -void
29804 -hb_buffer_t::unsafe_to_break_from_outbuffer (unsigned int start, unsigned int end)
29805 -{
29806 - if (!have_output)
29807 - {
29808 - unsafe_to_break_impl (start, end);
29809 - return;
29810 - }
29811 -
29812 - assert (start <= out_len);
29813 - assert (idx <= end);
29814 -
29815 - unsigned int cluster = UINT_MAX;
29816 - cluster = _infos_find_min_cluster (out_info, start, out_len, cluster);
29817 - cluster = _infos_find_min_cluster (info, idx, end, cluster);
29818 -
29819 - _unsafe_to_break_set_mask (out_info, start, out_len, cluster);
29820 - _unsafe_to_break_set_mask (info, idx, end, cluster);
29821 -}
29822 -
29826 @@ -691,14 +664,13 @@ hb_buffer_create ()
29830 - * Resets the buffer to its initial status, as if it was just newly created
29831 - * with hb_buffer_create().
29836 - * A newly allocated #hb_buffer_t, similar to hb_buffer_create(). The only
29837 - * difference is that the buffer is configured similarly to @src.
29840 - * Since: REPLACEME
29845 @@ -1817,7 +1789,7 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer,
29849 - hb_buffer_t *source,
29854 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer.h b/src/third_party/harfbuzz-ng/src/src/…
29856 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer.h
29857 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer.h
29858 @@ -76,18 +76,72 @@ typedef struct hb_glyph_info_t {
29861 * then both sides need to be re-shaped, as the
29862 - * result might be different. On the flip side,
29863 - * it means that when this flag is not present,
29864 - * then it's safe to break the glyph-run at the
29865 - * beginning of this cluster, and the two sides
29866 - * represent the exact same result one would get
29867 - * if breaking input text at the beginning of
29868 - * this cluster and shaping the two sides
29869 - * separately. This can be used to optimize
29870 - * paragraph layout, by avoiding re-shaping
29871 - * of each line after line-breaking, or limiting
29872 - * the reshaping to a small piece around the
29873 - * breaking point only.
29877 + * the glyph-run at the beginning of this
29883 + * layout, by avoiding re-shaping of each line
29884 + * after line-breaking.
29887 + * is part of, then the shaping results for the
29894 + * layout, by avoiding re-shaping of each line
29895 + * after line-breaking, by limiting the
29901 + * happens at line-break position, in the following
29903 + * 1. Iterate back from the line-break position
29905 + * NOT unsafe-to-concat, 2. shape the segment from
29907 + * resulting glyph-run also is clear of the
29908 + * unsafe-to-concat at its start-of-text position;
29911 + * back that is clear of unsafe-to-concat and retry
29915 + * the line-break position until the first cluster
29916 + * start position that is NOT unsafe-to-concat, 2.
29919 + * glyph-run also is clear of the unsafe-to-concat
29920 + * at its end-of-text position; if it is, just splice
29923 + * of unsafe-to-concat and retry up to there, and repeat.
29927 + * return flags for position corresponding to
29928 + * start-of-text, there is currently no position
29929 + * corresponding to end-of-text. This limitation
29931 + * and looking for unsafe-to-concat flag within text
29942 * Flags for #hb_glyph_info_t.
29943 @@ -96,8 +150,9 @@ typedef struct hb_glyph_info_t {
29949 - HB_GLYPH_FLAG_DEFINED = 0x00000001 /* OR of all defined flags */
29954 @@ -305,7 +360,19 @@ hb_buffer_guess_segment_properties (hb_buffer_t *buffer);
29958 - * character sequences (such at <0905 093E>). Since: 2.4
29970 + * glyph-flag should be produced by the shaper. By default
29973 * Flags for #hb_buffer_t.
29975 @@ -317,7 +384,9 @@ typedef enum { /*< flags >*/
29976 HB_BUFFER_FLAG_EOT = 0x00000002u, /* End-of-text */
29979 - HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE = 0x00000010u
29986 @@ -471,7 +540,7 @@ hb_buffer_add_codepoints (hb_buffer_t *buffer,
29990 - hb_buffer_t *source,
29995 @@ -568,24 +637,24 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
29999 - unsigned int start,
30000 - unsigned int end,
30001 - char *buf,
30002 - unsigned int buf_size,
30003 - unsigned int *buf_consumed,
30004 - hb_buffer_serialize_format_t format,
30005 - hb_buffer_serialize_flags_t flags);
30016 - unsigned int start,
30017 - unsigned int end,
30018 - char *buf,
30019 - unsigned int buf_size,
30020 - unsigned int *buf_consumed,
30021 - hb_font_t *font,
30022 - hb_buffer_serialize_format_t format,
30023 - hb_buffer_serialize_flags_t flags);
30035 @@ -597,10 +666,10 @@ hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
30039 - const char *buf,
30040 - int buf_len,
30041 - const char **end_ptr,
30042 - hb_buffer_serialize_format_t format);
30050 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-buffer.hh b/src/third_party/harfbuzz-ng/src/src…
30052 --- a/src/third_party/harfbuzz-ng/src/src/hb-buffer.hh
30053 +++ b/src/third_party/harfbuzz-ng/src/src/hb-buffer.hh
30054 @@ -67,8 +67,8 @@ enum hb_buffer_scratch_flags_t {
30058 - HB_BUFFER_SCRATCH_FLAG_HAS_UNSAFE_TO_BREAK = 0x00000010u,
30059 - HB_BUFFER_SCRATCH_FLAG_HAS_CGJ = 0x00000020u,
30063 /* Reserved for complex shapers' internal use. */
30065 @@ -212,6 +212,20 @@ struct hb_buffer_t
30084 unsigned int lookahead_len () const { return len - idx; }
30086 @@ -385,15 +399,87 @@ struct hb_buffer_t
30087 /* Merge clusters for deleting current glyph, and skip it. */
30090 - void unsafe_to_break (unsigned int start,
30091 - unsigned int end)
30094 + * The start index will be from out-buffer if from_out_buffer is true.
30098 + unsigned end = (unsigned) -1,
30102 - if (end - start < 2)
30105 + if (interior && !from_out_buffer && end - start < 2)
30114 + for (unsigned i = start; i < end; i++)
30130 + for (unsigned i = start; i < out_len; i++)
30132 + for (unsigned i = idx; i < end; i++)
30146 + void unsafe_to_break (unsigned int start = 0, unsigned int end = -1)
30152 + void unsafe_to_concat (unsigned int start = 0, unsigned int end = -1)
30160 + void unsafe_to_break_from_outbuffer (unsigned int start = 0, unsigned int end = -1)
30166 + void unsafe_to_concat_from_outbuffer (unsigned int start = 0, unsigned int end = -1)
30170 - unsafe_to_break_impl (start, end);
30175 - HB_INTERNAL void unsafe_to_break_impl (unsigned int start, unsigned int end);
30176 - HB_INTERNAL void unsafe_to_break_from_outbuffer (unsigned int start, unsigned int end);
30180 @@ -484,36 +570,31 @@ struct hb_buffer_t
30184 - {
30185 - if (mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK)
30186 - inf.mask |= HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
30187 - else
30188 - inf.mask &= ~HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
30189 - }
30193 -
30200 + for (unsigned int i = start; i < end; i++)
30210 - unsigned cluster)
30213 for (unsigned int i = start; i < end; i++)
30217 - void
30218 - _unsafe_to_break_set_mask (hb_glyph_info_t *infos,
30219 - unsigned int start, unsigned int end,
30220 - unsigned int cluster)
30221 - {
30222 - for (unsigned int i = start; i < end; i++)
30223 - if (cluster != infos[i].cluster)
30224 - {
30225 - scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_UNSAFE_TO_BREAK;
30226 - infos[i].mask |= HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
30227 - }
30228 - }
30232 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-common.hh b/src/third_party/harfbuzz…
30234 --- a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-common.hh
30235 +++ b/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-common.hh
30236 @@ -217,9 +217,6 @@ inline unsigned int OpCode_Size (op_code_t op) { return Is_OpCode_ESC (op) ? 2:
30240 - void init () { set_real (0.0); }
30241 - void fini () {}
30242 -
30246 @@ -245,7 +242,7 @@ struct number_t
30250 - double value;
30255 @@ -380,10 +377,8 @@ struct cff_stack_t
30259 - for (unsigned int i = 0; i < elements.length; i++)
30260 - elements[i].init ();
30262 - void fini () { elements.fini_deep (); }
30267 @@ -523,9 +518,6 @@ struct arg_stack_t : cff_stack_t<ARG, 513>
30271 - void init () {}
30272 - void fini () {}
30273 -
30277 @@ -553,7 +545,7 @@ struct parsed_values_t
30281 - void fini () { values.fini_deep (); }
30286 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-cs-common.hh b/src/third_party/harfb…
30288 --- a/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-cs-common.hh
30289 +++ b/src/third_party/harfbuzz-ng/src/src/hb-cff-interp-cs-common.hh
30290 @@ -94,12 +94,6 @@ struct biased_subrs_t
30294 - void init ()
30295 - {
30296 - x.init ();
30297 - y.init ();
30298 - }
30299 -
30303 @@ -128,7 +122,7 @@ struct cs_interp_env_t : interp_env_t<ARG>
30307 - pt.init ();
30312 @@ -841,7 +835,6 @@ struct path_procs_t
30316 - d.init ();
30317 for (unsigned int i = 0; i < 10; i += 2)
30320 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-cff2-interp-cs.hh b/src/third_party/harfbuzz-ng…
30322 --- a/src/third_party/harfbuzz-ng/src/src/hb-cff2-interp-cs.hh
30323 +++ b/src/third_party/harfbuzz-ng/src/src/hb-cff2-interp-cs.hh
30324 @@ -35,18 +35,6 @@ using namespace OT;
30328 - void init ()
30329 - {
30330 - number_t::init ();
30331 - deltas.init ();
30332 - }
30333 -
30334 - void fini ()
30335 - {
30336 - number_t::fini ();
30337 - deltas.fini_deep ();
30338 - }
30339 -
30343 @@ -202,7 +190,7 @@ struct cff2_cs_opset_t : cs_opset_t<blend_arg_t, OPSET, cff2_cs_interp_env_t, PA
30347 - /* a subroutine number shoudln't be a blended value */
30352 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-common.cc b/src/third_party/harfbuzz-ng/src/src…
30354 --- a/src/third_party/harfbuzz-ng/src/src/hb-common.cc
30355 +++ b/src/third_party/harfbuzz-ng/src/src/hb-common.cc
30356 @@ -29,7 +29,7 @@
30358 #include "hb-machinery.hh"
30360 -#if !defined(HAVE_NEWLOCALE) || !defined(HAVE_USELOCALE)
30365 @@ -41,17 +41,18 @@
30369 -using hb_locale_t = _locale_t;
30372 -using hb_locale_t = locale_t;
30380 -using hb_locale_t = void *;
30382 -#define setlocale(Category, Locale) "C"
30383 -#define uselocale(Locale) ((hb_locale_t) 0)
30389 @@ -433,7 +434,7 @@ hb_language_get_default ()
30393 - language = hb_language_from_string (setlocale (LC_CTYPE, nullptr), -1);
30394 + language = hb_language_from_string (hb_setlocale (LC_CTYPE, nullptr), -1);
30398 @@ -1064,7 +1065,7 @@ hb_variation_from_string (const char *str, int len,
30402 - hb_C_locale_lazy_loader_t>
30407 @@ -1127,9 +1128,9 @@ hb_variation_to_string (hb_variation_t *variation,
30411 - oldlocale = uselocale (get_C_locale ());
30413 len += hb_max (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%g", (double) variation->value));
30414 - (void) uselocale (oldlocale);
30418 len = hb_min (len, size - 1);
30419 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-common.h b/src/third_party/harfbuzz-ng/src/src/…
30421 --- a/src/third_party/harfbuzz-ng/src/src/hb-common.h
30422 +++ b/src/third_party/harfbuzz-ng/src/src/hb-common.h
30423 @@ -130,6 +130,16 @@ typedef union _hb_var_int_t {
30440 @@ -481,6 +491,7 @@ hb_language_get_default (void);
30445 * @HB_SCRIPT_INVALID: No script set
30447 * Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding
30448 @@ -697,6 +708,11 @@ typedef enum
30457 /* No script set. */
30460 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-config.hh b/src/third_party/harfbuzz-ng/src/src…
30462 --- a/src/third_party/harfbuzz-ng/src/src/hb-config.hh
30463 +++ b/src/third_party/harfbuzz-ng/src/src/hb-config.hh
30464 @@ -55,6 +55,7 @@
30472 @@ -84,6 +85,7 @@
30480 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-coretext.cc b/src/third_party/harfbuzz-ng/src/s…
30482 --- a/src/third_party/harfbuzz-ng/src/src/hb-coretext.cc
30483 +++ b/src/third_party/harfbuzz-ng/src/src/hb-coretext.cc
30484 @@ -481,8 +481,8 @@ struct active_feature_t {
30485 a->rec.setting < b->rec.setting ? -1 : a->rec.setting > b->rec.setting ? 1 :
30488 - bool operator== (const active_feature_t *f) {
30489 - return cmp (this, f) == 0;
30495 @@ -677,7 +677,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
30497 active_features.push (event->feature);
30499 - active_feature_t *feature = active_features.find (&event->feature);
30500 + active_feature_t *feature = active_features.lsearch (event->feature);
30502 active_features.remove (feature - active_features.arrayZ);
30504 @@ -897,7 +897,7 @@ resize_and_retry:
30507 buffer->len = 0;
30508 - uint32_t status_and = ~0, status_or = 0;
30511 /* For right-to-left runs, CoreText returns the glyphs positioned such that
30513 @@ -918,7 +918,6 @@ resize_and_retry:
30517 - status_and &= run_status;
30520 if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction))
30521 @@ -1140,21 +1139,6 @@ resize_and_retry:
30522 buffer->len += num_glyphs;
30525 - /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel,
30526 - * or if it does, it doesn't respect it. So we get runs with wrong
30527 - * directions. As such, disable the assert... It wouldn't crash, but
30528 - * cursoring will be off...
30529 - *
30530 - * https://crbug.com/419769
30531 - */
30532 - if (false)
30533 - {
30534 - /* Make sure all runs had the expected direction. */
30535 - HB_UNUSED bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
30536 - assert (bool (status_and & kCTRunStatusRightToLeft) == backward);
30537 - assert (bool (status_or & kCTRunStatusRightToLeft) == backward);
30538 - }
30539 -
30540 buffer->clear_positions ();
30542 unsigned int count = buffer->len;
30543 @@ -1213,7 +1197,8 @@ resize_and_retry:
30547 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
30548 + buffer->clear_glyph_flags ();
30549 + buffer->unsafe_to_break ();
30553 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-directwrite.cc b/src/third_party/harfbuzz-ng/sr…
30555 --- a/src/third_party/harfbuzz-ng/src/src/hb-directwrite.cc
30556 +++ b/src/third_party/harfbuzz-ng/src/src/hb-directwrite.cc
30557 @@ -762,7 +762,8 @@ retry_getglyphs:
30561 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
30562 + buffer->clear_glyph_flags ();
30563 + buffer->unsafe_to_break ();
30567 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-draw.cc b/src/third_party/harfbuzz-ng/src/src/h…
30569 --- a/src/third_party/harfbuzz-ng/src/src/hb-draw.cc
30570 +++ b/src/third_party/harfbuzz-ng/src/src/hb-draw.cc
30571 @@ -25,237 +25,313 @@
30575 -#ifdef HB_EXPERIMENTAL_API
30577 #include "hb-draw.hh"
30578 -#include "hb-ot.h"
30579 -#include "hb-ot-glyf-table.hh"
30580 -#include "hb-ot-cff1-table.hh"
30581 -#include "hb-ot-cff2-table.hh"
30584 - * hb_draw_funcs_set_move_to_func:
30585 - * @funcs: draw functions object
30586 - * @move_to: move-to callback
30587 + * SECTION:hb-draw
30588 + * @title: hb-draw
30592 - * Sets move-to callback to the draw functions object.
30593 - *
30594 - * Since: EXPERIMENTAL
30595 + * Functions for drawing (extracting) glyph shapes.
30597 -void
30598 -hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs,
30599 - hb_draw_move_to_func_t move_to)
30620 - if (unlikely (hb_object_is_immutable (funcs))) return;
30621 - funcs->move_to = move_to;
30622 + dfuncs->emit_cubic_to (draw_data, *st,
30623 + (st->current_x + 2.f * control_x) / 3.f,
30624 + (st->current_y + 2.f * control_y) / 3.f,
30655 + if (dfuncs->destroy.name) \
30656 + dfuncs->destroy.name (dfuncs->user_data.name); \
30659 + dfuncs->func.name = func; \
30660 + dfuncs->user_data.name = user_data; \
30661 + dfuncs->destroy.name = destroy; \
30663 + dfuncs->func.name = hb_draw_##name##_nil; \
30664 + dfuncs->user_data.name = nullptr; \
30665 + dfuncs->destroy.name = nullptr; \
30673 - * hb_draw_funcs_set_line_to_func:
30674 - * @funcs: draw functions object
30675 - * @line_to: line-to callback
30680 - * Sets line-to callback to the draw functions object.
30688 - * Since: EXPERIMENTAL
30691 -void
30692 -hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs,
30693 - hb_draw_line_to_func_t line_to)
30697 - if (unlikely (hb_object_is_immutable (funcs))) return;
30698 - funcs->line_to = line_to;
30703 + dfuncs->func = Null (hb_draw_funcs_t).func;
30721 - * hb_draw_funcs_set_quadratic_to_func:
30722 - * @funcs: draw functions object
30723 - * @move_to: quadratic-to callback
30730 - * Sets quadratic-to callback to the draw functions object.
30734 - * Since: EXPERIMENTAL
30737 -void
30738 -hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs,
30739 - hb_draw_quadratic_to_func_t quadratic_to)
30743 - if (unlikely (hb_object_is_immutable (funcs))) return;
30744 - funcs->quadratic_to = quadratic_to;
30745 - funcs->is_quadratic_to_set = true;
30750 - * hb_draw_funcs_set_cubic_to_func:
30751 - * @funcs: draw functions
30752 - * @cubic_to: cubic-to callback
30756 - * Sets cubic-to callback to the draw functions object.
30761 - * Since: EXPERIMENTAL
30765 -hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs,
30766 - hb_draw_cubic_to_func_t cubic_to)
30769 - if (unlikely (hb_object_is_immutable (funcs))) return;
30770 - funcs->cubic_to = cubic_to;
30774 + if (dfuncs->destroy.name) dfuncs->destroy.name (dfuncs->user_data.name);
30783 - * hb_draw_funcs_set_close_path_func:
30784 - * @funcs: draw functions object
30785 - * @close_path: close-path callback
30789 - * Sets close-path callback to the draw functions object.
30792 - * Since: EXPERIMENTAL
30796 -hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs,
30797 - hb_draw_close_path_func_t close_path)
30800 - if (unlikely (hb_object_is_immutable (funcs))) return;
30801 - funcs->close_path = close_path;
30802 -}
30803 -
30804 -static void
30805 -_move_to_nil (hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, void *user_data HB_UNUSE…
30806 -
30807 -static void
30808 -_line_to_nil (hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED, void *user_data HB_UNUSE…
30809 -
30810 -static void
30811 -_quadratic_to_nil (hb_position_t control_x HB_UNUSED, hb_position_t control_y HB_UNUSED,
30812 - hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED,
30813 - void *user_data HB_UNUSED) {}
30814 -
30815 -static void
30816 -_cubic_to_nil (hb_position_t control1_x HB_UNUSED, hb_position_t control1_y HB_UNUSED,
30817 - hb_position_t control2_x HB_UNUSED, hb_position_t control2_y HB_UNUSED,
30818 - hb_position_t to_x HB_UNUSED, hb_position_t to_y HB_UNUSED,
30819 - void *user_data HB_UNUSED) {}
30823 -static void
30824 -_close_path_nil (void *user_data HB_UNUSED) {}
30829 - * hb_draw_funcs_create:
30833 - * Creates a new draw callbacks object.
30838 - * Since: EXPERIMENTAL
30841 -hb_draw_funcs_t *
30842 -hb_draw_funcs_create ()
30846 - hb_draw_funcs_t *funcs;
30847 - if (unlikely (!(funcs = hb_object_create<hb_draw_funcs_t> ())))
30848 - return const_cast<hb_draw_funcs_t *> (&Null (hb_draw_funcs_t));
30849 -
30850 - funcs->move_to = (hb_draw_move_to_func_t) _move_to_nil;
30851 - funcs->line_to = (hb_draw_line_to_func_t) _line_to_nil;
30852 - funcs->quadratic_to = (hb_draw_quadratic_to_func_t) _quadratic_to_nil;
30853 - funcs->is_quadratic_to_set = false;
30854 - funcs->cubic_to = (hb_draw_cubic_to_func_t) _cubic_to_nil;
30855 - funcs->close_path = (hb_draw_close_path_func_t) _close_path_nil;
30856 - return funcs;
30862 - * hb_draw_funcs_reference:
30863 - * @funcs: draw functions
30871 - * Add to callbacks object refcount.
30872 + * Perform a "move-to" draw operation.
30874 - * Returns: The same object.
30875 - * Since: EXPERIMENTAL
30878 -hb_draw_funcs_t *
30879 -hb_draw_funcs_reference (hb_draw_funcs_t *funcs)
30885 - return hb_object_reference (funcs);
30886 + dfuncs->move_to (draw_data, *st,
30891 - * hb_draw_funcs_destroy:
30892 - * @funcs: draw functions
30900 - * Decreases refcount of callbacks object and deletes the object if it reaches
30901 - * to zero.
30902 + * Perform a "line-to" draw operation.
30904 - * Since: EXPERIMENTAL
30908 -hb_draw_funcs_destroy (hb_draw_funcs_t *funcs)
30913 - if (!hb_object_destroy (funcs)) return;
30914 -
30915 - hb_free (funcs);
30916 + dfuncs->line_to (draw_data, *st,
30921 - * hb_draw_funcs_make_immutable:
30922 - * @funcs: draw functions
30932 - * Makes funcs object immutable.
30933 + * Perform a "quadratic-to" draw operation.
30935 - * Since: EXPERIMENTAL
30939 -hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs)
30945 - if (hb_object_is_immutable (funcs))
30946 - return;
30947 -
30948 - hb_object_make_immutable (funcs);
30949 + dfuncs->quadratic_to (draw_data, *st,
30955 - * hb_draw_funcs_is_immutable:
30956 - * @funcs: draw functions
30968 - * Checks whether funcs is immutable.
30969 + * Perform a "cubic-to" draw operation.
30971 - * Returns: If is immutable.
30972 - * Since: EXPERIMENTAL
30975 -hb_bool_t
30976 -hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs)
30984 - return hb_object_is_immutable (funcs);
30985 + dfuncs->cubic_to (draw_data, *st,
30992 - * hb_font_draw_glyph:
30993 - * @font: a font object
30994 - * @glyph: a glyph id
30995 - * @funcs: draw callbacks object
30996 - * @user_data: parameter you like be passed to the callbacks when are called
31002 - * Draw a glyph.
31003 + * Perform a "close-path" draw operation.
31005 - * Returns: Whether the font had the glyph and the operation completed successfully.
31006 - * Since: EXPERIMENTAL
31009 -hb_bool_t
31010 -hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph,
31011 - const hb_draw_funcs_t *funcs,
31012 - void *user_data)
31017 - if (unlikely (funcs == &Null (hb_draw_funcs_t) ||
31018 - glyph >= font->face->get_num_glyphs ()))
31019 - return false;
31020 -
31021 - draw_helper_t draw_helper (funcs, user_data);
31022 - if (font->face->table.glyf->get_path (font, glyph, draw_helper)) return true;
31023 -#ifndef HB_NO_CFF
31024 - if (font->face->table.cff1->get_path (font, glyph, draw_helper)) return true;
31025 - if (font->face->table.cff2->get_path (font, glyph, draw_helper)) return true;
31026 -#endif
31027 -
31028 - return false;
31029 + dfuncs->close_path (draw_data, *st);
31032 -#endif
31035 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-draw.h b/src/third_party/harfbuzz-ng/src/src/hb…
31037 --- a/src/third_party/harfbuzz-ng/src/src/hb-draw.h
31038 +++ b/src/third_party/harfbuzz-ng/src/src/hb-draw.h
31039 @@ -33,65 +33,292 @@
31043 -#ifdef HB_EXPERIMENTAL_API
31044 -typedef void (*hb_draw_move_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data);
31045 -typedef void (*hb_draw_line_to_func_t) (hb_position_t to_x, hb_position_t to_y, void *user_data);
31046 -typedef void (*hb_draw_quadratic_to_func_t) (hb_position_t control_x, hb_position_t control_y,
31047 - hb_position_t to_x, hb_position_t to_y,
31048 - void *user_data);
31049 -typedef void (*hb_draw_cubic_to_func_t) (hb_position_t control1_x, hb_position_t control1_y,
31050 - hb_position_t control2_x, hb_position_t control2_y,
31051 - hb_position_t to_x, hb_position_t to_y,
31052 - void *user_data);
31053 -typedef void (*hb_draw_close_path_func_t) (void *user_data);
31099 - * _move_to, _line_to and _cubic_to calls are nessecary to be defined but we
31100 - * translate _quadratic_to calls to _cubic_to if the callback isn't defined.
31106 - * Since: EXPERIMENTAL
31122 + * A virtual method for the #hb_draw_funcs_t to perform a "move-to" draw
31142 + * A virtual method for the #hb_draw_funcs_t to perform a "line-to" draw
31164 + * A virtual method for the #hb_draw_funcs_t to perform a "quadratic-to" draw
31189 + * A virtual method for the #hb_draw_funcs_t to perform a "cubic-to" draw
31209 + * A virtual method for the #hb_draw_funcs_t to perform a "close-path" draw
31222 + * @func: (closure user_data) (destroy destroy) (scope notified): move-to callback
31226 + * Sets move-to callback to the draw functions object.
31231 -hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *funcs,
31232 - hb_draw_move_to_func_t move_to);
31240 + * @func: (closure user_data) (destroy destroy) (scope notified): line-to callback
31244 + * Sets line-to callback to the draw functions object.
31249 -hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *funcs,
31250 - hb_draw_line_to_func_t line_to);
31258 + * @func: (closure user_data) (destroy destroy) (scope notified): quadratic-to callback
31262 + * Sets quadratic-to callback to the draw functions object.
31267 -hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *funcs,
31268 - hb_draw_quadratic_to_func_t quadratic_to);
31276 + * @func: (closure user_data) (destroy destroy) (scope notified): cubic-to callback
31280 + * Sets cubic-to callback to the draw functions object.
31285 -hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *funcs,
31286 - hb_draw_cubic_to_func_t cubic_to);
31294 + * @func: (closure user_data) (destroy destroy) (scope notified): close-path callback
31298 + * Sets close-path callback to the draw functions object.
31303 -hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *funcs,
31304 - hb_draw_close_path_func_t close_path);
31314 -hb_draw_funcs_reference (hb_draw_funcs_t *funcs);
31318 -hb_draw_funcs_destroy (hb_draw_funcs_t *funcs);
31322 -hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs);
31326 -hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs);
31327 -#endif
31361 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-draw.hh b/src/third_party/harfbuzz-ng/src/src/h…
31363 --- a/src/third_party/harfbuzz-ng/src/src/hb-draw.hh
31364 +++ b/src/third_party/harfbuzz-ng/src/src/hb-draw.hh
31365 @@ -27,113 +27,205 @@
31369 -#ifdef HB_EXPERIMENTAL_API
31370 -struct hb_draw_funcs_t
31371 -{
31372 - hb_object_header_t header;
31374 - hb_draw_move_to_func_t move_to;
31375 - hb_draw_line_to_func_t line_to;
31376 - hb_draw_quadratic_to_func_t quadratic_to;
31377 - bool is_quadratic_to_set;
31378 - hb_draw_cubic_to_func_t cubic_to;
31379 - hb_draw_close_path_func_t close_path;
31380 -};
31391 + /* ^--- Add new callbacks here */
31393 -struct draw_helper_t
31396 - draw_helper_t (const hb_draw_funcs_t *funcs_, void *user_data_)
31397 - {
31398 - funcs = funcs_;
31399 - user_data = user_data_;
31400 - path_open = false;
31401 - path_start_x = current_x = path_start_y = current_y = 0;
31402 - }
31403 - ~draw_helper_t () { end_path (); }
31406 - void move_to (hb_position_t x, hb_position_t y)
31459 - if (path_open) end_path ();
31460 - current_x = path_start_x = x;
31461 - current_y = path_start_y = y;
31467 - void line_to (hb_position_t x, hb_position_t y)
31471 - if (equal_to_current (x, y)) return;
31472 - if (!path_open) start_path ();
31473 - funcs->line_to (x, y, user_data);
31474 - current_x = x;
31475 - current_y = y;
31483 - quadratic_to (hb_position_t control_x, hb_position_t control_y,
31484 - hb_position_t to_x, hb_position_t to_y)
31489 - if (equal_to_current (control_x, control_y) && equal_to_current (to_x, to_y))
31490 - return;
31491 - if (!path_open) start_path ();
31492 - if (funcs->is_quadratic_to_set)
31493 - funcs->quadratic_to (control_x, control_y, to_x, to_y, user_data);
31494 - else
31495 - funcs->cubic_to (roundf ((current_x + 2.f * control_x) / 3.f),
31496 - roundf ((current_y + 2.f * control_y) / 3.f),
31497 - roundf ((to_x + 2.f * control_x) / 3.f),
31498 - roundf ((to_y + 2.f * control_y) / 3.f),
31499 - to_x, to_y, user_data);
31500 - current_x = to_x;
31501 - current_y = to_y;
31509 - cubic_to (hb_position_t control1_x, hb_position_t control1_y,
31510 - hb_position_t control2_x, hb_position_t control2_y,
31511 - hb_position_t to_x, hb_position_t to_y)
31517 - if (equal_to_current (control1_x, control1_y) &&
31518 - equal_to_current (control2_x, control2_y) &&
31519 - equal_to_current (to_x, to_y))
31520 - return;
31521 - if (!path_open) start_path ();
31522 - funcs->cubic_to (control1_x, control1_y, control2_x, control2_y, to_x, to_y, user_data);
31523 - current_x = to_x;
31524 - current_y = to_y;
31531 - void end_path ()
31535 - if (path_open)
31538 - if ((path_start_x != current_x) || (path_start_y != current_y))
31539 - funcs->line_to (path_start_x, path_start_y, user_data);
31540 - funcs->close_path (user_data);
31545 - path_open = false;
31546 - path_start_x = current_x = path_start_y = current_y = 0;
31552 - bool equal_to_current (hb_position_t x, hb_position_t y)
31553 - { return current_x == x && current_y == y; }
31555 - void start_path ()
31558 - if (path_open) end_path ();
31559 - path_open = true;
31560 - funcs->move_to (path_start_x, path_start_y, user_data);
31570 - hb_position_t path_start_x;
31571 - hb_position_t path_start_y;
31579 - hb_position_t current_x;
31580 - hb_position_t current_y;
31583 - bool path_open;
31584 - const hb_draw_funcs_t *funcs;
31585 - void *user_data;
31589 + funcs->move_to (draw_data, st,
31592 + funcs->move_to (draw_data, st,
31598 + funcs->line_to (draw_data, st,
31601 + funcs->line_to (draw_data, st,
31609 + funcs->quadratic_to (draw_data, st,
31613 + funcs->quadratic_to (draw_data, st,
31623 + funcs->cubic_to (draw_data, st,
31628 + funcs->cubic_to (draw_data, st,
31635 + funcs->close_path (draw_data, st);
31645 -#endif
31648 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-font.cc b/src/third_party/harfbuzz-ng/src/src/h…
31650 --- a/src/third_party/harfbuzz-ng/src/src/hb-font.cc
31651 +++ b/src/third_party/harfbuzz-ng/src/src/hb-font.cc
31652 @@ -29,6 +29,7 @@
31655 #include "hb-font.hh"
31656 +#include "hb-draw.hh"
31657 #include "hb-machinery.hh"
31659 #include "hb-ot.h"
31660 @@ -501,6 +502,136 @@ hb_font_get_glyph_from_name_default (hb_font_t *font,
31661 return font->parent->get_glyph_from_name (name, len, glyph);
31690 + float x_scale = adaptor->x_scale;
31691 + float y_scale = adaptor->y_scale;
31693 + adaptor->draw_funcs->emit_move_to (adaptor->draw_data, *st,
31704 + float x_scale = adaptor->x_scale;
31705 + float y_scale = adaptor->y_scale;
31707 + st->current_x *= x_scale;
31708 + st->current_y *= y_scale;
31710 + adaptor->draw_funcs->emit_line_to (adaptor->draw_data, *st,
31722 + float x_scale = adaptor->x_scale;
31723 + float y_scale = adaptor->y_scale;
31725 + st->current_x *= x_scale;
31726 + st->current_y *= y_scale;
31728 + adaptor->draw_funcs->emit_quadratic_to (adaptor->draw_data, *st,
31742 + float x_scale = adaptor->x_scale;
31743 + float y_scale = adaptor->y_scale;
31745 + st->current_x *= x_scale;
31746 + st->current_y *= y_scale;
31748 + adaptor->draw_funcs->emit_cubic_to (adaptor->draw_data, *st,
31761 + adaptor->draw_funcs->emit_close_path (adaptor->draw_data, *st);
31785 + (float) font->x_scale / (float) font->parent->x_scale,
31786 + (float) font->y_scale / (float) font->parent->y_scale
31789 + font->parent->get_glyph_shape (glyph,
31797 @@ -1168,6 +1299,26 @@ hb_font_get_glyph_from_name (hb_font_t *font,
31798 return font->get_glyph_from_name (name, len, glyph);
31819 + font->get_glyph_shape (glyph, dfuncs, draw_data);
31822 /* A bit higher-level, and with fallback */
31824 @@ -1190,7 +1341,7 @@ hb_font_get_extents_for_direction (hb_font_t *font,
31828 - return font->get_extents_for_direction (direction, extents);
31829 + font->get_extents_for_direction (direction, extents);
31833 @@ -1215,7 +1366,7 @@ hb_font_get_glyph_advance_for_direction (hb_font_t *font,
31837 - return font->get_glyph_advance_for_direction (glyph, direction, x, y);
31838 + font->get_glyph_advance_for_direction (glyph, direction, x, y);
31842 @@ -1544,8 +1695,10 @@ hb_font_create (hb_face_t *face)
31847 if (face && face->index >> 16)
31848 hb_font_set_var_named_instance (font, (face->index >> 16) - 1);
31853 @@ -2042,16 +2195,20 @@ hb_font_get_ptem (hb_font_t *font)
31857 - * Synthetic slant is the graphical skew that the renderer
31858 - * applies to the font at rendering time.
31869 * <note>Note: The slant value is a ratio. For example, a
31872 - * Since: REPLACEME
31877 @@ -2071,7 +2228,7 @@ hb_font_set_synthetic_slant (hb_font_t *font, float slant)
31881 - * Since: REPLACEME
31886 @@ -2264,7 +2421,7 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
31890 - * @length: Number of coordinates retrieved
31895 @@ -2275,6 +2432,8 @@ hb_font_set_var_coords_normalized (hb_font_t *font,
31904 @@ -2290,18 +2449,21 @@ hb_font_get_var_coords_normalized (hb_font_t *font,
31908 - * @length: (out): number of coordinates
31911 - * Return value is valid as long as variation coordinates of the font
31912 - * are not modified.
31913 + * Fetches the list of variation coordinates (in design-space units) currently
31916 * Note that this returned array may only contain values for some
31925 - * Since: REPLACEME
31930 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-font.h b/src/third_party/harfbuzz-ng/src/src/hb…
31932 --- a/src/third_party/harfbuzz-ng/src/src/hb-font.h
31933 +++ b/src/third_party/harfbuzz-ng/src/src/hb-font.h
31934 @@ -511,6 +511,25 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void…
31947 + * A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
31960 @@ -770,6 +789,22 @@ hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
31966 + * @ffuncs: A font-function structure
31971 + * Sets the implementation function for #hb_font_get_glyph_shape_func_t.
31983 @@ -850,6 +885,11 @@ hb_font_get_glyph_from_name (hb_font_t *font,
31984 const char *name, int len, /* -1 means nul-terminated */
31993 /* high-level funcs, with fallback */
31995 @@ -1056,11 +1096,6 @@ HB_EXTERN void
31999 -#ifdef HB_EXPERIMENTAL_API
32000 -HB_EXTERN hb_bool_t
32001 -hb_font_draw_glyph (hb_font_t *font, hb_codepoint_t glyph,
32002 - const hb_draw_funcs_t *funcs, void *user_data);
32003 -#endif
32007 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-font.hh b/src/third_party/harfbuzz-ng/src/src/h…
32009 --- a/src/third_party/harfbuzz-ng/src/src/hb-font.hh
32010 +++ b/src/third_party/harfbuzz-ng/src/src/hb-font.hh
32011 @@ -57,6 +57,7 @@
32016 /* ^--- Add new callbacks here */
32019 @@ -140,6 +141,8 @@ struct hb_font_t
32028 @@ -373,6 +376,15 @@ struct hb_font_t
32029 klass->user_data.glyph_from_name);
32035 + klass->get.f.glyph_shape (this, user_data,
32038 + klass->user_data.glyph_shape);
32042 /* A bit higher-level, and with fallback */
32044 @@ -625,7 +637,9 @@ struct hb_font_t
32048 - { return (hb_position_t) roundf (v * scale / face->get_upem ()); }
32051 + { return v * scale / face->get_upem (); }
32053 { return (float) v * scale / face->get_upem (); }
32055 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ft.cc b/src/third_party/harfbuzz-ng/src/src/hb-…
32057 --- a/src/third_party/harfbuzz-ng/src/src/hb-ft.cc
32058 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ft.cc
32059 @@ -33,12 +33,14 @@
32061 #include "hb-ft.h"
32063 +#include "hb-draw.hh"
32064 #include "hb-font.hh"
32065 #include "hb-machinery.hh"
32066 #include "hb-cache.hh"
32074 @@ -380,6 +382,7 @@ hb_ft_get_glyph_v_advance (hb_font_t *font,
32079 return (-v + (1<<9)) >> 10;
32082 @@ -565,6 +568,82 @@ hb_ft_get_font_h_extents (hb_font_t *font HB_UNUSED,
32092 + drawing->move_to (to->x, to->y);
32100 + drawing->line_to (to->x, to->y);
32109 + drawing->quadratic_to (control->x, control->y,
32110 + to->x, to->y);
32120 + drawing->cubic_to (control1->x, control1->y,
32121 + control2->x, control2->y,
32122 + to->x, to->y);
32134 + hb_lock_t lock (ft_font->lock);
32135 + FT_Face ft_face = ft_font->ft_face;
32138 + FT_LOAD_NO_BITMAP | ft_font->load_flags)))
32141 + if (ft_face->glyph->format != FT_GLYPH_FORMAT_OUTLINE)
32153 + hb_draw_session_t draw_session (draw_funcs, draw_data, font->slant_xy);
32155 + FT_Outline_Decompose (&ft_face->glyph->outline,
32165 @@ -596,6 +675,10 @@ static struct hb_ft_font_funcs_lazy_loader_t : hb_font_funcs_lazy_loader_t<hb_…
32176 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.cc b/src/third_party/harfbuzz-n…
32178 --- a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.cc
32179 +++ b/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.cc
32180 @@ -90,6 +90,7 @@ hb_gobject_##name##_get_type () \
32188 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.h b/src/third_party/harfbuzz-ng…
32190 --- a/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.h
32191 +++ b/src/third_party/harfbuzz-ng/src/src/hb-gobject-structs.h
32192 @@ -48,6 +48,10 @@ HB_EXTERN GType
32203 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-graphite2.cc b/src/third_party/harfbuzz-ng/src/…
32205 --- a/src/third_party/harfbuzz-ng/src/src/hb-graphite2.cc
32206 +++ b/src/third_party/harfbuzz-ng/src/src/hb-graphite2.cc
32207 @@ -439,7 +439,8 @@ _hb_graphite2_shape (hb_shape_plan_t *shape_plan HB_UNUSED,
32211 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
32212 + buffer->clear_glyph_flags ();
32213 + buffer->unsafe_to_break ();
32217 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-iter.hh b/src/third_party/harfbuzz-ng/src/src/h…
32219 --- a/src/third_party/harfbuzz-ng/src/src/hb-iter.hh
32220 +++ b/src/third_party/harfbuzz-ng/src/src/hb-iter.hh
32221 @@ -90,8 +90,8 @@ struct hb_iter_t
32223 * TODO Use a wrapper return type to fix for non-reference type. */
32225 - hb_enable_if (hb_is_reference (T))>
32226 - hb_remove_reference<item_t>* operator -> () const { return hb_addressof (**thiz()); }
32228 + hb_remove_reference<item_t>* operator -> () const { return std::addressof (**thiz()); }
32229 item_t operator * () const { return thiz()->__item__ (); }
32230 item_t operator * () { return thiz()->__item__ (); }
32231 item_t operator [] (unsigned i) const { return thiz()->__item_at__ (i); }
32232 @@ -289,7 +289,7 @@ struct hb_is_source_of
32236 - hb_enable_if (hb_is_convertible (typename Iter2::item_t, hb_add_lvalue_reference<hb_add_const…
32240 …static auto impl (hb_priority<1>) -> decltype (hb_declval (Iter2) >> hb_declval (Item &), hb_true_…
32241 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-kern.hh b/src/third_party/harfbuzz-ng/src/src/h…
32243 --- a/src/third_party/harfbuzz-ng/src/src/hb-kern.hh
32244 +++ b/src/third_party/harfbuzz-ng/src/src/hb-kern.hh
32245 @@ -49,6 +49,10 @@ struct hb_kern_machine_t
32249 + if (!buffer->message (font, "start kern"))
32252 + buffer->unsafe_to_concat ();
32256 @@ -67,7 +71,8 @@ struct hb_kern_machine_t
32260 - if (!skippy_iter.next ())
32266 @@ -125,6 +130,8 @@ struct hb_kern_machine_t
32271 + (void) buffer->message (font, "end kern");
32275 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-machinery.hh b/src/third_party/harfbuzz-ng/src/…
32277 --- a/src/third_party/harfbuzz-ng/src/src/hb-machinery.hh
32278 +++ b/src/third_party/harfbuzz-ng/src/src/hb-machinery.hh
32279 @@ -194,7 +194,8 @@ struct hb_lazy_loader_t : hb_data_wrapper_t<Data, WheresData>
32282 const Returned * operator -> () const { return get (); }
32283 - const Returned & operator * () const { return *get (); }
32289 @@ -244,19 +245,19 @@ struct hb_lazy_loader_t : hb_data_wrapper_t<Data, WheresData>
32293 - p->init (data);
32301 - p->init ();
32307 - p->fini ();
32308 + p->~Stored ();
32312 @@ -272,14 +273,19 @@ struct hb_face_lazy_loader_t : hb_lazy_loader_t<T,
32316 -template <typename T, unsigned int WheresFace>
32319 - hb_table_lazy_loader_t<T, WheresFace>,
32325 - { return hb_sanitize_context_t ().reference_table<T> (face); }
32335 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-map.hh b/src/third_party/harfbuzz-ng/src/src/hb…
32337 --- a/src/third_party/harfbuzz-ng/src/src/hb-map.hh
32338 +++ b/src/third_party/harfbuzz-ng/src/src/hb-map.hh
32339 @@ -37,13 +37,10 @@
32343 - k_invalid_t kINVALID = hb_is_pointer (K) ? 0 : std::is_signed<K>::value ? hb_int_min (K) : (K) …
32344 - v_invalid_t vINVALID = hb_is_pointer (V) ? 0 : std::is_signed<V>::value ? hb_int_min (V) : (V) …
32345 …id_t kINVALID = std::is_pointer<K>::value ? 0 : std::is_signed<K>::value ? hb_int_min (K) : (K) -1,
32346 …id_t vINVALID = std::is_pointer<V>::value ? 0 : std::is_signed<V>::value ? hb_int_min (V) : (V) -1>
32349 - static constexpr K INVALID_KEY = kINVALID;
32350 - static constexpr V INVALID_VALUE = vINVALID;
32351 -
32355 @@ -64,36 +61,38 @@ struct hb_hashmap_t
32359 - static_assert (std::is_trivially_copyable<K>::value, "");
32360 - static_assert (std::is_trivially_copyable<V>::value, "");
32361 - static_assert (std::is_trivially_destructible<K>::value, "");
32362 - static_assert (std::is_trivially_destructible<V>::value, "");
32363 -
32370 - void clear () { key = kINVALID; value = vINVALID; hash = 0; }
32384 - const K inv = kINVALID;
32390 - const K kinv = kINVALID;
32391 - const V vinv = vINVALID;
32398 - const K kinv = kINVALID;
32399 - const V vinv = vINVALID;
32405 @@ -132,8 +131,13 @@ struct hb_hashmap_t
32409 - hb_free (items);
32410 - items = nullptr;
32413 + for (unsigned i = 0; i < size; i++)
32421 @@ -177,10 +181,15 @@ struct hb_hashmap_t
32424 for (unsigned int i = 0; i < old_size; i++)
32437 @@ -192,22 +201,22 @@ struct hb_hashmap_t
32441 - if (unlikely (!items)) return vINVALID;
32444 - return items[i].is_real () && items[i] == key ? items[i].value : vINVALID;
32448 - void del (K key) { set (key, vINVALID); }
32452 - static constexpr V SENTINEL = vINVALID;
32459 - return v != SENTINEL;
32465 @@ -262,12 +271,12 @@ struct hb_hashmap_t
32469 - const K kinv = kINVALID;
32475 - const V vinv = vINVALID;
32478 return true; /* Trying to delete non-existent key. */
32480 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-meta.hh b/src/third_party/harfbuzz-ng/src/src/h…
32482 --- a/src/third_party/harfbuzz-ng/src/src/hb-meta.hh
32483 +++ b/src/third_party/harfbuzz-ng/src/src/hb-meta.hh
32484 @@ -29,6 +29,7 @@
32492 @@ -85,30 +86,13 @@ template <> struct hb_priority<0> {};
32496 -struct
32497 -{
32498 - template <typename T> constexpr T*
32499 - operator () (T& arg) const
32500 - {
32501 -#pragma GCC diagnostic push
32502 -#pragma GCC diagnostic ignored "-Wcast-align"
32503 - /* https://en.cppreference.com/w/cpp/memory/addressof */
32504 - return reinterpret_cast<T*> (
32505 - &const_cast<char&> (
32506 - reinterpret_cast<const volatile char&> (arg)));
32507 -#pragma GCC diagnostic pop
32508 - }
32509 -}
32510 -HB_FUNCOBJ (hb_addressof);
32511 -
32518 -template <typename T> using hb_add_const = const T;
32519 -#define hb_is_const(T) hb_match_const<T>::value
32524 @@ -119,14 +103,13 @@ template <typename T> using hb_add_lvalue_reference = decltype (_hb_try_add_l…
32525 template <typename T> auto _hb_try_add_rvalue_reference (hb_priority<1>) -> hb_type_identity<T&&>;
32526 template <typename T> auto _hb_try_add_rvalue_reference (hb_priority<0>) -> hb_type_identity<T>;
32528 -#define hb_is_reference(T) hb_match_reference<T>::value
32533 …template <typename T> auto _hb_try_add_pointer (hb_priority<1>) -> hb_type_identity<hb_remove_refe…
32534 template <typename T> auto _hb_try_add_pointer (hb_priority<1>) -> hb_type_identity<T>;
32536 -#define hb_is_pointer(T) hb_match_pointer<T>::value
32539 /* TODO Add feature-parity to std::decay. */
32540 @@ -137,8 +120,8 @@ template <typename T> using hb_decay = hb_remove_const<hb_remove_reference<T>>;
32544 - (!hb_is_const (From) || hb_is_const (To)) &&
32545 - (!hb_is_reference (To) || hb_is_const (To) || hb_is_reference (To))
32551 @@ -153,16 +136,6 @@ struct
32555 -struct
32556 -{
32557 - template <typename T> constexpr auto
32558 - operator () (T&& v) const HB_AUTO_RETURN (std::forward<T> (v))
32559 -
32560 - template <typename T> constexpr auto
32561 - operator () (T& v) const HB_AUTO_RETURN (hb_addressof (v))
32562 -}
32563 -HB_FUNCOBJ (hb_ref);
32564 -
32568 @@ -176,7 +149,7 @@ struct hb_reference_wrapper
32572 - hb_reference_wrapper (T& v) : v (hb_addressof (v)) {}
32577 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.cc b/src/third_party/harfbuzz…
32580 --- a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.cc
32582 @@ -1,177 +0,0 @@
32583 -/*
32584 - * Copyright © 2011,2012,2013 Google, Inc.
32585 - * Copyright © 2021 Khaled Hosny
32586 - *
32587 - * This is part of HarfBuzz, a text shaping library.
32588 - *
32589 - * Permission is hereby granted, without written agreement and without
32590 - * license or royalty fees, to use, copy, modify, and distribute this
32591 - * software and its documentation for any purpose, provided that the
32592 - * above copyright notice and the following two paragraphs appear in
32593 - * all copies of this software.
32594 - *
32595 - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
32596 - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
32597 - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
32598 - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
32599 - * DAMAGE.
32600 - *
32601 - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
32602 - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
32603 - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
32604 - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
32605 - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
32606 - *
32607 - * Google Author(s): Behdad Esfahbod
32608 - */
32609 -
32610 -#include "hb-ms-feature-ranges.hh"
32611 -
32612 -bool
32613 -hb_ms_setup_features (const hb_feature_t *features,
32614 - unsigned int num_features,
32615 - hb_vector_t<hb_ms_feature_t> &feature_records, /* OUT */
32616 - hb_vector_t<hb_ms_range_record_t> &range_records /* OUT */)
32617 -{
32618 - feature_records.shrink(0);
32619 - range_records.shrink(0);
32620 -
32621 - /* Sort features by start/end events. */
32622 - hb_vector_t<hb_ms_feature_event_t> feature_events;
32623 - for (unsigned int i = 0; i < num_features; i++)
32624 - {
32625 - hb_ms_active_feature_t feature;
32626 - feature.fea.tag_le = hb_uint32_swap (features[i].tag);
32627 - feature.fea.value = features[i].value;
32628 - feature.order = i;
32629 -
32630 - hb_ms_feature_event_t *event;
32631 -
32632 - event = feature_events.push ();
32633 - event->index = features[i].start;
32634 - event->start = true;
32635 - event->feature = feature;
32636 -
32637 - event = feature_events.push ();
32638 - event->index = features[i].end;
32639 - event->start = false;
32640 - event->feature = feature;
32641 - }
32642 - feature_events.qsort ();
32643 - /* Add a strategic final event. */
32644 - {
32645 - hb_ms_active_feature_t feature;
32646 - feature.fea.tag_le = 0;
32647 - feature.fea.value = 0;
32648 - feature.order = num_features + 1;
32649 -
32650 - auto *event = feature_events.push ();
32651 - event->index = 0; /* This value does magic. */
32652 - event->start = false;
32653 - event->feature = feature;
32654 - }
32655 -
32656 - /* Scan events and save features for each range. */
32657 - hb_vector_t<hb_ms_active_feature_t> active_features;
32658 - unsigned int last_index = 0;
32659 - for (unsigned int i = 0; i < feature_events.length; i++)
32660 - {
32661 - auto *event = &feature_events[i];
32662 -
32663 - if (event->index != last_index)
32664 - {
32665 - /* Save a snapshot of active features and the range. */
32666 - auto *range = range_records.push ();
32667 - auto offset = feature_records.length;
32668 -
32669 - active_features.qsort ();
32670 - for (unsigned int j = 0; j < active_features.length; j++)
32671 - {
32672 - if (!j || active_features[j].fea.tag_le != feature_records[feature_records.length - 1].tag…
32673 - {
32674 - feature_records.push (active_features[j].fea);
32675 - }
32676 - else
32677 - {
32678 - /* Overrides value for existing feature. */
32679 - feature_records[feature_records.length - 1].value = active_features[j].fea.value;
32680 - }
32681 - }
32682 -
32683 - /* Will convert to pointer after all is ready, since feature_records.array
32684 - * may move as we grow it. */
32685 - range->features.features = reinterpret_cast<hb_ms_feature_t *> (offset);
32686 - range->features.num_features = feature_records.length - offset;
32687 - range->index_first = last_index;
32688 - range->index_last = event->index - 1;
32689 -
32690 - last_index = event->index;
32691 - }
32692 -
32693 - if (event->start)
32694 - {
32695 - active_features.push (event->feature);
32696 - }
32697 - else
32698 - {
32699 - auto *feature = active_features.find (&event->feature);
32700 - if (feature)
32701 - active_features.remove (feature - active_features.arrayZ);
32702 - }
32703 - }
32704 -
32705 - if (!range_records.length) /* No active feature found. */
32706 - num_features = 0;
32707 -
32708 - /* Fixup the pointers. */
32709 - for (unsigned int i = 0; i < range_records.length; i++)
32710 - {
32711 - auto *range = &range_records[i];
32712 - range->features.features = (hb_ms_feature_t *) feature_records + reinterpret_cast<uintptr_t> (…
32713 - }
32714 -
32715 - return !!num_features;
32716 -}
32717 -
32718 -void
32719 -hb_ms_make_feature_ranges (hb_vector_t<hb_ms_feature_t> &feature_records,
32720 - hb_vector_t<hb_ms_range_record_t> &range_records,
32721 - unsigned int chars_offset,
32722 - unsigned int chars_len,
32723 - uint16_t *log_clusters,
32724 - hb_vector_t<hb_ms_features_t*> &range_features, /* OUT */
32725 - hb_vector_t<uint32_t> &range_counts /* OUT */)
32726 -{
32727 - range_features.shrink (0);
32728 - range_counts.shrink (0);
32729 -
32730 - auto *last_range = &range_records[0];
32731 - for (unsigned int i = chars_offset; i < chars_len; i++)
32732 - {
32733 - auto *range = last_range;
32734 - while (log_clusters[i] < range->index_first)
32735 - range--;
32736 - while (log_clusters[i] > range->index_last)
32737 - range++;
32738 - if (!range_features.length ||
32739 - &range->features != range_features[range_features.length - 1])
32740 - {
32741 - auto **features = range_features.push ();
32742 - auto *c = range_counts.push ();
32743 - if (unlikely (!features || !c))
32744 - {
32745 - range_features.shrink (0);
32746 - range_counts.shrink (0);
32747 - break;
32748 - }
32749 - *features = &range->features;
32750 - *c = 1;
32751 - }
32752 - else
32753 - {
32754 - range_counts[range_counts.length - 1]++;
32755 - }
32756 -
32757 - last_range = range;
32758 - }
32759 -}
32760 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.hh b/src/third_party/harfbuzz…
32762 --- a/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.hh
32763 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ms-feature-ranges.hh
32764 @@ -52,8 +52,8 @@ struct hb_ms_active_feature_t {
32765 a->fea.value < b->fea.value ? -1 : a->fea.value > b->fea.value ? 1 :
32768 - bool operator== (const hb_ms_active_feature_t *f)
32769 - { return cmp (this, f) == 0; }
32775 @@ -77,20 +77,153 @@ struct hb_ms_range_record_t {
32776 unsigned int index_last; /* == end - 1 */
32779 -HB_INTERNAL bool
32784 - hb_vector_t<hb_ms_range_record_t> &range_records /* OUT */);
32792 + for (unsigned int i = 0; i < num_features; i++)
32802 + event->index = features[i].start;
32803 + event->start = true;
32804 + event->feature = feature;
32807 + event->index = features[i].end;
32808 + event->start = false;
32809 + event->feature = feature;
32820 + event->index = 0; /* This value does magic. */
32821 + event->start = false;
32822 + event->feature = feature;
32825 + /* Scan events and save features for each range. */
32828 + for (unsigned int i = 0; i < feature_events.length; i++)
32832 + if (event->index != last_index)
32839 + for (unsigned int j = 0; j < active_features.length; j++)
32841 + if (!j || active_features[j].fea.tag_le != feature_records[feature_records.length - 1].tag…
32847 + /* Overrides value for existing feature. */
32848 + feature_records[feature_records.length - 1].value = active_features[j].fea.value;
32854 + range->features.features = reinterpret_cast<hb_ms_feature_t *> (offset);
32855 + range->features.num_features = feature_records.length - offset;
32856 + range->index_first = last_index;
32857 + range->index_last = event->index - 1;
32859 -HB_INTERNAL void
32860 + last_index = event->index;
32863 + if (event->start)
32865 + active_features.push (event->feature);
32869 + auto *feature = active_features.lsearch (event->feature);
32871 + active_features.remove (feature - active_features.arrayZ);
32875 + if (!range_records.length) /* No active feature found. */
32879 + for (unsigned int i = 0; i < range_records.length; i++)
32882 + range->features.features = (hb_ms_feature_t *) feature_records + reinterpret_cast<uintptr_t> (…
32895 - hb_vector_t<uint32_t> &range_counts /* OUT */);
32902 + for (unsigned int i = chars_offset; i < chars_len; i++)
32905 + while (log_clusters[i] < range->index_first)
32906 + range--;
32907 + while (log_clusters[i] > range->index_last)
32910 + &range->features != range_features[range_features.length - 1])
32920 + *features = &range->features;
32925 + range_counts[range_counts.length - 1]++;
32933 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-object.hh b/src/third_party/harfbuzz-ng/src/src…
32935 --- a/src/third_party/harfbuzz-ng/src/src/hb-object.hh
32936 +++ b/src/third_party/harfbuzz-ng/src/src/hb-object.hh
32937 @@ -53,7 +53,7 @@ struct hb_lockable_set_t
32941 - item_t *item = items.find (v);
32946 @@ -76,7 +76,7 @@ struct hb_lockable_set_t
32950 - item_t *item = items.find (v);
32955 @@ -93,7 +93,7 @@ struct hb_lockable_set_t
32959 - item_t *item = items.find (v);
32964 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff-common.hh b/src/third_party/harfbuzz-ng/…
32966 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff-common.hh
32967 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff-common.hh
32968 @@ -68,8 +68,6 @@ struct code_pair_t
32972 - void fini () { SUPER::fini_deep (); }
32973 -
32977 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.cc b/src/third_party/harfbuzz-ng/…
32979 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.cc
32980 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.cc
32981 @@ -442,13 +442,12 @@ bool OT::cff1::accelerator_t::get_extents (hb_font_t *font, hb_codepoint_t gl…
32985 -#ifdef HB_EXPERIMENTAL_API
32989 - draw_helper_t &draw_helper_, point_t *delta_)
32992 - draw_helper = &draw_helper_;
32997 @@ -458,14 +457,14 @@ struct cff1_path_param_t
33001 - draw_helper->move_to (font->em_scalef_x (point.x.to_real ()), font->em_scalef_y (point.y.to_re…
33002 + draw_session->move_to (font->em_fscalef_x (point.x.to_real ()), font->em_fscalef_y (point.y.to…
33009 - draw_helper->line_to (font->em_scalef_x (point.x.to_real ()), font->em_scalef_y (point.y.to_re…
33010 + draw_session->line_to (font->em_fscalef_x (point.x.to_real ()), font->em_fscalef_y (point.y.to…
33014 @@ -477,15 +476,15 @@ struct cff1_path_param_t
33018 - draw_helper->cubic_to (font->em_scalef_x (point1.x.to_real ()), font->em_scalef_y (point1.y.to…
33019 - font->em_scalef_x (point2.x.to_real ()), font->em_scalef_y (point2.y.to_real ()),
33020 - font->em_scalef_x (point3.x.to_real ()), font->em_scalef_y (point3.y.to_real ()));
33021 + draw_session->cubic_to (font->em_fscalef_x (point1.x.to_real ()), font->em_fscalef_y (point1.y…
33022 + font->em_fscalef_x (point2.x.to_real ()), font->em_fscalef_y (point2.y.to_real ()),
33023 + font->em_fscalef_x (point3.x.to_real ()), font->em_fscalef_y (point3.y.to_real ()));
33026 - void end_path () { draw_helper->end_path (); }
33027 + void end_path () { draw_session->close_path (); }
33030 - draw_helper_t *draw_helper;
33035 @@ -513,7 +512,7 @@ struct cff1_path_procs_path_t : path_procs_t<cff1_path_procs_path_t, cff1_cs_int
33039 - draw_helper_t &draw_helper, bool in_seac = false, point_t *delta = nullptr);
33044 @@ -530,14 +529,14 @@ struct cff1_cs_opset_path_t : cff1_cs_opset_t<cff1_cs_opset_path_t, cff1_path…
33045 hb_codepoint_t accent = param.cff->std_code_to_glyph (env.argStack[n-1].to_int ());
33048 - && _get_path (param.cff, param.font, base, *param.draw_helper, true)
33049 - && _get_path (param.cff, param.font, accent, *param.draw_helper, true, &delta))))
33057 - draw_helper_t &draw_helper, bool in_seac, point_t *delta)
33060 if (unlikely (!cff->is_valid () || (glyph >= cff->num_glyphs))) return false;
33062 @@ -546,7 +545,7 @@ bool _get_path (const OT::cff1::accelerator_t *cff, hb_font_t *font, hb_codepoin
33063 const byte_str_t str = (*cff->charStrings)[glyph];
33066 - cff1_path_param_t param (cff, font, draw_helper, delta);
33071 @@ -555,16 +554,15 @@ bool _get_path (const OT::cff1::accelerator_t *cff, hb_font_t *font, hb_codep…
33075 -bool OT::cff1::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw…
33083 - return _get_path (this, font, glyph, draw_helper);
33086 -#endif
33090 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.hh b/src/third_party/harfbuzz-ng/…
33092 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.hh
33093 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff1-table.hh
33094 @@ -1144,8 +1144,8 @@ struct cff1
33098 - fontDicts.fini_deep ();
33099 - privateDicts.fini_deep ();
33105 @@ -1245,32 +1245,32 @@ struct cff1
33109 - hb_blob_t *blob;
33114 - const Encoding *encoding;
33115 - const Charset *charset;
33116 - const CFF1NameIndex *nameIndex;
33117 - const CFF1TopDictIndex *topDictIndex;
33118 - const CFF1StringIndex *stringIndex;
33119 - const CFF1Subrs *globalSubrs;
33120 - const CFF1CharStrings *charStrings;
33121 - const CFF1FDArray *fdArray;
33122 - const CFF1FDSelect *fdSelect;
33123 - unsigned int fdCount;
33140 - unsigned int num_glyphs;
33146 - void init (hb_face_t *face)
33151 @@ -1295,8 +1295,7 @@ struct cff1
33155 -
33156 - void fini ()
33161 @@ -1348,9 +1347,7 @@ struct cff1
33165 -#ifdef HB_EXPERIMENTAL_API
33166 - HB_INTERNAL bool get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) …
33167 -#endif
33172 @@ -1398,7 +1395,10 @@ struct cff1
33176 -struct cff1_accelerator_t : cff1::accelerator_t {};
33184 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.cc b/src/third_party/harfbuzz-ng/…
33186 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.cc
33187 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.cc
33188 @@ -143,30 +143,29 @@ bool OT::cff2::accelerator_t::get_extents (hb_font_t *font,
33192 -#ifdef HB_EXPERIMENTAL_API
33195 - cff2_path_param_t (hb_font_t *font_, draw_helper_t &draw_helper_)
33198 - draw_helper = &draw_helper_;
33204 - { draw_helper->move_to (font->em_scalef_x (p.x.to_real ()), font->em_scalef_y (p.y.to_real ()));…
33205 + { draw_session->move_to (font->em_fscalef_x (p.x.to_real ()), font->em_fscalef_y (p.y.to_real ()…
33208 - { draw_helper->line_to (font->em_scalef_x (p.x.to_real ()), font->em_scalef_y (p.y.to_real ()));…
33209 + { draw_session->line_to (font->em_fscalef_x (p.x.to_real ()), font->em_fscalef_y (p.y.to_real ()…
33213 - draw_helper->cubic_to (font->em_scalef_x (p1.x.to_real ()), font->em_scalef_y (p1.y.to_real ()…
33214 - font->em_scalef_x (p2.x.to_real ()), font->em_scalef_y (p2.y.to_real ()),
33215 - font->em_scalef_x (p3.x.to_real ()), font->em_scalef_y (p3.y.to_real ()));
33216 + draw_session->cubic_to (font->em_fscalef_x (p1.x.to_real ()), font->em_fscalef_y (p1.y.to_real…
33217 + font->em_fscalef_x (p2.x.to_real ()), font->em_fscalef_y (p2.y.to_real ()),
33218 + font->em_fscalef_x (p3.x.to_real ()), font->em_fscalef_y (p3.y.to_real ()));
33222 - draw_helper_t *draw_helper;
33227 @@ -193,7 +192,7 @@ struct cff2_path_procs_path_t : path_procs_t<cff2_path_procs_path_t, cff2_cs_int
33231 -bool OT::cff2::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw…
33236 @@ -206,10 +205,9 @@ bool OT::cff2::accelerator_t::get_path (hb_font_t *font, hb_codepoint_t glyph,…
33239 interp.env.init (str, *this, fd, font->coords, font->num_coords);
33240 - cff2_path_param_t param (font, draw_helper);
33245 -#endif
33248 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.hh b/src/third_party/harfbuzz-ng/…
33250 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.hh
33251 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cff2-table.hh
33252 @@ -397,7 +397,7 @@ struct cff2
33256 - void init (hb_face_t *face)
33261 @@ -412,15 +412,15 @@ struct cff2
33262 const OT::cff2 *cff2 = this->blob->template as<OT::cff2> ();
33265 - { fini (); return; }
33269 byte_str_t topDictStr (cff2 + cff2->topDict, cff2->topDictSize);
33270 - if (unlikely (!topDictStr.sanitize (&sc))) { fini (); return; }
33275 - if (unlikely (!top_interp.interpret (topDict))) { fini (); return; }
33279 globalSubrs = &StructAtOffset<CFF2Subrs> (cff2, cff2->topDict + cff2->topDictSize);
33280 @@ -434,49 +434,55 @@ struct cff2
33281 (globalSubrs == &Null (CFF2Subrs)) || unlikely (!globalSubrs->sanitize (&sc)) ||
33282 (fdArray == &Null (CFF2FDArray)) || unlikely (!fdArray->sanitize (&sc)) ||
33283 (((fdSelect != &Null (CFF2FDSelect)) && unlikely (!fdSelect->sanitize (&sc, fdArray->count)))))
33284 - { fini (); return; }
33287 num_glyphs = charStrings->count;
33289 - { fini (); return; }
33292 fdCount = fdArray->count;
33294 - { fini (); return; }
33298 for (unsigned int i = 0; i < fdCount; i++)
33301 - if (unlikely (!fontDictStr.sanitize (&sc))) { fini (); return; }
33307 - if (unlikely (font == &Crap (cff2_font_dict_values_t))) { fini (); return; }
33309 font->init ();
33310 - if (unlikely (!font_interp.interpret (*font))) { fini (); return; }
33313 …rivDictStr (StructAtOffsetOrNull<UnsizedByteStr> (cff2, font->privateDictInfo.offset), font->priva…
33314 - if (unlikely (!privDictStr.sanitize (&sc))) { fini (); return; }
33319 - if (unlikely (!priv_interp.interpret (privateDicts[i]))) { fini (); return; }
33324 unlikely (!privateDicts[i].localSubrs->sanitize (&sc)))
33325 - { fini (); return; }
33328 - }
33330 - void fini ()
33342 - fontDicts.fini_deep ();
33343 - privateDicts.fini_deep ();
33349 @@ -484,32 +490,32 @@ struct cff2
33353 - hb_blob_t *blob;
33359 - const CFF2Subrs *globalSubrs;
33360 - const CFF2VariationStore *varStore;
33361 - const CFF2CharStrings *charStrings;
33362 - const CFF2FDArray *fdArray;
33363 - const CFF2FDSelect *fdSelect;
33364 - unsigned int fdCount;
33375 - unsigned int num_glyphs;
33386 -#ifdef HB_EXPERIMENTAL_API
33387 - HB_INTERNAL bool get_path (hb_font_t *font, hb_codepoint_t glyph, draw_helper_t &draw_helper) …
33388 -#endif
33393 @@ -525,7 +531,10 @@ struct cff2
33397 -struct cff2_accelerator_t : cff2::accelerator_t {};
33405 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-cmap-table.hh b/src/third_party/harfbuzz-ng/…
33407 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-cmap-table.hh
33408 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-cmap-table.hh
33409 @@ -369,7 +369,6 @@ struct CmapSubtableFormat4
33413 - ~accelerator_t () { fini (); }
33417 @@ -381,7 +380,6 @@ struct CmapSubtableFormat4
33419 glyphIdArrayLength = (subtable->length - 16 - 8 * segCount) / 2;
33421 - void fini () {}
33425 @@ -716,7 +714,7 @@ struct CmapSubtableLongSegmented
33426 if (unlikely ((unsigned int) (gid + end - start) >= num_glyphs))
33427 end = start + (hb_codepoint_t) num_glyphs - gid;
33429 - out->add_range (start, end);
33430 + out->add_range (start, hb_min (end, 0x10FFFFu));
33434 @@ -885,7 +883,7 @@ struct DefaultUVS : SortedArray32Of<UnicodeValueRange>
33438 - out->add_range (first, last);
33439 + out->add_range (first, hb_min (last, 0x10FFFFu));
33443 @@ -1607,7 +1605,7 @@ struct cmap
33447 - const EncodingRecord *table = hb_addressof (_);
33452 @@ -1665,7 +1663,7 @@ struct cmap
33456 - void init (hb_face_t *face)
33459 this->table = hb_sanitize_context_t ().reference_table<cmap> (face);
33461 @@ -1700,8 +1698,7 @@ struct cmap
33465 -
33466 - void fini () { this->table.destroy (); }
33467 + ~accelerator_t () { this->table.destroy (); }
33471 @@ -1863,7 +1860,9 @@ struct cmap
33475 -struct cmap_accelerator_t : cmap::accelerator_t {};
33482 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-cbdt-table.hh b/src/third_party/harfbu…
33484 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-cbdt-table.hh
33485 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-cbdt-table.hh
33486 @@ -360,6 +360,16 @@ struct IndexSubtable
33503 @@ -809,15 +819,14 @@ struct CBDT
33507 - void init (hb_face_t *face)
33510 - cblc = hb_sanitize_context_t ().reference_table<CBLC> (face);
33511 - cbdt = hb_sanitize_context_t ().reference_table<CBDT> (face);
33512 + this->cblc = hb_sanitize_context_t ().reference_table<CBLC> (face);
33513 + this->cbdt = hb_sanitize_context_t ().reference_table<CBDT> (face);
33517 -
33518 - void fini ()
33521 this->cblc.destroy ();
33522 this->cbdt.destroy ();
33523 @@ -978,7 +987,10 @@ CBLC::subset (hb_subset_context_t *c) const
33527 -struct CBDT_accelerator_t : CBDT::accelerator_t {};
33535 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colr-table.hh b/src/third_party/harfbu…
33537 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colr-table.hh
33538 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colr-table.hh
33539 @@ -71,7 +71,7 @@ struct hb_colrv1_closure_context_t :
33542 hb_codepoint_t delta = (hb_codepoint_t) ((uintptr_t) paint - (uintptr_t) base);
33543 - if (visited_paint.has (delta))
33548 @@ -1270,13 +1270,9 @@ struct COLR
33552 - accelerator_t () {}
33553 - ~accelerator_t () { fini (); }
33554 -
33555 - void init (hb_face_t *face)
33558 -
33559 - void fini () { this->colr.destroy (); }
33560 + ~accelerator_t () { this->colr.destroy (); }
33562 bool is_valid () { return colr.get_blob ()->length; }
33564 @@ -1535,6 +1531,10 @@ struct COLR
33575 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colrv1-closure.hh b/src/third_party/ha…
33577 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colrv1-closure.hh
33578 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-colrv1-closure.hh
33579 @@ -43,7 +43,7 @@ HB_INTERNAL void PaintColrLayers::closurev1 (hb_colrv1_closure_context_t* c) con
33580 const LayerList &paint_offset_lists = c->get_colr_table ()->get_layerList ();
33581 for (unsigned i = firstLayerIndex; i < firstLayerIndex + numLayers; i++)
33583 - const Paint &paint = hb_addressof (paint_offset_lists) + paint_offset_lists[i];
33588 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-sbix-table.hh b/src/third_party/harfbu…
33590 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-sbix-table.hh
33591 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-sbix-table.hh
33592 @@ -202,12 +202,12 @@ struct sbix
33596 - void init (hb_face_t *face)
33600 num_glyphs = face->get_num_glyphs ();
33602 - void fini () { table.destroy (); }
33605 bool has_data () const { return table->has_data (); }
33607 @@ -407,7 +407,10 @@ struct sbix
33611 -struct sbix_accelerator_t : sbix::accelerator_t {};
33619 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-svg-table.hh b/src/third_party/harfbuz…
33621 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color-svg-table.hh
33622 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color-svg-table.hh
33623 @@ -79,9 +79,9 @@ struct SVG
33627 - void init (hb_face_t *face)
33630 - void fini () { table.destroy (); }
33635 @@ -116,7 +116,9 @@ struct SVG
33639 -struct SVG_accelerator_t : SVG::accelerator_t {};
33646 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-color.cc b/src/third_party/harfbuzz-ng/src/s…
33648 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-color.cc
33649 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-color.cc
33650 @@ -116,7 +116,7 @@ hb_ot_color_palette_get_name_id (hb_face_t *face,
33653 * Fetches the `name` table Name ID that provides display names for
33654 - * the specificed color in a face's `CPAL` color palette.
33659 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-deprecated.h b/src/third_party/harfbuzz-ng/s…
33661 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-deprecated.h
33662 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-deprecated.h
33663 @@ -50,6 +50,21 @@ HB_BEGIN_DECLS
33675 + * usage is no longer supported. Use #HB_SCRIPT_MATH instead.</note>
33683 /* Like hb_ot_layout_table_find_script, but takes zero-terminated array of scripts to test */
33685 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-face-table-list.hh b/src/third_party/harfbuz…
33687 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-face-table-list.hh
33688 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-face-table-list.hh
33689 @@ -32,6 +32,11 @@
33701 @@ -46,7 +51,8 @@
33705 -HB_OT_TABLE (OT, head)
33711 @@ -74,6 +80,7 @@ HB_OT_TABLE (OT, VORG)
33719 @@ -138,3 +145,7 @@ HB_OT_TABLE (OT, MATH)
33727 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-face.hh b/src/third_party/harfbuzz-ng/src/sr…
33729 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-face.hh
33730 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-face.hh
33731 @@ -63,10 +63,13 @@ struct hb_ot_face_t
33739 #include "hb-ot-face-table-list.hh"
33745 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-font.cc b/src/third_party/harfbuzz-ng/src/sr…
33747 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-font.cc
33748 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-font.cc
33749 @@ -131,11 +131,25 @@ hb_ot_get_glyph_v_advances (hb_font_t* font, void* font_data,
33751 const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
33753 - for (unsigned int i = 0; i < count; i++)
33755 + for (unsigned int i = 0; i < count; i++)
33757 + *first_advance = font->em_scale_y (-(int) vmtx.get_advance (*first_glyph, font));
33763 - *first_advance = font->em_scale_y (-(int) vmtx.get_advance (*first_glyph, font));
33764 - first_glyph = &StructAtOffsetUnaligned<hb_codepoint_t> (first_glyph, glyph_stride);
33765 - first_advance = &StructAtOffsetUnaligned<hb_position_t> (first_advance, advance_stride);
33767 + font->get_h_extents_with_fallback (&font_extents);
33768 + hb_position_t advance = -(font_extents.ascender - font_extents.descender);
33770 + for (unsigned int i = 0; i < count; i++)
33779 @@ -163,9 +177,19 @@ hb_ot_get_glyph_v_origin (hb_font_t *font,
33781 if (ot_face->glyf->get_extents (font, glyph, &extents))
33783 - const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
33784 - hb_position_t tsb = vmtx.get_side_bearing (font, glyph);
33785 - *y = extents.y_bearing + font->em_scale_y (tsb);
33786 + if (ot_face->vmtx->has_data ())
33788 + const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
33790 + *y = extents.y_bearing + font->em_scale_y (tsb);
33795 + font->get_h_extents_with_fallback (&font_extents);
33796 + hb_position_t advance = font_extents.ascender - font_extents.descender;
33797 + int diff = advance - -extents.height;
33802 @@ -257,6 +281,23 @@ hb_ot_get_font_v_extents (hb_font_t *font,
33814 + hb_draw_session_t draw_session (draw_funcs, draw_data, font->slant_xy);
33815 + if (font->face->table.glyf->get_path (font, glyph, draw_session)) return;
33817 + if (font->face->table.cff1->get_path (font, glyph, draw_session)) return;
33818 + if (font->face->table.cff2->get_path (font, glyph, draw_session)) return;
33826 @@ -279,6 +320,10 @@ static struct hb_ot_font_funcs_lazy_loader_t : hb_font_funcs_lazy_loader_t<hb_…
33837 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-glyf-table.hh b/src/third_party/harfbuzz-ng/…
33839 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-glyf-table.hh
33840 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-glyf-table.hh
33841 @@ -207,8 +207,7 @@ struct glyf
33845 - OT::glyf::accelerator_t glyf;
33846 - glyf.init (plan->source);
33847 + OT::glyf::accelerator_t glyf (plan->source);
33849 + hb_range (plan->num_output_glyphs ())
33851 @@ -233,8 +232,6 @@ struct glyf
33855 -
33856 - glyf.fini ();
33860 @@ -595,7 +592,7 @@ struct glyf
33864 - if (unlikely (length (flags_offset + 1) > bytes.length)) return;
33869 @@ -823,8 +820,7 @@ struct glyf
33873 - if (unlikely (!glyf_accelerator.gvar->apply_deltas_to_points (gid, font, points.as_array ())…
33874 - return false;
33875 + glyf_accelerator.gvar->apply_deltas_to_points (gid, font, points.as_array ());
33879 @@ -920,7 +916,7 @@ struct glyf
33883 - void init (hb_face_t *face_)
33888 @@ -933,14 +929,13 @@ struct glyf
33892 - face = face_;
33893 const OT::head &head = *face->table.head;
33899 - loca_table = hb_sanitize_context_t ().reference_table<loca> (face);
33900 + loca_table = face->table.loca.get_blob (); // Needs no destruct!
33903 gvar = face->table.gvar;
33904 @@ -953,10 +948,8 @@ struct glyf
33905 num_glyphs = hb_max (1u, loca_table.get_length () / (short_offset ? 2 : 4)) - 1;
33906 num_glyphs = hb_min (num_glyphs, face->get_num_glyphs ());
33908 -
33909 - void fini ()
33912 - loca_table.destroy ();
33916 @@ -1157,11 +1150,10 @@ struct glyf
33920 -#ifdef HB_EXPERIMENTAL_API
33924 - draw_helper_t *draw_helper;
33929 @@ -1176,10 +1168,10 @@ struct glyf
33930 { return optional_point_t (x + t * (p.x - x), y + t * (p.y - y)); }
33933 - path_builder_t (hb_font_t *font_, draw_helper_t &draw_helper_)
33937 - draw_helper = &draw_helper_;
33942 @@ -1189,10 +1181,6 @@ struct glyf
33946 - /* Skip empty contours */
33947 - if (unlikely (point.is_end_point && !first_oncurve.has_data && !first_offcurve.has_data))
33948 - return;
33949 -
33953 @@ -1200,7 +1188,7 @@ struct glyf
33957 - draw_helper->move_to (font->em_scalef_x (p.x), font->em_scalef_y (p.y));
33958 + draw_session->move_to (font->em_fscalef_x (p.x), font->em_fscalef_y (p.y));
33962 @@ -1209,7 +1197,7 @@ struct glyf
33966 - draw_helper->move_to (font->em_scalef_x (mid.x), font->em_scalef_y (mid.y));
33967 + draw_session->move_to (font->em_fscalef_x (mid.x), font->em_fscalef_y (mid.y));
33971 @@ -1221,22 +1209,22 @@ struct glyf
33975 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_off…
33976 - font->em_scalef_x (p.x), font->em_scalef_y (p.y));
33977 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_…
33978 + font->em_fscalef_x (p.x), font->em_fscalef_y (p.y));
33984 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_off…
33985 - font->em_scalef_x (mid.x), font->em_scalef_y (mid.y));
33986 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_…
33987 + font->em_fscalef_x (mid.x), font->em_fscalef_y (mid.y));
33994 - draw_helper->line_to (font->em_scalef_x (p.x), font->em_scalef_y (p.y));
33995 + draw_session->line_to (font->em_fscalef_x (p.x), font->em_fscalef_y (p.y));
33999 @@ -1247,24 +1235,30 @@ struct glyf
34003 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcu…
34004 - font->em_scalef_x (mid.x), font->em_scalef_y (mid.y));
34005 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_of…
34006 + font->em_fscalef_x (mid.x), font->em_fscalef_y (mid.y));
34012 - draw_helper->quadratic_to (font->em_scalef_x (first_offcurve.x), font->em_scalef_y (first_off…
34013 - font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y));
34014 + draw_session->quadratic_to (font->em_fscalef_x (first_offcurve.x), font->em_fscalef_y (first_…
34015 + font->em_fscalef_x (first_oncurve.x), font->em_fscalef_y (first_oncurve.y));
34017 - draw_helper->quadratic_to (font->em_scalef_x (last_offcurve.x), font->em_scalef_y (last_offcu…
34018 - font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y));
34019 + draw_session->quadratic_to (font->em_fscalef_x (last_offcurve.x), font->em_fscalef_y (last_of…
34020 + font->em_fscalef_x (first_oncurve.x), font->em_fscalef_y (first_oncurve.y));
34022 - draw_helper->line_to (font->em_scalef_x (first_oncurve.x), font->em_scalef_y (first_oncurve.y…
34023 + draw_session->line_to (font->em_fscalef_x (first_oncurve.x), font->em_fscalef_y (first_oncurv…
34026 + float x = font->em_fscalef_x (first_offcurve.x), y = font->em_fscalef_x (first_offcurve.y);
34027 + draw_session->move_to (x, y);
34028 + draw_session->quadratic_to (x, y, x, y);
34031 /* Getting ready for the next contour */
34033 - draw_helper->end_path ();
34034 + draw_session->close_path ();
34038 @@ -1274,9 +1268,8 @@ struct glyf
34042 - get_path (hb_font_t *font, hb_codepoint_t gid, draw_helper_t &draw_helper) const
34043 - { return get_points (font, gid, path_builder_t (font, draw_helper)); }
34044 -#endif
34050 @@ -1291,7 +1284,6 @@ struct glyf
34054 - hb_face_t *face;
34058 @@ -1358,7 +1350,10 @@ struct glyf
34062 -struct glyf_accelerator_t : glyf::accelerator_t {};
34070 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-hmtx-table.hh b/src/third_party/harfbuzz-ng/…
34072 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-hmtx-table.hh
34073 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-hmtx-table.hh
34074 @@ -28,6 +28,7 @@
34077 #include "hb-open-type.hh"
34078 +#include "hb-ot-maxp-table.hh"
34079 #include "hb-ot-hhea-table.hh"
34080 #include "hb-ot-var-hvar-table.hh"
34081 #include "hb-ot-metrics.hh"
34082 @@ -98,12 +99,12 @@ struct hmtxvmtx
34086 - unsigned num_advances)
34090 for (auto _ : it)
34092 - if (idx < num_advances)
34097 @@ -127,9 +128,20 @@ struct hmtxvmtx
34098 T *table_prime = c->serializer->start_embed <T> ();
34101 - accelerator_t _mtx;
34102 - _mtx.init (c->plan->source);
34103 - unsigned num_advances = _mtx.num_advances_for_subset (c->plan);
34104 + accelerator_t _mtx (c->plan->source);
34108 + auto& plan = c->plan;
34109 + num_long_metrics = plan->num_output_glyphs ();
34111 + unsigned int last_advance = plan->old_gid_for_new_gid (num_long_metrics - 1, &old_gid) ? _mt…
34113 + last_advance == (plan->old_gid_for_new_gid (num_long_metrics - 2, &old_gid) ? _mtx.get_advan…
34115 + num_long_metrics--;
34120 + hb_range (c->plan->num_output_glyphs ())
34121 @@ -142,15 +154,13 @@ struct hmtxvmtx
34125 - table_prime->serialize (c->serializer, it, num_advances);
34126 -
34127 - _mtx.fini ();
34128 + table_prime->serialize (c->serializer, it, num_long_metrics);
34130 if (unlikely (c->serializer->in_error ()))
34134 - if (unlikely (!subset_update_header (c->plan, num_advances)))
34135 + if (unlikely (!subset_update_header (c->plan, num_long_metrics)))
34139 @@ -160,56 +170,67 @@ struct hmtxvmtx
34143 - void init (hb_face_t *face,
34144 - unsigned int default_advance_ = 0)
34147 - default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
34155 - num_advances = T::is_horizontal ?
34156 - face->table.hhea->numberOfLongMetrics :
34159 + len--;
34162 + face->table.hhea->numberOfLongMetrics :
34164 - face->table.vhea->numberOfLongMetrics
34165 + face->table.vhea->numberOfLongMetrics
34167 - 0
34170 - ;
34174 + len -= num_long_metrics * 4;
34176 - table = hb_sanitize_context_t ().reference_table<hmtxvmtx> (face, T::tableTag);
34177 + num_bearings = face->table.maxp->get_num_glyphs ();
34179 - /* Cap num_metrics() and num_advances() based on table length. */
34180 - unsigned int len = table.get_length ();
34181 - if (unlikely (num_advances * 4 > len))
34182 - num_advances = len / 4;
34183 - num_metrics = num_advances + (len - 4 * num_advances) / 2;
34186 + if (unlikely ((num_bearings - num_long_metrics) * 2 > len))
34188 + len -= (num_bearings - num_long_metrics) * 2;
34190 - /* We MUST set num_metrics to zero if num_advances is zero.
34193 - if (unlikely (!num_advances))
34194 - {
34195 - num_metrics = num_advances = 0;
34196 - table.destroy ();
34197 - table = hb_blob_get_empty ();
34198 - }
34202 - var_table = hb_sanitize_context_t ().reference_table<HVARVVAR> (face, T::variationsTag);
34204 + num_glyphs = face->get_num_glyphs ();
34208 -
34209 - void fini ()
34220 - if (glyph < num_advances)
34222 return table->longMetricZ[glyph].sb;
34224 - if (unlikely (glyph >= num_metrics))
34228 - const FWORD *bearings = (const FWORD *) &table->longMetricZ[num_advances];
34229 - return bearings[glyph - num_advances];
34230 + const FWORD *bearings = (const FWORD *) &table->longMetricZ[num_long_metrics];
34231 + return bearings[glyph - num_long_metrics];
34235 @@ -217,7 +238,7 @@ struct hmtxvmtx
34239 - if (unlikely (glyph >= num_metrics) || !font->num_coords)
34240 + if (unlikely (glyph >= num_bearings) || !font->num_coords)
34244 @@ -231,18 +252,35 @@ struct hmtxvmtx
34248 - if (unlikely (glyph >= num_metrics))
34249 - {
34250 - /* If num_metrics is zero, it means we don't have the metrics table
34251 - * for this direction: return default advance. Otherwise, it means that the
34252 - * glyph index is out of bound: return zero. */
34253 - if (num_metrics)
34254 - return 0;
34255 - else
34256 - return default_advance;
34257 - }
34260 + return table->longMetricZ[hb_min (glyph, (uint32_t) num_long_metrics - 1)].advance;
34263 + * for this direction: return default advance. Otherwise, there's a
34264 + * well-defined answer. */
34268 - return table->longMetricZ[hb_min (glyph, (uint32_t) num_advances - 1)].advance;
34282 + return get_advance (num_bearings - 1);
34284 + const FWORD *bearings = (const FWORD *) &table->longMetricZ[num_long_metrics];
34285 + const UFWORD *advances = (const UFWORD *) &bearings[num_bearings - num_long_metrics];
34287 + return advances[hb_min (glyph - num_bearings, num_advances - num_bearings - 1)];
34291 @@ -251,7 +289,7 @@ struct hmtxvmtx
34295 - if (unlikely (glyph >= num_metrics) || !font->num_coords)
34296 + if (unlikely (glyph >= num_bearings) || !font->num_coords)
34300 @@ -263,35 +301,13 @@ struct hmtxvmtx
34304 - unsigned int num_advances_for_subset (const hb_subset_plan_t *plan) const
34305 - {
34306 - unsigned int num_advances = plan->num_output_glyphs ();
34307 - unsigned int last_advance = _advance_for_new_gid (plan,
34308 - num_advances - 1);
34309 - while (num_advances > 1 &&
34310 - last_advance == _advance_for_new_gid (plan,
34311 - num_advances - 2))
34312 - {
34313 - num_advances--;
34314 - }
34315 -
34316 - return num_advances;
34317 - }
34318 -
34319 - private:
34320 - unsigned int _advance_for_new_gid (const hb_subset_plan_t *plan,
34321 - hb_codepoint_t new_gid) const
34322 - {
34323 - hb_codepoint_t old_gid;
34324 - if (!plan->old_gid_for_new_gid (new_gid, &old_gid))
34325 - return 0;
34326 -
34327 - return get_advance (old_gid);
34328 - }
34329 -
34331 - unsigned int num_metrics;
34332 - unsigned int num_advances;
34342 @@ -323,6 +339,8 @@ struct hmtxvmtx
34345 * values for each glyph. */
34351 @@ -338,8 +356,12 @@ struct vmtx : hmtxvmtx<vmtx, vhea> {
34355 -struct hmtx_accelerator_t : hmtx::accelerator_t {};
34356 -struct vmtx_accelerator_t : vmtx::accelerator_t {};
34366 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-base-table.hh b/src/third_party/harfb…
34368 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-base-table.hh
34369 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-base-table.hh
34370 @@ -41,7 +41,10 @@ namespace OT {
34374 - hb_position_t get_coord () const { return coordinate; }
34377 + return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (coordinate) : font->em_scale…
34382 @@ -58,10 +61,10 @@ struct BaseCoordFormat1
34386 - hb_position_t get_coord () const
34390 - return coordinate;
34391 + return HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (coordinate) : font->em_scale…
34395 @@ -87,9 +90,10 @@ struct BaseCoordFormat3
34399 - return coordinate + (HB_DIRECTION_IS_VERTICAL (direction) ?
34400 - device.get_y_delta (font, var_store) :
34401 - device.get_x_delta (font, var_store));
34404 + ? font->em_scale_y (coordinate) + device.get_y_delta (font, var_store)
34405 + : font->em_scale_x (coordinate) + device.get_x_delta (font, var_store);
34409 @@ -120,8 +124,8 @@ struct BaseCoord
34413 - case 1: return u.format1.get_coord ();
34414 - case 2: return u.format2.get_coord ();
34420 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-common.hh b/src/third_party/harfbuzz-…
34422 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-common.hh
34423 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-common.hh
34424 @@ -37,7 +37,7 @@
34428 -#define HB_MAX_NESTING_LEVEL 6
34433 @@ -60,6 +60,10 @@
34444 @@ -105,34 +109,15 @@ struct hb_prune_langsys_context_t
34448 - script_count (0),langsys_count (0) {}
34449 -
34450 - bool visitedScript (const void *s)
34451 - {
34452 - if (script_count++ > HB_MAX_SCRIPTS)
34453 - return true;
34454 -
34455 - return visited (s, visited_script);
34456 - }
34459 - bool visitedLangsys (const void *l)
34460 - {
34461 - if (langsys_count++ > HB_MAX_LANGSYS)
34462 - return true;
34463 -
34464 - return visited (l, visited_langsys);
34465 - }
34469 - private:
34470 - template <typename T>
34471 - bool visited (const T *p, hb_set_t &visited_set)
34474 - hb_codepoint_t delta = (hb_codepoint_t) ((uintptr_t) p - (uintptr_t) table);
34475 - if (visited_set.in_error () || visited_set.has (delta))
34476 - return true;
34477 -
34478 - visited_set.add (delta);
34479 - return false;
34485 @@ -142,10 +127,8 @@ struct hb_prune_langsys_context_t
34489 - hb_set_t visited_script;
34490 - hb_set_t visited_langsys;
34492 - unsigned langsys_count;
34497 @@ -643,11 +626,14 @@ struct LangSys
34501 - if (iter.len () != o_iter.len ())
34502 - return false;
34503 + for (; iter && o_iter; iter++, o_iter++)
34510 - for (const auto _ : + hb_zip (iter, o_iter))
34511 - if (_.first != _.second) return false;
34516 @@ -732,7 +718,7 @@ struct Script
34520 - if (c->visitedScript (this)) return;
34521 + if (!c->visitScript ()) return;
34523 if (!c->script_langsys_map->has (script_index))
34525 @@ -749,15 +735,14 @@ struct Script
34527 //only collect features from non-redundant langsys
34529 - if (!c->visitedLangsys (&d)) {
34530 + if (c->visitLangsys (d.get_feature_count ())) {
34534 for (auto _ : + hb_zip (langSys, hb_range (langsys_count)))
34536 -
34538 - if (c->visitedLangsys (&l)) continue;
34539 + if (!c->visitLangsys (l.get_feature_count ())) continue;
34540 if (l.compare (d, c->duplicate_feature_map)) continue;
34543 @@ -769,7 +754,7 @@ struct Script
34544 for (auto _ : + hb_zip (langSys, hb_range (langsys_count)))
34547 - if (c->visitedLangsys (&l)) continue;
34548 + if (!c->visitLangsys (l.get_feature_count ())) continue;
34550 c->script_langsys_map->get (script_index)->add (_.second);
34552 @@ -849,7 +834,7 @@ struct FeatureParamsSize
34553 if (unlikely (!c->check_struct (this))) return_trace (false);
34556 - * Adobe tools calculated the offset of the FeatureParams sutable from the
34561 @@ -2930,8 +2915,6 @@ struct VariationStore
34565 - for (unsigned i = 0; i < inner_maps.length; i++)
34566 - inner_maps[i].init ();
34568 for (unsigned idx : c->plan->layout_variation_indices->iter ())
34570 @@ -2939,18 +2922,11 @@ struct VariationStore
34574 - {
34575 - for (unsigned i = 0; i < inner_maps.length; i++)
34576 - inner_maps[i].fini ();
34578 - }
34581 varstore_prime->serialize (c->serializer, this, inner_maps.as_array ());
34583 - for (unsigned i = 0; i < inner_maps.length; i++)
34584 - inner_maps[i].fini ();
34585 -
34587 !c->serializer->in_error()
34588 && varstore_prime->dataSets);
34589 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gdef-table.hh b/src/third_party/harfb…
34591 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gdef-table.hh
34592 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gdef-table.hh
34593 @@ -585,17 +585,16 @@ struct GDEF
34597 - void init (hb_face_t *face)
34600 - this->table = hb_sanitize_context_t ().reference_table<GDEF> (face);
34601 - if (unlikely (this->table->is_blocklisted (this->table.get_blob (), face)))
34603 + if (unlikely (table->is_blocklisted (table.get_blob (), face)))
34605 - hb_blob_destroy (this->table.get_blob ());
34606 - this->table = hb_blob_get_empty ();
34611 -
34612 - void fini () { this->table.destroy (); }
34617 @@ -715,7 +714,9 @@ struct GDEF
34621 -struct GDEF_accelerator_t : GDEF::accelerator_t {};
34628 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gpos-table.hh b/src/third_party/harfb…
34630 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gpos-table.hh
34631 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gpos-table.hh
34632 @@ -706,7 +706,7 @@ struct MarkArray : Array16Of<MarkRecord> /* Array of MarkRecords--in Coverage or
34636 - buffer->unsafe_to_break (glyph_pos, buffer->idx);
34637 + buffer->unsafe_to_break (glyph_pos, buffer->idx + 1);
34638 mark_anchor.get_anchor (c, buffer->cur().codepoint, &mark_x, &mark_y);
34639 glyph_anchor.get_anchor (c, buffer->info[glyph_pos].codepoint, &base_x, &base_y);
34641 @@ -1235,6 +1235,7 @@ struct PairSet
34642 buffer->idx = pos;
34645 + buffer->unsafe_to_concat (buffer->idx, pos + 1);
34649 @@ -1362,7 +1363,12 @@ struct PairPosFormat1
34651 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34652 skippy_iter.reset (buffer->idx, 1);
34653 - if (!skippy_iter.next ()) return_trace (false);
34657 + buffer->unsafe_to_concat (buffer->idx, unsafe_to);
34663 @@ -1555,7 +1561,12 @@ struct PairPosFormat2
34665 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34666 skippy_iter.reset (buffer->idx, 1);
34667 - if (!skippy_iter.next ()) return_trace (false);
34671 + buffer->unsafe_to_concat (buffer->idx, unsafe_to);
34677 @@ -1563,13 +1574,89 @@ struct PairPosFormat2
34679 unsigned int klass1 = (this+classDef1).get_class (buffer->cur().codepoint);
34680 unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint);
34681 - if (unlikely (klass1 >= class1Count || klass2 >= class2Count)) return_trace (false);
34684 + buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1);
34689 - bool applied_first = valueFormat1.apply_value (c, this, v, buffer->cur_pos());
34690 - bool applied_second = valueFormat2.apply_value (c, this, v + len1, buffer->pos[skippy_iter.idx…
34698 + * Disabled, because causes issues... :-(
34700 + * https://github.com/harfbuzz/harfbuzz/pull/3235#issuecomment-1029814978
34708 + const hb_direction_t dir = buffer->props.direction;
34727 + hb_position_t *dst1 = &buffer->cur_pos().x_advance;
34728 + hb_position_t *dst2 = &buffer->pos[skippy_iter.idx].x_advance;
34733 + hb_position_t kern2 = kern - kern1;
34744 + dst1[i + 2] += src[i + 2] - kern2;
34757 + applied_first = valueFormat1.apply_value (c, this, v, buffer->cur_pos());
34758 + applied_second = valueFormat2.apply_value (c, this, v + len1, buffer->pos[skippy_iter.idx]);
34762 buffer->unsafe_to_break (buffer->idx, skippy_iter.idx + 1);
34765 + buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1);
34768 buffer->idx = skippy_iter.idx;
34770 @@ -1799,10 +1886,19 @@ struct CursivePosFormat1
34772 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34773 skippy_iter.reset (buffer->idx, 1);
34774 - if (!skippy_iter.prev ()) return_trace (false);
34778 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34782 …const EntryExitRecord &prev_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[s…
34783 - if (!prev_record.exitAnchor) return_trace (false);
34786 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34791 unsigned int j = buffer->idx;
34792 @@ -2066,7 +2162,13 @@ struct MarkBasePosFormat1
34793 skippy_iter.reset (buffer->idx, 1);
34796 - if (!skippy_iter.prev ()) return_trace (false);
34800 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34807 @@ -2089,7 +2191,11 @@ struct MarkBasePosFormat1
34808 //if (!_hb_glyph_info_is_base_glyph (&buffer->info[skippy_iter.idx])) { return_trace (false); }
34810 …unsigned int base_index = (this+baseCoverage).get_coverage (buffer->info[skippy_iter.idx].codepoi…
34811 - if (base_index == NOT_COVERED) return_trace (false);
34814 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34820 @@ -2320,21 +2426,34 @@ struct MarkLigPosFormat1
34821 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34822 skippy_iter.reset (buffer->idx, 1);
34824 - if (!skippy_iter.prev ()) return_trace (false);
34828 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34833 //if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { return_trace (false); }
34836 unsigned int lig_index = (this+ligatureCoverage).get_coverage (buffer->info[j].codepoint);
34837 - if (lig_index == NOT_COVERED) return_trace (false);
34840 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34849 - if (unlikely (!comp_count)) return_trace (false);
34852 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34858 @@ -2517,9 +2636,18 @@ struct MarkMarkPosFormat1
34859 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
34860 skippy_iter.reset (buffer->idx, 1);
34861 skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
34862 - if (!skippy_iter.prev ()) return_trace (false);
34866 + buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx + 1);
34870 - if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return_trace (false); }
34871 + if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx]))
34873 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34879 @@ -2544,11 +2672,16 @@ struct MarkMarkPosFormat1
34883 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34887 unsigned int mark2_index = (this+mark2Coverage).get_coverage (buffer->info[j].codepoint);
34888 - if (mark2_index == NOT_COVERED) return_trace (false);
34891 + buffer->unsafe_to_concat_from_outbuffer (skippy_iter.idx, buffer->idx + 1);
34897 @@ -2973,7 +3106,9 @@ GPOS::position_finish_offsets (hb_font_t *font, hb_buffer_t *buffer)
34901 -struct GPOS_accelerator_t : GPOS::accelerator_t {};
34907 /* Out-of-class implementation for methods recursing */
34908 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsub-table.hh b/src/third_party/harfb…
34910 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsub-table.hh
34911 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsub-table.hh
34912 @@ -29,1719 +29,14 @@
34916 -#include "hb-ot-layout-gsubgpos.hh"
34917 -
34922 -typedef hb_pair_t<hb_codepoint_t, hb_codepoint_t> hb_codepoint_pair_t;
34923 -
34924 -template<typename Iterator>
34925 -static void SingleSubst_serialize (hb_serialize_context_t *c,
34926 - Iterator it);
34927 -
34928 -
34929 -struct SingleSubstFormat1
34930 -{
34931 - bool intersects (const hb_set_t *glyphs) const
34932 - { return (this+coverage).intersects (glyphs); }
34933 -
34934 - bool may_have_non_1to1 () const
34935 - { return false; }
34936 -
34937 - void closure (hb_closure_context_t *c) const
34938 - {
34939 - unsigned d = deltaGlyphID;
34940 -
34941 - + hb_iter (this+coverage)
34942 - | hb_filter (c->parent_active_glyphs ())
34943 - | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
34944 - | hb_sink (c->output)
34945 - ;
34946 -
34947 - }
34948 -
34949 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
34950 -
34951 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
34952 - {
34953 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
34954 - unsigned d = deltaGlyphID;
34955 - + hb_iter (this+coverage)
34956 - | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
34957 - | hb_sink (c->output)
34958 - ;
34959 - }
34960 -
34961 - const Coverage &get_coverage () const { return this+coverage; }
34962 -
34963 - bool would_apply (hb_would_apply_context_t *c) const
34964 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
34965 -
34966 - bool apply (hb_ot_apply_context_t *c) const
34967 - {
34968 - TRACE_APPLY (this);
34969 - hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
34970 - unsigned int index = (this+coverage).get_coverage (glyph_id);
34971 - if (likely (index == NOT_COVERED)) return_trace (false);
34972 -
34973 - /* According to the Adobe Annotated OpenType Suite, result is always
34974 - * limited to 16bit. */
34975 - glyph_id = (glyph_id + deltaGlyphID) & 0xFFFFu;
34976 - c->replace_glyph (glyph_id);
34977 -
34978 - return_trace (true);
34979 - }
34980 -
34981 - template<typename Iterator,
34982 - hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
34983 - bool serialize (hb_serialize_context_t *c,
34984 - Iterator glyphs,
34985 - unsigned delta)
34986 - {
34987 - TRACE_SERIALIZE (this);
34988 - if (unlikely (!c->extend_min (this))) return_trace (false);
34989 - if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
34990 - c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
34991 - return_trace (true);
34992 - }
34993 -
34994 - bool subset (hb_subset_context_t *c) const
34995 - {
34996 - TRACE_SUBSET (this);
34997 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
34998 - const hb_map_t &glyph_map = *c->plan->glyph_map;
34999 -
35000 - hb_codepoint_t delta = deltaGlyphID;
35001 -
35002 - auto it =
35003 - + hb_iter (this+coverage)
35004 - | hb_filter (glyphset)
35005 - | hb_map_retains_sorting ([&] (hb_codepoint_t g) {
35006 - return hb_codepoint_pair_t (g,
35007 - (g + delta) & 0xFFFF); })
35008 - | hb_filter (glyphset, hb_second)
35009 - | hb_map_retains_sorting ([&] (hb_codepoint_pair_t p) -> hb_codepoint_pair_t
35010 - { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
35011 - ;
35012 -
35013 - bool ret = bool (it);
35014 - SingleSubst_serialize (c->serializer, it);
35015 - return_trace (ret);
35016 - }
35017 -
35018 - bool sanitize (hb_sanitize_context_t *c) const
35019 - {
35020 - TRACE_SANITIZE (this);
35021 - return_trace (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c));
35022 - }
35023 -
35024 - protected:
35025 - HBUINT16 format; /* Format identifier--format = 1 */
35026 - Offset16To<Coverage>
35027 - coverage; /* Offset to Coverage table--from
35028 - * beginning of Substitution table */
35029 - HBUINT16 deltaGlyphID; /* Add to original GlyphID to get
35030 - * substitute GlyphID, modulo 0x10000 */
35031 - public:
35032 - DEFINE_SIZE_STATIC (6);
35033 -};
35034 -
35035 -struct SingleSubstFormat2
35036 -{
35037 - bool intersects (const hb_set_t *glyphs) const
35038 - { return (this+coverage).intersects (glyphs); }
35039 -
35040 - bool may_have_non_1to1 () const
35041 - { return false; }
35042 -
35043 - void closure (hb_closure_context_t *c) const
35044 - {
35045 - + hb_zip (this+coverage, substitute)
35046 - | hb_filter (c->parent_active_glyphs (), hb_first)
35047 - | hb_map (hb_second)
35048 - | hb_sink (c->output)
35049 - ;
35050 -
35051 - }
35052 -
35053 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35054 -
35055 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35056 - {
35057 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35058 - + hb_zip (this+coverage, substitute)
35059 - | hb_map (hb_second)
35060 - | hb_sink (c->output)
35061 - ;
35062 - }
35063 -
35064 - const Coverage &get_coverage () const { return this+coverage; }
35065 -
35066 - bool would_apply (hb_would_apply_context_t *c) const
35067 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
35068 -
35069 - bool apply (hb_ot_apply_context_t *c) const
35070 - {
35071 - TRACE_APPLY (this);
35072 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
35073 - if (likely (index == NOT_COVERED)) return_trace (false);
35074 -
35075 - if (unlikely (index >= substitute.len)) return_trace (false);
35076 -
35077 - c->replace_glyph (substitute[index]);
35078 -
35079 - return_trace (true);
35080 - }
35081 -
35082 - template<typename Iterator,
35083 - hb_requires (hb_is_sorted_source_of (Iterator,
35084 - hb_codepoint_pair_t))>
35085 - bool serialize (hb_serialize_context_t *c,
35086 - Iterator it)
35087 - {
35088 - TRACE_SERIALIZE (this);
35089 - auto substitutes =
35090 - + it
35091 - | hb_map (hb_second)
35092 - ;
35093 - auto glyphs =
35094 - + it
35095 - | hb_map_retains_sorting (hb_first)
35096 - ;
35097 - if (unlikely (!c->extend_min (this))) return_trace (false);
35098 - if (unlikely (!substitute.serialize (c, substitutes))) return_trace (false);
35099 - if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
35100 - return_trace (true);
35101 - }
35102 -
35103 - bool subset (hb_subset_context_t *c) const
35104 - {
35105 - TRACE_SUBSET (this);
35106 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35107 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35108 -
35109 - auto it =
35110 - + hb_zip (this+coverage, substitute)
35111 - | hb_filter (glyphset, hb_first)
35112 - | hb_filter (glyphset, hb_second)
35113 - | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
35114 - { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
35115 - ;
35116 -
35117 - bool ret = bool (it);
35118 - SingleSubst_serialize (c->serializer, it);
35119 - return_trace (ret);
35120 - }
35121 -
35122 - bool sanitize (hb_sanitize_context_t *c) const
35123 - {
35124 - TRACE_SANITIZE (this);
35125 - return_trace (coverage.sanitize (c, this) && substitute.sanitize (c));
35126 - }
35127 -
35128 - protected:
35129 - HBUINT16 format; /* Format identifier--format = 2 */
35130 - Offset16To<Coverage>
35131 - coverage; /* Offset to Coverage table--from
35132 - * beginning of Substitution table */
35133 - Array16Of<HBGlyphID16>
35134 - substitute; /* Array of substitute
35135 - * GlyphIDs--ordered by Coverage Index */
35136 - public:
35137 - DEFINE_SIZE_ARRAY (6, substitute);
35138 -};
35139 -
35140 -struct SingleSubst
35141 -{
35142 -
35143 - template<typename Iterator,
35144 - hb_requires (hb_is_sorted_source_of (Iterator,
35145 - const hb_codepoint_pair_t))>
35146 - bool serialize (hb_serialize_context_t *c,
35147 - Iterator glyphs)
35148 - {
35149 - TRACE_SERIALIZE (this);
35150 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
35151 - unsigned format = 2;
35152 - unsigned delta = 0;
35153 - if (glyphs)
35154 - {
35155 - format = 1;
35156 - auto get_delta = [=] (hb_codepoint_pair_t _)
35157 - { return (unsigned) (_.second - _.first) & 0xFFFF; };
35158 - delta = get_delta (*glyphs);
35159 - if (!hb_all (++(+glyphs), delta, get_delta)) format = 2;
35160 - }
35161 - u.format = format;
35162 - switch (u.format) {
35163 - case 1: return_trace (u.format1.serialize (c,
35164 - + glyphs
35165 - | hb_map_retains_sorting (hb_first),
35166 - delta));
35167 - case 2: return_trace (u.format2.serialize (c, glyphs));
35168 - default:return_trace (false);
35169 - }
35170 - }
35171 -
35172 - template <typename context_t, typename ...Ts>
35173 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
35174 - {
35175 - TRACE_DISPATCH (this, u.format);
35176 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
35177 - switch (u.format) {
35178 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
35179 - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
35180 - default:return_trace (c->default_return_value ());
35181 - }
35182 - }
35183 -
35184 - protected:
35185 - union {
35186 - HBUINT16 format; /* Format identifier */
35187 - SingleSubstFormat1 format1;
35188 - SingleSubstFormat2 format2;
35189 - } u;
35190 -};
35191 -
35192 -template<typename Iterator>
35193 -static void
35194 -SingleSubst_serialize (hb_serialize_context_t *c,
35195 - Iterator it)
35196 -{ c->start_embed<SingleSubst> ()->serialize (c, it); }
35197 -
35198 -struct Sequence
35199 -{
35200 - bool intersects (const hb_set_t *glyphs) const
35201 - { return hb_all (substitute, glyphs); }
35202 -
35203 - void closure (hb_closure_context_t *c) const
35204 - { c->output->add_array (substitute.arrayZ, substitute.len); }
35205 -
35206 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35207 - { c->output->add_array (substitute.arrayZ, substitute.len); }
35208 -
35209 - bool apply (hb_ot_apply_context_t *c) const
35210 - {
35211 - TRACE_APPLY (this);
35212 - unsigned int count = substitute.len;
35213 -
35214 - /* Special-case to make it in-place and not consider this
35215 - * as a "multiplied" substitution. */
35216 - if (unlikely (count == 1))
35217 - {
35218 - c->replace_glyph (substitute.arrayZ[0]);
35219 - return_trace (true);
35220 - }
35221 - /* Spec disallows this, but Uniscribe allows it.
35222 - * https://github.com/harfbuzz/harfbuzz/issues/253 */
35223 - else if (unlikely (count == 0))
35224 - {
35225 - c->buffer->delete_glyph ();
35226 - return_trace (true);
35227 - }
35228 -
35229 - unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
35230 - HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
35231 - unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
35232 -
35233 - for (unsigned int i = 0; i < count; i++)
35234 - {
35235 - /* If is attached to a ligature, don't disturb that.
35236 - * https://github.com/harfbuzz/harfbuzz/issues/3069 */
35237 - if (!lig_id)
35238 - _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
35239 - c->output_glyph_for_component (substitute.arrayZ[i], klass);
35240 - }
35241 - c->buffer->skip_glyph ();
35242 -
35243 - return_trace (true);
35244 - }
35245 -
35246 - template <typename Iterator,
35247 - hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
35248 - bool serialize (hb_serialize_context_t *c,
35249 - Iterator subst)
35250 - {
35251 - TRACE_SERIALIZE (this);
35252 - return_trace (substitute.serialize (c, subst));
35253 - }
35254 -
35255 - bool subset (hb_subset_context_t *c) const
35256 - {
35257 - TRACE_SUBSET (this);
35258 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35259 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35260 -
35261 - if (!intersects (&glyphset)) return_trace (false);
35262 -
35263 - auto it =
35264 - + hb_iter (substitute)
35265 - | hb_map (glyph_map)
35266 - ;
35267 -
35268 - auto *out = c->serializer->start_embed (*this);
35269 - return_trace (out->serialize (c->serializer, it));
35270 - }
35271 -
35272 - bool sanitize (hb_sanitize_context_t *c) const
35273 - {
35274 - TRACE_SANITIZE (this);
35275 - return_trace (substitute.sanitize (c));
35276 - }
35277 -
35278 - protected:
35279 - Array16Of<HBGlyphID16>
35280 - substitute; /* String of GlyphIDs to substitute */
35281 - public:
35282 - DEFINE_SIZE_ARRAY (2, substitute);
35283 -};
35284 -
35285 -struct MultipleSubstFormat1
35286 -{
35287 - bool intersects (const hb_set_t *glyphs) const
35288 - { return (this+coverage).intersects (glyphs); }
35289 -
35290 - bool may_have_non_1to1 () const
35291 - { return true; }
35292 -
35293 - void closure (hb_closure_context_t *c) const
35294 - {
35295 - + hb_zip (this+coverage, sequence)
35296 - | hb_filter (c->parent_active_glyphs (), hb_first)
35297 - | hb_map (hb_second)
35298 - | hb_map (hb_add (this))
35299 - | hb_apply ([c] (const Sequence &_) { _.closure (c); })
35300 - ;
35301 - }
35302 -
35303 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35304 -
35305 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35306 - {
35307 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35308 - + hb_zip (this+coverage, sequence)
35309 - | hb_map (hb_second)
35310 - | hb_map (hb_add (this))
35311 - | hb_apply ([c] (const Sequence &_) { _.collect_glyphs (c); })
35312 - ;
35313 - }
35314 -
35315 - const Coverage &get_coverage () const { return this+coverage; }
35316 -
35317 - bool would_apply (hb_would_apply_context_t *c) const
35318 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
35319 -
35320 - bool apply (hb_ot_apply_context_t *c) const
35321 - {
35322 - TRACE_APPLY (this);
35323 -
35324 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
35325 - if (likely (index == NOT_COVERED)) return_trace (false);
35326 -
35327 - return_trace ((this+sequence[index]).apply (c));
35328 - }
35329 -
35330 - bool serialize (hb_serialize_context_t *c,
35331 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35332 - hb_array_t<const unsigned int> substitute_len_list,
35333 - hb_array_t<const HBGlyphID16> substitute_glyphs_list)
35334 - {
35335 - TRACE_SERIALIZE (this);
35336 - if (unlikely (!c->extend_min (this))) return_trace (false);
35337 - if (unlikely (!sequence.serialize (c, glyphs.length))) return_trace (false);
35338 - for (unsigned int i = 0; i < glyphs.length; i++)
35339 - {
35340 - unsigned int substitute_len = substitute_len_list[i];
35341 - if (unlikely (!sequence[i]
35342 - .serialize_serialize (c, substitute_glyphs_list.sub_array (0, substitute_l…
35343 - return_trace (false);
35344 - substitute_glyphs_list += substitute_len;
35345 - }
35346 - return_trace (coverage.serialize_serialize (c, glyphs));
35347 - }
35348 -
35349 - bool subset (hb_subset_context_t *c) const
35350 - {
35351 - TRACE_SUBSET (this);
35352 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35353 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35354 -
35355 - auto *out = c->serializer->start_embed (*this);
35356 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35357 - out->format = format;
35358 -
35359 - hb_sorted_vector_t<hb_codepoint_t> new_coverage;
35360 - + hb_zip (this+coverage, sequence)
35361 - | hb_filter (glyphset, hb_first)
35362 - | hb_filter (subset_offset_array (c, out->sequence, this), hb_second)
35363 - | hb_map (hb_first)
35364 - | hb_map (glyph_map)
35365 - | hb_sink (new_coverage)
35366 - ;
35367 - out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
35368 - return_trace (bool (new_coverage));
35369 - }
35370 -
35371 - bool sanitize (hb_sanitize_context_t *c) const
35372 - {
35373 - TRACE_SANITIZE (this);
35374 - return_trace (coverage.sanitize (c, this) && sequence.sanitize (c, this));
35375 - }
35376 -
35377 - protected:
35378 - HBUINT16 format; /* Format identifier--format = 1 */
35379 - Offset16To<Coverage>
35380 - coverage; /* Offset to Coverage table--from
35381 - * beginning of Substitution table */
35382 - Array16OfOffset16To<Sequence>
35383 - sequence; /* Array of Sequence tables
35384 - * ordered by Coverage Index */
35385 - public:
35386 - DEFINE_SIZE_ARRAY (6, sequence);
35387 -};
35388 -
35389 -struct MultipleSubst
35390 -{
35391 - bool serialize (hb_serialize_context_t *c,
35392 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35393 - hb_array_t<const unsigned int> substitute_len_list,
35394 - hb_array_t<const HBGlyphID16> substitute_glyphs_list)
35395 - {
35396 - TRACE_SERIALIZE (this);
35397 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
35398 - unsigned int format = 1;
35399 - u.format = format;
35400 - switch (u.format) {
35401 - case 1: return_trace (u.format1.serialize (c, glyphs, substitute_len_list, substitute_glyphs_l…
35402 - default:return_trace (false);
35403 - }
35404 - }
35405 -
35406 - template <typename context_t, typename ...Ts>
35407 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
35408 - {
35409 - TRACE_DISPATCH (this, u.format);
35410 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
35411 - switch (u.format) {
35412 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
35413 - default:return_trace (c->default_return_value ());
35414 - }
35415 - }
35416 -
35417 - protected:
35418 - union {
35419 - HBUINT16 format; /* Format identifier */
35420 - MultipleSubstFormat1 format1;
35421 - } u;
35422 -};
35423 -
35424 -struct AlternateSet
35425 -{
35426 - bool intersects (const hb_set_t *glyphs) const
35427 - { return hb_any (alternates, glyphs); }
35428 -
35429 - void closure (hb_closure_context_t *c) const
35430 - { c->output->add_array (alternates.arrayZ, alternates.len); }
35431 -
35432 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35433 - { c->output->add_array (alternates.arrayZ, alternates.len); }
35434 -
35435 - bool apply (hb_ot_apply_context_t *c) const
35436 - {
35437 - TRACE_APPLY (this);
35438 - unsigned int count = alternates.len;
35439 -
35440 - if (unlikely (!count)) return_trace (false);
35441 -
35442 - hb_mask_t glyph_mask = c->buffer->cur().mask;
35443 - hb_mask_t lookup_mask = c->lookup_mask;
35444 -
35445 - /* Note: This breaks badly if two features enabled this lookup together. */
35446 - unsigned int shift = hb_ctz (lookup_mask);
35447 - unsigned int alt_index = ((lookup_mask & glyph_mask) >> shift);
35448 -
35449 - /* If alt_index is MAX_VALUE, randomize feature if it is the rand feature. */
35450 - if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
35451 - {
35452 - /* Maybe we can do better than unsafe-to-break all; but since we are
35453 - * changing random state, it would be hard to track that. Good 'nough. */
35454 - c->buffer->unsafe_to_break (0, c->buffer->len);
35455 - alt_index = c->random_number () % count + 1;
35456 - }
35457 -
35458 - if (unlikely (alt_index > count || alt_index == 0)) return_trace (false);
35459 -
35460 - c->replace_glyph (alternates[alt_index - 1]);
35461 -
35462 - return_trace (true);
35463 - }
35464 -
35465 - unsigned
35466 - get_alternates (unsigned start_offset,
35467 - unsigned *alternate_count /* IN/OUT. May be NULL. */,
35468 - hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
35469 - {
35470 - if (alternates.len && alternate_count)
35471 - {
35472 - + alternates.sub_array (start_offset, alternate_count)
35473 - | hb_sink (hb_array (alternate_glyphs, *alternate_count))
35474 - ;
35475 - }
35476 - return alternates.len;
35477 - }
35478 -
35479 - template <typename Iterator,
35480 - hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
35481 - bool serialize (hb_serialize_context_t *c,
35482 - Iterator alts)
35483 - {
35484 - TRACE_SERIALIZE (this);
35485 - return_trace (alternates.serialize (c, alts));
35486 - }
35487 -
35488 - bool subset (hb_subset_context_t *c) const
35489 - {
35490 - TRACE_SUBSET (this);
35491 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35492 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35493 -
35494 - auto it =
35495 - + hb_iter (alternates)
35496 - | hb_filter (glyphset)
35497 - | hb_map (glyph_map)
35498 - ;
35499 -
35500 - auto *out = c->serializer->start_embed (*this);
35501 - return_trace (out->serialize (c->serializer, it) &&
35502 - out->alternates);
35503 - }
35504 -
35505 - bool sanitize (hb_sanitize_context_t *c) const
35506 - {
35507 - TRACE_SANITIZE (this);
35508 - return_trace (alternates.sanitize (c));
35509 - }
35510 -
35511 - protected:
35512 - Array16Of<HBGlyphID16>
35513 - alternates; /* Array of alternate GlyphIDs--in
35514 - * arbitrary order */
35515 - public:
35516 - DEFINE_SIZE_ARRAY (2, alternates);
35517 -};
35518 -
35519 -struct AlternateSubstFormat1
35520 -{
35521 - bool intersects (const hb_set_t *glyphs) const
35522 - { return (this+coverage).intersects (glyphs); }
35523 -
35524 - bool may_have_non_1to1 () const
35525 - { return false; }
35526 -
35527 - void closure (hb_closure_context_t *c) const
35528 - {
35529 - + hb_zip (this+coverage, alternateSet)
35530 - | hb_filter (c->parent_active_glyphs (), hb_first)
35531 - | hb_map (hb_second)
35532 - | hb_map (hb_add (this))
35533 - | hb_apply ([c] (const AlternateSet &_) { _.closure (c); })
35534 - ;
35535 -
35536 - }
35537 -
35538 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35539 -
35540 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35541 - {
35542 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35543 - + hb_zip (this+coverage, alternateSet)
35544 - | hb_map (hb_second)
35545 - | hb_map (hb_add (this))
35546 - | hb_apply ([c] (const AlternateSet &_) { _.collect_glyphs (c); })
35547 - ;
35548 - }
35549 -
35550 - const Coverage &get_coverage () const { return this+coverage; }
35551 -
35552 - bool would_apply (hb_would_apply_context_t *c) const
35553 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
35554 -
35555 - unsigned
35556 - get_glyph_alternates (hb_codepoint_t gid,
35557 - unsigned start_offset,
35558 - unsigned *alternate_count /* IN/OUT. May be NULL. */,
35559 - hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
35560 - { return (this+alternateSet[(this+coverage).get_coverage (gid)])
35561 - .get_alternates (start_offset, alternate_count, alternate_glyphs); }
35562 -
35563 - bool apply (hb_ot_apply_context_t *c) const
35564 - {
35565 - TRACE_APPLY (this);
35566 -
35567 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
35568 - if (likely (index == NOT_COVERED)) return_trace (false);
35569 -
35570 - return_trace ((this+alternateSet[index]).apply (c));
35571 - }
35572 -
35573 - bool serialize (hb_serialize_context_t *c,
35574 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35575 - hb_array_t<const unsigned int> alternate_len_list,
35576 - hb_array_t<const HBGlyphID16> alternate_glyphs_list)
35577 - {
35578 - TRACE_SERIALIZE (this);
35579 - if (unlikely (!c->extend_min (this))) return_trace (false);
35580 - if (unlikely (!alternateSet.serialize (c, glyphs.length))) return_trace (false);
35581 - for (unsigned int i = 0; i < glyphs.length; i++)
35582 - {
35583 - unsigned int alternate_len = alternate_len_list[i];
35584 - if (unlikely (!alternateSet[i]
35585 - .serialize_serialize (c, alternate_glyphs_list.sub_array (0, alternate_len…
35586 - return_trace (false);
35587 - alternate_glyphs_list += alternate_len;
35588 - }
35589 - return_trace (coverage.serialize_serialize (c, glyphs));
35590 - }
35591 -
35592 - bool subset (hb_subset_context_t *c) const
35593 - {
35594 - TRACE_SUBSET (this);
35595 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35596 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35597 -
35598 - auto *out = c->serializer->start_embed (*this);
35599 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35600 - out->format = format;
35601 -
35602 - hb_sorted_vector_t<hb_codepoint_t> new_coverage;
35603 - + hb_zip (this+coverage, alternateSet)
35604 - | hb_filter (glyphset, hb_first)
35605 - | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second)
35606 - | hb_map (hb_first)
35607 - | hb_map (glyph_map)
35608 - | hb_sink (new_coverage)
35609 - ;
35610 - out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
35611 - return_trace (bool (new_coverage));
35612 - }
35613 -
35614 - bool sanitize (hb_sanitize_context_t *c) const
35615 - {
35616 - TRACE_SANITIZE (this);
35617 - return_trace (coverage.sanitize (c, this) && alternateSet.sanitize (c, this));
35618 - }
35619 -
35620 - protected:
35621 - HBUINT16 format; /* Format identifier--format = 1 */
35622 - Offset16To<Coverage>
35623 - coverage; /* Offset to Coverage table--from
35624 - * beginning of Substitution table */
35625 - Array16OfOffset16To<AlternateSet>
35626 - alternateSet; /* Array of AlternateSet tables
35627 - * ordered by Coverage Index */
35628 - public:
35629 - DEFINE_SIZE_ARRAY (6, alternateSet);
35630 -};
35631 -
35632 -struct AlternateSubst
35633 -{
35634 - bool serialize (hb_serialize_context_t *c,
35635 - hb_sorted_array_t<const HBGlyphID16> glyphs,
35636 - hb_array_t<const unsigned int> alternate_len_list,
35637 - hb_array_t<const HBGlyphID16> alternate_glyphs_list)
35638 - {
35639 - TRACE_SERIALIZE (this);
35640 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
35641 - unsigned int format = 1;
35642 - u.format = format;
35643 - switch (u.format) {
35644 - case 1: return_trace (u.format1.serialize (c, glyphs, alternate_len_list, alternate_glyphs_lis…
35645 - default:return_trace (false);
35646 - }
35647 - }
35648 -
35649 - template <typename context_t, typename ...Ts>
35650 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
35651 - {
35652 - TRACE_DISPATCH (this, u.format);
35653 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
35654 - switch (u.format) {
35655 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
35656 - default:return_trace (c->default_return_value ());
35657 - }
35658 - }
35659 -
35660 - protected:
35661 - union {
35662 - HBUINT16 format; /* Format identifier */
35663 - AlternateSubstFormat1 format1;
35664 - } u;
35665 -};
35666 -
35667 -
35668 -struct Ligature
35669 -{
35670 - bool intersects (const hb_set_t *glyphs) const
35671 - { return hb_all (component, glyphs); }
35672 -
35673 - void closure (hb_closure_context_t *c) const
35674 - {
35675 - if (!intersects (c->glyphs)) return;
35676 - c->output->add (ligGlyph);
35677 - }
35678 -
35679 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35680 - {
35681 - c->input->add_array (component.arrayZ, component.get_length ());
35682 - c->output->add (ligGlyph);
35683 - }
35684 -
35685 - bool would_apply (hb_would_apply_context_t *c) const
35686 - {
35687 - if (c->len != component.lenP1)
35688 - return false;
35689 -
35690 - for (unsigned int i = 1; i < c->len; i++)
35691 - if (likely (c->glyphs[i] != component[i]))
35692 - return false;
35693 -
35694 - return true;
35695 - }
35696 -
35697 - bool apply (hb_ot_apply_context_t *c) const
35698 - {
35699 - TRACE_APPLY (this);
35700 - unsigned int count = component.lenP1;
35701 -
35702 - if (unlikely (!count)) return_trace (false);
35703 -
35704 - /* Special-case to make it in-place and not consider this
35705 - * as a "ligated" substitution. */
35706 - if (unlikely (count == 1))
35707 - {
35708 - c->replace_glyph (ligGlyph);
35709 - return_trace (true);
35710 - }
35711 -
35712 - unsigned int total_component_count = 0;
35713 -
35714 - unsigned int match_length = 0;
35715 - unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
35716 -
35717 - if (likely (!match_input (c, count,
35718 - &component[1],
35719 - match_glyph,
35720 - nullptr,
35721 - &match_length,
35722 - match_positions,
35723 - &total_component_count)))
35724 - return_trace (false);
35725 -
35726 - ligate_input (c,
35727 - count,
35728 - match_positions,
35729 - match_length,
35730 - ligGlyph,
35731 - total_component_count);
35732 -
35733 - return_trace (true);
35734 - }
35735 -
35736 - template <typename Iterator,
35737 - hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
35738 - bool serialize (hb_serialize_context_t *c,
35739 - hb_codepoint_t ligature,
35740 - Iterator components /* Starting from second */)
35741 - {
35742 - TRACE_SERIALIZE (this);
35743 - if (unlikely (!c->extend_min (this))) return_trace (false);
35744 - ligGlyph = ligature;
35745 - if (unlikely (!component.serialize (c, components))) return_trace (false);
35746 - return_trace (true);
35747 - }
35748 -
35749 - bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
35750 - {
35751 - TRACE_SUBSET (this);
35752 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35753 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35754 -
35755 - if (!intersects (&glyphset) || !glyphset.has (ligGlyph)) return_trace (false);
35756 - // Ensure Coverage table is always packed after this.
35757 - c->serializer->add_virtual_link (coverage_idx);
35758 -
35759 - auto it =
35760 - + hb_iter (component)
35761 - | hb_map (glyph_map)
35762 - ;
35763 -
35764 - auto *out = c->serializer->start_embed (*this);
35765 - return_trace (out->serialize (c->serializer,
35766 - glyph_map[ligGlyph],
35767 - it));
35768 - }
35769 -
35770 - public:
35771 - bool sanitize (hb_sanitize_context_t *c) const
35772 - {
35773 - TRACE_SANITIZE (this);
35774 - return_trace (ligGlyph.sanitize (c) && component.sanitize (c));
35775 - }
35776 -
35777 - protected:
35778 - HBGlyphID16 ligGlyph; /* GlyphID of ligature to substitute */
35779 - HeadlessArrayOf<HBGlyphID16>
35780 - component; /* Array of component GlyphIDs--start
35781 - * with the second component--ordered
35782 - * in writing direction */
35783 - public:
35784 - DEFINE_SIZE_ARRAY (4, component);
35785 -};
35786 -
35787 -struct LigatureSet
35788 -{
35789 - bool intersects (const hb_set_t *glyphs) const
35790 - {
35791 - return
35792 - + hb_iter (ligature)
35793 - | hb_map (hb_add (this))
35794 - | hb_map ([glyphs] (const Ligature &_) { return _.intersects (glyphs); })
35795 - | hb_any
35796 - ;
35797 - }
35798 -
35799 - void closure (hb_closure_context_t *c) const
35800 - {
35801 - + hb_iter (ligature)
35802 - | hb_map (hb_add (this))
35803 - | hb_apply ([c] (const Ligature &_) { _.closure (c); })
35804 - ;
35805 - }
35806 -
35807 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35808 - {
35809 - + hb_iter (ligature)
35810 - | hb_map (hb_add (this))
35811 - | hb_apply ([c] (const Ligature &_) { _.collect_glyphs (c); })
35812 - ;
35813 - }
35814 -
35815 - bool would_apply (hb_would_apply_context_t *c) const
35816 - {
35817 - return
35818 - + hb_iter (ligature)
35819 - | hb_map (hb_add (this))
35820 - | hb_map ([c] (const Ligature &_) { return _.would_apply (c); })
35821 - | hb_any
35822 - ;
35823 - }
35824 -
35825 - bool apply (hb_ot_apply_context_t *c) const
35826 - {
35827 - TRACE_APPLY (this);
35828 - unsigned int num_ligs = ligature.len;
35829 - for (unsigned int i = 0; i < num_ligs; i++)
35830 - {
35831 - const Ligature &lig = this+ligature[i];
35832 - if (lig.apply (c)) return_trace (true);
35833 - }
35834 -
35835 - return_trace (false);
35836 - }
35837 -
35838 - bool serialize (hb_serialize_context_t *c,
35839 - hb_array_t<const HBGlyphID16> ligatures,
35840 - hb_array_t<const unsigned int> component_count_list,
35841 - hb_array_t<const HBGlyphID16> &component_list /* Starting from second for each ligature */)
35842 - {
35843 - TRACE_SERIALIZE (this);
35844 - if (unlikely (!c->extend_min (this))) return_trace (false);
35845 - if (unlikely (!ligature.serialize (c, ligatures.length))) return_trace (false);
35846 - for (unsigned int i = 0; i < ligatures.length; i++)
35847 - {
35848 - unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
35849 - if (unlikely (!ligature[i].serialize_serialize (c,
35850 - ligatures[i],
35851 - component_list.sub_array (0, component_count…
35852 - return_trace (false);
35853 - component_list += component_count;
35854 - }
35855 - return_trace (true);
35856 - }
35857 -
35858 - bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
35859 - {
35860 - TRACE_SUBSET (this);
35861 - auto *out = c->serializer->start_embed (*this);
35862 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35863 -
35864 - + hb_iter (ligature)
35865 - | hb_filter (subset_offset_array (c, out->ligature, this, coverage_idx))
35866 - | hb_drain
35867 - ;
35868 -
35869 - if (bool (out->ligature))
35870 - // Ensure Coverage table is always packed after this.
35871 - c->serializer->add_virtual_link (coverage_idx);
35872 -
35873 - return_trace (bool (out->ligature));
35874 - }
35875 -
35876 - bool sanitize (hb_sanitize_context_t *c) const
35877 - {
35878 - TRACE_SANITIZE (this);
35879 - return_trace (ligature.sanitize (c, this));
35880 - }
35881 -
35882 - protected:
35883 - Array16OfOffset16To<Ligature>
35884 - ligature; /* Array LigatureSet tables
35885 - * ordered by preference */
35886 - public:
35887 - DEFINE_SIZE_ARRAY (2, ligature);
35888 -};
35889 -
35890 -struct LigatureSubstFormat1
35891 -{
35892 - bool intersects (const hb_set_t *glyphs) const
35893 - {
35894 - return
35895 - + hb_zip (this+coverage, ligatureSet)
35896 - | hb_filter (*glyphs, hb_first)
35897 - | hb_map (hb_second)
35898 - | hb_map ([this, glyphs] (const Offset16To<LigatureSet> &_)
35899 - { return (this+_).intersects (glyphs); })
35900 - | hb_any
35901 - ;
35902 - }
35903 -
35904 - bool may_have_non_1to1 () const
35905 - { return true; }
35906 -
35907 - void closure (hb_closure_context_t *c) const
35908 - {
35909 - + hb_zip (this+coverage, ligatureSet)
35910 - | hb_filter (c->parent_active_glyphs (), hb_first)
35911 - | hb_map (hb_second)
35912 - | hb_map (hb_add (this))
35913 - | hb_apply ([c] (const LigatureSet &_) { _.closure (c); })
35914 - ;
35915 -
35916 - }
35917 -
35918 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
35919 -
35920 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
35921 - {
35922 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
35923 -
35924 - + hb_zip (this+coverage, ligatureSet)
35925 - | hb_map (hb_second)
35926 - | hb_map (hb_add (this))
35927 - | hb_apply ([c] (const LigatureSet &_) { _.collect_glyphs (c); })
35928 - ;
35929 - }
35930 -
35931 - const Coverage &get_coverage () const { return this+coverage; }
35932 -
35933 - bool would_apply (hb_would_apply_context_t *c) const
35934 - {
35935 - unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
35936 - if (likely (index == NOT_COVERED)) return false;
35937 -
35938 - const LigatureSet &lig_set = this+ligatureSet[index];
35939 - return lig_set.would_apply (c);
35940 - }
35941 -
35942 - bool apply (hb_ot_apply_context_t *c) const
35943 - {
35944 - TRACE_APPLY (this);
35945 -
35946 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
35947 - if (likely (index == NOT_COVERED)) return_trace (false);
35948 -
35949 - const LigatureSet &lig_set = this+ligatureSet[index];
35950 - return_trace (lig_set.apply (c));
35951 - }
35952 -
35953 - bool serialize (hb_serialize_context_t *c,
35954 - hb_sorted_array_t<const HBGlyphID16> first_glyphs,
35955 - hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
35956 - hb_array_t<const HBGlyphID16> ligatures_list,
35957 - hb_array_t<const unsigned int> component_count_list,
35958 - hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
35959 - {
35960 - TRACE_SERIALIZE (this);
35961 - if (unlikely (!c->extend_min (this))) return_trace (false);
35962 - if (unlikely (!ligatureSet.serialize (c, first_glyphs.length))) return_trace (false);
35963 - for (unsigned int i = 0; i < first_glyphs.length; i++)
35964 - {
35965 - unsigned int ligature_count = ligature_per_first_glyph_count_list[i];
35966 - if (unlikely (!ligatureSet[i]
35967 - .serialize_serialize (c,
35968 - ligatures_list.sub_array (0, ligature_count),
35969 - component_count_list.sub_array (0, ligature_count),
35970 - component_list))) return_trace (false);
35971 - ligatures_list += ligature_count;
35972 - component_count_list += ligature_count;
35973 - }
35974 - return_trace (coverage.serialize_serialize (c, first_glyphs));
35975 - }
35976 -
35977 - bool subset (hb_subset_context_t *c) const
35978 - {
35979 - TRACE_SUBSET (this);
35980 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
35981 - const hb_map_t &glyph_map = *c->plan->glyph_map;
35982 -
35983 - auto *out = c->serializer->start_embed (*this);
35984 - if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
35985 - out->format = format;
35986 -
35987 - // Due to a bug in some older versions of windows 7 the Coverage table must be
35988 - // packed after the LigatureSet and Ligature tables, so serialize Coverage first
35989 - // which places it last in the packed order.
35990 - hb_set_t new_coverage;
35991 - + hb_zip (this+coverage, hb_iter (ligatureSet) | hb_map (hb_add (this)))
35992 - | hb_filter (glyphset, hb_first)
35993 - | hb_filter ([&] (const LigatureSet& _) {
35994 - return _.intersects (&glyphset);
35995 - }, hb_second)
35996 - | hb_map (hb_first)
35997 - | hb_sink (new_coverage);
35998 -
35999 - if (!c->serializer->push<Coverage> ()
36000 - ->serialize (c->serializer,
36001 - + new_coverage.iter () | hb_map_retains_sorting (glyph_map)))
36002 - {
36003 - c->serializer->pop_discard ();
36004 - return_trace (false);
36005 - }
36006 -
36007 - unsigned coverage_idx = c->serializer->pop_pack ();
36008 - c->serializer->add_link (out->coverage, coverage_idx);
36009 -
36010 - + hb_zip (this+coverage, ligatureSet)
36011 - | hb_filter (new_coverage, hb_first)
36012 - | hb_map (hb_second)
36013 - // to ensure that the repacker always orders the coverage table after the LigatureSet
36014 - // and LigatureSubtable's they will be linked to the Coverage table via a virtual link
36015 - // the coverage table object idx is passed down to facilitate this.
36016 - | hb_apply (subset_offset_array (c, out->ligatureSet, this, coverage_idx))
36017 - ;
36018 -
36019 - return_trace (bool (new_coverage));
36020 - }
36021 -
36022 - bool sanitize (hb_sanitize_context_t *c) const
36023 - {
36024 - TRACE_SANITIZE (this);
36025 - return_trace (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this));
36026 - }
36027 -
36028 - protected:
36029 - HBUINT16 format; /* Format identifier--format = 1 */
36030 - Offset16To<Coverage>
36031 - coverage; /* Offset to Coverage table--from
36032 - * beginning of Substitution table */
36033 - Array16OfOffset16To<LigatureSet>
36034 - ligatureSet; /* Array LigatureSet tables
36035 - * ordered by Coverage Index */
36036 - public:
36037 - DEFINE_SIZE_ARRAY (6, ligatureSet);
36038 -};
36039 -
36040 -struct LigatureSubst
36041 -{
36042 - bool serialize (hb_serialize_context_t *c,
36043 - hb_sorted_array_t<const HBGlyphID16> first_glyphs,
36044 - hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
36045 - hb_array_t<const HBGlyphID16> ligatures_list,
36046 - hb_array_t<const unsigned int> component_count_list,
36047 - hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
36048 - {
36049 - TRACE_SERIALIZE (this);
36050 - if (unlikely (!c->extend_min (u.format))) return_trace (false);
36051 - unsigned int format = 1;
36052 - u.format = format;
36053 - switch (u.format) {
36054 - case 1: return_trace (u.format1.serialize (c,
36055 - first_glyphs,
36056 - ligature_per_first_glyph_count_list,
36057 - ligatures_list,
36058 - component_count_list,
36059 - component_list));
36060 - default:return_trace (false);
36061 - }
36062 - }
36063 -
36064 - template <typename context_t, typename ...Ts>
36065 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
36066 - {
36067 - TRACE_DISPATCH (this, u.format);
36068 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
36069 - switch (u.format) {
36070 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
36071 - default:return_trace (c->default_return_value ());
36072 - }
36073 - }
36074 -
36075 - protected:
36076 - union {
36077 - HBUINT16 format; /* Format identifier */
36078 - LigatureSubstFormat1 format1;
36079 - } u;
36080 -};
36081 -
36082 -
36083 -struct ContextSubst : Context {};
36084 -
36085 -struct ChainContextSubst : ChainContext {};
36086 -
36087 -struct ExtensionSubst : Extension<ExtensionSubst>
36088 -{
36089 - typedef struct SubstLookupSubTable SubTable;
36090 - bool is_reverse () const;
36091 -};
36092 -
36093 -
36094 -struct ReverseChainSingleSubstFormat1
36095 -{
36096 - bool intersects (const hb_set_t *glyphs) const
36097 - {
36098 - if (!(this+coverage).intersects (glyphs))
36099 - return false;
36100 -
36101 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36102 -
36103 - unsigned int count;
36104 -
36105 - count = backtrack.len;
36106 - for (unsigned int i = 0; i < count; i++)
36107 - if (!(this+backtrack[i]).intersects (glyphs))
36108 - return false;
36109 -
36110 - count = lookahead.len;
36111 - for (unsigned int i = 0; i < count; i++)
36112 - if (!(this+lookahead[i]).intersects (glyphs))
36113 - return false;
36114 -
36115 - return true;
36116 - }
36117 -
36118 - bool may_have_non_1to1 () const
36119 - { return false; }
36120 -
36121 - void closure (hb_closure_context_t *c) const
36122 - {
36123 - if (!intersects (c->glyphs)) return;
36124 -
36125 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36126 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36127 -
36128 - + hb_zip (this+coverage, substitute)
36129 - | hb_filter (c->parent_active_glyphs (), hb_first)
36130 - | hb_map (hb_second)
36131 - | hb_sink (c->output)
36132 - ;
36133 - }
36134 -
36135 - void closure_lookups (hb_closure_lookups_context_t *c) const {}
36136 -
36137 - void collect_glyphs (hb_collect_glyphs_context_t *c) const
36138 - {
36139 - if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
36140 -
36141 - unsigned int count;
36142 -
36143 - count = backtrack.len;
36144 - for (unsigned int i = 0; i < count; i++)
36145 - if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return;
36146 -
36147 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36148 - count = lookahead.len;
36149 - for (unsigned int i = 0; i < count; i++)
36150 - if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return;
36151 -
36152 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36153 - count = substitute.len;
36154 - c->output->add_array (substitute.arrayZ, substitute.len);
36155 - }
36156 -
36157 - const Coverage &get_coverage () const { return this+coverage; }
36158 -
36159 - bool would_apply (hb_would_apply_context_t *c) const
36160 - { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
36161 -
36162 - bool apply (hb_ot_apply_context_t *c) const
36163 - {
36164 - TRACE_APPLY (this);
36165 - if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
36166 - return_trace (false); /* No chaining to this type */
36167 -
36168 - unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
36169 - if (likely (index == NOT_COVERED)) return_trace (false);
36170 -
36171 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36172 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36173 -
36174 - if (unlikely (index >= substitute.len)) return_trace (false);
36175 -
36176 - unsigned int start_index = 0, end_index = 0;
36177 - if (match_backtrack (c,
36178 - backtrack.len, (HBUINT16 *) backtrack.arrayZ,
36179 - match_coverage, this,
36180 - &start_index) &&
36181 - match_lookahead (c,
36182 - lookahead.len, (HBUINT16 *) lookahead.arrayZ,
36183 - match_coverage, this,
36184 - 1, &end_index))
36185 - {
36186 - c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
36187 - c->replace_glyph_inplace (substitute[index]);
36188 - /* Note: We DON'T decrease buffer->idx. The main loop does it
36189 - * for us. This is useful for preventing surprises if someone
36190 - * calls us through a Context lookup. */
36191 - return_trace (true);
36192 - }
36193 -
36194 - return_trace (false);
36195 - }
36196 -
36197 - template<typename Iterator,
36198 - hb_requires (hb_is_iterator (Iterator))>
36199 - bool serialize_coverage_offset_array (hb_subset_context_t *c, Iterator it) const
36200 - {
36201 - TRACE_SERIALIZE (this);
36202 - auto *out = c->serializer->start_embed<Array16OfOffset16To<Coverage>> ();
36203 -
36204 - if (unlikely (!c->serializer->allocate_size<HBUINT16> (HBUINT16::static_size)))
36205 - return_trace (false);
36206 -
36207 - for (auto& offset : it) {
36208 - auto *o = out->serialize_append (c->serializer);
36209 - if (unlikely (!o) || !o->serialize_subset (c, offset, this))
36210 - return_trace (false);
36211 - }
36212 -
36213 - return_trace (true);
36214 - }
36215 -
36216 - template<typename Iterator, typename BacktrackIterator, typename LookaheadIterator,
36217 - hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_pair_t)),
36218 - hb_requires (hb_is_iterator (BacktrackIterator)),
36219 - hb_requires (hb_is_iterator (LookaheadIterator))>
36220 - bool serialize (hb_subset_context_t *c,
36221 - Iterator coverage_subst_iter,
36222 - BacktrackIterator backtrack_iter,
36223 - LookaheadIterator lookahead_iter) const
36224 - {
36225 - TRACE_SERIALIZE (this);
36226 -
36227 - auto *out = c->serializer->start_embed (this);
36228 - if (unlikely (!c->serializer->check_success (out))) return_trace (false);
36229 - if (unlikely (!c->serializer->embed (this->format))) return_trace (false);
36230 - if (unlikely (!c->serializer->embed (this->coverage))) return_trace (false);
36231 -
36232 - if (!serialize_coverage_offset_array (c, backtrack_iter)) return_trace (false);
36233 - if (!serialize_coverage_offset_array (c, lookahead_iter)) return_trace (false);
36234 -
36235 - auto *substitute_out = c->serializer->start_embed<Array16Of<HBGlyphID16>> ();
36236 - auto substitutes =
36237 - + coverage_subst_iter
36238 - | hb_map (hb_second)
36239 - ;
36240 -
36241 - auto glyphs =
36242 - + coverage_subst_iter
36243 - | hb_map_retains_sorting (hb_first)
36244 - ;
36245 - if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substi…
36246 - return_trace (false);
36247 -
36248 - if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
36249 - return_trace (false);
36250 - return_trace (true);
36251 - }
36252 -
36253 - bool subset (hb_subset_context_t *c) const
36254 - {
36255 - TRACE_SUBSET (this);
36256 - const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
36257 - const hb_map_t &glyph_map = *c->plan->glyph_map;
36258 -
36259 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36260 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36261 -
36262 - auto it =
36263 - + hb_zip (this+coverage, substitute)
36264 - | hb_filter (glyphset, hb_first)
36265 - | hb_filter (glyphset, hb_second)
36266 - | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoi…
36267 - { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
36268 - ;
36269 -
36270 - return_trace (bool (it) && serialize (c, it, backtrack.iter (), lookahead.iter ()));
36271 - }
36272 -
36273 - bool sanitize (hb_sanitize_context_t *c) const
36274 - {
36275 - TRACE_SANITIZE (this);
36276 - if (!(coverage.sanitize (c, this) && backtrack.sanitize (c, this)))
36277 - return_trace (false);
36278 - const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (b…
36279 - if (!lookahead.sanitize (c, this))
36280 - return_trace (false);
36281 - const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
36282 - return_trace (substitute.sanitize (c));
36283 - }
36284 -
36285 - protected:
36286 - HBUINT16 format; /* Format identifier--format = 1 */
36287 - Offset16To<Coverage>
36288 - coverage; /* Offset to Coverage table--from
36289 - * beginning of table */
36290 - Array16OfOffset16To<Coverage>
36291 - backtrack; /* Array of coverage tables
36292 - * in backtracking sequence, in glyph
36293 - * sequence order */
36294 - Array16OfOffset16To<Coverage>
36295 - lookaheadX; /* Array of coverage tables
36296 - * in lookahead sequence, in glyph
36297 - * sequence order */
36298 - Array16Of<HBGlyphID16>
36299 - substituteX; /* Array of substitute
36300 - * GlyphIDs--ordered by Coverage Index */
36301 - public:
36302 - DEFINE_SIZE_MIN (10);
36303 -};
36304 -
36305 -struct ReverseChainSingleSubst
36306 -{
36307 - template <typename context_t, typename ...Ts>
36308 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
36309 - {
36310 - TRACE_DISPATCH (this, u.format);
36311 - if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value (…
36312 - switch (u.format) {
36313 - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
36314 - default:return_trace (c->default_return_value ());
36315 - }
36316 - }
36317 -
36318 - protected:
36319 - union {
36320 - HBUINT16 format; /* Format identifier */
36321 - ReverseChainSingleSubstFormat1 format1;
36322 - } u;
36323 -};
36324 -
36325 -
36326 -
36327 -/*
36328 - * SubstLookup
36329 - */
36330 -
36331 -struct SubstLookupSubTable
36332 -{
36333 - friend struct Lookup;
36334 - friend struct SubstLookup;
36335 -
36336 - enum Type {
36337 - Single = 1,
36338 - Multiple = 2,
36339 - Alternate = 3,
36340 - Ligature = 4,
36341 - Context = 5,
36342 - ChainContext = 6,
36343 - Extension = 7,
36344 - ReverseChainSingle = 8
36345 - };
36346 -
36347 - template <typename context_t, typename ...Ts>
36348 - typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type, Ts&&... ds) const
36349 - {
36350 - TRACE_DISPATCH (this, lookup_type);
36351 - switch (lookup_type) {
36352 - case Single: return_trace (u.single.dispatch (c, std::forward<Ts> (ds)...));
36353 - case Multiple: return_trace (u.multiple.dispatch (c, std::forward<Ts> (ds)...));
36354 - case Alternate: return_trace (u.alternate.dispatch (c, std::forward<Ts> (ds)...));
36355 - case Ligature: return_trace (u.ligature.dispatch (c, std::forward<Ts> (ds)...));
36356 - case Context: return_trace (u.context.dispatch (c, std::forward<Ts> (ds)...));
36357 - case ChainContext: return_trace (u.chainContext.dispatch (c, std::forward<Ts> (ds)...));
36358 - case Extension: return_trace (u.extension.dispatch (c, std::forward<Ts> (ds)...));
36359 - case ReverseChainSingle: return_trace (u.reverseChainContextSingle.dispatch (c, std::forward<T…
36360 - default: return_trace (c->default_return_value ());
36361 - }
36362 - }
36363 -
36364 - bool intersects (const hb_set_t *glyphs, unsigned int lookup_type) const
36365 - {
36366 - hb_intersects_context_t c (glyphs);
36367 - return dispatch (&c, lookup_type);
36368 - }
36369 -
36370 - protected:
36371 - union {
36372 - SingleSubst single;
36373 - MultipleSubst multiple;
36374 - AlternateSubst alternate;
36375 - LigatureSubst ligature;
36376 - ContextSubst context;
36377 - ChainContextSubst chainContext;
36378 - ExtensionSubst extension;
36379 - ReverseChainSingleSubst reverseChainContextSingle;
36380 - } u;
36381 - public:
36382 - DEFINE_SIZE_MIN (0);
36383 -};
36384 -
36385 -
36386 -struct SubstLookup : Lookup
36387 -{
36388 - typedef SubstLookupSubTable SubTable;
36389 -
36390 - const SubTable& get_subtable (unsigned int i) const
36391 - { return Lookup::get_subtable<SubTable> (i); }
36392 -
36393 - static inline bool lookup_type_is_reverse (unsigned int lookup_type)
36394 - { return lookup_type == SubTable::ReverseChainSingle; }
36395 -
36396 - bool is_reverse () const
36397 - {
36398 - unsigned int type = get_type ();
36399 - if (unlikely (type == SubTable::Extension))
36400 - return reinterpret_cast<const ExtensionSubst &> (get_subtable (0)).is_reverse ();
36401 - return lookup_type_is_reverse (type);
36402 - }
36403 -
36404 - bool may_have_non_1to1 () const
36405 - {
36406 - hb_have_non_1to1_context_t c;
36407 - return dispatch (&c);
36408 - }
36409 -
36410 - bool apply (hb_ot_apply_context_t *c) const
36411 - {
36412 - TRACE_APPLY (this);
36413 - return_trace (dispatch (c));
36414 - }
36415 -
36416 - bool intersects (const hb_set_t *glyphs) const
36417 - {
36418 - hb_intersects_context_t c (glyphs);
36419 - return dispatch (&c);
36420 - }
36421 -
36422 - hb_closure_context_t::return_t closure (hb_closure_context_t *c, unsigned int this_index) const
36423 - {
36424 - if (!c->should_visit_lookup (this_index))
36425 - return hb_closure_context_t::default_return_value ();
36426 -
36427 - c->set_recurse_func (dispatch_closure_recurse_func);
36428 -
36429 - hb_closure_context_t::return_t ret = dispatch (c);
36430 -
36431 - c->flush ();
36432 -
36433 - return ret;
36434 - }
36435 -
36436 - hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigne…
36437 - {
36438 - if (c->is_lookup_visited (this_index))
36439 - return hb_closure_lookups_context_t::default_return_value ();
36440 -
36441 - c->set_lookup_visited (this_index);
36442 - if (!intersects (c->glyphs))
36443 - {
36444 - c->set_lookup_inactive (this_index);
36445 - return hb_closure_lookups_context_t::default_return_value ();
36446 - }
36447 -
36448 - c->set_recurse_func (dispatch_closure_lookups_recurse_func);
36449 -
36450 - hb_closure_lookups_context_t::return_t ret = dispatch (c);
36451 - return ret;
36452 - }
36453 -
36454 - hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
36455 - {
36456 - c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
36457 - return dispatch (c);
36458 - }
36459 -
36460 - template <typename set_t>
36461 - void collect_coverage (set_t *glyphs) const
36462 - {
36463 - hb_collect_coverage_context_t<set_t> c (glyphs);
36464 - dispatch (&c);
36465 - }
36466 -
36467 - bool would_apply (hb_would_apply_context_t *c,
36468 - const hb_ot_layout_lookup_accelerator_t *accel) const
36469 - {
36470 - if (unlikely (!c->len)) return false;
36471 - if (!accel->may_have (c->glyphs[0])) return false;
36472 - return dispatch (c);
36473 - }
36474 -
36475 - static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
36476 -
36477 - bool serialize_single (hb_serialize_context_t *c,
36478 - uint32_t lookup_props,
36479 - hb_sorted_array_t<const HBGlyphID16> glyphs,
36480 - hb_array_t<const HBGlyphID16> substitutes)
36481 - {
36482 - TRACE_SERIALIZE (this);
36483 - if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
36484 - if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
36485 - {
36486 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36487 - return_trace (true);
36488 - }
36489 - c->pop_discard ();
36490 - return_trace (false);
36491 - }
36492 -
36493 - bool serialize_multiple (hb_serialize_context_t *c,
36494 - uint32_t lookup_props,
36495 - hb_sorted_array_t<const HBGlyphID16> glyphs,
36496 - hb_array_t<const unsigned int> substitute_len_list,
36497 - hb_array_t<const HBGlyphID16> substitute_glyphs_list)
36498 - {
36499 - TRACE_SERIALIZE (this);
36500 - if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (fals…
36501 - if (c->push<SubTable> ()->u.multiple.
36502 - serialize (c,
36503 - glyphs,
36504 - substitute_len_list,
36505 - substitute_glyphs_list))
36506 - {
36507 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36508 - return_trace (true);
36509 - }
36510 - c->pop_discard ();
36511 - return_trace (false);
36512 - }
36513 -
36514 - bool serialize_alternate (hb_serialize_context_t *c,
36515 - uint32_t lookup_props,
36516 - hb_sorted_array_t<const HBGlyphID16> glyphs,
36517 - hb_array_t<const unsigned int> alternate_len_list,
36518 - hb_array_t<const HBGlyphID16> alternate_glyphs_list)
36519 - {
36520 - TRACE_SERIALIZE (this);
36521 - if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (fal…
36522 -
36523 - if (c->push<SubTable> ()->u.alternate.
36524 - serialize (c,
36525 - glyphs,
36526 - alternate_len_list,
36527 - alternate_glyphs_list))
36528 - {
36529 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36530 - return_trace (true);
36531 - }
36532 - c->pop_discard ();
36533 - return_trace (false);
36534 - }
36535 -
36536 - bool serialize_ligature (hb_serialize_context_t *c,
36537 - uint32_t lookup_props,
36538 - hb_sorted_array_t<const HBGlyphID16> first_glyphs,
36539 - hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
36540 - hb_array_t<const HBGlyphID16> ligatures_list,
36541 - hb_array_t<const unsigned int> component_count_list,
36542 - hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
36543 - {
36544 - TRACE_SERIALIZE (this);
36545 - if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (fals…
36546 - if (c->push<SubTable> ()->u.ligature.
36547 - serialize (c,
36548 - first_glyphs,
36549 - ligature_per_first_glyph_count_list,
36550 - ligatures_list,
36551 - component_count_list,
36552 - component_list))
36553 - {
36554 - c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
36555 - return_trace (true);
36556 - }
36557 - c->pop_discard ();
36558 - return_trace (false);
36559 - }
36560 -
36561 - template <typename context_t>
36562 - static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int loo…
36563 -
36564 - static inline typename hb_closure_context_t::return_t closure_glyphs_recurse_func (hb_closure_co…
36565 -
36566 - static inline hb_closure_context_t::return_t dispatch_closure_recurse_func (hb_closure_context_t…
36567 - {
36568 - if (!c->should_visit_lookup (lookup_index))
36569 - return hb_empty_t ();
36570 -
36571 - hb_closure_context_t::return_t ret = closure_glyphs_recurse_func (c, lookup_index, covered_seq…
36572 -
36573 - /* While in theory we should flush here, it will cause timeouts because a recursive
36574 - * lookup can keep growing the glyph set. Skip, and outer loop will retry up to
36575 - * HB_CLOSURE_MAX_STAGES time, which should be enough for every realistic font. */
36576 - //c->flush ();
36577 -
36578 - return ret;
36579 - }
36580 -
36581 - HB_INTERNAL static hb_closure_lookups_context_t::return_t dispatch_closure_lookups_recurse_func …
36582 -
36583 - template <typename context_t, typename ...Ts>
36584 - typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
36585 - { return Lookup::dispatch<SubTable> (c, std::forward<Ts> (ds)...); }
36586 -
36587 - bool subset (hb_subset_context_t *c) const
36588 - { return Lookup::subset<SubTable> (c); }
36589 -
36590 - bool sanitize (hb_sanitize_context_t *c) const
36591 - { return Lookup::sanitize<SubTable> (c); }
36592 -};
36593 -
36594 -/*
36595 - * GSUB -- Glyph Substitution
36596 - * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
36597 - */
36598 -
36599 -struct GSUB : GSUBGPOS
36600 -{
36601 - static constexpr hb_tag_t tableTag = HB_OT_TAG_GSUB;
36602 -
36603 - const SubstLookup& get_lookup (unsigned int i) const
36604 - { return static_cast<const SubstLookup &> (GSUBGPOS::get_lookup (i)); }
36605 -
36606 - bool subset (hb_subset_context_t *c) const
36607 - {
36608 - hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_langsys, c->pl…
36609 - return GSUBGPOS::subset<SubstLookup> (&l);
36610 - }
36611 -
36612 - bool sanitize (hb_sanitize_context_t *c) const
36613 - { return GSUBGPOS::sanitize<SubstLookup> (c); }
36614 -
36615 - HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
36616 - hb_face_t *face) const;
36617 -
36618 - void closure_lookups (hb_face_t *face,
36619 - const hb_set_t *glyphs,
36620 - hb_set_t *lookup_indexes /* IN/OUT */) const
36621 - { GSUBGPOS::closure_lookups<SubstLookup> (face, glyphs, lookup_indexes); }
36622 -
36623 - typedef GSUBGPOS::accelerator_t<GSUB> accelerator_t;
36624 -};
36625 -
36626 -
36627 -struct GSUB_accelerator_t : GSUB::accelerator_t {};
36628 -
36633 /* Out-of-class implementation for methods recursing */
36636 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsubgpos.hh b/src/third_party/harfbuz…
36638 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsubgpos.hh
36639 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout-gsubgpos.hh
36640 @@ -125,24 +125,31 @@ struct hb_closure_context_t :
36641 hb_set_t *covered_glyph_set = done_lookups_glyph_set->get (lookup_index);
36642 if (unlikely (covered_glyph_set->in_error ()))
36644 - if (parent_active_glyphs ()->is_subset (*covered_glyph_set))
36648 - hb_set_union (covered_glyph_set, parent_active_glyphs ());
36649 + covered_glyph_set->union_ (parent_active_glyphs ());
36653 - hb_set_t* parent_active_glyphs ()
36658 + return active_glyphs_stack[active_glyphs_stack.length - 2];
36663 - if (active_glyphs_stack.length < 1)
36664 - return glyphs;
36671 - void push_cur_active_glyphs (hb_set_t* cur_active_glyph_set)
36674 - active_glyphs_stack.push (cur_active_glyph_set);
36679 @@ -156,29 +163,24 @@ struct hb_closure_context_t :
36683 - hb_set_t *cur_intersected_glyphs;
36685 - hb_vector_t<hb_set_t *> active_glyphs_stack;
36692 - hb_set_t *cur_intersected_glyphs_,
36698 - cur_intersected_glyphs (cur_intersected_glyphs_),
36704 - {
36705 - push_cur_active_glyphs (glyphs_);
36706 - }
36711 @@ -186,11 +188,11 @@ struct hb_closure_context_t :
36715 - hb_set_del_range (output, face->get_num_glyphs (), HB_SET_VALUE_INVALID); /* Remove invalid gl…
36716 - hb_set_union (glyphs, output);
36717 - hb_set_clear (output);
36718 + output->del_range (face->get_num_glyphs (), HB_SET_VALUE_INVALID); /* Remove invalid glyphs. */
36719 + glyphs->union_ (*output);
36720 + output->clear ();
36722 - active_glyphs_stack.fini ();
36727 @@ -409,9 +411,7 @@ struct hb_ot_apply_context_t :
36730 mask (-1),
36731 -#define arg1(arg) (arg) /* Remove the macro to see why it's needed! */
36732 - syllable arg1(0),
36733 -#undef arg1
36738 @@ -520,7 +520,7 @@ struct hb_ot_apply_context_t :
36742 - bool next ()
36747 @@ -543,11 +543,17 @@ struct hb_ot_apply_context_t :
36761 - bool prev ()
36765 while (idx > num_items - 1)
36766 @@ -570,8 +576,14 @@ struct hb_ot_apply_context_t :
36772 + *unsafe_from = hb_max (1u, idx) - 1u;
36781 @@ -712,53 +724,60 @@ struct hb_ot_apply_context_t :
36785 - void _set_glyph_props (hb_codepoint_t glyph_index,
36791 - unsigned int add_in = _hb_glyph_info_get_glyph_props (&buffer->cur()) &
36792 - HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE;
36793 - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_SUBSTITUTED;
36794 + unsigned int props = _hb_glyph_info_get_glyph_props (&buffer->cur());
36798 - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_LIGATED;
36806 - add_in &= ~HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED;
36810 - add_in |= HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED;
36813 - _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | gdef.get_glyph_props (glyph_index));
36816 + _hb_glyph_info_set_glyph_props (&buffer->cur(), props | gdef.get_glyph_props (glyph_index));
36819 - _hb_glyph_info_set_glyph_props (&buffer->cur(), add_in | class_guess);
36822 + _hb_glyph_info_set_glyph_props (&buffer->cur(), props | class_guess);
36825 + _hb_glyph_info_set_glyph_props (&buffer->cur(), props);
36830 - _set_glyph_props (glyph_index);
36832 (void) buffer->replace_glyph (glyph_index);
36836 - _set_glyph_props (glyph_index);
36838 buffer->cur().codepoint = glyph_index;
36843 - _set_glyph_props (glyph_index, class_guess, true);
36845 (void) buffer->replace_glyph (glyph_index);
36850 - _set_glyph_props (glyph_index, class_guess, false, true);
36852 (void) buffer->output_glyph (glyph_index);
36855 @@ -948,7 +967,7 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36856 const HBUINT16 input[], /* Array of input values--start with second glyph */
36859 - unsigned int *end_offset,
36864 @@ -1001,7 +1020,12 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36865 match_positions[0] = buffer->idx;
36866 for (unsigned int i = 1; i < count; i++)
36868 - if (!skippy_iter.next ()) return_trace (false);
36878 @@ -1055,7 +1079,7 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36879 total_component_count += _hb_glyph_info_get_lig_num_comps (&buffer->info[skippy_iter.idx]);
36882 - *end_offset = skippy_iter.idx - buffer->idx + 1;
36887 @@ -1065,7 +1089,7 @@ static inline bool match_input (hb_ot_apply_context_t *c,
36891 - unsigned int match_length,
36896 @@ -1073,7 +1097,7 @@ static inline bool ligate_input (hb_ot_apply_context_t *c,
36898 hb_buffer_t *buffer = c->buffer;
36900 - buffer->merge_clusters (buffer->idx, buffer->idx + match_length);
36901 + buffer->merge_clusters (buffer->idx, match_end);
36903 /* - If a base and one or more marks ligate, consider that as a base, NOT
36905 @@ -1190,11 +1214,16 @@ static inline bool match_backtrack (hb_ot_apply_context_t *c,
36908 for (unsigned int i = 0; i < count; i++)
36909 - if (!skippy_iter.prev ())
36920 -
36924 @@ -1203,21 +1232,26 @@ static inline bool match_lookahead (hb_ot_apply_context_t *c,
36928 - unsigned int offset,
36934 hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_context;
36935 - skippy_iter.reset (c->buffer->idx + offset - 1, count);
36936 + skippy_iter.reset (start_index - 1, count);
36939 for (unsigned int i = 0; i < count; i++)
36940 - if (!skippy_iter.next ())
36951 -
36955 @@ -1284,22 +1318,23 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
36959 - hb_set_t *pos_glyphs = nullptr;
36965 - pos_glyphs = hb_set_create ();
36971 - pos_glyphs->add (value);
36975 - intersected_glyphs_func (c->cur_intersected_glyphs, data, value, pos_glyphs);
36976 + intersected_glyphs_func (&c->parent_active_glyphs (), data, value, &pos_glyphs);
36979 - hb_set_set (pos_glyphs, c->cur_intersected_glyphs);
36980 + pos_glyphs.set (c->parent_active_glyphs ());
36984 @@ -1313,12 +1348,16 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
36985 input_value = input[seqIndex - 1];
36988 - intersected_glyphs_func (c->glyphs, input_data, input_value, pos_glyphs);
36989 + intersected_glyphs_func (c->glyphs, input_data, input_value, &pos_glyphs);
36993 - hb_set_add (covered_seq_indicies, seqIndex);
36994 - c->push_cur_active_glyphs (pos_glyphs ? pos_glyphs : c->glyphs);
36995 + covered_seq_indicies->add (seqIndex);
36997 + c->push_cur_active_glyphs () = pos_glyphs;
36999 + c->push_cur_active_glyphs ().set (*c->glyphs);
37004 @@ -1327,8 +1366,6 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
37005 c->recurse (lookupRecord[i].lookupListIndex, covered_seq_indicies, seqIndex, endIndex);
37007 c->pop_cur_done_glyphs ();
37008 - if (pos_glyphs)
37009 - hb_set_destroy (pos_glyphs);
37013 @@ -1343,15 +1380,13 @@ static inline void recurse_lookups (context_t *c,
37014 c->recurse (lookupRecord[i].lookupListIndex);
37017 -static inline bool apply_lookup (hb_ot_apply_context_t *c,
37022 const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
37023 - unsigned int match_length)
37026 - TRACE_APPLY (nullptr);
37027 -
37028 hb_buffer_t *buffer = c->buffer;
37031 @@ -1359,7 +1394,7 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37034 unsigned int bl = buffer->backtrack_len ();
37035 - end = bl + match_length;
37036 + end = bl + match_end - buffer->idx;
37038 int delta = bl - buffer->idx;
37040 @@ -1378,13 +1413,18 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37041 if (unlikely (idx == 0 && lookupRecord[i].lookupListIndex == c->lookup_index))
37044 + unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
37050 if (unlikely (!buffer->move_to (match_positions[idx])))
37053 if (unlikely (buffer->max_ops <= 0))
37056 - unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
37057 if (!c->recurse (lookupRecord[i].lookupListIndex))
37060 @@ -1420,15 +1460,18 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37064 - if (end <= int (match_positions[idx]))
37068 - * lookup ended up removing many items, more than we have had matched.
37069 - * Just never rewind end back and get out of here.
37070 - * https://bugs.chromium.org/p/chromium/issues/detail?id=659496 */
37078 + delta += match_positions[idx] - end;
37080 - /* There can't be any further changes. */
37081 - break;
37085 @@ -1440,7 +1483,7 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37089 - /* NOTE: delta is negative. */
37090 + /* NOTE: delta is non-positive. */
37091 delta = hb_max (delta, (int) next - (int) count);
37092 next -= delta;
37094 @@ -1461,8 +1504,6 @@ static inline bool apply_lookup (hb_ot_apply_context_t *c,
37097 (void) buffer->move_to (end);
37098 -
37099 - return_trace (true);
37103 @@ -1550,17 +1591,25 @@ static inline bool context_apply_lookup (hb_ot_apply_context_t *c,
37107 - unsigned int match_length = 0;
37108 - unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
37109 - return match_input (c,
37110 - inputCount, input,
37111 - lookup_context.funcs.match, lookup_context.match_data,
37112 - &match_length, match_positions)
37113 - && (c->buffer->unsafe_to_break (c->buffer->idx, c->buffer->idx + match_length),
37114 - apply_lookup (c,
37115 - inputCount, match_positions,
37116 - lookupCount, lookupRecord,
37117 - match_length));
37125 + c->buffer->unsafe_to_break (c->buffer->idx, match_end);
37134 + c->buffer->unsafe_to_concat (c->buffer->idx, match_end);
37140 @@ -1828,8 +1877,9 @@ struct ContextFormat1
37144 - c->cur_intersected_glyphs->clear ();
37145 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37146 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37147 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37152 @@ -1838,10 +1888,14 @@ struct ContextFormat1
37156 - | hb_filter (c->parent_active_glyphs (), hb_first)
37158 + return c->previous_parent_active_glyphs ().has (_);
37164 + c->pop_cur_done_glyphs ();
37168 @@ -1989,8 +2043,9 @@ struct ContextFormat2
37169 if (!(this+coverage).intersects (c->glyphs))
37172 - c->cur_intersected_glyphs->clear ();
37173 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37174 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37175 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37180 @@ -2000,10 +2055,9 @@ struct ContextFormat2
37184 - return
37187 - { return class_def.intersects_class (c->cur_intersected_glyphs, _); },
37188 + { return class_def.intersects_class (&c->parent_active_glyphs (), _); },
37192 @@ -2011,6 +2065,8 @@ struct ContextFormat2
37197 + c->pop_cur_done_glyphs ();
37201 @@ -2183,8 +2239,10 @@ struct ContextFormat3
37202 if (!(this+coverageZ[0]).intersects (c->glyphs))
37205 - c->cur_intersected_glyphs->clear ();
37206 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37207 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37208 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37214 @@ -2196,6 +2254,8 @@ struct ContextFormat3
37219 + c->pop_cur_done_glyphs ();
37223 @@ -2452,25 +2512,38 @@ static inline bool chain_context_apply_lookup (hb_ot_apply_context_t *c,
37227 - unsigned int start_index = 0, match_length = 0, end_index = 0;
37228 - unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
37229 - return match_input (c,
37230 - inputCount, input,
37231 - lookup_context.funcs.match, lookup_context.match_data[1],
37232 - &match_length, match_positions)
37233 - && match_backtrack (c,
37234 - backtrackCount, backtrack,
37235 - lookup_context.funcs.match, lookup_context.match_data[0],
37236 - &start_index)
37237 - && match_lookahead (c,
37238 - lookaheadCount, lookahead,
37239 - lookup_context.funcs.match, lookup_context.match_data[2],
37240 - match_length, &end_index)
37241 - && (c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index),
37242 - apply_lookup (c,
37243 - inputCount, match_positions,
37244 - lookupCount, lookupRecord,
37245 - match_length));
37246 + unsigned end_index = c->buffer->idx;
37258 + c->buffer->unsafe_to_concat (c->buffer->idx, end_index);
37262 + unsigned start_index = c->buffer->out_len;
37268 + c->buffer->unsafe_to_concat_from_outbuffer (start_index, end_index);
37272 + c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
37281 @@ -2802,8 +2875,9 @@ struct ChainContextFormat1
37285 - c->cur_intersected_glyphs->clear ();
37286 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37287 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37288 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37293 @@ -2812,10 +2886,14 @@ struct ChainContextFormat1
37297 - | hb_filter (c->parent_active_glyphs (), hb_first)
37299 + return c->previous_parent_active_glyphs ().has (_);
37305 + c->pop_cur_done_glyphs ();
37309 @@ -2964,8 +3042,10 @@ struct ChainContextFormat2
37310 if (!(this+coverage).intersects (c->glyphs))
37313 - c->cur_intersected_glyphs->clear ();
37314 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37315 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37316 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37322 @@ -2979,10 +3059,9 @@ struct ChainContextFormat2
37326 - return
37329 - { return input_class_def.intersects_class (c->cur_intersected_glyphs, _); },
37330 + { return input_class_def.intersects_class (&c->parent_active_glyphs (), _); },
37334 @@ -2990,6 +3069,8 @@ struct ChainContextFormat2
37339 + c->pop_cur_done_glyphs ();
37343 @@ -3216,8 +3297,10 @@ struct ChainContextFormat3
37344 if (!(this+input[0]).intersects (c->glyphs))
37347 - c->cur_intersected_glyphs->clear ();
37348 - get_coverage ().intersected_coverage_glyphs (c->parent_active_glyphs (), c->cur_intersected_gl…
37349 + hb_set_t* cur_active_glyphs = &c->push_cur_active_glyphs ();
37350 + get_coverage ().intersected_coverage_glyphs (&c->previous_parent_active_glyphs (),
37356 @@ -3232,6 +3315,8 @@ struct ChainContextFormat3
37361 + c->pop_cur_done_glyphs ();
37365 @@ -3706,7 +3791,7 @@ struct GSUBGPOS
37366 for (unsigned i : feature_indices->iter ())
37369 - if (t == unique_features.INVALID_KEY) continue;
37374 @@ -3839,7 +3924,7 @@ struct GSUBGPOS
37378 - void init (hb_face_t *face)
37381 this->table = hb_sanitize_context_t ().reference_table<T> (face);
37382 if (unlikely (this->table->is_blocklisted (this->table.get_blob (), face)))
37383 @@ -3861,8 +3946,7 @@ struct GSUBGPOS
37384 for (unsigned int i = 0; i < this->lookup_count; i++)
37385 this->accels[i].init (table->get_lookup (i));
37387 -
37388 - void fini ()
37391 for (unsigned int i = 0; i < this->lookup_count; i++)
37392 this->accels[i].fini ();
37393 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.cc b/src/third_party/harfbuzz-ng/src/…
37395 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.cc
37396 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.cc
37397 @@ -54,6 +54,8 @@
37398 #include "hb-aat-layout-morx-table.hh"
37399 #include "hb-aat-layout-opbd-table.hh" // Just so we compile it; unused otherwise.
37404 * SECTION:hb-ot-layout
37405 * @title: hb-ot-layout
37406 @@ -361,6 +363,13 @@ hb_ot_layout_get_attach_points (hb_face_t *face,
37407 * Fetches a list of the caret positions defined for a ligature glyph in the GDEF
37410 + * Note that a ligature that is formed from n characters will have n-1
37415 + * be fixed up for kerning that may be applied to the ligature glyph.
37417 * Return value: Total number of ligature caret positions for @glyph.
37420 @@ -382,7 +391,7 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
37424 -OT::GSUB::is_blocklisted (hb_blob_t *blob HB_UNUSED,
37429 @@ -999,7 +1008,7 @@ struct hb_collect_features_context_t
37433 - const hb_tag_t *features)
37438 @@ -1026,7 +1035,7 @@ struct hb_collect_features_context_t
37442 - feature_indices_filter.add(i);
37447 @@ -1491,10 +1500,9 @@ hb_ot_layout_lookup_substitute_closure (hb_face_t *face,
37451 - hb_set_t cur_intersected_glyphs;
37454 - OT::hb_closure_context_t c (face, glyphs, &cur_intersected_glyphs, &done_lookups_glyph_count, &d…
37457 const OT::SubstLookup& l = face->table.GSUB->table->get_lookup (lookup_index);
37459 @@ -1520,11 +1528,10 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
37463 - hb_set_t cur_intersected_glyphs;
37466 - OT::hb_closure_context_t c (face, glyphs, &cur_intersected_glyphs, &done_lookups_glyph_count, &d…
37467 - const OT::GSUB& gsub = *face->table.GSUB->table;
37469 + const GSUB& gsub = *face->table.GSUB->table;
37473 @@ -1803,7 +1810,7 @@ struct GSUBProxy
37474 table (*face->table.GSUB->table),
37475 accels (face->table.GSUB->accels) {}
37477 - const OT::GSUB &table;
37482 @@ -1961,6 +1968,77 @@ hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c,
37492 + * Return value: dominant baseline tag for the @script.
37502 + /* Unicode-1.1 additions */
37507 + /* Unicode-2.0 additions */
37509 + /* Unicode-4.0 additions */
37511 + /* Unicode-4.1 additions */
37513 + /* Unicode-5.0 additions */
37515 + /* Unicode-5.2 additions */
37517 + /* Unicode-6.1 additions */
37520 + /* Unicode-7.0 additions */
37524 + /* Unicode-9.0 additions */
37527 + /* Unicode-10.0 additions */
37530 + /* Unicode-11.0 additions */
37533 + /* Unicode-12.0 additions */
37537 + /* Unicode-1.1 additions */
37542 + /* Unicode-3.0 additions */
37544 + /* Unicode-9.0 additions */
37546 + /* Unicode-10.0 additions */
37548 + /* Unicode-13.0 additions */
37560 @@ -1968,7 +2046,7 @@ hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c,
37564 - * @coord: (out): baseline value if found.
37569 @@ -1984,13 +2062,231 @@ hb_ot_layout_get_baseline (hb_font_t *font,
37573 - bool result = font->face->table.BASE->get_baseline (font, baseline_tag, direction, script_tag, l…
37574 + return font->face->table.BASE->get_baseline (font, baseline_tag, direction, script_tag, language…
37608 + * See https://www.w3.org/TR/css-inline-3/#baseline-synthesis-fonts
37622 + hb_font_get_nominal_glyph (font, '-', &glyph)) &&
37629 + hb_position_t x_height = font->y_scale / 2;
37638 - if (result && coord)
37639 - *coord = HB_DIRECTION_IS_HORIZONTAL (direction) ? font->em_scale_y (*coord) : font->em_scale_x…
37659 + *coord = embox_top + (embox_bottom - embox_top) / 10;
37661 + *coord = embox_bottom + (embox_top - embox_bottom) / 10;
37672 + *coord += HB_DIRECTION_IS_HORIZONTAL (direction) ? font->y_scale : font->x_scale;
37688 + *coord -= HB_DIRECTION_IS_HORIZONTAL (direction) ? font->y_scale : font->x_scale;
37704 - return result;
37708 + /* Unicode-1.1 additions */
37713 + /* Unicode-2.0 additions */
37715 + /* Unicode-4.0 additions */
37717 + /* Unicode-4.1 additions */
37719 + /* Unicode-5.0 additions */
37721 + /* Unicode-5.2 additions */
37723 + /* Unicode-6.1 additions */
37726 + /* Unicode-7.0 additions */
37730 + /* Unicode-9.0 additions */
37733 + /* Unicode-10.0 additions */
37736 + /* Unicode-11.0 additions */
37739 + /* Unicode-12.0 additions */
37749 + *coord = font->y_scale * 6 / 10; // FIXME makes assumptions about origin
37752 + *coord = font->x_scale * 6 / 10; // FIXME makes assumptions about origin
37805 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.h b/src/third_party/harfbuzz-ng/src/s…
37807 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.h
37808 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.h
37809 @@ -332,31 +332,6 @@ hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
37813 -#ifdef HB_NOT_IMPLEMENTED
37814 -typedef struct
37815 -{
37816 - const hb_codepoint_t *before,
37817 - unsigned int before_length,
37818 - const hb_codepoint_t *input,
37819 - unsigned int input_length,
37820 - const hb_codepoint_t *after,
37821 - unsigned int after_length,
37822 -} hb_ot_layout_glyph_sequence_t;
37823 -
37824 -typedef hb_bool_t
37825 -(*hb_ot_layout_glyph_sequence_func_t) (hb_font_t *font,
37826 - hb_tag_t table_tag,
37827 - unsigned int lookup_index,
37828 - const hb_ot_layout_glyph_sequence_t *sequence,
37829 - void *user_data);
37830 -
37831 -HB_EXTERN void
37832 -Xhb_ot_layout_lookup_enumerate_sequences (hb_face_t *face,
37833 - hb_tag_t table_tag,
37834 - unsigned int lookup_index,
37835 - hb_ot_layout_glyph_sequence_func_t callback,
37836 - void *user_data);
37837 -#endif
37841 @@ -411,19 +386,6 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
37845 -#ifdef HB_NOT_IMPLEMENTED
37846 -/* Note: You better have GDEF when using this API, or marks won't do much. */
37847 -HB_EXTERN hb_bool_t
37848 -Xhb_ot_layout_lookup_substitute (hb_font_t *font,
37849 - unsigned int lookup_index,
37850 - const hb_ot_layout_glyph_sequence_t *sequence,
37851 - unsigned int out_size,
37852 - hb_codepoint_t *glyphs_out, /* OUT */
37853 - unsigned int *clusters_out, /* OUT */
37854 - unsigned int *out_length /* OUT */);
37855 -#endif
37856 -
37857 -
37861 @@ -431,15 +393,6 @@ Xhb_ot_layout_lookup_substitute (hb_font_t *font,
37865 -#ifdef HB_NOT_IMPLEMENTED
37866 -/* Note: You better have GDEF when using this API, or marks won't do much. */
37867 -HB_EXTERN hb_bool_t
37868 -Xhb_ot_layout_lookup_position (hb_font_t *font,
37869 - unsigned int lookup_index,
37870 - const hb_ot_layout_glyph_sequence_t *sequence,
37871 - hb_glyph_position_t *positions /* IN / OUT */);
37872 -#endif
37873 -
37875 * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */
37877 @@ -487,9 +440,11 @@ hb_ot_layout_feature_get_characters (hb_face_t *face,
37882 * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: Ideographic em-box bottom or left edge,
37884 …* @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: Ideographic em-box top or right edge baselin…
37885 + * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL: The center of the ideographic em-box. Since: 4.0…
37889 @@ -503,14 +458,19 @@ typedef enum {
37909 @@ -519,6 +479,14 @@ hb_ot_layout_get_baseline (hb_font_t *font,
37924 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.hh b/src/third_party/harfbuzz-ng/src/…
37926 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.hh
37927 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-layout.hh
37928 @@ -108,13 +108,17 @@ hb_ot_layout_delete_glyphs_inplace (hb_buffer_t *buffer,
37932 - struct SubstLookup;
37943 - const OT::SubstLookup &lookup,
37948 @@ -485,6 +489,8 @@ static inline uint8_t
37951 uint8_t lig_id = buffer->next_serial () & 0x07;
37957 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-math-table.hh b/src/third_party/harfbuzz-ng/…
37959 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-math-table.hh
37960 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-math-table.hh
37961 @@ -369,6 +369,37 @@ struct MathKern
37978 + *entries_count = end - start;
37980 + for (unsigned int i = 0; i < *entries_count; i++) {
37999 @@ -423,6 +454,24 @@ struct MathKernInfoRecord
38022 /* Offset to MathKern table for each corner -
38024 @@ -473,6 +522,22 @@ struct MathKernInfo
38047 @@ -545,6 +610,19 @@ struct MathGlyphInfo
38065 /* Offset to MathItalicsCorrectionInfo table -
38067 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.cc b/src/third_party/harfbuzz-ng/src/sr…
38069 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.cc
38070 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-math.cc
38071 @@ -184,6 +184,51 @@ hb_ot_math_get_glyph_kerning (hb_font_t *font,
38083 + * @kern_entries: (out caller-allocates) (array length=entries_count): array of kern entries retur…
38085 + * Fetches the raw MathKern (cut-in) data for the specified font, glyph index,
38090 + * appropriate kern value for a given correction height.
38092 + * <note>For a glyph with @n defined kern values (where @n > 0), there are only
38112 + return font->face->table.MATH->get_glyph_info().get_kernings (glyph,
38123 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.h b/src/third_party/harfbuzz-ng/src/src…
38125 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-math.h
38126 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-math.h
38127 @@ -50,14 +50,18 @@ HB_BEGIN_DECLS
38131 - * HB_OT_MATH_SCRIPT:
38134 - * OpenType script tag for math shaping, for use with
38135 - * Use with hb_buffer_set_script().
38136 + * OpenType script tag, `math`, for features specific to math shaping.
38138 - * Since: 1.3.3
38146 -#define HB_OT_MATH_SCRIPT HB_TAG('m','a','t','h')
38151 @@ -204,6 +208,20 @@ typedef enum {
38160 + * Data type to hold math kerning (cut-in) information for a glyph.
38172 @@ -280,6 +298,14 @@ hb_ot_math_get_glyph_kerning (hb_font_t *font,
38187 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-meta-table.hh b/src/third_party/harfbuzz-ng/…
38189 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-meta-table.hh
38190 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-meta-table.hh
38191 @@ -71,9 +71,9 @@ struct meta
38195 - void init (hb_face_t *face)
38198 - void fini () { table.destroy (); }
38202 { return table->dataMaps.lsearch (tag).reference_entry (table.get_blob ()); }
38203 @@ -119,7 +119,9 @@ struct meta
38207 -struct meta_accelerator_t : meta::accelerator_t {};
38214 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.cc b/src/third_party/harfbuzz-ng/src…
38216 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.cc
38217 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.cc
38218 @@ -238,6 +238,145 @@ hb_ot_metrics_get_position (hb_font_t *font,
38304 + *position = font->y_scale / 2;
38312 + *position = font->y_scale * 2 / 3;
38317 + *position = font->y_scale / 18;
38331 + *position = - font->y_scale / 18;
38336 + *position = font->x_scale * 10 / 12;
38341 + *position = font->y_scale * 10 / 12;
38351 + *position = font->y_scale / 5;
38364 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.h b/src/third_party/harfbuzz-ng/src/…
38366 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.h
38367 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-metrics.h
38368 @@ -110,6 +110,11 @@ hb_ot_metrics_get_position (hb_font_t *font,
38380 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-name-table.hh b/src/third_party/harfbuzz-ng/…
38382 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-name-table.hh
38383 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-name-table.hh
38384 @@ -256,7 +256,7 @@ struct name
38388 - name_prime->serialize (c->serializer, it, hb_addressof (this + stringOffset));
38389 + name_prime->serialize (c->serializer, it, std::addressof (this + stringOffset));
38390 return_trace (name_prime->count);
38393 @@ -279,7 +279,7 @@ struct name
38397 - void init (hb_face_t *face)
38400 this->table = hb_sanitize_context_t ().reference_table<name> (face);
38401 assert (this->table.get_length () >= this->table->stringOffset);
38402 @@ -288,7 +288,6 @@ struct name
38403 const hb_array_t<const NameRecord> all_names (this->table->nameRecordZ.arrayZ,
38404 this->table->count);
38406 - this->names.init ();
38407 this->names.alloc (all_names.length);
38409 for (unsigned int i = 0; i < all_names.length; i++)
38410 @@ -318,10 +317,8 @@ struct name
38412 this->names.resize (j);
38414 -
38415 - void fini ()
38418 - this->names.fini ();
38419 this->table.destroy ();
38422 @@ -373,7 +370,9 @@ struct name
38426 -struct name_accelerator_t : name::accelerator_t {};
38433 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-name.cc b/src/third_party/harfbuzz-ng/src/sr…
38435 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-name.cc
38436 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-name.cc
38437 @@ -52,7 +52,7 @@
38441 - * Returns: (out) (transfer none) (array length=num_entries): Array of available name entries.
38446 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table-v2subset.hh b/src/third_party/har…
38448 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table-v2subset.hh
38449 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table-v2subset.hh
38450 @@ -76,8 +76,7 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
38454 - post::accelerator_t _post;
38455 - _post.init (c->plan->source);
38456 + post::accelerator_t _post (c->plan->source);
38458 …hb_hashmap_t<hb_bytes_t, unsigned, std::nullptr_t, unsigned, nullptr, (unsigned)-1> glyph_name_to_…
38459 for (hb_codepoint_t new_gid = 0; new_gid < num_glyphs; new_gid++)
38460 @@ -128,9 +127,7 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const
38464 - bool ret = serialize (c->serializer, index_iter, &_post);
38465 - _post.fini ();
38466 - return_trace (ret);
38467 + return_trace (serialize (c->serializer, index_iter, &_post));
38471 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table.hh b/src/third_party/harfbuzz-ng/…
38473 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table.hh
38474 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-post-table.hh
38475 @@ -111,10 +111,9 @@ struct post
38479 - void init (hb_face_t *face)
38480 - {
38481 - index_to_offset.init ();
38488 @@ -132,9 +131,8 @@ struct post
38490 index_to_offset.push (data - pool);
38492 - void fini ()
38495 - index_to_offset.fini ();
38499 @@ -254,9 +252,9 @@ struct post
38503 - const Array16Of<HBUINT16> *glyphNameIndex;
38506 - const uint8_t *pool;
38511 @@ -307,7 +305,10 @@ struct post
38515 -struct post_accelerator_t : post::accelerator_t {};
38523 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-arabic.cc b/src/third_party/ha…
38525 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-arabic.cc
38526 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-arabic.cc
38527 @@ -321,6 +321,20 @@ arabic_joining (hb_buffer_t *buffer)
38528 info[prev].arabic_shaping_action() = entry->prev_action;
38529 buffer->unsafe_to_break (prev, i + 1);
38536 + buffer->unsafe_to_concat_from_outbuffer (0, i + 1);
38542 + buffer->unsafe_to_concat (prev, i + 1);
38546 info[i].arabic_shaping_action() = entry->curr_action;
38548 @@ -337,7 +351,14 @@ arabic_joining (hb_buffer_t *buffer)
38551 if (entry->prev_action != NONE && prev != UINT_MAX)
38553 info[prev].arabic_shaping_action() = entry->prev_action;
38554 + buffer->unsafe_to_break (prev, buffer->len);
38558 + buffer->unsafe_to_concat (prev, buffer->len);
38563 @@ -614,6 +635,11 @@ modifier_combining_marks[] =
38575 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-hangul.cc b/src/third_party/ha…
38577 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-hangul.cc
38578 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-hangul.cc
38579 @@ -140,7 +140,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED,
38581 * - LV can be precomposed, or decomposed. Lets call those
38583 - * - LVT can be fully precomposed, partically precomposed, or
38584 + * - LVT can be fully precomposed, partially precomposed, or
38588 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-indic.hh b/src/third_party/har…
38590 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-indic.hh
38591 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-indic.hh
38592 @@ -368,6 +368,7 @@ set_indic_properties (hb_glyph_info_t &info)
38600 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.hh b/src/third_par…
38602 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.hh
38603 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.hh
38604 @@ -69,7 +69,7 @@ enum use_syllable_type_t {
38608 -#define use_syllable_machine_ex_HVM 44u
38613 @@ -92,234 +92,449 @@ enum use_syllable_type_t {
38621 -#line 99 "hb-ot-shape-complex-use-machine.hh"
38622 +#line 100 "hb-ot-shape-complex-use-machine.hh"
38624 - 0u, 51u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
38630 - 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
38631 - 11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u,
38632 - 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u,
38633 - 24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
38634 - 22u, 48u, 11u, 48u, 1u, 48u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u, 41u, 42u,
38635 - 42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
38649 - 52, 2, 1, 38, 38, 1, 27, 26,
38655 - 1, 25, 26, 26, 26, 27, 27, 27,
38656 - 38, 48, 1, 1, 38, 38, 1, 27,
38657 - 26, 24, 23, 22, 2, 1, 25, 25,
38658 - 25, 1, 25, 26, 26, 26, 27, 27,
38659 - 27, 38, 48, 1, 1, 48, 38, 2,
38660 - 1, 5, 3, 4, 3
38673 - 0, 53, 56, 58, 97, 136, 138, 166,
38674 - 193, 218, 242, 265, 268, 270, 296, 322,
38675 - 348, 350, 376, 403, 430, 457, 485, 513,
38676 - 541, 580, 629, 631, 633, 672, 711, 713,
38677 - 741, 768, 793, 817, 840, 843, 845, 871,
38678 - 897, 923, 925, 951, 978, 1005, 1032, 1060,
38679 - 1088, 1116, 1155, 1204, 1206, 1208, 1257, 1296,
38680 - 1299, 1301, 1307, 1311, 1316
38701 - 11, 12, 13, 14, 15, 9, 16, 17,
38702 - 18, 19, 20, 21, 2, 22, 23, 24,
38703 - 2, 25, 26, 27, 28, 29, 30, 31,
38704 - 6, 32, 2, 33, 2, 0, 35, 34,
38705 - 35, 34, 37, 38, 36, 36, 36, 36,
38706 - 36, 36, 36, 36, 36, 39, 40, 41,
38707 - 42, 43, 44, 45, 39, 46, 1, 47,
38708 - 48, 49, 50, 36, 51, 52, 53, 36,
38709 - 36, 36, 36, 54, 55, 56, 57, 38,
38710 - 36, 37, 38, 36, 36, 36, 36, 36,
38711 - 36, 36, 36, 36, 39, 40, 41, 42,
38712 - 43, 44, 45, 39, 46, 47, 47, 48,
38713 - 49, 50, 36, 51, 52, 53, 36, 36,
38714 - 36, 36, 54, 55, 56, 57, 38, 36,
38715 - 37, 58, 39, 40, 41, 42, 43, 36,
38716 - 36, 36, 36, 36, 36, 48, 49, 50,
38717 - 36, 51, 52, 53, 36, 36, 36, 36,
38718 - 40, 55, 56, 57, 59, 36, 40, 41,
38719 - 42, 43, 36, 36, 36, 36, 36, 36,
38720 - 36, 36, 36, 36, 51, 52, 53, 36,
38721 - 36, 36, 36, 36, 55, 56, 57, 59,
38722 - 36, 41, 42, 43, 36, 36, 36, 36,
38723 - 36, 36, 36, 36, 36, 36, 36, 36,
38724 - 36, 36, 36, 36, 36, 36, 55, 56,
38725 - 57, 36, 42, 43, 36, 36, 36, 36,
38726 - 36, 36, 36, 36, 36, 36, 36, 36,
38727 - 36, 36, 36, 36, 36, 36, 55, 56,
38728 - 57, 36, 43, 36, 36, 36, 36, 36,
38729 - 36, 36, 36, 36, 36, 36, 36, 36,
38730 - 36, 36, 36, 36, 36, 55, 56, 57,
38731 - 36, 55, 56, 36, 56, 36, 41, 42,
38732 - 43, 36, 36, 36, 36, 36, 36, 36,
38733 - 36, 36, 36, 51, 52, 53, 36, 36,
38734 - 36, 36, 36, 55, 56, 57, 59, 36,
38735 - 41, 42, 43, 36, 36, 36, 36, 36,
38736 - 36, 36, 36, 36, 36, 36, 52, 53,
38737 - 36, 36, 36, 36, 36, 55, 56, 57,
38738 - 59, 36, 41, 42, 43, 36, 36, 36,
38739 - 36, 36, 36, 36, 36, 36, 36, 36,
38740 - 36, 53, 36, 36, 36, 36, 36, 55,
38741 - 56, 57, 59, 36, 61, 60, 41, 42,
38742 - 43, 36, 36, 36, 36, 36, 36, 36,
38743 - 36, 36, 36, 36, 36, 36, 36, 36,
38744 - 36, 36, 36, 55, 56, 57, 59, 36,
38745 - 40, 41, 42, 43, 36, 36, 36, 36,
38746 - 36, 36, 48, 49, 50, 36, 51, 52,
38747 - 53, 36, 36, 36, 36, 40, 55, 56,
38748 - 57, 59, 36, 40, 41, 42, 43, 36,
38749 - 36, 36, 36, 36, 36, 36, 49, 50,
38750 - 36, 51, 52, 53, 36, 36, 36, 36,
38751 - 40, 55, 56, 57, 59, 36, 40, 41,
38752 - 42, 43, 36, 36, 36, 36, 36, 36,
38753 - 36, 36, 50, 36, 51, 52, 53, 36,
38754 - 36, 36, 36, 40, 55, 56, 57, 59,
38755 - 36, 39, 40, 41, 42, 43, 36, 45,
38756 - 39, 36, 36, 36, 48, 49, 50, 36,
38757 - 51, 52, 53, 36, 36, 36, 36, 40,
38758 - 55, 56, 57, 59, 36, 39, 40, 41,
38759 - 42, 43, 36, 36, 39, 36, 36, 36,
38760 - 48, 49, 50, 36, 51, 52, 53, 36,
38761 - 36, 36, 36, 40, 55, 56, 57, 59,
38762 - 36, 39, 40, 41, 42, 43, 44, 45,
38763 - 39, 36, 36, 36, 48, 49, 50, 36,
38764 - 51, 52, 53, 36, 36, 36, 36, 40,
38765 - 55, 56, 57, 59, 36, 37, 38, 36,
38766 - 36, 36, 36, 36, 36, 36, 36, 36,
38767 - 39, 40, 41, 42, 43, 44, 45, 39,
38768 - 46, 36, 47, 48, 49, 50, 36, 51,
38769 - 52, 53, 36, 36, 36, 36, 54, 55,
38770 - 56, 57, 38, 36, 37, 58, 58, 58,
38771 - 58, 58, 58, 58, 58, 58, 58, 58,
38772 - 58, 58, 58, 58, 58, 58, 58, 58,
38773 - 58, 58, 40, 41, 42, 43, 58, 58,
38774 - 58, 58, 58, 58, 58, 58, 58, 58,
38775 - 51, 52, 53, 58, 58, 58, 58, 58,
38776 - 55, 56, 57, 59, 58, 63, 62, 3,
38777 - 64, 37, 38, 36, 36, 36, 36, 36,
38778 - 36, 36, 36, 36, 39, 40, 41, 42,
38779 - 43, 44, 45, 39, 46, 1, 47, 48,
38780 - 49, 50, 36, 51, 52, 53, 36, 0,
38781 - 35, 36, 54, 55, 56, 57, 38, 36,
38782 - 5, 6, 65, 65, 65, 65, 65, 65,
38783 - 65, 65, 65, 9, 10, 11, 12, 13,
38784 - 14, 15, 9, 16, 18, 18, 19, 20,
38785 - 21, 65, 22, 23, 24, 65, 65, 65,
38786 - 65, 28, 29, 30, 31, 6, 65, 5,
38787 - 65, 9, 10, 11, 12, 13, 65, 65,
38788 - 65, 65, 65, 65, 19, 20, 21, 65,
38789 - 22, 23, 24, 65, 65, 65, 65, 10,
38790 - 29, 30, 31, 66, 65, 10, 11, 12,
38791 - 13, 65, 65, 65, 65, 65, 65, 65,
38792 - 65, 65, 65, 22, 23, 24, 65, 65,
38793 - 65, 65, 65, 29, 30, 31, 66, 65,
38794 - 11, 12, 13, 65, 65, 65, 65, 65,
38795 - 65, 65, 65, 65, 65, 65, 65, 65,
38796 - 65, 65, 65, 65, 65, 29, 30, 31,
38797 - 65, 12, 13, 65, 65, 65, 65, 65,
38798 - 65, 65, 65, 65, 65, 65, 65, 65,
38799 - 65, 65, 65, 65, 65, 29, 30, 31,
38800 - 65, 13, 65, 65, 65, 65, 65, 65,
38801 - 65, 65, 65, 65, 65, 65, 65, 65,
38802 - 65, 65, 65, 65, 29, 30, 31, 65,
38803 - 29, 30, 65, 30, 65, 11, 12, 13,
38804 - 65, 65, 65, 65, 65, 65, 65, 65,
38805 - 65, 65, 22, 23, 24, 65, 65, 65,
38806 - 65, 65, 29, 30, 31, 66, 65, 11,
38807 - 12, 13, 65, 65, 65, 65, 65, 65,
38808 - 65, 65, 65, 65, 65, 23, 24, 65,
38809 - 65, 65, 65, 65, 29, 30, 31, 66,
38810 - 65, 11, 12, 13, 65, 65, 65, 65,
38811 - 65, 65, 65, 65, 65, 65, 65, 65,
38812 - 24, 65, 65, 65, 65, 65, 29, 30,
38813 - 31, 66, 65, 67, 65, 11, 12, 13,
38814 - 65, 65, 65, 65, 65, 65, 65, 65,
38815 - 65, 65, 65, 65, 65, 65, 65, 65,
38816 - 65, 65, 29, 30, 31, 66, 65, 10,
38817 - 11, 12, 13, 65, 65, 65, 65, 65,
38818 - 65, 19, 20, 21, 65, 22, 23, 24,
38819 - 65, 65, 65, 65, 10, 29, 30, 31,
38820 - 66, 65, 10, 11, 12, 13, 65, 65,
38821 - 65, 65, 65, 65, 65, 20, 21, 65,
38822 - 22, 23, 24, 65, 65, 65, 65, 10,
38823 - 29, 30, 31, 66, 65, 10, 11, 12,
38824 - 13, 65, 65, 65, 65, 65, 65, 65,
38825 - 65, 21, 65, 22, 23, 24, 65, 65,
38826 - 65, 65, 10, 29, 30, 31, 66, 65,
38827 - 9, 10, 11, 12, 13, 65, 15, 9,
38828 - 65, 65, 65, 19, 20, 21, 65, 22,
38829 - 23, 24, 65, 65, 65, 65, 10, 29,
38830 - 30, 31, 66, 65, 9, 10, 11, 12,
38831 - 13, 65, 65, 9, 65, 65, 65, 19,
38832 - 20, 21, 65, 22, 23, 24, 65, 65,
38833 - 65, 65, 10, 29, 30, 31, 66, 65,
38834 - 9, 10, 11, 12, 13, 14, 15, 9,
38835 - 65, 65, 65, 19, 20, 21, 65, 22,
38836 - 23, 24, 65, 65, 65, 65, 10, 29,
38837 - 30, 31, 66, 65, 5, 6, 65, 65,
38838 - 65, 65, 65, 65, 65, 65, 65, 9,
38839 - 10, 11, 12, 13, 14, 15, 9, 16,
38840 - 65, 18, 19, 20, 21, 65, 22, 23,
38841 - 24, 65, 65, 65, 65, 28, 29, 30,
38842 - 31, 6, 65, 5, 65, 65, 65, 65,
38843 - 65, 65, 65, 65, 65, 65, 65, 65,
38844 - 65, 65, 65, 65, 65, 65, 65, 65,
38845 - 65, 10, 11, 12, 13, 65, 65, 65,
38846 - 65, 65, 65, 65, 65, 65, 65, 22,
38847 - 23, 24, 65, 65, 65, 65, 65, 29,
38848 - 30, 31, 66, 65, 68, 65, 7, 65,
38849 - 1, 65, 65, 65, 1, 65, 65, 65,
38850 - 65, 65, 5, 6, 7, 65, 65, 65,
38851 - 65, 65, 65, 65, 65, 9, 10, 11,
38852 - 12, 13, 14, 15, 9, 16, 17, 18,
38853 - 19, 20, 21, 65, 22, 23, 24, 65,
38854 - 25, 26, 65, 28, 29, 30, 31, 6,
38855 - 65, 5, 6, 65, 65, 65, 65, 65,
38856 - 65, 65, 65, 65, 9, 10, 11, 12,
38857 - 13, 14, 15, 9, 16, 17, 18, 19,
38858 - 20, 21, 65, 22, 23, 24, 65, 65,
38859 - 65, 65, 28, 29, 30, 31, 6, 65,
38860 - 25, 26, 65, 26, 65, 1, 69, 69,
38861 - 69, 1, 69, 71, 70, 32, 70, 32,
38862 - 71, 70, 71, 70, 32, 70, 33, 70,
38863 - 0
39211 - 1, 3, 0, 26, 28, 29, 30, 51,
39212 - 53, 31, 32, 33, 34, 35, 46, 47,
39213 - 48, 54, 49, 43, 44, 45, 38, 39,
39214 - 40, 55, 56, 57, 50, 36, 37, 0,
39215 - 58, 60, 0, 2, 0, 4, 5, 6,
39216 - 7, 8, 9, 10, 21, 22, 23, 24,
39217 - 18, 19, 20, 13, 14, 15, 25, 11,
39218 - 12, 0, 0, 16, 0, 17, 0, 27,
39219 - 0, 0, 41, 42, 52, 0, 0, 59
39242 - 0, 0, 0, 0, 0, 0, 0, 4,
39243 - 0, 0, 5, 0, 6, 0, 0, 0,
39250 - 0, 7, 8, 0, 9, 0, 10, 0,
39251 - 11, 12, 0, 0, 0, 13, 14, 0
39262 @@ -330,7 +545,13 @@ static const char _use_syllable_machine_to_state_actions[] = {
39266 - 0, 0, 0, 0, 0
39277 @@ -341,18 +562,30 @@ static const char _use_syllable_machine_from_state_actions[] = {
39281 - 0, 0, 0, 0, 0
39292 - 0, 35, 35, 37, 37, 59, 37, 37,
39293 - 37, 37, 37, 37, 37, 37, 37, 37,
39294 - 61, 37, 37, 37, 37, 37, 37, 37,
39295 - 37, 59, 63, 65, 37, 66, 66, 66,
39296 - 66, 66, 66, 66, 66, 66, 66, 66,
39297 - 66, 66, 66, 66, 66, 66, 66, 66,
39298 - 66, 66, 66, 66, 66, 66, 66, 66,
39299 - 66, 70, 71, 71, 71
39317 @@ -366,7 +599,7 @@ static const int use_syllable_machine_en_main = 0;
39321 -#line 179 "hb-ot-shape-complex-use-machine.rl"
39322 +#line 181 "hb-ot-shape-complex-use-machine.rl"
39326 @@ -385,7 +618,9 @@ struct machine_index_t :
39330 - machine_index_t (const machine_index_t& o) : it (o.it) {}
39337 @@ -397,14 +632,28 @@ struct machine_index_t :
39339 void __prev__ () { --it; }
39340 void __rewind__ (unsigned n) { it -= n; }
39343 - { unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index …
39344 - void operator = (const machine_index_t& o) { *this = (*o.it).first; }
39345 - bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
39357 + if (index < n) it += n - index; else if (index > n) it -= index - n;
39369 @@ -420,7 +669,7 @@ HB_FUNCOBJ (machine_index);
39373 -{ return !(i.use_category() == USE(CGJ) && _hb_glyph_info_is_default_ignorable (&i)); }
39378 @@ -449,7 +698,7 @@ find_syllables_use (hb_buffer_t *buffer)
39382 -#line 453 "hb-ot-shape-complex-use-machine.hh"
39383 +#line 702 "hb-ot-shape-complex-use-machine.hh"
39387 @@ -457,12 +706,12 @@ find_syllables_use (hb_buffer_t *buffer)
39391 -#line 263 "hb-ot-shape-complex-use-machine.rl"
39392 +#line 281 "hb-ot-shape-complex-use-machine.rl"
39397 -#line 466 "hb-ot-shape-complex-use-machine.hh"
39398 +#line 715 "hb-ot-shape-complex-use-machine.hh"
39402 @@ -476,7 +725,7 @@ _resume:
39406 -#line 480 "hb-ot-shape-complex-use-machine.hh"
39407 +#line 729 "hb-ot-shape-complex-use-machine.hh"
39411 @@ -494,55 +743,79 @@ _eof_trans:
39415 - case 7:
39416 -#line 169 "hb-ot-shape-complex-use-machine.rl"
39418 +#line 171 "hb-ot-shape-complex-use-machine.rl"
39421 - case 4:
39423 #line 174 "hb-ot-shape-complex-use-machine.rl"
39427 +#line 176 "hb-ot-shape-complex-use-machine.rl"
39431 -#line 175 "hb-ot-shape-complex-use-machine.rl"
39432 +#line 177 "hb-ot-shape-complex-use-machine.rl"
39435 - case 8:
39436 -#line 167 "hb-ot-shape-complex-use-machine.rl"
39437 - {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
39438 - break;
39439 - case 9:
39440 -#line 168 "hb-ot-shape-complex-use-machine.rl"
39442 +#line 170 "hb-ot-shape-complex-use-machine.rl"
39443 {te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
39445 - case 6:
39446 -#line 169 "hb-ot-shape-complex-use-machine.rl"
39448 +#line 171 "hb-ot-shape-complex-use-machine.rl"
39449 {te = p;p--;{ found_syllable (use_standard_cluster); }}
39451 - case 11:
39452 -#line 170 "hb-ot-shape-complex-use-machine.rl"
39454 +#line 172 "hb-ot-shape-complex-use-machine.rl"
39455 {te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
39457 - case 10:
39458 -#line 171 "hb-ot-shape-complex-use-machine.rl"
39460 +#line 173 "hb-ot-shape-complex-use-machine.rl"
39461 {te = p;p--;{ found_syllable (use_numeral_cluster); }}
39464 -#line 172 "hb-ot-shape-complex-use-machine.rl"
39465 +#line 174 "hb-ot-shape-complex-use-machine.rl"
39466 {te = p;p--;{ found_syllable (use_symbol_cluster); }}
39468 - case 14:
39469 -#line 173 "hb-ot-shape-complex-use-machine.rl"
39471 +#line 175 "hb-ot-shape-complex-use-machine.rl"
39472 {te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
39474 - case 12:
39475 -#line 174 "hb-ot-shape-complex-use-machine.rl"
39477 +#line 176 "hb-ot-shape-complex-use-machine.rl"
39478 {te = p;p--;{ found_syllable (use_broken_cluster); }}
39480 - case 13:
39481 -#line 175 "hb-ot-shape-complex-use-machine.rl"
39483 +#line 177 "hb-ot-shape-complex-use-machine.rl"
39484 {te = p;p--;{ found_syllable (use_non_cluster); }}
39486 -#line 546 "hb-ot-shape-complex-use-machine.hh"
39491 + {{p = ((te))-1;} found_syllable (use_virama_terminated_cluster); }
39494 + {{p = ((te))-1;} found_syllable (use_sakot_terminated_cluster); }
39502 +#line 169 "hb-ot-shape-complex-use-machine.rl"
39508 +#line 170 "hb-ot-shape-complex-use-machine.rl"
39511 +#line 819 "hb-ot-shape-complex-use-machine.hh"
39515 @@ -551,7 +824,7 @@ _again:
39519 -#line 555 "hb-ot-shape-complex-use-machine.hh"
39520 +#line 828 "hb-ot-shape-complex-use-machine.hh"
39524 @@ -567,7 +840,7 @@ _again:
39528 -#line 268 "hb-ot-shape-complex-use-machine.rl"
39529 +#line 286 "hb-ot-shape-complex-use-machine.rl"
39533 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.rl b/src/third_par…
39535 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.rl
39536 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-machine.rl
39537 @@ -73,9 +73,10 @@ export H = 12; # HALANT
39540 export ZWNJ = 14; # Zero width non-joiner
39544 -export HVM = 44; # HALANT_OR_VOWEL_MODIFIER
39549 @@ -106,12 +107,12 @@ export FMBlw = 46; # CONS_FINAL_MOD UIPC = Bottom
39553 -h = H | HVM | Sk;
39558 -dependent_vowels = VPre* VAbv* VBlw* VPst*;
39559 -vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
39565 @@ -134,7 +135,7 @@ symbol_cluster_tail = SMAbv+ SMBlw* | SMBlw+;
39569 - h
39574 @@ -152,14 +153,15 @@ standard_cluster =
39581 - (complex_syllable_tail | number_joiner_terminated_cluster_tail | numeral_cluster_tail | symbol_cl…
39587 -symbol_cluster = (O | GB) symbol_cluster_tail?;
39592 @@ -194,7 +196,9 @@ struct machine_index_t :
39596 - machine_index_t (const machine_index_t& o) : it (o.it) {}
39603 @@ -206,14 +210,28 @@ struct machine_index_t :
39605 void __prev__ () { --it; }
39606 void __rewind__ (unsigned n) { it -= n; }
39609 - { unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index …
39610 - void operator = (const machine_index_t& o) { *this = (*o.it).first; }
39611 - bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
39623 + if (index < n) it += n - index; else if (index > n) it -= index - n;
39635 @@ -229,7 +247,7 @@ HB_FUNCOBJ (machine_index);
39639 -{ return !(i.use_category() == USE(CGJ) && _hb_glyph_info_is_default_ignorable (&i)); }
39644 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-table.hh b/src/third_party…
39646 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-table.hh
39647 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use-table.hh
39648 @@ -53,7 +53,7 @@
39652 -#define HVM USE(HVM) /* HALANT_OR_VOWEL_MODIFIER */
39657 @@ -62,6 +62,7 @@
39665 @@ -102,7 +103,7 @@ static const uint8_t use_table[] = {
39667 /* Latin-1 Supplement */
39669 - /* 00A0 */ GB, O, O, O, O, O, O, O, O, O, O, O, …
39674 @@ -127,7 +128,7 @@ static const uint8_t use_table[] = {
39678 - /* 07F0 */ VMAbv, VMAbv, VMAbv, VMAbv, O, O, O, O, O, O, B, O, …
39683 @@ -135,7 +136,7 @@ static const uint8_t use_table[] = {
39687 - /* 0850 */ B, B, B, B, B, B, B, B, B, CMBlw, CMBlw, CMBlw, …
39692 @@ -153,102 +154,102 @@ static const uint8_t use_table[] = {
39696 - /* 0980 */ GB, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39697 - /* 0990 */ B, O, O, B, B, B, B, B, B, B, B, B, …
39698 - /* 09A0 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39699 - /* 09B0 */ B, O, B, O, O, O, B, B, B, B, O, O, C…
39700 - /* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, …
39701 - /* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
39702 - /* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39703 - /* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, …
39715 - /* 0A00 */ O, VMAbv, VMAbv, VMPst, O, B, B, B, B, B, B, O, …
39716 - /* 0A10 */ B, O, O, B, B, B, B, B, B, B, B, B, …
39717 - /* 0A20 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39718 - /* 0A30 */ B, O, B, B, O, B, B, O, B, B, O, O, C…
39719 - /* 0A40 */ VPst, VBlw, VBlw, O, O, O, O, VAbv, VAbv, O, O, VAbv, …
39720 - /* 0A50 */ O, VMBlw, O, O, O, O, O, O, O, B, B, B, …
39721 - /* 0A60 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39722 - /* 0A70 */ VMAbv, CMAbv, GB, GB, O, MBlw, O, O, O, O, O, O, …
39734 - /* 0A80 */ O, VMAbv, VMAbv, VMPst, O, B, B, B, B, B, B, B, …
39735 - /* 0A90 */ B, B, O, B, B, B, B, B, B, B, B, B, …
39736 - /* 0AA0 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39737 - /* 0AB0 */ B, O, B, B, O, B, B, B, B, B, O, O, C…
39738 - /* 0AC0 */ VPst, VBlw, VBlw, VBlw, VBlw, VAbv, O, VAbv, VAbv, VAbv, O, VPst, …
39739 - /* 0AD0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39740 - /* 0AE0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39741 - /* 0AF0 */ O, O, O, O, O, O, O, O, O, B, VMAbv, VMAbv, V…
39753 - /* 0B00 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39754 - /* 0B10 */ B, O, O, B, B, B, B, B, B, B, B, B, …
39755 - /* 0B20 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39756 - /* 0B30 */ B, O, B, B, O, B, B, B, B, B, O, O, C…
39757 - /* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, …
39758 - /* 0B50 */ O, O, O, O, O, VAbv, VAbv, VAbv, O, O, O, O, …
39759 - /* 0B60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39760 - /* 0B70 */ O, B, O, O, O, O, O, O, O, O, O, O, …
39772 - /* 0B80 */ O, O, VMAbv, O, O, B, B, B, B, B, B, O, …
39773 - /* 0B90 */ B, O, B, B, B, B, O, O, O, B, B, O, …
39774 - /* 0BA0 */ O, O, O, B, B, O, O, O, B, B, B, O, …
39775 - /* 0BB0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
39776 - /* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPre, VPre, …
39777 - /* 0BD0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
39778 - /* 0BE0 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39779 - /* 0BF0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39791 - /* 0C00 */ VMAbv, VMPst, VMPst, VMPst, VMAbv, B, B, B, B, B, B, B, …
39792 - /* 0C10 */ B, O, B, B, B, B, B, B, B, B, B, B, …
39793 - /* 0C20 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39794 - /* 0C30 */ B, B, B, B, B, B, B, B, B, B, O, O, C…
39795 - /* 0C40 */ VAbv, VPst, VPst, VPst, VPst, O, VAbv, VAbv, VAbv, O, VAbv, VAbv, …
39796 - /* 0C50 */ O, O, O, O, O, VAbv, VBlw, O, B, B, B, O, …
39797 - /* 0C60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39798 - /* 0C70 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39810 - /* 0C80 */ B, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39811 - /* 0C90 */ B, O, B, B, B, B, B, B, B, B, B, B, …
39812 - /* 0CA0 */ B, B, B, B, B, B, B, B, B, O, B, B, …
39813 - /* 0CB0 */ B, B, B, B, O, B, B, B, B, B, O, O, C…
39814 - /* 0CC0 */ VAbv, VPst, VPst, VPst, VPst, O, VAbv, VAbv, VAbv, O, VAbv, VAbv, …
39815 - /* 0CD0 */ O, O, O, O, O, VPst, VPst, O, O, O, O, O, …
39816 - /* 0CE0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39817 - /* 0CF0 */ O, CS, CS, O, O, O, O, O, O, O, O, O, …
39829 - /* 0D00 */ VMAbv, VMAbv, VMPst, VMPst, B, B, B, B, B, B, B, B, …
39830 - /* 0D10 */ B, O, B, B, B, B, B, B, B, B, B, B, …
39835 - /* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPre, VPre, …
39836 - /* 0D50 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
39837 - /* 0D60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, …
39845 - /* 0D80 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, …
39846 - /* 0D90 */ B, B, B, B, B, B, B, O, O, O, B, B, …
39850 - /* 0DB0 */ B, B, O, B, B, B, B, B, B, B, B, B, …
39851 - /* 0DC0 */ B, B, B, B, B, B, B, O, O, O, H, O, …
39852 - /* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, O, VBlw, O, VPst, VPre, VPre, VPre, …
39853 - /* 0DE0 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39854 - /* 0DF0 */ O, O, VPst, VPst, O, O, O, O,
39863 @@ -259,14 +260,14 @@ static const uint8_t use_table[] = {
39867 - /* 0F40 */ B, B, B, B, B, B, B, B, O, B, B, B, …
39870 - /* 0F60 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39871 - /* 0F70 */ O, CMBlw, VBlw, VAbv, VAbv, VBlw, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, …
39875 - /* 0F90 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, …
39878 - /* 0FB0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, …
39883 @@ -277,7 +278,7 @@ static const uint8_t use_table[] = {
39887 - /* 1030 */ VBlw, VPre, VAbv, VAbv, VAbv, VAbv, VMAbv, VMBlw, VMPst, H, VAbv, MPst, …
39892 @@ -291,22 +292,22 @@ static const uint8_t use_table[] = {
39896 - /* 1710 */ B, B, VAbv, VBlw, VBlw, VPst, O, O, O, O, O, O, …
39902 - /* 1730 */ B, B, VAbv, VBlw, VPst, O, O, O, O, O, O, O, …
39908 - /* 1750 */ B, B, VAbv, VBlw, O, O, O, O, O, O, O, O, …
39913 - /* 1760 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39914 - /* 1770 */ B, O, VAbv, VBlw, O, O, O, O, O, O, O, O, …
39920 @@ -315,23 +316,23 @@ static const uint8_t use_table[] = {
39924 - /* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, …
39925 - /* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
39926 - /* 17F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39933 - /* 1800 */ B, O, O, O, O, O, O, B, O, O, B, CGJ, …
39934 - /* 1810 */ O, O, O, O, O, O, O, O, O, O, O, O, …
39942 - /* 1870 */ B, B, B, B, B, B, B, B, B, O, O, O, …
39946 - /* 18A0 */ B, B, B, B, B, B, B, B, B, CMBlw, B, O, …
39951 @@ -339,43 +340,43 @@ static const uint8_t use_table[] = {
39955 - /* 1910 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39956 - /* 1920 */ VAbv, VAbv, VBlw, VPst, VPst, VAbv, VAbv, VAbv, VAbv, SUB, SUB, SUB, …
39957 - /* 1930 */ FPst, FPst, VMBlw, FPst, FPst, FPst, FPst, FPst, FPst, FBlw, VMAbv, FMBlw, …
39958 - /* 1940 */ O, O, O, O, O, O, B, B, B, B, B, B, …
39967 - /* 1960 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39968 - /* 1970 */ B, B, B, B, B, O, O, O, O, O, O, O, …
39976 - /* 19A0 */ B, B, B, B, B, B, B, B, B, B, B, B, …
39979 - /* 19C0 */ B, B, B, B, B, B, B, B, VMPst, VMPst, O, O, …
39980 - /* 19D0 */ B, B, B, B, B, B, B, B, B, B, B, O, …
39989 - /* 1A10 */ B, B, B, B, B, B, B, VAbv, VAbv, VPre, VPst, VAbv, …
39997 - /* 1A50 */ B, B, B, B, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, …
40000 - /* 1A70 */ VPre, VPre, VPre, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VAbv, VMAbv, V…
40001 - /* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40002 - /* 1A90 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40009 @@ -386,16 +387,16 @@ static const uint8_t use_table[] = {
40013 - /* 1B40 */ VPre, VPre, VAbv, VAbv, H, B, B, B, B, B, B, B, …
40014 - /* 1B50 */ B, B, B, B, B, B, B, B, B, B, O, GB, …
40015 - /* 1B60 */ O, O, GB, O, O, O, O, O, GB, O, O, SMAbv, S…
40016 - /* 1B70 */ SMAbv, SMAbv, SMAbv, SMAbv, O, O, O, O, O, O, O, O, …
40026 - /* 1BA0 */ B, SUB, SUB, SUB, VAbv, VBlw, VPre, VPst, VAbv, VAbv, VPst, H, …
40031 @@ -403,15 +404,15 @@ static const uint8_t use_table[] = {
40035 - /* 1BF0 */ FAbv, FAbv, CMBlw, CMBlw, O, O, O, O, O, O, O, O, …
40043 - /* 1C30 */ FAbv, FAbv, FAbv, FAbv, VMPre, VMPre, FMAbv, CMBlw, O, O, O, O, …
40044 - /* 1C40 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40050 @@ -420,7 +421,7 @@ static const uint8_t use_table[] = {
40054 - /* 1CF0 */ O, O, O, O, VMAbv, CS, CS, VMPst, VMAbv, VMAbv, GB, O, …
40059 @@ -432,31 +433,33 @@ static const uint8_t use_table[] = {
40063 - O, O, O, O, …
40064 - /* 2010 */ GB, GB, GB, GB, GB, O, O, O,
40065 -
40066 -#define use_offset_0x2070u 3072
40067 -
40078 - /* 2070 */ O, O, O, O, FMPst, O, O, O, O, O, O, O, …
40082 -#define use_offset_0x20f0u 3096
40086 /* Combining Diacritical Marks for Symbols */
40088 - /* 20F0 */ VMAbv, O, O, O, O, O, O, O,
40091 -#define use_offset_0x25c8u 3104
40098 -#define use_offset_0x2d30u 3112
40103 @@ -464,25 +467,25 @@ static const uint8_t use_table[] = {
40107 - /* 2D60 */ B, B, B, B, B, B, B, B, O, O, O, O, …
40108 - /* 2D70 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40112 -#define use_offset_0xa800u 3192
40120 - /* A820 */ B, B, B, VPst, VPst, VBlw, VAbv, VPst, O, O, O, O, …
40121 - /* A830 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40125 /* Phags-pa */
40130 - /* A870 */ B, B, B, B, O, O, O, O, O, O, O, O, …
40135 @@ -490,8 +493,8 @@ static const uint8_t use_table[] = {
40139 - /* A8C0 */ VPst, VPst, VPst, VPst, H, VMAbv, O, O, O, O, O, O, …
40140 - /* A8D0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40146 @@ -508,9 +511,9 @@ static const uint8_t use_table[] = {
40150 - /* A950 */ FAbv, FAbv, FPst, VPst, O, O, O, O, O, O, O, O, …
40153 - /* A970 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40158 @@ -518,22 +521,22 @@ static const uint8_t use_table[] = {
40162 - /* A9C0 */ H, O, O, O, O, O, O, O, O, O, O, O, …
40163 - /* A9D0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40167 /* Myanmar Extended-B */
40170 - /* A9F0 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40178 - /* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MAbv, MBlw, O, O, O, O, O, …
40179 - /* AA40 */ B, B, B, FAbv, B, B, B, B, B, B, B, B, …
40180 - /* AA50 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40185 /* Myanmar Extended-A */
40187 @@ -546,115 +549,128 @@ static const uint8_t use_table[] = {
40191 - /* AAC0 */ B, VMAbv, B, O, O, O, O, O, O, O, O, O, …
40192 - /* AAD0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40199 - /* AAF0 */ O, O, O, O, O, VMPst, H, O,
40202 -#define use_offset_0xabc0u 3952
40210 - /* ABE0 */ B, B, B, VPst, VPst, VAbv, VPst, VPst, VBlw, VPst, VPst, O, V…
40211 - /* ABF0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40215 -#define use_offset_0xfe00u 4016
40223 -#define use_offset_0x10570u 4032
40227 + /* Arabic Presentation Forms-B */
40242 - /* 10570 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40243 - /* 10580 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40244 - /* 10590 */ B, B, B, O, B, B, O, B, B, B, B, B, …
40245 - /* 105A0 */ B, B, O, B, B, B, B, B, B, B, B, B, …
40246 - /* 105B0 */ B, B, O, B, B, B, B, B, B, B, O, B, …
40253 -#define use_offset_0x10a00u 4112
40259 - /* 10A00 */ B, VBlw, VBlw, VBlw, O, VAbv, VBlw, O, O, O, O, O, …
40260 - /* 10A10 */ B, B, B, B, O, B, B, B, O, B, B, B, …
40264 - /* 10A30 */ B, B, B, B, B, B, O, O, CMAbv, CMBlw, CMBlw, O, …
40265 - /* 10A40 */ B, B, B, B, B, B, B, B, B, O, O, O, …
40269 -#define use_offset_0x10ac0u 4192
40277 - /* 10AE0 */ B, B, B, B, B, CMBlw, CMBlw, O, O, O, O, B, …
40280 -#define use_offset_0x10b80u 4240
40287 - /* 10B90 */ B, B, O, O, O, O, O, O, O, O, O, O, …
40288 - /* 10BA0 */ O, O, O, O, O, O, O, O, O, B, B, B, …
40292 -#define use_offset_0x10d00u 4288
40300 - /* 10D20 */ B, B, B, B, VMAbv, VMAbv, VMAbv, CMAbv, O, O, O, O, …
40301 - /* 10D30 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40305 -#define use_offset_0x10e80u 4352
40313 - /* 10EA0 */ B, B, B, B, B, B, B, B, B, B, O, VAbv, …
40314 - /* 10EB0 */ B, B, O, O, O, O, O, O,
40318 -#define use_offset_0x10f30u 4408
40326 - /* 10F50 */ VMBlw, B, B, B, B, O, O, O, O, O, O, O, …
40327 - /* 10F60 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40334 - /* 10F80 */ B, B, CMBlw, CMBlw, CMBlw, CMBlw, O, O, O, O, O, O, …
40335 - /* 10F90 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40336 - /* 10FA0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40344 - /* 10FC0 */ O, B, B, B, B, O, O, O, O, B, B, B, …
40345 - /* 10FD0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40349 - /* 10FF0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40354 @@ -662,10 +678,10 @@ static const uint8_t use_table[] = {
40358 - /* 11040 */ VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, H, O, O, O, O, O, …
40359 - /* 11050 */ O, O, N, N, N, N, N, N, N, N, N, N, …
40363 - /* 11070 */ VAbv, B, B, VAbv, VAbv, B, O, O, O, O, O, O, …
40368 @@ -673,9 +689,9 @@ static const uint8_t use_table[] = {
40372 - /* 110C0 */ O, O, VBlw, O, O, O, O, O,
40375 -#define use_offset_0x11100u 4816
40380 @@ -683,14 +699,14 @@ static const uint8_t use_table[] = {
40384 - /* 11130 */ VBlw, VAbv, VAbv, H, CMAbv, O, B, B, B, B, B, B, …
40385 - /* 11140 */ O, O, O, O, B, VPst, VPst, B, O, O, O, O, …
40393 - /* 11170 */ B, B, B, CMBlw, O, O, O, O, O, O, O, O, …
40398 @@ -698,50 +714,50 @@ static const uint8_t use_table[] = {
40402 - /* 111C0 */ H, B, R, R, O, O, O, O, GB, FMBlw, CMBlw, VAbv, …
40408 - /* 111E0 */ O, B, B, B, B, B, B, B, B, B, B, B, …
40409 - /* 111F0 */ B, B, B, B, B, O, O, O, O, O, O, O, …
40416 - /* 11210 */ B, B, O, B, B, B, B, B, B, B, B, B, …
40419 - /* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv, O, O, O, O, …
40422 -#define use_offset_0x11280u 5136
40428 - /* 11280 */ B, B, B, B, B, B, B, O, B, O, B, B, …
40429 - /* 11290 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40430 - /* 112A0 */ B, B, B, B, B, B, B, B, B, O, O, O, …
40440 - /* 112E0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, CMBlw, VBlw, O, …
40441 - /* 112F0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40447 - /* 11300 */ VMAbv, VMAbv, VMAbv, VMAbv, O, B, B, B, B, B, B, B, …
40448 - /* 11310 */ B, O, O, B, B, B, B, B, B, B, B, B, …
40449 - /* 11320 */ B, B, B, B, B, B, B, B, B, O, B, B, …
40450 - /* 11330 */ B, O, B, B, O, B, B, B, B, B, O, CMBlw, …
40451 - /* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPre, …
40452 - /* 11350 */ O, O, O, O, O, O, O, VPst, O, O, O, O, …
40453 - /* 11360 */ B, B, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, …
40454 - /* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
40464 -#define use_offset_0x11400u 5384
40469 @@ -751,9 +767,9 @@ static const uint8_t use_table[] = {
40473 - /* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40474 - /* 11460 */ CS, CS, O, O, O, O, O, O, O, O, O, O, …
40475 - /* 11470 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40482 @@ -761,10 +777,10 @@ static const uint8_t use_table[] = {
40486 - /* 114C0 */ VMAbv, VMAbv, H, CMBlw, B, O, O, O, O, O, O, O, …
40487 - /* 114D0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40491 -#define use_offset_0x11580u 5608
40496 @@ -772,11 +788,11 @@ static const uint8_t use_table[] = {
40500 - /* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, VPre, VPre, …
40503 - /* 115D0 */ O, O, O, O, O, O, O, O, B, B, B, B, …
40504 - /* 115E0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40505 - /* 115F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40512 @@ -784,31 +800,31 @@ static const uint8_t use_table[] = {
40516 - /* 11640 */ VAbv, O, O, O, O, O, O, O, O, O, O, O, …
40517 - /* 11650 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40518 - /* 11660 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40519 - /* 11670 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40530 - /* 116B0 */ VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, H, CMBlw, B, O, O, O, …
40531 - /* 116C0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40532 - /* 116D0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40533 - /* 116E0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40534 - /* 116F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40544 - /* 11710 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40545 - /* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VAbv, …
40549 - /* 11740 */ B, B, B, B, B, B, B, O,
40552 -#define use_offset_0x11800u 6064
40557 @@ -816,31 +832,31 @@ static const uint8_t use_table[] = {
40561 - /* 11830 */ VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VMAbv, VMPst, H, CMBlw, O, …
40564 -#define use_offset_0x11900u 6128
40570 - /* 11900 */ B, B, B, B, B, B, B, O, O, B, O, O, …
40571 - /* 11910 */ B, B, B, B, O, B, B, O, B, B, B, B, …
40575 - /* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, O, VPre, VPre, O, O, VMAbv, …
40576 - /* 11940 */ MPst, R, MPst, CMBlw, O, O, O, O, O, O, O, O, …
40577 - /* 11950 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40582 -#define use_offset_0x119a0u 6224
40588 - /* 119A0 */ B, B, B, B, B, B, B, B, O, O, B, B, …
40592 - /* 119D0 */ B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VAbv, VAbv, …
40593 - /* 119E0 */ H, B, O, O, VPre, O, O, O, O, O, O, O, …
40594 - /* 119F0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40601 @@ -848,7 +864,7 @@ static const uint8_t use_table[] = {
40605 - /* 11A40 */ O, O, O, O, O, GB, O, H, O, O, O, O, …
40610 @@ -856,50 +872,50 @@ static const uint8_t use_table[] = {
40614 - /* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, H, O, O, …
40617 -#define use_offset_0x11c00u 6480
40623 - /* 11C00 */ B, B, B, B, B, B, B, B, B, O, B, B, …
40627 - /* 11C30 */ VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VBlw, O, VAbv, VAbv, VAbv, VAbv, …
40628 - /* 11C40 */ B, O, O, O, GB, GB, O, O, O, O, O, O, …
40632 - /* 11C60 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40639 - /* 11C90 */ O, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, …
40640 - /* 11CA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, …
40641 - /* 11CB0 */ VBlw, VPre, VBlw, VAbv, VPst, VMAbv, VMAbv, O,
40646 -#define use_offset_0x11d00u 6664
40652 - /* 11D00 */ B, B, B, B, B, B, B, O, B, B, O, B, …
40656 - /* 11D30 */ B, VAbv, VAbv, VAbv, VAbv, VAbv, VBlw, O, O, O, VAbv, O, …
40657 - /* 11D40 */ VMAbv, VMAbv, CMBlw, VAbv, VBlw, H, R, MBlw, O, O, O, O, …
40658 - /* 11D50 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40665 - /* 11D60 */ B, B, B, B, B, B, O, B, B, O, B, B, …
40668 - /* 11D80 */ B, B, B, B, B, B, B, B, B, B, VPst, VPst, …
40669 - /* 11D90 */ VAbv, VAbv, O, VPst, VPst, VMAbv, VMPst, H, O, O, O, O, …
40670 - /* 11DA0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40675 -#define use_offset_0x11ee0u 6840
40680 @@ -907,7 +923,7 @@ static const uint8_t use_table[] = {
40684 -#define use_offset_0x13000u 6864
40689 @@ -978,21 +994,21 @@ static const uint8_t use_table[] = {
40693 - /* 13420 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40698 - /* 13430 */ H, H, H, H, H, H, H, B, B, O, O, O, …
40701 -#define use_offset_0x16ac0u 7952
40707 - /* 16AC0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40710 - /* 16AE0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40711 - /* 16AF0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40717 @@ -1001,7 +1017,7 @@ static const uint8_t use_table[] = {
40721 -#define use_offset_0x16f00u 8072
40726 @@ -1010,21 +1026,21 @@ static const uint8_t use_table[] = {
40730 - /* 16F40 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40735 - /* 16F80 */ VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, O, O, O, O, …
40739 -#define use_offset_0x16fe0u 8224
40745 - /* 16FE0 */ O, O, O, O, B, O, O, O,
40748 -#define use_offset_0x18b00u 8232
40753 @@ -1058,9 +1074,9 @@ static const uint8_t use_table[] = {
40757 - /* 18CD0 */ B, B, B, B, B, B, O, O,
40760 -#define use_offset_0x1bc00u 8704
40765 @@ -1071,39 +1087,46 @@ static const uint8_t use_table[] = {
40769 - /* 1BC60 */ B, B, B, B, B, B, B, B, B, B, B, O, …
40770 - /* 1BC70 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40771 - /* 1BC80 */ B, B, B, B, B, B, B, B, B, O, O, O, …
40772 - /* 1BC90 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40781 -#define use_offset_0x1e100u 8864
40793 - /* 1E120 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40794 - /* 1E130 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, B, B, B, B, B, …
40795 - /* 1E140 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40800 -#define use_offset_0x1e290u 8944
40807 - /* 1E2A0 */ B, B, B, B, B, B, B, B, B, B, B, B, …
40808 - /* 1E2B0 */ O, O, O, O, O, O, O, O, O, O, O, O, …
40817 - /* 1E2F0 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40820 -#define use_offset_0x1e900u 9056
40825 @@ -1112,11 +1135,33 @@ static const uint8_t use_table[] = {
40829 - /* 1E940 */ B, B, B, B, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, CMAbv, B, …
40830 - /* 1E950 */ B, B, B, B, B, B, B, B, B, B, O, O, …
40839 -#define use_offset_0xe0100u 9152
40862 @@ -1136,11 +1181,240 @@ static const uint8_t use_table[] = {
40866 -}; /* Table items: 9392; occupancy: 79% */
41098 -hb_use_get_category (hb_codepoint_t u)
41105 @@ -1164,8 +1438,7 @@ hb_use_get_category (hb_codepoint_t u)
41109 - if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2017u)) return use_table[u - 0x2008u + use_of…
41110 - if (hb_in_range<hb_codepoint_t> (u, 0x2070u, 0x2087u)) return use_table[u - 0x2070u + use_of…
41111 + if (hb_in_range<hb_codepoint_t> (u, 0x2008u, 0x2087u)) return use_table[u - 0x2008u + use_of…
41112 …if (hb_in_range<hb_codepoint_t> (u, 0x20F0u, 0x20F7u)) return use_table[u - 0x20F0u + use_offset_0…
41113 …if (hb_in_range<hb_codepoint_t> (u, 0x25C8u, 0x25CFu)) return use_table[u - 0x25C8u + use_offset_0…
41114 …if (hb_in_range<hb_codepoint_t> (u, 0x2D30u, 0x2D7Fu)) return use_table[u - 0x2D30u + use_offset_0…
41115 @@ -1178,9 +1451,12 @@ hb_use_get_category (hb_codepoint_t u)
41118 …if (hb_in_range<hb_codepoint_t> (u, 0xFE00u, 0xFE0Fu)) return use_table[u - 0xFE00u + use_offset_0…
41119 + if (hb_in_range<hb_codepoint_t> (u, 0xFEF8u, 0xFEFFu)) return use_table[u - 0xFEF8u + use_of…
41120 + if (hb_in_range<hb_codepoint_t> (u, 0xFFF0u, 0xFFFFu)) return use_table[u - 0xFFF0u + use_of…
41124 + if (hb_in_range<hb_codepoint_t> (u, 0xFFF0u, 0xFFFFu)) return use_table[u - 0xFFF0u + use_of…
41125 …if (hb_in_range<hb_codepoint_t> (u, 0x10570u, 0x105BFu)) return use_table[u - 0x10570u + use_offse…
41126 …if (hb_in_range<hb_codepoint_t> (u, 0x10A00u, 0x10A4Fu)) return use_table[u - 0x10A00u + use_offse…
41127 …if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AEFu)) return use_table[u - 0x10AC0u + use_offse…
41128 @@ -1222,6 +1498,10 @@ hb_use_get_category (hb_codepoint_t u)
41129 …if (hb_in_range<hb_codepoint_t> (u, 0x1BC00u, 0x1BC9Fu)) return use_table[u - 0x1BC00u + use_offse…
41133 + if (hb_in_range<hb_codepoint_t> (u, 0x1D170u, 0x1D17Fu)) return use_table[u - 0x1D170u + use…
41137 …if (hb_in_range<hb_codepoint_t> (u, 0x1E100u, 0x1E14Fu)) return use_table[u - 0x1E100u + use_offse…
41138 …if (hb_in_range<hb_codepoint_t> (u, 0x1E290u, 0x1E2FFu)) return use_table[u - 0x1E290u + use_offse…
41139 @@ -1229,13 +1509,19 @@ hb_use_get_category (hb_codepoint_t u)
41143 - if (hb_in_range<hb_codepoint_t> (u, 0xE0100u, 0xE01EFu)) return use_table[u - 0xE0100u + use…
41144 + if (hb_in_range<hb_codepoint_t> (u, 0xE0000u, 0xE0FFFu)) return use_table[u - 0xE0000u + use…
41148 + if (hb_in_range<hb_codepoint_t> (u, 0xE0000u, 0xE0FFFu)) return use_table[u - 0xE0000u + use…
41154 - return USE(O);
41161 @@ -1245,7 +1531,7 @@ hb_use_get_category (hb_codepoint_t u)
41165 -#undef HVM
41170 @@ -1254,6 +1540,7 @@ hb_use_get_category (hb_codepoint_t u)
41178 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use.cc b/src/third_party/harfb…
41180 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use.cc
41181 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-complex-use.cc
41182 @@ -206,7 +206,7 @@ setup_masks_use (const hb_ot_shape_plan_t *plan,
41183 unsigned int count = buffer->len;
41184 hb_glyph_info_t *info = buffer->info;
41185 for (unsigned int i = 0; i < count; i++)
41186 - info[i].use_category() = hb_use_get_category (info[i].codepoint);
41191 @@ -257,7 +257,6 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
41195 - case use_symbol_cluster:
41199 @@ -269,6 +268,7 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
41207 @@ -350,7 +350,7 @@ record_pref_use (const hb_ot_shape_plan_t *plan HB_UNUSED,
41211 - return (info.use_category() == USE(H) || info.use_category() == USE(HVM)) &&
41216 @@ -363,6 +363,7 @@ reorder_syllable_use (hb_buffer_t *buffer, unsigned int start, unsigned int end)
41224 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-fallback.cc b/src/third_party/harfbuzz…
41226 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-fallback.cc
41227 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape-fallback.cc
41228 @@ -446,6 +446,9 @@ _hb_ot_shape_fallback_mark_position (const hb_ot_shape_plan_t *plan,
41232 + if (!buffer->message (font, "start fallback mark"))
41238 @@ -457,6 +460,8 @@ _hb_ot_shape_fallback_mark_position (const hb_ot_shape_plan_t *plan,
41243 + (void) buffer->message (font, "end fallback mark");
41247 @@ -497,6 +502,9 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
41248 !font->has_glyph_v_kerning_func ())
41251 + if (!buffer->message (font, "start fallback kern"))
41254 bool reverse = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
41257 @@ -508,6 +516,8 @@ _hb_ot_shape_fallback_kern (const hb_ot_shape_plan_t *plan,
41260 buffer->reverse ();
41262 + (void) buffer->message (font, "end fallback kern");
41266 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape.cc b/src/third_party/harfbuzz-ng/src/s…
41268 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-shape.cc
41269 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-shape.cc
41270 @@ -935,17 +935,23 @@ hb_ot_substitute_pre (const hb_ot_shape_context_t *c)
41271 _hb_buffer_allocate_gsubgpos_vars (c->buffer);
41276 + if (c->plan->apply_morx && c->plan->apply_gpos)
41277 + hb_aat_layout_remove_deleted_glyphs (c->buffer);
41284 - hb_ot_hide_default_ignorables (c->buffer, c->font);
41286 - if (c->plan->apply_morx)
41287 + if (c->plan->apply_morx && !c->plan->apply_gpos)
41288 hb_aat_layout_remove_deleted_glyphs (c->buffer);
41291 + hb_ot_hide_default_ignorables (c->buffer, c->font);
41293 if (c->plan->shaper->postprocess_glyphs &&
41294 c->buffer->message(c->font, "start postprocess-glyphs")) {
41295 c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
41296 @@ -1034,7 +1040,7 @@ hb_ot_position_complex (const hb_ot_shape_context_t *c)
41300 - * this as it will be overriden.
41303 bool adjust_offsets_when_zeroing = c->plan->adjust_mark_positioning_when_zeroing &&
41304 HB_DIRECTION_IS_FORWARD (c->buffer->props.direction);
41305 @@ -1120,7 +1126,7 @@ hb_propagate_flags (hb_buffer_t *buffer)
41306 /* Propagate cluster-level glyph flags to be the same on all cluster glyphs.
41309 - if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_UNSAFE_TO_BREAK))
41310 + if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_GLYPH_FLAGS))
41313 hb_glyph_info_t *info = buffer->info;
41314 @@ -1129,11 +1135,7 @@ hb_propagate_flags (hb_buffer_t *buffer)
41317 for (unsigned int i = start; i < end; i++)
41318 - if (info[i].mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK)
41319 - {
41320 - mask = HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
41321 - break;
41322 - }
41325 for (unsigned int i = start; i < end; i++)
41327 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag-table.hh b/src/third_party/harfbuzz-ng/s…
41329 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag-table.hh
41330 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-tag-table.hh
41331 @@ -6,8 +6,8 @@
41335 - * <meta name="updated_at" content="2021-12-09 12:01 AM" />
41336 - * File-Date: 2021-08-06
41337 + * <meta name="updated_at" content="2022-01-28 10:00 PM" />
41338 + * File-Date: 2022-03-02
41342 @@ -54,6 +54,7 @@ static const LangTag ot_languages[] = {
41345 {"ajp", HB_TAG('A','R','A',' ')}, /* South Levantine Arabic -> Arabic */
41346 + {"ajt", HB_TAG('A','R','A',' ')}, /* Judeo-Tunisian Arabic (retired code) -> Arabic */
41349 {"akb", HB_TAG('B','T','K',' ')}, /* Batak Angkola -> Batak */
41350 @@ -66,7 +67,7 @@ static const LangTag ot_languages[] = {
41352 /*{"ang", HB_TAG('A','N','G',' ')},*/ /* Old English (ca. 450-1100) -> Anglo-Saxon */
41353 {"aoa", HB_TAG('C','P','P',' ')}, /* Angolar -> Creoles */
41354 - {"apa", HB_TAG('A','T','H',' ')}, /* Apache [family] -> Athapaskan */
41355 + {"apa", HB_TAG('A','T','H',' ')}, /* Apache [collection] -> Athapaskan */
41356 {"apc", HB_TAG('A','R','A',' ')}, /* North Levantine Arabic -> Arabic */
41357 {"apd", HB_TAG('A','R','A',' ')}, /* Sudanese Arabic -> Arabic */
41358 {"apj", HB_TAG('A','T','H',' ')}, /* Jicarilla Apache -> Athapaskan */
41359 @@ -86,7 +87,7 @@ static const LangTag ot_languages[] = {
41360 {"arz", HB_TAG('A','R','A',' ')}, /* Egyptian Arabic -> Arabic */
41363 -/*{"ath", HB_TAG('A','T','H',' ')},*/ /* Athapascan [family] -> Athapaskan */
41364 +/*{"ath", HB_TAG('A','T','H',' ')},*/ /* Athapascan [collection] -> Athapaskan */
41365 {"atj", HB_TAG('R','C','R',' ')}, /* Atikamekw -> R-Cree */
41366 {"atv", HB_TAG('A','L','T',' ')}, /* Northern Altai -> Altai */
41367 {"auj", HB_TAG('B','B','R',' ')}, /* Awjilah -> Berber */
41368 @@ -110,10 +111,10 @@ static const LangTag ot_languages[] = {
41369 {"azn", HB_TAG('N','A','H',' ')}, /* Western Durango Nahuatl -> Nahuatl */
41370 {"azz", HB_TAG('N','A','H',' ')}, /* Highland Puebla Nahuatl -> Nahuatl */
41372 - {"bad", HB_TAG('B','A','D','0')}, /* Banda [family] */
41375 {"bah", HB_TAG('C','P','P',' ')}, /* Bahamas Creole English -> Creoles */
41376 - {"bai", HB_TAG('B','M','L',' ')}, /* Bamileke [family] */
41381 @@ -135,7 +136,7 @@ static const LangTag ot_languages[] = {
41382 {"bea", HB_TAG('A','T','H',' ')}, /* Beaver -> Athapaskan */
41383 {"beb", HB_TAG('B','T','I',' ')}, /* Bebele -> Beti */
41385 - {"ber", HB_TAG('B','B','R',' ')}, /* Berber [family] */
41387 {"bew", HB_TAG('C','P','P',' ')}, /* Betawi -> Creoles */
41388 {"bfl", HB_TAG('B','A','D','0')}, /* Banda-Ndélé -> Banda */
41390 @@ -203,7 +204,7 @@ static const LangTag ot_languages[] = {
41391 {"btd", HB_TAG('B','T','K',' ')}, /* Batak Dairi -> Batak */
41393 {"btj", HB_TAG('M','L','Y',' ')}, /* Bacanese Malay -> Malay */
41394 -/*{"btk", HB_TAG('B','T','K',' ')},*/ /* Batak [family] */
41397 {"btm", HB_TAG('B','T','K',' ')}, /* Batak Mandailing -> Batak */
41398 {"bto", HB_TAG('B','I','K',' ')}, /* Rinconada Bikol -> Bikol */
41399 @@ -256,6 +257,8 @@ static const LangTag ot_languages[] = {
41401 {"chj", HB_TAG('C','C','H','N')}, /* Ojitlán Chinantec -> Chinantec */
41403 + {"chm", HB_TAG('H','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> High Mari */
41404 + {"chm", HB_TAG('L','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> Low Mari */
41405 {"chn", HB_TAG('C','P','P',' ')}, /* Chinook jargon -> Creoles */
41408 @@ -297,10 +300,10 @@ static const LangTag ot_languages[] = {
41410 {"coq", HB_TAG('A','T','H',' ')}, /* Coquille -> Athapaskan */
41411 {"cpa", HB_TAG('C','C','H','N')}, /* Palantla Chinantec -> Chinantec */
41412 - {"cpe", HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [family] -> Creoles */
41413 - {"cpf", HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [family] -> Creoles */
41414 + {"cpe", HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [collection] -> Creoles */
41415 + {"cpf", HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [collection] -> Creoles */
41416 {"cpi", HB_TAG('C','P','P',' ')}, /* Chinese Pidgin English -> Creoles */
41417 -/*{"cpp", HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [family] -> Creoles …
41418 +/*{"cpp", HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [collection] -> Creo…
41419 {"cpx", HB_TAG('Z','H','S',' ')}, /* Pu-Xian Chinese -> Chinese, Simplified */
41420 {"cqd", HB_TAG('H','M','N',' ')}, /* Chuanqiandian Cluster Miao -> Hmong */
41421 {"cqu", HB_TAG('Q','U','H',' ')}, /* Chilean Quechua (retired code) -> Quechua (Bolivia) */
41422 @@ -320,7 +323,7 @@ static const LangTag ot_languages[] = {
41424 {"crm", HB_TAG('L','C','R',' ')}, /* Moose Cree -> L-Cree */
41425 {"crm", HB_TAG('C','R','E',' ')}, /* Moose Cree -> Cree */
41426 - {"crp", HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [family] -> Creoles */
41427 + {"crp", HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [collection] -> Creoles */
41429 {"crs", HB_TAG('C','P','P',' ')}, /* Seselwa Creole French -> Creoles */
41431 @@ -431,7 +434,7 @@ static const LangTag ot_languages[] = {
41433 {"eto", HB_TAG('B','T','I',' ')}, /* Eton (Cameroon) -> Beti */
41435 - {"euq", HB_TAG_NONE }, /* Basque [family] != Basque */
41439 {"ewo", HB_TAG('B','T','I',' ')}, /* Ewondo -> Beti */
41440 @@ -620,10 +623,11 @@ static const LangTag ot_languages[] = {
41441 {"ijc", HB_TAG('I','J','O',' ')}, /* Izon -> Ijo */
41442 {"ije", HB_TAG('I','J','O',' ')}, /* Biseni -> Ijo */
41443 {"ijn", HB_TAG('I','J','O',' ')}, /* Kalabari -> Ijo */
41444 -/*{"ijo", HB_TAG('I','J','O',' ')},*/ /* Ijo [family] */
41446 {"ijs", HB_TAG('I','J','O',' ')}, /* Southeast Ijo -> Ijo */
41447 {"ik", HB_TAG('I','P','K',' ')}, /* Inupiaq [macrolanguage] -> Inupiat */
41448 {"ike", HB_TAG('I','N','U',' ')}, /* Eastern Canadian Inuktitut -> Inuktitut */
41449 + {"ike", HB_TAG('I','N','U','K')}, /* Eastern Canadian Inuktitut -> Nunavik Inuktitut */
41450 {"ikt", HB_TAG('I','N','U',' ')}, /* Inuinnaqtun -> Inuktitut */
41451 /*{"ilo", HB_TAG('I','L','O',' ')},*/ /* Iloko -> Ilokano */
41453 @@ -638,6 +642,7 @@ static const LangTag ot_languages[] = {
41455 {"itz", HB_TAG('M','Y','N',' ')}, /* Itzá -> Mayan */
41457 + {"iu", HB_TAG('I','N','U','K')}, /* Inuktitut [macrolanguage] -> Nunavik Inuktitut */
41459 {"ixl", HB_TAG('M','Y','N',' ')}, /* Ixil -> Mayan */
41461 @@ -667,7 +672,7 @@ static const LangTag ot_languages[] = {
41462 {"kab", HB_TAG('B','B','R',' ')}, /* Kabyle -> Berber */
41465 - {"kar", HB_TAG('K','R','N',' ')}, /* Karen [family] */
41469 {"kby", HB_TAG('K','N','R',' ')}, /* Manga Kanuri -> Kanuri */
41470 @@ -805,7 +810,7 @@ static const LangTag ot_languages[] = {
41471 {"lac", HB_TAG('M','Y','N',' ')}, /* Lacandon -> Mayan */
41474 - {"lak", HB_TAG_NONE }, /* Laka (Nigeria) != Lak */
41479 @@ -876,7 +881,7 @@ static const LangTag ot_languages[] = {
41481 {"mam", HB_TAG('M','Y','N',' ')}, /* Mam -> Mayan */
41482 {"man", HB_TAG('M','N','K',' ')}, /* Mandingo [macrolanguage] -> Maninka */
41483 - {"map", HB_TAG_NONE }, /* Austronesian [family] != Mapudungun */
41486 {"max", HB_TAG('M','L','Y',' ')}, /* North Moluccan Malay -> Malay */
41487 {"max", HB_TAG('C','P','P',' ')}, /* North Moluccan Malay -> Creoles */
41488 @@ -936,6 +941,7 @@ static const LangTag ot_languages[] = {
41489 {"mnw", HB_TAG('M','O','N','T')}, /* Mon -> Thailand Mon */
41492 + {"mo", HB_TAG('R','O','M',' ')}, /* Moldavian (retired code) -> Romanian */
41493 {"mod", HB_TAG('C','P','P',' ')}, /* Mobilian -> Creoles */
41496 @@ -958,7 +964,7 @@ static const LangTag ot_languages[] = {
41498 {"mud", HB_TAG('C','P','P',' ')}, /* Mednyj Aleut -> Creoles */
41499 {"mui", HB_TAG('M','L','Y',' ')}, /* Musi -> Malay */
41500 - {"mun", HB_TAG_NONE }, /* Munda [family] != Mundari */
41502 {"mup", HB_TAG('R','A','J',' ')}, /* Malvi -> Rajasthani */
41503 {"muq", HB_TAG('H','M','N',' ')}, /* Eastern Xiangxi Miao -> Hmong */
41504 /*{"mus", HB_TAG('M','U','S',' ')},*/ /* Creek -> Muscogee */
41505 @@ -973,7 +979,7 @@ static const LangTag ot_languages[] = {
41506 {"mww", HB_TAG('H','M','N',' ')}, /* Hmong Daw -> Hmong */
41509 -/*{"myn", HB_TAG('M','Y','N',' ')},*/ /* Mayan [family] */
41511 {"myq", HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) -> Maninka */
41513 {"mzb", HB_TAG('B','B','R',' ')}, /* Tumzabt -> Berber */
41514 @@ -982,7 +988,7 @@ static const LangTag ot_languages[] = {
41515 {"na", HB_TAG('N','A','U',' ')}, /* Nauru -> Nauruan */
41516 {"nag", HB_TAG('N','A','G',' ')}, /* Naga Pidgin -> Naga-Assamese */
41517 {"nag", HB_TAG('C','P','P',' ')}, /* Naga Pidgin -> Creoles */
41518 -/*{"nah", HB_TAG('N','A','H',' ')},*/ /* Nahuatl [family] */
41520 {"nan", HB_TAG('Z','H','S',' ')}, /* Min Nan Chinese -> Chinese, Simplified */
41523 @@ -1039,7 +1045,6 @@ static const LangTag ot_languages[] = {
41524 {"nln", HB_TAG('N','A','H',' ')}, /* Durango Nahuatl (retired code) -> Nahuatl */
41525 {"nlv", HB_TAG('N','A','H',' ')}, /* Orizaba Nahuatl -> Nahuatl */
41527 - {"nn", HB_TAG('N','O','R',' ')}, /* Norwegian Nynorsk -> Norwegian */
41528 {"nnh", HB_TAG('B','M','L',' ')}, /* Ngiemboon -> Bamileke */
41529 {"nnz", HB_TAG('B','M','L',' ')}, /* Nda'nda' -> Bamileke */
41530 {"no", HB_TAG('N','O','R',' ')}, /* Norwegian [macrolanguage] */
41531 @@ -1093,7 +1098,7 @@ static const LangTag ot_languages[] = {
41532 {"otw", HB_TAG('O','J','B',' ')}, /* Ottawa -> Ojibway */
41533 {"oua", HB_TAG('B','B','R',' ')}, /* Tagargrent -> Berber */
41535 - {"paa", HB_TAG_NONE }, /* Papuan [family] != Palestinian Aramaic */
41539 /*{"pam", HB_TAG('P','A','M',' ')},*/ /* Pampanga -> Pampangan */
41540 @@ -1308,6 +1313,9 @@ static const LangTag ot_languages[] = {
41543 {"sgw", HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage -> Chaha Gurage */
41544 + {"sh", HB_TAG('B','O','S',' ')}, /* Serbo-Croatian [macrolanguage] -> Bosnian */
41545 + {"sh", HB_TAG('H','R','V',' ')}, /* Serbo-Croatian [macrolanguage] -> Croatian */
41546 + {"sh", HB_TAG('S','R','B',' ')}, /* Serbo-Croatian [macrolanguage] -> Serbian */
41548 {"shi", HB_TAG('B','B','R',' ')}, /* Tachelhit -> Berber */
41549 {"shl", HB_TAG('Q','I','N',' ')}, /* Shendu -> Chin */
41550 @@ -1329,15 +1337,17 @@ static const LangTag ot_languages[] = {
41551 {"skw", HB_TAG('C','P','P',' ')}, /* Skepi Creole Dutch -> Creoles */
41554 - {"sla", HB_TAG_NONE }, /* Slavic [family] != Slavey */
41558 + {"smd", HB_TAG('M','B','N',' ')}, /* Sama (retired code) -> Mbundu */
41563 {"smt", HB_TAG('Q','I','N',' ')}, /* Simte -> Chin */
41565 + {"snb", HB_TAG('I','B','A',' ')}, /* Sebuyau (retired code) -> Iban */
41569 @@ -1451,7 +1461,7 @@ static const LangTag ot_languages[] = {
41570 {"tpi", HB_TAG('C','P','P',' ')}, /* Tok Pisin -> Creoles */
41572 {"trf", HB_TAG('C','P','P',' ')}, /* Trinidadian Creole English -> Creoles */
41573 - {"trk", HB_TAG_NONE }, /* Turkic [family] != Turkish */
41575 {"tru", HB_TAG('T','U','A',' ')}, /* Turoyo -> Turoyo Aramaic */
41576 {"tru", HB_TAG('S','Y','R',' ')}, /* Turoyo -> Syriac */
41578 @@ -1593,7 +1603,7 @@ static const LangTag ot_languages[] = {
41579 {"zlq", HB_TAG('Z','H','A',' ')}, /* Liuqian Zhuang -> Zhuang */
41580 {"zmi", HB_TAG('M','L','Y',' ')}, /* Negeri Sembilan Malay -> Malay */
41581 {"zmz", HB_TAG('B','A','D','0')}, /* Mbandja -> Banda */
41582 - {"znd", HB_TAG_NONE }, /* Zande [family] != Zande */
41585 {"zom", HB_TAG('Q','I','N',' ')}, /* Zou -> Chin */
41586 {"zqe", HB_TAG('Z','H','A',' ')}, /* Qiubei Zhuang -> Zhuang */
41587 @@ -2607,14 +2617,8 @@ hb_ot_tags_from_complex_language (const char *lang_str,
41588 if (0 == strcmp (&lang_str[1], "o-nyn"))
41591 - unsigned int i;
41592 - hb_tag_t possible_tags[] = {
41593 - HB_TAG('N','Y','N',' '), /* Norwegian Nynorsk (Nynorsk, Norwegian) */
41594 - HB_TAG('N','O','R',' '), /* Norwegian */
41595 - };
41596 - for (i = 0; i < 2 && i < *count; i++)
41597 - tags[i] = possible_tags[i];
41598 - *count = i;
41604 @@ -2623,8 +2627,14 @@ hb_ot_tags_from_complex_language (const char *lang_str,
41605 && subtag_matches (lang_str, limit, "-md"))
41608 - tags[0] = HB_TAG('M','O','L',' '); /* Moldavian */
41609 - *count = 1;
41615 + for (i = 0; i < 2 && i < *count; i++)
41621 @@ -2813,15 +2823,15 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41623 return hb_language_from_string ("rki", -1); /* Rakhine */
41625 - return hb_language_from_string ("ath", -1); /* Athapascan [family] */
41626 + return hb_language_from_string ("ath", -1); /* Athapascan [collection] */
41628 - return hb_language_from_string ("ber", -1); /* Berber [family] */
41629 + return hb_language_from_string ("ber", -1); /* Berber [collection] */
41631 return hb_language_from_string ("bik", -1); /* Bikol [macrolanguage] */
41633 - return hb_language_from_string ("btk", -1); /* Batak [family] */
41634 + return hb_language_from_string ("btk", -1); /* Batak [collection] */
41636 - return hb_language_from_string ("crp", -1); /* Creoles and pidgins [family] */
41637 + return hb_language_from_string ("crp", -1); /* Creoles and pidgins [collection] */
41639 return hb_language_from_string ("crx", -1); /* Carrier */
41641 @@ -2838,6 +2848,8 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41642 return hb_language_from_string ("fa", -1); /* Persian [macrolanguage] */
41644 return hb_language_from_string ("gon", -1); /* Gondi [macrolanguage] */
41646 + return hb_language_from_string ("mrj", -1); /* Western Mari */
41648 return hb_language_from_string ("hmn", -1); /* Hmong [macrolanguage] */
41650 @@ -2847,7 +2859,7 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41652 return hb_language_from_string ("iba", -1); /* Iban */
41654 - return hb_language_from_string ("ijo", -1); /* Ijo [family] */
41655 + return hb_language_from_string ("ijo", -1); /* Ijo [collection] */
41657 return hb_language_from_string ("iu", -1); /* Inuktitut [macrolanguage] */
41659 @@ -2873,11 +2885,13 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41661 return hb_language_from_string ("kpe", -1); /* Kpelle [macrolanguage] */
41663 - return hb_language_from_string ("kar", -1); /* Karen [family] */
41664 + return hb_language_from_string ("kar", -1); /* Karen [collection] */
41666 return hb_language_from_string ("uki", -1); /* Kui (India) */
41668 return hb_language_from_string ("ku", -1); /* Kurdish [macrolanguage] */
41670 + return hb_language_from_string ("mhr", -1); /* Eastern Mari */
41672 return hb_language_from_string ("luy", -1); /* Luyia [macrolanguage] */
41674 @@ -2897,9 +2911,9 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41676 return hb_language_from_string ("mnw-TH", -1); /* Mon; Thailand */
41678 - return hb_language_from_string ("myn", -1); /* Mayan [family] */
41679 + return hb_language_from_string ("myn", -1); /* Mayan [collection] */
41681 - return hb_language_from_string ("nah", -1); /* Nahuatl [family] */
41682 + return hb_language_from_string ("nah", -1); /* Nahuatl [collection] */
41684 return hb_language_from_string ("ne", -1); /* Nepali [macrolanguage] */
41686 @@ -2926,6 +2940,8 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
41687 return hb_language_from_string ("qwh", -1); /* Huaylas Ancash Quechua */
41689 return hb_language_from_string ("raj", -1); /* Rajasthani [macrolanguage] */
41691 + return hb_language_from_string ("ro", -1); /* Romanian */
41693 return hb_language_from_string ("rom", -1); /* Romany [macrolanguage] */
41695 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag.cc b/src/third_party/harfbuzz-ng/src/src…
41697 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-tag.cc
41698 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-tag.cc
41699 @@ -41,6 +41,7 @@ hb_ot_old_tag_from_script (hb_script_t script)
41707 @@ -63,6 +64,8 @@ hb_ot_old_tag_to_script (hb_tag_t tag)
41716 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-gvar-table.hh b/src/third_party/harfbuzz…
41718 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-gvar-table.hh
41719 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-var-gvar-table.hh
41720 @@ -399,7 +399,7 @@ struct gvar
41721 get_offset (glyphCount) - get_offset (0)));
41724 - /* GlyphVariationData not sanitized here; must be checked while accessing each glyph varation da…
41729 @@ -498,9 +498,9 @@ struct gvar
41733 - void init (hb_face_t *face)
41736 - void fini () { table.destroy (); }
41741 @@ -577,10 +577,11 @@ struct gvar
41745 - if (iterator.current_tuple->has_private_points () &&
41746 + bool has_private_points = iterator.current_tuple->has_private_points ();
41750 - const hb_array_t<unsigned int> &indices = private_indices.length ? private_indices : shared_indic…
41755 @@ -698,7 +699,9 @@ no_more_gaps:
41759 -struct gvar_accelerator_t : gvar::accelerator_t {};
41766 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-hvar-table.hh b/src/third_party/harfbuzz…
41768 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-var-hvar-table.hh
41769 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-var-hvar-table.hh
41770 @@ -177,9 +177,6 @@ struct hvarvvar_subset_plan_t
41772 inner_maps.resize (var_store->get_sub_table_count ());
41774 - for (unsigned int i = 0; i < inner_maps.length; i++)
41775 - inner_maps[i].init ();
41776 -
41780 @@ -229,8 +226,8 @@ struct hvarvvar_subset_plan_t
41781 for (unsigned int i = 0; i < inner_sets.length; i++)
41784 - inner_maps.fini_deep ();
41785 - index_map_plans.fini_deep ();
41791 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-ot-var.h b/src/third_party/harfbuzz-ng/src/src/…
41793 --- a/src/third_party/harfbuzz-ng/src/src/hb-ot-var.h
41794 +++ b/src/third_party/harfbuzz-ng/src/src/hb-ot-var.h
41795 @@ -109,7 +109,7 @@ typedef enum { /*< flags >*/
41797 * @name_id: The `name` table Name ID that provides display names for the axis
41798 * @flags: The #hb_ot_var_axis_flags_t flags for the axis
41799 - * @min_value: The mininum value on the variation axis that the font covers
41804 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-repacker.hh b/src/third_party/harfbuzz-ng/src/s…
41806 --- a/src/third_party/harfbuzz-ng/src/src/hb-repacker.hh
41807 +++ b/src/third_party/harfbuzz-ng/src/src/hb-repacker.hh
41808 @@ -37,31 +37,17 @@
41809 * For a detailed writeup on the overflow resolution algorithm see:
41812 -
41817 - vertex_t () :
41818 - distance (0),
41819 - space (0),
41820 - parents (),
41821 - start (0),
41822 - end (0),
41823 - priority(0) {}
41824 -
41825 - void fini () {
41826 - obj.fini ();
41827 - parents.fini ();
41828 - }
41829 -
41831 - int64_t distance;
41832 - int64_t space;
41836 - unsigned start;
41837 - unsigned end;
41838 - unsigned priority;
41845 @@ -153,7 +139,8 @@ struct graph_t
41849 - graph_t (const hb_vector_t<hb_serialize_context_t::object_t *>& objects)
41855 @@ -186,7 +173,7 @@ struct graph_t
41859 - vertices_.fini_deep ();
41864 @@ -309,7 +296,7 @@ struct graph_t
41868 - sorted_graph.fini_deep ();
41873 @@ -369,7 +356,7 @@ struct graph_t
41877 - sorted_graph.fini_deep ();
41882 @@ -871,7 +858,7 @@ struct graph_t
41884 // According to https://www3.cs.stonybrook.edu/~rezaul/papers/TR-07-54.pdf
41885 // for practical performance this is faster then using a more advanced queue
41886 - // (such as a fibonaacci queue) with a fast decrease priority.
41888 for (unsigned i = 0; i < vertices_.length; i++)
41890 if (i == vertices_.length - 1)
41891 @@ -1111,8 +1098,9 @@ struct graph_t
41895 -static bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_record_t>& overflows,
41896 - graph_t& sorted_graph)
41903 @@ -1160,9 +1148,10 @@ static bool _try_isolating_subgraphs (const hb_vector_t<graph_t::overflow_re…
41907 -static bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>& overflows,
41908 - hb_set_t& priority_bumped_parents,
41909 - graph_t& sorted_graph)
41917 @@ -1220,8 +1209,9 @@ static bool _process_overflows (const hb_vector_t<graph_t::overflow_record_t>…
41918 * For a detailed writeup describing how the algorithm operates see:
41923 -hb_resolve_overflows (const hb_vector_t<hb_serialize_context_t::object_t *>& packed,
41927 // Kahn sort is ~twice as fast as shortest distance sort and works for many fonts
41928 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-serialize.hh b/src/third_party/harfbuzz-ng/src/…
41930 --- a/src/third_party/harfbuzz-ng/src/src/hb-serialize.hh
41931 +++ b/src/third_party/harfbuzz-ng/src/src/hb-serialize.hh
41932 @@ -36,6 +36,9 @@
41933 #include "hb-map.hh"
41934 #include "hb-pool.hh"
41937 +#include "hb-subset-repacker.h"
41942 @@ -70,6 +73,24 @@ struct hb_serialize_context_t
41955 + for (unsigned i = 0 ; i < o.num_real_links; i++)
41959 + for (unsigned i = 0; i < o.num_virtual_links; i++)
41966 // Virtual links aren't considered for equality since they don't affect the functionality
41967 @@ -95,6 +116,20 @@ struct hb_serialize_context_t
41988 @@ -279,7 +314,7 @@ struct hb_serialize_context_t
41992 - /* Set share to false when an object is unlikely sharable with others
41997 @@ -381,7 +416,7 @@ struct hb_serialize_context_t
42001 - // This is useful in certain situtations where there needs to be a specific ordering in the
42004 // guidance to the repacker for better offset overflow resolution.
42006 @@ -510,7 +545,7 @@ struct hb_serialize_context_t
42007 { return reinterpret_cast<Type *> (this->head); }
42010 - { return start_embed (hb_addressof (obj)); }
42015 @@ -548,7 +583,7 @@ struct hb_serialize_context_t
42019 - { return embed (hb_addressof (obj)); }
42024 @@ -595,19 +630,19 @@ struct hb_serialize_context_t
42028 - { return extend_size (hb_addressof (obj), size); }
42032 Type *extend_min (Type *obj) { return extend_size (obj, obj->min_size); }
42034 - Type *extend_min (Type &obj) { return extend_min (hb_addressof (obj)); }
42039 { return extend_size (obj, obj->get_size (std::forward<Ts> (ds)...)); }
42042 - { return extend (hb_addressof (obj), std::forward<Ts> (ds)...); }
42047 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-set.cc b/src/third_party/harfbuzz-ng/src/src/hb…
42049 --- a/src/third_party/harfbuzz-ng/src/src/hb-set.cc
42050 +++ b/src/third_party/harfbuzz-ng/src/src/hb-set.cc
42051 @@ -256,6 +256,29 @@ hb_set_add (hb_set_t *set,
42052 set->add (codepoint);
42072 + /* Immutible-safe. */
42073 + set->add_sorted_array (sorted_codepoints,
42081 @@ -591,3 +614,28 @@ hb_set_previous_range (const hb_set_t *set,
42083 return set->previous_range (first, last);
42108 + return set->next_many (codepoint, out, size);
42110 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-set.h b/src/third_party/harfbuzz-ng/src/src/hb-…
42112 --- a/src/third_party/harfbuzz-ng/src/src/hb-set.h
42113 +++ b/src/third_party/harfbuzz-ng/src/src/hb-set.h
42114 @@ -110,6 +110,11 @@ hb_set_add_range (hb_set_t *set,
42126 @@ -180,6 +185,12 @@ hb_set_previous_range (const hb_set_t *set,
42139 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-set.hh b/src/third_party/harfbuzz-ng/src/src/hb…
42141 --- a/src/third_party/harfbuzz-ng/src/src/hb-set.hh
42142 +++ b/src/third_party/harfbuzz-ng/src/src/hb-set.hh
42143 @@ -109,6 +109,7 @@ struct hb_sparseset_t
42151 @@ -138,6 +139,8 @@ struct hb_sparseset_t
42160 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-shape.cc b/src/third_party/harfbuzz-ng/src/src/…
42162 --- a/src/third_party/harfbuzz-ng/src/src/hb-shape.cc
42163 +++ b/src/third_party/harfbuzz-ng/src/src/hb-shape.cc
42164 @@ -126,6 +126,13 @@ hb_shape_full (hb_font_t *font,
42169 + if (buffer->flags & HB_BUFFER_FLAG_VERIFY)
42172 + hb_buffer_append (text_buffer, buffer, 0, -1);
42175 hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached2 (font->face, &buffer->props,
42177 font->coords, font->num_coords,
42178 @@ -133,6 +140,17 @@ hb_shape_full (hb_font_t *font,
42184 + if (res && !buffer->verify (text_buffer,
42196 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-static.cc b/src/third_party/harfbuzz-ng/src/src…
42198 --- a/src/third_party/harfbuzz-ng/src/src/hb-static.cc
42199 +++ b/src/third_party/harfbuzz-ng/src/src/hb-static.cc
42200 @@ -33,6 +33,7 @@
42201 #include "hb-aat-layout-feat-table.hh"
42202 #include "hb-ot-layout-common.hh"
42203 #include "hb-ot-cmap-table.hh"
42204 +#include "hb-ot-glyf-table.hh"
42205 #include "hb-ot-head-table.hh"
42206 #include "hb-ot-maxp-table.hh"
42208 @@ -55,17 +56,43 @@ const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF, 0xFF};
42218 + unsigned indexToLocFormat = face->table.head->indexToLocFormat;
42223 + hb_blob_t *loca_blob = face->table.loca.get_blob ();
42224 + ret = hb_max (1u, loca_blob->length / (short_offset ? 2 : 4)) - 1;
42234 + return face->table.maxp->get_num_glyphs ();
42240 - hb_sanitize_context_t c = hb_sanitize_context_t ();
42241 - c.set_num_glyphs (0); /* So we don't recurse ad infinitum. */
42242 - hb_blob_t *maxp_blob = c.reference_table<OT::maxp> (this);
42243 - const OT::maxp *maxp_table = maxp_blob->as<OT::maxp> ();
42252 - unsigned int ret = maxp_table->get_num_glyphs ();
42254 - hb_blob_destroy (maxp_blob);
42258 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-style.cc b/src/third_party/harfbuzz-ng/src/src/…
42260 --- a/src/third_party/harfbuzz-ng/src/src/hb-style.cc
42261 +++ b/src/third_party/harfbuzz-ng/src/src/hb-style.cc
42262 @@ -46,13 +46,13 @@
42266 - return tanf (a * float (M_PI / 180.));
42267 + return tanf (a * float (-M_PI / 180.));
42273 - return atanf (r) * float (180. / M_PI);
42274 + return atanf (r) * float (-180. / M_PI);
42278 @@ -72,8 +72,7 @@ float
42282 - return _hb_angle_to_ratio (hb_style_get_value (font, HB_STYLE_TAG_SLANT_ANGLE))
42283 - + font->slant;
42286 hb_face_t *face = font->face;
42288 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-style.h b/src/third_party/harfbuzz-ng/src/src/h…
42290 --- a/src/third_party/harfbuzz-ng/src/src/hb-style.h
42291 +++ b/src/third_party/harfbuzz-ng/src/src/hb-style.h
42292 @@ -43,8 +43,10 @@ HB_BEGIN_DECLS
42294 * must be greater than -90 and less than +90. Values can be interpreted as
42295 * the angle, in counter-clockwise degrees, of oblique slant from whatever the
42296 - * designer considers to be upright for that font design.
42297 + * designer considers to be upright for that font design. Typical right-leaning
42298 + * Italic fonts have a negative slant angle (typically around -12)
42300 + * Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2)
42302 * Non-zero. Values can be interpreted as a percentage of whatever the font
42303 * designer considers “normal width” for that font design.
42304 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff-common.hh b/src/third_party/harfbuzz…
42306 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff-common.hh
42307 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-cff-common.hh
42308 @@ -275,60 +275,36 @@ struct subr_flattener_t
42312 - subr_closures_t () : valid (false), global_closure (nullptr)
42313 - { local_closures.init (); }
42314 -
42315 - void init (unsigned int fd_count)
42319 - global_closure = hb_set_create ();
42320 - if (global_closure == hb_set_get_empty ())
42321 - valid = false;
42324 -
42325 - for (unsigned int i = 0; i < local_closures.length; i++)
42326 - {
42327 - local_closures[i] = hb_set_create ();
42328 - if (local_closures[i] == hb_set_get_empty ())
42329 - valid = false;
42330 - }
42331 - }
42332 -
42333 - void fini ()
42334 - {
42335 - hb_set_destroy (global_closure);
42336 - for (unsigned int i = 0; i < local_closures.length; i++)
42337 - hb_set_destroy (local_closures[i]);
42338 - local_closures.fini ();
42343 - hb_set_clear (global_closure);
42345 for (unsigned int i = 0; i < local_closures.length; i++)
42346 - hb_set_clear (local_closures[i]);
42352 - hb_set_t *global_closure;
42353 - hb_vector_t<hb_set_t *> local_closures;
42362 - op_str_t::init ();
42369 - void fini () { op_str_t::fini (); }
42370 -
42374 @@ -416,16 +392,6 @@ struct parsed_cs_str_t : parsed_values_t<parsed_cs_op_t>
42378 - void init (unsigned int len_ = 0)
42379 - {
42380 - SUPER::init ();
42381 - if (unlikely (!resize (len_)))
42382 - return;
42383 - for (unsigned int i = 0; i < length; i++)
42384 - (*this)[i].init ();
42385 - }
42386 - void fini () { SUPER::fini_deep (); }
42387 -
42391 @@ -496,7 +462,7 @@ struct subr_subset_param_t
42395 - void create (hb_set_t *closure)
42399 * no optimization based on usage counts. fonttools doesn't appear doing that either.
42400 @@ -526,19 +492,9 @@ struct subr_remap_t : hb_inc_bimap_t
42404 - subr_remaps_t ()
42407 - global_remap.init ();
42408 - local_remaps.init ();
42409 - }
42410 -
42411 - ~subr_remaps_t () { fini (); }
42412 -
42413 - void init (unsigned int fdCount)
42414 - {
42415 - if (unlikely (!local_remaps.resize (fdCount))) return;
42416 - for (unsigned int i = 0; i < fdCount; i++)
42417 - local_remaps[i].init ();
42422 @@ -548,15 +504,9 @@ struct subr_remaps_t
42426 - global_remap.create (closures.global_closure);
42428 for (unsigned int i = 0; i < local_remaps.length; i++)
42429 - local_remaps[i].create (closures.local_closures[i]);
42430 - }
42431 -
42432 - void fini ()
42433 - {
42434 - global_remap.fini ();
42435 - local_remaps.fini_deep ();
42440 @@ -567,21 +517,8 @@ template <typename SUBSETTER, typename SUBRS, typename ACC, typename ENV, type…
42444 - : acc (acc_), plan (plan_)
42445 - {
42446 - parsed_charstrings.init ();
42447 - parsed_global_subrs.init ();
42448 - parsed_local_subrs.init ();
42449 - }
42450 -
42451 - ~subr_subsetter_t ()
42452 - {
42453 - closures.fini ();
42454 - remaps.fini ();
42455 - parsed_charstrings.fini_deep ();
42456 - parsed_global_subrs.fini_deep ();
42457 - parsed_local_subrs.fini_deep ();
42458 - }
42462 /* Subroutine subsetting with --no-desubroutinize runs in phases:
42464 @@ -599,11 +536,8 @@ struct subr_subsetter_t
42468 - closures.init (acc.fdCount);
42469 - remaps.init (acc.fdCount);
42470 -
42471 - parsed_charstrings.init (plan->num_output_glyphs ());
42472 - parsed_global_subrs.init (acc.globalSubrs->count);
42473 + parsed_charstrings.resize (plan->num_output_glyphs ());
42474 + parsed_global_subrs.resize (acc.globalSubrs->count);
42478 @@ -615,7 +549,7 @@ struct subr_subsetter_t
42480 for (unsigned int i = 0; i < acc.fdCount; i++)
42482 - parsed_local_subrs[i].init (acc.privateDicts[i].localSubrs->count);
42483 + parsed_local_subrs[i].resize (acc.privateDicts[i].localSubrs->count);
42487 @@ -638,7 +572,7 @@ struct subr_subsetter_t
42491 - closures.global_closure, closures.local_closures[fd],
42493 plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
42496 @@ -662,7 +596,7 @@ struct subr_subsetter_t
42500 - closures.global_closure, closures.local_closures[fd],
42502 plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
42505 @@ -687,7 +621,7 @@ struct subr_subsetter_t
42509 - closures.global_closure, closures.local_closures[fd],
42511 plan->flags & HB_SUBSET_FLAGS_NO_HINTING);
42514 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff1.cc b/src/third_party/harfbuzz-ng/sr…
42516 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff1.cc
42517 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-cff1.cc
42518 @@ -362,43 +362,11 @@ struct cff1_subr_subsetter_t : subr_subsetter_t<cff1_subr_subsetter_t, CFF1Su…
42522 - : info (),
42523 - orig_fdcount (0),
42524 - subset_fdcount (1),
42525 - subset_fdselect_format (0),
42526 - drop_hints (false),
42527 - desubroutinize(false)
42529 - topdict_mod.init ();
42530 - subset_fdselect_ranges.init ();
42531 - fdmap.init ();
42532 - subset_charstrings.init ();
42533 - subset_globalsubrs.init ();
42534 - subset_localsubrs.init ();
42535 - fontdicts_mod.init ();
42536 - subset_enc_code_ranges.init ();
42537 - subset_enc_supp_codes.init ();
42538 - subset_charset_ranges.init ();
42539 - sidmap.init ();
42540 for (unsigned int i = 0; i < name_dict_values_t::ValCount; i++)
42544 - ~cff_subset_plan ()
42545 - {
42546 - topdict_mod.fini ();
42547 - subset_fdselect_ranges.fini ();
42548 - fdmap.fini ();
42549 - subset_charstrings.fini_deep ();
42550 - subset_globalsubrs.fini_deep ();
42551 - subset_localsubrs.fini_deep ();
42552 - fontdicts_mod.fini ();
42553 - subset_enc_code_ranges.fini ();
42554 - subset_enc_supp_codes.fini ();
42555 - subset_charset_ranges.fini ();
42556 - sidmap.fini ();
42557 - }
42558 -
42562 @@ -672,9 +640,9 @@ struct cff_subset_plan {
42566 - unsigned int orig_fdcount;
42567 - unsigned int subset_fdcount;
42568 - unsigned int subset_fdselect_format;
42575 @@ -686,7 +654,7 @@ struct cff_subset_plan {
42579 - bool drop_hints;
42584 @@ -702,7 +670,7 @@ struct cff_subset_plan {
42588 - bool desubroutinize;
42593 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff2.cc b/src/third_party/harfbuzz-ng/sr…
42595 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-cff2.cc
42596 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-cff2.cc
42597 @@ -233,29 +233,6 @@ struct cff2_subr_subsetter_t : subr_subsetter_t<cff2_subr_subsetter_t, CFF2Sub…
42601 - cff2_subset_plan ()
42602 - : orig_fdcount (0),
42603 - subset_fdcount(1),
42604 - subset_fdselect_size (0),
42605 - subset_fdselect_format (0),
42606 - drop_hints (false),
42607 - desubroutinize (false)
42608 - {
42609 - subset_fdselect_ranges.init ();
42610 - fdmap.init ();
42611 - subset_charstrings.init ();
42612 - subset_globalsubrs.init ();
42613 - subset_localsubrs.init ();
42614 - }
42615 -
42616 - ~cff2_subset_plan ()
42617 - {
42618 - subset_fdselect_ranges.fini ();
42619 - fdmap.fini ();
42620 - subset_charstrings.fini_deep ();
42621 - subset_globalsubrs.fini_deep ();
42622 - subset_localsubrs.fini_deep ();
42623 - }
42627 @@ -320,10 +297,10 @@ struct cff2_subset_plan {
42631 - unsigned int orig_fdcount;
42632 - unsigned int subset_fdcount;
42633 - unsigned int subset_fdselect_size;
42634 - unsigned int subset_fdselect_format;
42642 @@ -332,8 +309,8 @@ struct cff2_subset_plan {
42646 - bool drop_hints;
42647 - bool desubroutinize;
42653 @@ -473,12 +450,8 @@ _hb_subset_cff2 (const OT::cff2::accelerator_subset_t &acc,
42657 - OT::cff2::accelerator_subset_t acc;
42658 - acc.init (c->plan->source);
42659 - bool result = likely (acc.is_valid ()) && _hb_subset_cff2 (acc, c);
42660 - acc.fini ();
42661 -
42662 - return result;
42663 + OT::cff2::accelerator_subset_t acc (c->plan->source);
42668 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.cc b/src/third_party/harfbuzz-ng/sr…
42670 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.cc
42671 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.cc
42672 @@ -40,6 +40,8 @@
42673 #include "hb-ot-stat-table.hh"
42674 #include "hb-ot-math-table.hh"
42681 @@ -111,7 +113,7 @@ static void _collect_layout_indices (hb_face_t *face,
42685 -
42690 @@ -228,10 +230,8 @@ _cmap_closure (hb_face_t *face,
42694 - OT::cmap::accelerator_t cmap;
42695 - cmap.init (face);
42697 cmap.table->closure_glyphs (unicodes, glyphset);
42698 - cmap.fini ();
42702 @@ -239,8 +239,7 @@ static void _colr_closure (hb_face_t *face,
42706 - OT::COLR::accelerator_t colr;
42707 - colr.init (face);
42712 @@ -252,9 +251,9 @@ static void _colr_closure (hb_face_t *face,
42714 for (hb_codepoint_t gid : glyphs_colred->iter ())
42716 -
42718 glyphs_colred->union_ (glyphset_colrv0);
42719 -
42721 //closure for COLRv1
42724 @@ -263,7 +262,6 @@ static void _colr_closure (hb_face_t *face,
42728 - colr.fini ();
42732 @@ -294,8 +292,7 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
42736 - OT::cmap::accelerator_t cmap;
42737 - cmap.init (plan->source);
42738 + OT::cmap::accelerator_t cmap (plan->source);
42742 @@ -343,8 +340,6 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
42744 + plan->codepoint_to_glyph->keys () | hb_sink (plan->unicodes);
42745 + plan->codepoint_to_glyph->values () | hb_sink (plan->_glyphset_gsub);
42746 -
42747 - cmap.fini ();
42751 @@ -353,13 +348,9 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
42755 - OT::glyf::accelerator_t glyf;
42756 -#ifndef HB_NO_SUBSET_CFF
42757 - OT::cff1::accelerator_t cff;
42758 -#endif
42759 - glyf.init (plan->source);
42760 + OT::glyf::accelerator_t glyf (plan->source);
42762 - cff.init (plan->source);
42763 + OT::cff1::accelerator_t cff (plan->source);
42766 plan->_glyphset_gsub->add (0); // Not-def
42767 @@ -369,7 +360,7 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
42770 // closure all glyphs/lookups/features needed for GSUB substitutions.
42771 - _closure_glyphs_lookups_features<OT::GSUB> (
42773 plan->source,
42774 plan->_glyphset_gsub,
42775 plan->layout_features,
42776 @@ -419,11 +410,6 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
42777 plan->layout_variation_indices,
42778 plan->layout_variation_idx_map);
42780 -
42781 -#ifndef HB_NO_SUBSET_CFF
42782 - cff.fini ();
42783 -#endif
42784 - glyf.fini ();
42788 @@ -474,7 +460,7 @@ _nameid_closure (hb_face_t *face,
42792 - * hb_subset_plan_create:
42794 * @face: font face to create the plan for.
42797 @@ -483,17 +469,18 @@ _nameid_closure (hb_face_t *face,
42801 - * hb_subset_plan_destroy().
42805 - * Since: 1.7.5
42809 -hb_subset_plan_create (hb_face_t *face,
42810 - const hb_subset_input_t *input)
42816 - return const_cast<hb_subset_plan_t *> (&Null (hb_subset_plan_t));
42819 plan->successful = true;
42820 plan->flags = input->flags;
42821 @@ -530,8 +517,9 @@ hb_subset_plan_create (hb_face_t *face,
42822 plan->layout_variation_indices = hb_set_create ();
42823 plan->layout_variation_idx_map = hb_map_create ();
42825 - if (plan->in_error ()) {
42826 - return plan;
42827 + if (unlikely (plan->in_error ())) {
42832 _populate_unicodes_to_retain (input->sets.unicodes, input->sets.glyphs, plan);
42833 @@ -548,6 +536,10 @@ hb_subset_plan_create (hb_face_t *face,
42834 plan->reverse_glyph_map,
42835 &plan->_num_output_glyphs);
42837 + if (unlikely (plan->in_error ())) {
42844 @@ -558,7 +550,7 @@ hb_subset_plan_create (hb_face_t *face,
42848 - * Since: 1.7.5
42853 @@ -612,3 +604,116 @@ hb_subset_plan_destroy (hb_subset_plan_t *plan)
42873 + return plan->glyph_map;
42891 + return plan->reverse_glyph_map;
42909 + return plan->codepoint_to_glyph;
42931 + * @key: The user-data key to set
42936 + * Attaches a user-data key/data pair to the given subset plan object.
42955 + * @key: The user-data key to query
42970 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.hh b/src/third_party/harfbuzz-ng/sr…
42972 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.hh
42973 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-plan.hh
42974 @@ -198,13 +198,4 @@ struct hb_subset_plan_t
42978 -typedef struct hb_subset_plan_t hb_subset_plan_t;
42979 -
42980 -HB_INTERNAL hb_subset_plan_t *
42981 -hb_subset_plan_create (hb_face_t *face,
42982 - const hb_subset_input_t *input);
42983 -
42984 -HB_INTERNAL void
42985 -hb_subset_plan_destroy (hb_subset_plan_t *plan);
42986 -
42988 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.cc b/src/third_party/harfbuzz-n…
42991 --- /dev/null
42992 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.cc
42993 @@ -0,0 +1,49 @@
43001 + * software and its documentation for any purpose, provided that the
43005 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
43013 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
43014 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
43018 +#include "hb-repacker.hh"
43037 + for (unsigned i = 0 ; i < num_hb_objs ; i++)
43043 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.h b/src/third_party/harfbuzz-ng…
43046 --- /dev/null
43047 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset-repacker.h
43048 @@ -0,0 +1,80 @@
43056 + * software and its documentation for any purpose, provided that the
43060 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
43068 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
43069 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
43129 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset.cc b/src/third_party/harfbuzz-ng/src/src…
43131 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset.cc
43132 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset.cc
43133 @@ -55,6 +55,8 @@
43134 #include "hb-ot-math-table.hh"
43135 #include "hb-repacker.hh"
43140 * SECTION:hb-subset
43141 * @title: hb-subset
43142 @@ -312,7 +314,7 @@ _subset_table (hb_subset_plan_t *plan, hb_tag_t tag)
43146 - case HB_OT_TAG_GSUB: return _subset<const OT::GSUB> (plan);
43151 @@ -343,9 +345,33 @@ hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
43155 - hb_subset_plan_t *plan = hb_subset_plan_create (source, input);
43156 - if (unlikely (plan->in_error ())) {
43157 - hb_subset_plan_destroy (plan);
43184 + if (unlikely (!plan || plan->in_error ())) {
43188 @@ -353,7 +379,7 @@ hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
43192 - while ((hb_face_get_table_tags (source, offset, &num_tables, table_tags), num_tables))
43193 + while ((hb_face_get_table_tags (plan->source, offset, &num_tables, table_tags), num_tables))
43195 for (unsigned i = 0; i < num_tables; ++i)
43197 @@ -367,8 +393,5 @@ hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input)
43201 - hb_face_t *result = success ? hb_face_reference (plan->dest) : nullptr;
43202 -
43203 - hb_subset_plan_destroy (plan);
43204 - return result;
43205 + return success ? hb_face_reference (plan->dest) : nullptr;
43207 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-subset.h b/src/third_party/harfbuzz-ng/src/src/…
43209 --- a/src/third_party/harfbuzz-ng/src/src/hb-subset.h
43210 +++ b/src/third_party/harfbuzz-ng/src/src/hb-subset.h
43211 @@ -39,6 +39,15 @@ HB_BEGIN_DECLS
43227 @@ -124,7 +133,7 @@ hb_subset_input_set_user_data (hb_subset_input_t *input,
43231 - hb_user_data_key_t *key);
43236 @@ -145,6 +154,41 @@ hb_subset_input_set_flags (hb_subset_input_t *input,
43278 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-uniscribe.cc b/src/third_party/harfbuzz-ng/src/…
43280 --- a/src/third_party/harfbuzz-ng/src/src/hb-uniscribe.cc
43281 +++ b/src/third_party/harfbuzz-ng/src/src/hb-uniscribe.cc
43282 @@ -878,7 +878,8 @@ retry:
43286 - buffer->clear_glyph_flags (HB_GLYPH_FLAG_UNSAFE_TO_BREAK);
43287 + buffer->clear_glyph_flags ();
43288 + buffer->unsafe_to_break ();
43292 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-vector.hh b/src/third_party/harfbuzz-ng/src/src…
43294 --- a/src/third_party/harfbuzz-ng/src/src/hb-vector.hh
43295 +++ b/src/third_party/harfbuzz-ng/src/src/hb-vector.hh
43296 @@ -32,11 +32,14 @@
43297 #include "hb-null.hh"
43300 -template <typename Type>
43301 -struct hb_vector_t
43313 @@ -82,16 +85,10 @@ struct hb_vector_t
43321 - void fini_deep ()
43322 - {
43323 - unsigned int count = length;
43324 - for (unsigned int i = 0; i < count; i++)
43325 - arrayZ[i].fini ();
43326 - fini ();
43327 - }
43331 @@ -152,24 +149,24 @@ struct hb_vector_t
43335 - hb_array_t< Type> as_array () { return hb_array (arrayZ, length); }
43336 - hb_array_t<const Type> as_array () const { return hb_array (arrayZ, length); }
43341 - typedef hb_array_t<const Type> iter_t;
43342 - typedef hb_array_t< Type> writer_t;
43350 - hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int count) const
43353 - hb_array_t<const Type> sub_array (unsigned int start_offset, unsigned int *count = nullptr /* IN…
43356 - hb_array_t<Type> sub_array (unsigned int start_offset, unsigned int count)
43359 - hb_array_t<Type> sub_array (unsigned int start_offset, unsigned int *count = nullptr /* IN/OUT *…
43364 @@ -192,6 +189,7 @@ struct hb_vector_t
43372 @@ -204,6 +202,92 @@ struct hb_vector_t
43391 + for (unsigned i = 0; i < length; i++)
43393 + for (unsigned i = 0; i < (unsigned) length; i++)
43409 + memset (arrayZ + length, 0, (size - length) * sizeof (*arrayZ));
43421 + new (std::addressof (arrayZ[length - 1])) Type ();
43439 + arrayZ[(unsigned) length - 1].~Type ();
43440 + length--;
43449 + memmove (static_cast<void *> (&arrayZ[i - 1]),
43451 + (length - i) * sizeof (Type));
43458 + for (; i < length; i++)
43459 + arrayZ[i - 1] = std::move (arrayZ[i]);
43462 /* Allocate for size but don't adjust length. */
43465 @@ -225,7 +309,7 @@ struct hb_vector_t
43469 - new_array = (Type *) hb_realloc (arrayZ, new_allocated * sizeof (Type));
43474 @@ -246,7 +330,9 @@ struct hb_vector_t
43478 - memset (arrayZ + length, 0, (size - length) * sizeof (*arrayZ));
43485 @@ -255,48 +341,38 @@ struct hb_vector_t
43489 - return std::move (arrayZ[--length]); /* Does this move actually work? */
43490 + Type v = std::move (arrayZ[length - 1]);
43491 + arrayZ[length - 1].~Type ();
43492 + length--;
43500 - memmove (static_cast<void *> (&arrayZ[i]),
43501 - static_cast<void *> (&arrayZ[i + 1]),
43502 - (length - i - 1) * sizeof (Type));
43505 length--;
43511 - if (size < length)
43512 - length = size;
43513 - }
43517 - template <typename T>
43518 - Type *find (T v)
43519 - {
43520 - for (unsigned int i = 0; i < length; i++)
43521 - if (arrayZ[i] == v)
43522 - return &arrayZ[i];
43523 - return nullptr;
43524 - }
43525 - template <typename T>
43526 - const Type *find (T v) const
43527 - {
43528 - for (unsigned int i = 0; i < length; i++)
43529 - if (arrayZ[i] == v)
43530 - return &arrayZ[i];
43531 - return nullptr;
43539 void qsort (unsigned int start = 0, unsigned int end = (unsigned int) -1)
43546 @@ -306,47 +382,25 @@ struct hb_vector_t
43550 -};
43552 -template <typename Type>
43553 -struct hb_sorted_vector_t : hb_vector_t<Type>
43554 -{
43555 - hb_sorted_vector_t () = default;
43556 - ~hb_sorted_vector_t () = default;
43557 - hb_sorted_vector_t (hb_sorted_vector_t& o) = default;
43558 - hb_sorted_vector_t (hb_sorted_vector_t &&o) = default;
43559 - hb_sorted_vector_t (std::initializer_list<Type> lst) : hb_vector_t<Type> (lst) {}
43560 - template <typename Iterable,
43561 - hb_requires (hb_is_iterable (Iterable))>
43562 - hb_sorted_vector_t (const Iterable &o) : hb_vector_t<Type> (o) {}
43563 - hb_sorted_vector_t& operator = (const hb_sorted_vector_t &o) = default;
43564 - hb_sorted_vector_t& operator = (hb_sorted_vector_t &&o) = default;
43565 - friend void swap (hb_sorted_vector_t& a, hb_sorted_vector_t& b)
43566 - { hb_swap ((hb_vector_t<Type>&) (a), (hb_vector_t<Type>&) (b)); }
43567 -
43568 - hb_sorted_array_t< Type> as_array () { return hb_sorted_array (this->arrayZ, this->le…
43569 - hb_sorted_array_t<const Type> as_array () const { return hb_sorted_array (this->arrayZ, this->le…
43570 -
43571 - /* Iterator. */
43572 - typedef hb_sorted_array_t<const Type> const_iter_t;
43573 - typedef hb_sorted_array_t< Type> iter_t;
43574 - const_iter_t iter () const { return as_array (); }
43575 - const_iter_t citer () const { return as_array (); }
43576 - iter_t iter () { return as_array (); }
43577 - operator iter_t () { return iter (); }
43578 - operator const_iter_t () const { return iter (); }
43579 -
43580 - template <typename T>
43586 - template <typename T>
43591 - template <typename T>
43596 unsigned int to_store = (unsigned int) -1) const
43604 diff --git a/src/third_party/harfbuzz-ng/src/src/hb-version.h b/src/third_party/harfbuzz-ng/src/src…
43606 --- a/src/third_party/harfbuzz-ng/src/src/hb-version.h
43607 +++ b/src/third_party/harfbuzz-ng/src/src/hb-version.h
43608 @@ -41,13 +41,13 @@ HB_BEGIN_DECLS
43610 * The major component of the library version available at compile-time.
43612 -#define HB_VERSION_MAJOR 3
43617 * The minor component of the library version available at compile-time.
43619 -#define HB_VERSION_MINOR 2
43624 @@ -60,7 +60,7 @@ HB_BEGIN_DECLS
43626 * A string literal containing the library version available at compile-time.
43628 -#define HB_VERSION_STRING "3.2.0"
43633 diff --git a/src/third_party/harfbuzz-ng/src/src/hb.hh b/src/third_party/harfbuzz-ng/src/src/hb.hh
43635 --- a/src/third_party/harfbuzz-ng/src/src/hb.hh
43636 +++ b/src/third_party/harfbuzz-ng/src/src/hb.hh
43637 @@ -447,6 +447,7 @@ static int HB_UNUSED _hb_errno = 0;
43645 @@ -457,6 +458,7 @@ static int HB_UNUSED _hb_errno = 0;
43653 diff --git a/src/third_party/harfbuzz-ng/src/src/main.cc b/src/third_party/harfbuzz-ng/src/src/main…
43655 --- a/src/third_party/harfbuzz-ng/src/src/main.cc
43656 +++ b/src/third_party/harfbuzz-ng/src/src/main.cc
43657 @@ -42,7 +42,7 @@
43661 -#if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API)
43666 @@ -129,48 +129,60 @@ png_dump (hb_face_t *face, unsigned face_index)
43670 -struct user_data_t
43678 -move_to (hb_position_t to_x, hb_position_t to_y, user_data_t &user_data)
43684 - fprintf (user_data.f, "M%d,%d", to_x, user_data.ascender - to_y);
43685 + fprintf (draw_data->f, "M%g,%g", to_x, draw_data->ascender - to_y);
43689 -line_to (hb_position_t to_x, hb_position_t to_y, user_data_t &user_data)
43695 - fprintf (user_data.f, "L%d,%d", to_x, user_data.ascender - to_y);
43696 + fprintf (draw_data->f, "L%g,%g", to_x, draw_data->ascender - to_y);
43700 -quadratic_to (hb_position_t control_x, hb_position_t control_y,
43701 - hb_position_t to_x, hb_position_t to_y,
43702 - user_data_t &user_data)
43709 - fprintf (user_data.f, "Q%d,%d %d,%d", control_x, user_data.ascender - control_y,
43710 - to_x, user_data.ascender - to_y);
43711 + fprintf (draw_data->f, "Q%g,%g %g,%g", control_x, draw_data->ascender - control_y,
43712 + to_x, draw_data->ascender - to_y);
43716 -cubic_to (hb_position_t control1_x, hb_position_t control1_y,
43717 - hb_position_t control2_x, hb_position_t control2_y,
43718 - hb_position_t to_x, hb_position_t to_y,
43719 - user_data_t &user_data)
43727 - fprintf (user_data.f, "C%d,%d %d,%d %d,%d", control1_x, user_data.ascender - control1_y,
43728 - control2_x, user_data.ascender - control2_y,
43729 - to_x, user_data.ascender - to_y);
43730 + fprintf (draw_data->f, "C%g,%g %g,%g %g,%g", control1_x, draw_data->ascender - control1_y,
43731 + control2_x, draw_data->ascender - control2_y,
43732 + to_x, draw_data->ascender - to_y);
43736 -close_path (user_data_t &user_data)
43741 - fprintf (user_data.f, "Z");
43742 + fprintf (draw_data->f, "Z");
43746 @@ -218,9 +230,9 @@ layered_glyph_dump (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index
43749 extents.x_bearing + extents.width, -extents.height);
43750 - user_data_t user_data;
43751 - user_data.ascender = extents.y_bearing;
43752 - user_data.f = f;
43757 for (unsigned layer = 0; layer < num_layers; ++layer)
43759 @@ -232,8 +244,7 @@ layered_glyph_dump (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index
43761 fprintf (f, "fill-opacity=\"%.3f\"", (double) hb_color_get_alpha (color) / 255.);
43763 - if (!hb_font_draw_glyph (font, layers[layer].glyph, funcs, &user_data))
43764 - printf ("Failed to decompose layer %d while %d\n", layers[layer].glyph, gid);
43769 @@ -269,11 +280,10 @@ dump_glyphs (hb_font_t *font, hb_draw_funcs_t *funcs, unsigned face_index)
43772 extents.x_bearing + extents.width, font_extents.ascender - font_extents.descender);
43773 - user_data_t user_data;
43774 - user_data.ascender = font_extents.ascender;
43775 - user_data.f = f;
43776 - if (!hb_font_draw_glyph (font, gid, funcs, &user_data))
43777 - printf ("Failed to decompose gid: %d\n", gid);
43785 @@ -300,11 +310,11 @@ dump_glyphs (hb_blob_t *blob, const char *font_name)
43789 - hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) move_to);
43790 - hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) line_to);
43791 - hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) quadratic_to);
43792 - hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) cubic_to);
43793 - hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) close_path);
43801 for (unsigned face_index = 0; face_index < num_faces; ++face_index)
43802 @@ -512,7 +522,7 @@ main (int argc, char **argv)
43806 -#if !defined(HB_NO_COLOR) && !defined(HB_NO_DRAW) && defined(HB_EXPERIMENTAL_API)
43811 diff --git a/src/third_party/harfbuzz-ng/src/src/meson.build b/src/third_party/harfbuzz-ng/src/src/…
43813 --- a/src/third_party/harfbuzz-ng/src/src/meson.build
43814 +++ b/src/third_party/harfbuzz-ng/src/src/meson.build
43815 @@ -29,6 +29,7 @@ hb_base_sources = files(
43816 'hb-blob.cc',
43817 'hb-blob.hh',
43818 'hb-buffer-serialize.cc',
43819 + 'hb-buffer-verify.cc',
43820 'hb-buffer.cc',
43821 'hb-buffer.hh',
43822 'hb-cache.hh',
43823 @@ -54,7 +55,6 @@ hb_base_sources = files(
43824 'hb-map.cc',
43825 'hb-map.hh',
43826 'hb-meta.hh',
43827 - 'hb-ms-feature-ranges.cc',
43828 'hb-ms-feature-ranges.hh',
43829 'hb-mutex.hh',
43830 'hb-null.hh',
43831 @@ -92,6 +92,28 @@ hb_base_sources = files(
43832 'hb-ot-layout-gdef-table.hh',
43833 'hb-ot-layout-gpos-table.hh',
43834 'hb-ot-layout-gsub-table.hh',
43857 'hb-ot-layout-gsubgpos.hh',
43858 'hb-ot-layout-jstf-table.hh',
43859 'hb-ot-layout.cc',
43860 @@ -276,11 +298,15 @@ hb_subset_sources = files(
43861 'hb-subset-input.hh',
43862 'hb-subset-plan.cc',
43863 'hb-subset-plan.hh',
43864 + 'hb-subset-repacker.cc',
43865 'hb-subset.cc',
43866 'hb-subset.hh',
43869 -hb_subset_headers = files('hb-subset.h')
43871 + 'hb-subset.h',
43872 + 'hb-subset-repacker.h'
43876 'hb-gobject-structs.cc'
43877 @@ -486,13 +512,15 @@ if get_option('tests').enabled()
43879 'test-algs': ['test-algs.cc', 'hb-static.cc'],
43880 'test-array': ['test-array.cc'],
43881 - 'test-repacker': ['test-repacker.cc', 'hb-static.cc'],
43882 - 'test-priority-queue': ['test-priority-queue.cc', 'hb-static.cc'],
43883 'test-iter': ['test-iter.cc', 'hb-static.cc'],
43884 + 'test-machinery': ['test-machinery.cc', 'hb-static.cc'],
43885 'test-map': ['test-map.cc', 'hb-static.cc'],
43886 'test-number': ['test-number.cc', 'hb-number.cc'],
43887 'test-ot-tag': ['hb-ot-tag.cc'],
43888 + 'test-priority-queue': ['test-priority-queue.cc', 'hb-static.cc'],
43889 + 'test-repacker': ['test-repacker.cc', 'hb-static.cc'],
43890 'test-set': ['test-set.cc', 'hb-static.cc'],
43891 + 'test-serialize': ['test-serialize.cc', 'hb-static.cc'],
43892 'test-unicode-ranges': ['test-unicode-ranges.cc'],
43893 'test-vector': ['test-vector.cc', 'hb-static.cc'],
43894 'test-bimap': ['test-bimap.cc', 'hb-static.cc'],
43895 diff --git a/src/third_party/harfbuzz-ng/src/src/test-machinery.cc b/src/third_party/harfbuzz-ng/sr…
43898 --- /dev/null
43899 +++ b/src/third_party/harfbuzz-ng/src/src/test-machinery.cc
43900 @@ -0,0 +1,46 @@
43908 + * software and its documentation for any purpose, provided that the
43912 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
43920 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
43921 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
43926 +#include "hb-machinery.hh"
43947 diff --git a/src/third_party/harfbuzz-ng/src/src/test-map.cc b/src/third_party/harfbuzz-ng/src/src/…
43949 --- a/src/third_party/harfbuzz-ng/src/src/test-map.cc
43950 +++ b/src/third_party/harfbuzz-ng/src/src/test-map.cc
43951 @@ -25,7 +25,9 @@
43954 #include "hb-map.hh"
43961 @@ -76,6 +78,14 @@ main (int argc, char **argv)
43968 + for (int i = 0; i < 16; i++)
43976 @@ -108,5 +118,22 @@ main (int argc, char **argv)
43987 + for (unsigned i = 1; i < 1000; i++)
43999 diff --git a/src/third_party/harfbuzz-ng/src/src/test-serialize.cc b/src/third_party/harfbuzz-ng/sr…
44002 --- /dev/null
44003 +++ b/src/third_party/harfbuzz-ng/src/src/test-serialize.cc
44004 @@ -0,0 +1,51 @@
44012 + * software and its documentation for any purpose, provided that the
44016 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
44024 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
44025 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
44031 +#include "hb-serialize.hh"
44032 +#include "hb-ot-layout-common.hh"
44046 + c->serialize (&s, hb_iter (v));
44056 diff --git a/src/third_party/harfbuzz-ng/src/src/test-vector.cc b/src/third_party/harfbuzz-ng/src/s…
44058 --- a/src/third_party/harfbuzz-ng/src/src/test-vector.cc
44059 +++ b/src/third_party/harfbuzz-ng/src/src/test-vector.cc
44060 @@ -26,6 +26,7 @@
44062 #include "hb-vector.hh"
44063 #include "hb-set.hh"
44068 @@ -136,5 +137,18 @@ main (int argc, char **argv)
44077 + for (unsigned i = 1; i < 100; i++)
44087 diff --git a/src/third_party/harfbuzz-ng/src/subprojects/cairo.wrap b/src/third_party/harfbuzz-ng/s…
44089 --- a/src/third_party/harfbuzz-ng/src/subprojects/cairo.wrap
44090 +++ b/src/third_party/harfbuzz-ng/src/subprojects/cairo.wrap
44091 @@ -2,4 +2,7 @@
44095 -revision=1.17.4
44099 +dependency_names = cairo, cairo-ft
44100 diff --git a/src/third_party/harfbuzz-ng/src/subprojects/freetype2.wrap b/src/third_party/harfbuzz-…
44102 --- a/src/third_party/harfbuzz-ng/src/subprojects/freetype2.wrap
44103 +++ b/src/third_party/harfbuzz-ng/src/subprojects/freetype2.wrap
44104 @@ -2,3 +2,7 @@
44107 revision=VER-2-11-0
44112 diff --git a/src/third_party/harfbuzz-ng/src/subprojects/glib.wrap b/src/third_party/harfbuzz-ng/sr…
44114 --- a/src/third_party/harfbuzz-ng/src/subprojects/glib.wrap
44115 +++ b/src/third_party/harfbuzz-ng/src/subprojects/glib.wrap
44116 @@ -4,3 +4,7 @@ url=https://gitlab.gnome.org/GNOME/glib.git
44118 push-url=git@gitlab.gnome.org:GNOME/glib.git
44122 +glib-2.0 = libglib_dep
44123 +gobject-2.0 = libgobject_dep
44124 diff --git a/src/third_party/harfbuzz-ng/src/test/api/Makefile.am b/src/third_party/harfbuzz-ng/src…
44126 --- a/src/third_party/harfbuzz-ng/src/test/api/Makefile.am
44127 +++ b/src/third_party/harfbuzz-ng/src/test/api/Makefile.am
44128 @@ -30,6 +30,8 @@ noinst_PROGRAMS = $(TEST_PROGS)
44130 test-aat-layout \
44131 test-baseline \
44132 + test-be-glyph-advance \
44133 + test-be-num-glyphs \
44134 test-blob \
44135 test-buffer \
44136 test-c \
44137 @@ -76,11 +78,15 @@ TEST_PROGS = \
44138 test-subset-gpos \
44139 test-subset-colr \
44140 test-subset-cbdt \
44141 + test-subset-repacker \
44142 test-unicode \
44143 test-var-coords \
44144 test-version \
44150 test_subset_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44151 test_subset_cmap_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44152 test_subset_drop_tables_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44153 @@ -100,6 +106,7 @@ test_subset_cbdt_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44154 test_subset_nameids_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44155 test_subset_gpos_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44156 test_subset_colr_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44157 +test_subset_repacker_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
44161 @@ -123,6 +130,9 @@ endif
44169 test-ot-math \
44171 diff --git a/src/third_party/harfbuzz-ng/src/test/api/fonts/base2.ttf b/src/third_party/harfbuzz-ng…
44176 zc$}?Q+ix7z8UJQ>c72U6vDb03PB@$KC3t5yjuShEm|$jhy>U#)+D>3LKr-v~EyZ?B
44178 z)E#-x@B6;rIp6J^Gi%a_s2N`dHD%M8QEDWeNE?B+HJdv=MNz7Sd;oHNcIu@4hmSr6
44179 zSvvuF*YT;n{m=h>-X_woK=z7Dg%zr=`3LNOg?ylRaaBa#Y5EiFX~_26%KXyXgIhl$
44180 ziabNq5S=evSb@F?{7#J3^NW|~dUm}2E>Y+$$e%9E7G_$WyIjQlddPzdP(-c~{Auq&
44181 z?p#<}y%c_t5Q}E<{Ka#{0=)o4S_i%&ONC1-+Rqz5guDt_EEkq$yCx4`M6!ri`}4}V
44182 z3#+$&LH)o#WBbba*_AUl{_;!sLk?8tmDG9~X}4}sqwdn_P|vN;h-+4>9#XiTf{(WG
44184 z7l^`t{QSs&>%*U@6*qtM${(-Ps@CMuAVJ(|gXNm5$Vq*Fwpf`T#ASc{)3Sc1arj?U
44185 z72-P3CojGGYaajhn^)ib{K(D4@F$_GTwmqk{+|gvS;~gq(3kaPiiWNRBee&QuG1p_
44186 zaa8&Z?G03e^b+b!G#-rFY3kQ_ht-93BW&opac8dC<HxhwNX^xnt3gddSG6}Qxscut
44188 zo&7$I;9=<oS2yi<YF8#)Ida8ic_!`eVflJB1qw>%V}1{-epme>X~xKv;)!(wf3EG+
44189 zn+?68_qulLWof+T>y%y#&qOHACq~C!qtHI&&_#W8a-=rZyF1q2TvcU^jm!3&JF=Y<
44190 zMR%7-*ISQ;wNS|L$S}4VPsCu;gLA0}n{D}#n&#&1ZJqlgRUHYfH4-s*clR7@Yun#H
44193 zY)|bY&sw!Z6MfCy+yA-kh-zdNo#LHp)BvB>c2uxNyXoH*tm6!QTEQVo(>oPx;GC>h
44194 zaF|9ZRlyM;q9^DatmkNo3bafYaDU8VoQJeXXDLaOkmqsE7oj;%PeM8m)>+J0#?I--
44197 z!<Cn02}vj2OkM~azlMo%8JRle$^$XEC-2RP(n(k9U4`H<7R~8cJT56O$uZMq^xg67
44198 zq|_`ayt$;*Ei-P$lQLw9nYB=Blx#<~IKuO6UvG76zboWO-8ped$a)jNDa=SCcd4xF
44202 zX*!>uDd4J0<nxsb@?r-0n07uX!<Ik<MppqjRXI6VR++Y}Hf?kOQ@o^%sB)tcV#cqU
44203 zwgnqG-B=Jle@orV6lJ(K4x=MVq6A-lU$_eunsB{btT35(&3rsB<j9l@Ta4>c2_-43
44204 zELr0u$~e-h>eUcU+r)M;?Sj;&=cHCdAhN1ADQhgj(KaA0gQf+qAV<7BQ@pf_w$>`w
44206 zi(+4-ws}&6r4m}(Qcs}_yu{3Sz89Og(eiaYBWDWfq-?T46+$*TM|lANbVxR_GzqCm
44209 z0y|H^NoGwRnPd@v7TVjJb&nSML@g%j<w!bQ)-+9ZD{7HXdgg>Hx0<%d$Ode`EjZX7
44212 zfibzs*u7yq9~gy2vN3V5ggMu1L9U$W=KSKwPav+{$d5-8`SI9^{CMm_emr&~KOTFK
44214 z&BBn$H~f7WG0wh!z1Mz2B*R-z?(6l#S~TP0cH}JgZz|8dI0q~-pduf@Y5^znWuG{|
44216 z$nxEQ(vFo%Su=~v#KjvB*Dqd8Lz)(CMTH;6CDtalfo9-d?NT(qo@`m?BxXw~Q;6Xb
44218 z$#A?GQ-<+&h1qZlF<_6cygTO<5E@<t<|uk>!ow)Px@sNe1?%0#i5Xn35gcMPBa96f
44221 zT*Xnj&2e)vyj;a_KIQjmtvI)j-DaJP<!-aucb$8`8IC0%PTbF7+LDJ7CB(*i3`yOS
44222 ziiW0SA7*4!%Dg|jgUT21OU({a=M8G&_@r?1g7rr&zZNf@^(kL-OK1OIyO?w0du-Um
44223 zRkdlq#PgLnv$%jCPOMku2&6-axLK)7C7X>BjG+Y4;Mn752~K!RN)F<bAH9cu9Ls5~
44225 z7@TAdgD088;3;bjccBC10%;26tu-ysodODUPcu(r^bGS9dX{+#oo1dwXV_;3z+;~b
44227 zWfd2rbExs~Mgv!rBu4<B58z{f=eg)gvLRi-ySBnv4Ipz~P#mqoxroV+Y^?fCC8-&g
44228 z0?0Ei2axIC!a5bgw*$z8?*xzu-v#&Z#(LjVlA?b<fJ}cefK2}ZW>yG43?LI;3Lq1H
44229 z1n#37>%FWbMgMUCnf{XiGW`l>RtT>IkO`##GT~LLT&I5G%1Eqi=%Eb$d%`uCw-d5@
44235 diff --git a/src/third_party/harfbuzz-ng/src/test/api/fonts/notosansitalic.ttf b/src/third_party/ha…
44240 zc$|GyUu;@c82{aKFVM2Wu)@|ctQ1->k*>EFxKR3M16r<ZQ?{`-wboij8PwfEL#tWi
44244 zj@$T|@HTCa-l|rxg*OQQLfg4gxw?uBqx{&R9c)%sYJOjw;z<`N#--KP+PZNI3gI5E
44245 z2VWWTze5$yVu7V0vpfRAUC7{lOZXl=!XSJmd%Qa669I#&G(O_-p0LP68hp4#W!>Mc
44246 z@7A67#BKa|z(OJ$hKR-7#3VYs2R6^k=vSb8g2|kePk}U9IC~Mj)s40ef4yD10>55a
44248 z^K<K)S03!vAHL<hCykMv-OOO-Wqra2u#xloY}UAsGyKG9VF8MeBk3U<lWbBaldK&3
44252 zuEw%Ob$;ZTVc*c$@U%Xvs=Qjt+0Ay)gD7ANMWSIx`02RA%^Y!6rQ|-Zn?;ogmP}YF
44253 z1(%xl*!psJW+RTLx&*0zI-NV;Ke;&hTyE&tbl+4atT<Bx7ue3{q3rW4mYts~USA$B
44254 z#%J`j&a=v6)Gc)?{6L)s4)p1WP+xXCC5bC)%4fI#`EoN_Y@7-g0>`|m;K+=8G8I1g
44257 z-1iI~@O*4J3JoRtG(!KM?VtF+@$<x1u|f4LqmBk?c|9_QktC#%wncKCD(00mDaHvx
44258 YS(4~<UfB0qGg*yJ-rJk>yF`}w8&omq3IG5A
44263 diff --git a/src/third_party/harfbuzz-ng/src/test/api/fonts/repacker_expected.otf b/src/third_party…
44269 zZp-KtQHDd%`o{!>DB$9jK!8k~Gny?vvn=?R{AK2XUf8##o_pKOWqvp3oZs(v&UerG
44271 ziwm?+hnz*8V-qZuU**lIkmn*d+E7SbQN4+H3GES^-PgeFV9F3rqN(kc1{bg|AcRpg
44273 zd`eOttUy!9QH$@#KImDQ=S3puO_4}sHnuNX4fXTWkCrDq{WlQhbxCf@nm8%N-)643
44274 zK_5BA8kjHS>6lm-CT@X*KnYs1LRR257~}|O1}QRXl|rS|Fbo^(ac`N-d3)g*FhO4Q
44275 z9Fkw!Ln6{-aSO;y_(b<?f<(Ma2K0~y#3y)tcotG?@i`<e*CgWvQrska0vqM1mvOR;
44276 z0N+buSq4olqbO$XO{Rk9r7y<Dp<;%N7-k?Il44kKpU&Qgl~@5WtdjK?K>!bU;W#+K
44278 z#Tz9=Ras}ZH%jPW3V9t;NC!zFoeY{Hg|xDCgI19?1U-R3)N9wJ0(`czeweCmUs~Iz
44281 zpRVR5m#&V_kenyHmKCNQVbT2lT$uKSRpNN~&V2Y<_+WV5gE{WMT-=CyNi(9=E`_w~
44282 zQ>FhXN%lHC*+ale_uL5)QbG<-uIY8buAtwa+}hn5YEL^;V9r=Pa`muS{q+UP_12&A
44283 zcGkT?lgeyV+a~xAwY$e0!`04#>d(u53S8>G5&C)P;tyPSJaD0JYVg|8Y0LRT-_yrE
44284 zdp@b3{&K$UyPN%gwcqkjyd9Xb^-&U}Oo+k>&L0c}g2|rIBkr>TxBA%KojT2G=GqpW
44287 z`j75%|2IwFc5%ZW1-pkI_Et9tb%K#*@21%e)YMZo-SOVop!md(V%7~YV{9S3I6pr0
44288 oar3#FF0SpBms(!lZ0_EFX77oL=7F-wceqvK-EDZ5&VWwyFFBNnr~m)}
44293 diff --git a/src/third_party/harfbuzz-ng/src/test/api/hb-test.h b/src/third_party/harfbuzz-ng/src/t…
44295 --- a/src/third_party/harfbuzz-ng/src/test/api/hb-test.h
44296 +++ b/src/third_party/harfbuzz-ng/src/test/api/hb-test.h
44297 @@ -52,6 +52,17 @@ HB_BEGIN_DECLS
44315 diff --git a/src/third_party/harfbuzz-ng/src/test/api/meson.build b/src/third_party/harfbuzz-ng/src…
44317 --- a/src/third_party/harfbuzz-ng/src/test/api/meson.build
44318 +++ b/src/third_party/harfbuzz-ng/src/test/api/meson.build
44319 @@ -6,6 +6,8 @@ endif
44321 'test-aat-layout.c',
44322 'test-baseline.c',
44323 + 'test-be-glyph-advance.c',
44324 + 'test-be-num-glyphs.c',
44325 'test-blob.c',
44326 'test-buffer.c',
44327 'test-c.c',
44328 @@ -30,6 +32,7 @@ tests = [
44329 'test-ot-tag.c',
44330 'test-ot-extents-cff.c',
44331 'test-ot-metrics-tt-var.c',
44332 + 'test-subset-repacker.c',
44333 'test-set.c',
44334 'test-shape.c',
44335 'test-style.c',
44336 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-baseline.c b/src/third_party/harfbuzz-ng…
44338 --- a/src/third_party/harfbuzz-ng/src/test/api/test-baseline.c
44339 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-baseline.c
44340 @@ -41,6 +41,58 @@ test_ot_layout_base (void)
44399 @@ -51,6 +103,7 @@ main (int argc, char **argv)
44407 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-be-glyph-advance.c b/src/third_party/har…
44410 --- /dev/null
44411 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-be-glyph-advance.c
44412 @@ -0,0 +1,101 @@
44420 + * software and its documentation for any purpose, provided that the
44424 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
44432 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
44433 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
44437 +#include "hb-test.h"
44452 + "\x00\x01\x00\x00" /* FixedVersion<>version; * 0x00010000u for version 1.0. */
44459 + "\x01\x00" /* FWORD maxExtent; * horizontal: Max(lsb + (xMax - xMin)), */
44461 + "\x00\x00" /* HBINT16 caretSlopeRun; * 0 for vertical caret, 1 for horizontal. */
44467 + "\x00\x00" /* HBINT16 metricDataFormat; * 0 for current format. */
44514 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-be-num-glyphs.c b/src/third_party/harfbu…
44517 --- /dev/null
44518 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-be-num-glyphs.c
44519 @@ -0,0 +1,71 @@
44527 + * software and its documentation for any purpose, provided that the
44531 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
44539 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
44540 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
44544 +#include "hb-test.h"
44591 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-draw.c b/src/third_party/harfbuzz-ng/src…
44593 --- a/src/third_party/harfbuzz-ng/src/test/api/test-draw.c
44594 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-draw.c
44595 @@ -23,16 +23,19 @@
44598 #include "hb-test.h"
44603 +#include <hb-ft.h>
44606 -#ifdef HB_EXPERIMENTAL_API
44607 -typedef struct user_data_t
44613 -} user_data_t;
44618 @@ -47,8 +50,9 @@ static void _hb_reverse (char *buf, unsigned int len)
44619 start++; end--;
44622 -static unsigned _hb_itoa (int32_t num, char *buf)
44628 if (is_negative) num = -num;
44629 @@ -95,69 +99,81 @@ test_itoa (void)
44633 -move_to (hb_position_t to_x, hb_position_t to_y, user_data_t *user_data)
44640 - if (user_data->consumed + 2 * ITOA_BUF_SIZE + 4 > user_data->size) return;
44641 - user_data->str[user_data->consumed++] = 'M';
44642 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44643 - user_data->str[user_data->consumed++] = ',';
44644 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44645 + if (draw_data->consumed + 2 * ITOA_BUF_SIZE + 4 > draw_data->size) return;
44646 + draw_data->str[draw_data->consumed++] = 'M';
44647 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44648 + draw_data->str[draw_data->consumed++] = ',';
44649 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44653 -line_to (hb_position_t to_x, hb_position_t to_y, user_data_t *user_data)
44659 - if (user_data->consumed + 2 * ITOA_BUF_SIZE + 4 > user_data->size) return;
44660 - user_data->str[user_data->consumed++] = 'L';
44661 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44662 - user_data->str[user_data->consumed++] = ',';
44663 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44664 + if (draw_data->consumed + 2 * ITOA_BUF_SIZE + 4 > draw_data->size) return;
44665 + draw_data->str[draw_data->consumed++] = 'L';
44666 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44667 + draw_data->str[draw_data->consumed++] = ',';
44668 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44672 -quadratic_to (hb_position_t control_x, hb_position_t control_y,
44673 - hb_position_t to_x, hb_position_t to_y,
44674 - user_data_t *user_data)
44682 - if (user_data->consumed + 4 * ITOA_BUF_SIZE + 6 > user_data->size) return;
44683 - user_data->str[user_data->consumed++] = 'Q';
44684 - user_data->consumed += _hb_itoa (control_x, user_data->str + user_data->consumed);
44685 - user_data->str[user_data->consumed++] = ',';
44686 - user_data->consumed += _hb_itoa (control_y, user_data->str + user_data->consumed);
44687 - user_data->str[user_data->consumed++] = ' ';
44688 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44689 - user_data->str[user_data->consumed++] = ',';
44690 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44691 + if (draw_data->consumed + 4 * ITOA_BUF_SIZE + 6 > draw_data->size) return;
44692 + draw_data->str[draw_data->consumed++] = 'Q';
44693 + draw_data->consumed += _hb_itoa (control_x, draw_data->str + draw_data->consumed);
44694 + draw_data->str[draw_data->consumed++] = ',';
44695 + draw_data->consumed += _hb_itoa (control_y, draw_data->str + draw_data->consumed);
44696 + draw_data->str[draw_data->consumed++] = ' ';
44697 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44698 + draw_data->str[draw_data->consumed++] = ',';
44699 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44703 -cubic_to (hb_position_t control1_x, hb_position_t control1_y,
44704 - hb_position_t control2_x, hb_position_t control2_y,
44705 - hb_position_t to_x, hb_position_t to_y,
44706 - user_data_t *user_data)
44714 - if (user_data->consumed + 6 * ITOA_BUF_SIZE + 8 > user_data->size) return;
44715 - user_data->str[user_data->consumed++] = 'C';
44716 - user_data->consumed += _hb_itoa (control1_x, user_data->str + user_data->consumed);
44717 - user_data->str[user_data->consumed++] = ',';
44718 - user_data->consumed += _hb_itoa (control1_y, user_data->str + user_data->consumed);
44719 - user_data->str[user_data->consumed++] = ' ';
44720 - user_data->consumed += _hb_itoa (control2_x, user_data->str + user_data->consumed);
44721 - user_data->str[user_data->consumed++] = ',';
44722 - user_data->consumed += _hb_itoa (control2_y, user_data->str + user_data->consumed);
44723 - user_data->str[user_data->consumed++] = ' ';
44724 - user_data->consumed += _hb_itoa (to_x, user_data->str + user_data->consumed);
44725 - user_data->str[user_data->consumed++] = ',';
44726 - user_data->consumed += _hb_itoa (to_y, user_data->str + user_data->consumed);
44727 + if (draw_data->consumed + 6 * ITOA_BUF_SIZE + 8 > draw_data->size) return;
44728 + draw_data->str[draw_data->consumed++] = 'C';
44729 + draw_data->consumed += _hb_itoa (control1_x, draw_data->str + draw_data->consumed);
44730 + draw_data->str[draw_data->consumed++] = ',';
44731 + draw_data->consumed += _hb_itoa (control1_y, draw_data->str + draw_data->consumed);
44732 + draw_data->str[draw_data->consumed++] = ' ';
44733 + draw_data->consumed += _hb_itoa (control2_x, draw_data->str + draw_data->consumed);
44734 + draw_data->str[draw_data->consumed++] = ',';
44735 + draw_data->consumed += _hb_itoa (control2_y, draw_data->str + draw_data->consumed);
44736 + draw_data->str[draw_data->consumed++] = ' ';
44737 + draw_data->consumed += _hb_itoa (to_x, draw_data->str + draw_data->consumed);
44738 + draw_data->str[draw_data->consumed++] = ',';
44739 + draw_data->consumed += _hb_itoa (to_y, draw_data->str + draw_data->consumed);
44743 -close_path (user_data_t *user_data)
44748 - if (user_data->consumed + 2 > user_data->size) return;
44749 - user_data->str[user_data->consumed++] = 'Z';
44750 + if (draw_data->consumed + 2 > draw_data->size) return;
44751 + draw_data->str[draw_data->consumed++] = 'Z';
44755 @@ -166,7 +182,7 @@ static hb_draw_funcs_t *funcs2; /* this one translates quadratic calls to cubic
44759 - g_assert (!hb_font_draw_glyph (hb_font_get_empty (), 3, funcs, NULL));
44764 @@ -177,17 +193,17 @@ test_hb_draw_glyf (void)
44768 - user_data_t user_data = {
44775 - user_data.consumed = 0;
44776 - g_assert (!hb_font_draw_glyph (font, 4, funcs, &user_data));
44780 - user_data.consumed = 0;
44781 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44786 "Q404,90 427,128L451,116Q431,54 384,21Q336,-13 266,-13"
44787 @@ -195,11 +211,11 @@ test_hb_draw_glyf (void)
44791 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44792 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44795 - user_data.consumed = 0;
44796 - g_assert (hb_font_draw_glyph (font, 3, funcs2, &user_data));
44802 @@ -209,15 +225,15 @@ test_hb_draw_glyf (void)
44806 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
44807 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
44814 - user_data.consumed = 0;
44815 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44820 "Q430,115 451,137L488,103Q458,42 404,13Q350,-16 279,-16"
44821 @@ -225,7 +241,7 @@ test_hb_draw_glyf (void)
44825 - g_assert_cmpmem (str, user_data.consumed, expected3, sizeof (expected3) - 1);
44826 + g_assert_cmpmem (str, draw_data.consumed, expected3, sizeof (expected3) - 1);
44830 @@ -238,16 +254,16 @@ test_hb_draw_cff1 (void)
44834 - user_data_t user_data = {
44840 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44845 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44846 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44850 @@ -261,18 +277,18 @@ test_hb_draw_cff1_rline (void)
44854 - user_data_t user_data = {
44860 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
44867 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44868 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44872 @@ -285,33 +301,33 @@ test_hb_draw_cff2 (void)
44876 - user_data_t user_data = {
44882 - user_data.consumed = 0;
44883 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44889 "C43,83 129,-13 266,-13C360,-13 424,33 451,116L427,128"
44891 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44892 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44899 - user_data.consumed = 0;
44900 - g_assert (hb_font_draw_glyph (font, 3, funcs, &user_data));
44906 "C25,70 143,-16 279,-16C374,-16 447,22 488,103L451,137"
44908 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
44909 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
44913 @@ -321,7 +337,7 @@ test_hb_draw_ttf_parser_tests (void)
44915 /* https://github.com/RazrFalcon/ttf-parser/blob/337e7d1c/tests/tests.rs#L50-L133 */
44917 - user_data_t user_data = {
44922 @@ -330,20 +346,20 @@ test_hb_draw_ttf_parser_tests (void)
44926 - user_data.consumed = 0;
44927 - g_assert (hb_font_draw_glyph (font, 0, funcs, &user_data));
44931 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44932 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44935 - user_data.consumed = 0;
44936 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
44940 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44941 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44944 - user_data.consumed = 0;
44945 - g_assert (hb_font_draw_glyph (font, 4, funcs, &user_data));
44951 @@ -351,22 +367,23 @@ test_hb_draw_ttf_parser_tests (void)
44955 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44956 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44959 - user_data.consumed = 0;
44960 - g_assert (hb_font_draw_glyph (font, 5, funcs, &user_data));
44961 - char expected[] = "";
44962 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44966 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44969 - user_data.consumed = 0;
44970 - g_assert (hb_font_draw_glyph (font, 6, funcs, &user_data));
44976 - "Q254,693 233,664Q211,634 211,571L211,536L346,536L346,468Z";
44977 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44980 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
44984 @@ -376,15 +393,15 @@ test_hb_draw_ttf_parser_tests (void)
44988 - user_data.consumed = 0;
44989 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
44992 char expected[] = "M0,0C100,0 150,-20 250,-20C350,-20 400,0 500,0C500,100 520,150 520,250"
44994 "C0,400 -20,350 -20,250C-20,150 0,100 0,0ZM50,50C50,130 34,170 34,250"
44998 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
44999 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45003 @@ -393,12 +410,12 @@ test_hb_draw_ttf_parser_tests (void)
45007 - user_data.consumed = 0;
45008 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
45014 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45015 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45019 @@ -409,7 +426,7 @@ test_hb_draw_font_kit_glyphs_tests (void)
45023 - user_data_t user_data = {
45028 @@ -420,26 +437,26 @@ test_hb_draw_font_kit_glyphs_tests (void)
45031 /* should get a path for the glyph */
45032 - user_data.consumed = 0;
45033 - g_assert (hb_font_draw_glyph (font, 37, funcs, &user_data));
45042 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45043 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45045 /* should get a path for the glyph */
45046 - user_data.consumed = 0;
45047 - g_assert (hb_font_draw_glyph (font, 171, funcs, &user_data));
45050 char expected2[] = "M639,-20Q396,-20 256,128Q115,276 115,539Q115,804 246,960Q376,1116 596,1116"
45052 "Q477,125 645,125Q822,125 995,199L995,51Q907,13 829,-3Q750,-20 639,-20Z"
45056 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45057 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45061 @@ -457,8 +474,8 @@ test_hb_draw_font_kit_glyphs_tests (void)
45065 - user_data.consumed = 0;
45066 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45070 "Q343,138 365,111L468,-13Q470,-10 473,-6Q475,-3 477,0L253,0Q225,0 203,8"
45071 "Q180,15 168,32Q155,48 155,73L155,269L50,269L50,73Q50,24 69,-10"
45072 @@ -470,16 +487,16 @@ test_hb_draw_font_kit_glyphs_tests (void)
45073 "M360,-194Q360,-216 375,-231Q390,-246 412,-246Q434,-246 449,-231"
45074 "Q464,-216 464,-194Q464,-172 449,-157Q434,-142 412,-142"
45075 "Q390,-142 375,-157Q360,-172 360,-194Z";
45076 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45077 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45080 - user_data.consumed = 0;
45081 - g_assert (hb_font_draw_glyph (font, 2, funcs, &user_data)); /* 2 == arAlef.fina */
45088 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45089 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45093 @@ -489,11 +506,11 @@ test_hb_draw_font_kit_glyphs_tests (void)
45097 - user_data.consumed = 0;
45098 - g_assert (hb_font_draw_glyph (font, 5, funcs, &user_data));
45103 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45104 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45108 @@ -504,12 +521,12 @@ test_hb_draw_font_kit_glyphs_tests (void)
45112 - user_data.consumed = 0;
45113 - g_assert (hb_font_draw_glyph (font, 1, funcs, &user_data));
45117 "C73,419 103,390 139,390ZM139,-13C175,-13 205,15 205,56C205,97 175,127 139,127"
45118 "C103,127 73,97 73,56C73,15 103,-13 139,-13Z";
45119 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45120 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45124 @@ -521,7 +538,7 @@ test_hb_draw_font_kit_variations_tests (void)
45128 - user_data_t user_data = {
45133 @@ -549,8 +566,8 @@ test_hb_draw_font_kit_variations_tests (void)
45137 - user_data.consumed = 0;
45138 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45141 char expected[] = "M371,-102L371,539L914,539L914,-27Q914,-102 840,-102"
45142 "Q796,-102 755,-98L742,-59Q790,-66 836,-66Q871,-66 871,-31L871,504"
45143 "L414,504L414,-102L371,-102ZM203,-94Q138,-94 86,-90L74,-52"
45144 @@ -571,7 +588,7 @@ test_hb_draw_font_kit_variations_tests (void)
45148 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45149 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45153 @@ -594,8 +611,8 @@ test_hb_draw_font_kit_variations_tests (void)
45157 - user_data.consumed = 0;
45158 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45161 char expected[] = "M371,-102L371,539L914,539L914,-27Q914,-102 840,-102Q796,-102 755,-98"
45162 "L742,-59Q790,-66 836,-66Q871,-66 871,-31L871,504L414,504L414,-102"
45163 "L371,-102ZM203,-94Q138,-94 86,-90L74,-52Q137,-59 188,-59Q211,-59 222,-46"
45164 @@ -615,7 +632,7 @@ test_hb_draw_font_kit_variations_tests (void)
45168 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45169 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45173 @@ -638,8 +655,8 @@ test_hb_draw_font_kit_variations_tests (void)
45177 - user_data.consumed = 0;
45178 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45181 char expected[] = "M371,-102L371,539L914,539L914,-27Q914,-102 840,-102Q796,-102 755,-98"
45182 "L742,-59Q790,-66 836,-66Q871,-66 871,-31L871,504L414,504L414,-102"
45183 "L371,-102ZM203,-94Q138,-94 86,-90L74,-52Q137,-59 188,-59Q211,-59 222,-46"
45184 @@ -659,7 +676,7 @@ test_hb_draw_font_kit_variations_tests (void)
45188 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45189 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45193 @@ -685,8 +702,8 @@ test_hb_draw_font_kit_variations_tests (void)
45197 - user_data.consumed = 0;
45198 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45202 "C65,149 56,141 52,126C71,40 137,-13 244,-13C348,-13 436,46 436,156"
45204 @@ -695,7 +712,7 @@ test_hb_draw_font_kit_variations_tests (void)
45206 "C395,65 334,15 246,15ZM267,331L267,759L240,759L240,331L267,331ZM240,-115"
45207 "L267,-115L267,331L240,331L240,-115Z";
45208 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45209 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45213 @@ -709,8 +726,8 @@ test_hb_draw_font_kit_variations_tests (void)
45217 - user_data.consumed = 0;
45218 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45222 "C78,167 61,155 51,131C54,43 133,-14 247,-14C388,-14 474,64 474,171"
45224 @@ -719,7 +736,7 @@ test_hb_draw_font_kit_variations_tests (void)
45227 "L289,746L242,746L242,320L289,320ZM240,-115L286,-115L286,320L240,320L240,-115Z";
45228 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45229 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45233 @@ -734,8 +751,8 @@ test_hb_draw_font_kit_variations_tests (void)
45237 - user_data.consumed = 0;
45238 - g_assert (hb_font_draw_glyph (font, codepoint, funcs, &user_data));
45242 "C89,174 64,161 51,125C52,36 124,-16 258,-16C417,-16 513,67 513,175"
45244 @@ -743,7 +760,7 @@ test_hb_draw_font_kit_variations_tests (void)
45247 "L318,616ZM253,-115L319,-115L319,14L253,14L253,-115Z";
45248 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45249 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45253 @@ -755,7 +772,7 @@ test_hb_draw_estedad_vf (void)
45257 - user_data_t user_data = {
45262 @@ -769,18 +786,18 @@ test_hb_draw_estedad_vf (void)
45263 hb_variation_from_string ("wght=100", -1, &var);
45266 - user_data.consumed = 0;
45267 - g_assert (hb_font_draw_glyph (font, 156, funcs, &user_data));
45273 "L150,1158ZM1815,-122L1669,-122L1669,642L1552,642L1055,-117L1055,-206"
45274 "L1569,-206L1569,-458L1669,-458L1669,-206L1815,-206L1815,-122ZM1569,-122"
45275 "L1166,-122L1569,494L1569,-122ZM609,-79L1639,1288L1555,1334L525,-33L609,-79Z";
45276 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45277 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45279 - user_data.consumed = 0;
45280 - g_assert (hb_font_draw_glyph (font, 180, funcs, &user_data));
45285 "Q701,-33 856,-33Q1010,-33 1144,24Q1277,81 1377,182Q1477,282 1534,414"
45286 @@ -797,17 +814,17 @@ test_hb_draw_estedad_vf (void)
45290 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45291 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45293 - user_data.consumed = 0;
45294 - g_assert (hb_font_draw_glyph (font, 262, funcs, &user_data));
45303 - g_assert_cmpmem (str, user_data.consumed, expected3, sizeof (expected3) - 1);
45304 + g_assert_cmpmem (str, draw_data.consumed, expected3, sizeof (expected3) - 1);
45308 @@ -819,7 +836,7 @@ test_hb_draw_stroking (void)
45309 /* https://skia-review.googlesource.com/c/skia/+/266945
45312 - user_data_t user_data = {
45317 @@ -829,8 +846,8 @@ test_hb_draw_stroking (void)
45321 - user_data.consumed = 0;
45322 - g_assert (hb_font_draw_glyph (font, 6, funcs, &user_data));
45328 @@ -842,10 +859,10 @@ test_hb_draw_stroking (void)
45332 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45333 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45335 - user_data.consumed = 0;
45336 - g_assert (hb_font_draw_glyph (font, 7, funcs, &user_data));
45342 @@ -860,7 +877,7 @@ test_hb_draw_stroking (void)
45346 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45347 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45351 @@ -870,24 +887,181 @@ test_hb_draw_stroking (void)
45355 - user_data.consumed = 0;
45356 - g_assert (hb_font_draw_glyph (font, 4, funcs, &user_data));
45362 - g_assert_cmpmem (str, user_data.consumed, expected, sizeof (expected) - 1);
45363 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45365 - user_data.consumed = 0;
45366 - g_assert (hb_font_draw_glyph (font, 5, funcs, &user_data));
45369 /* Fold consequent move-to commands */
45374 - g_assert_cmpmem (str, user_data.consumed, expected2, sizeof (expected2) - 1);
45375 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45402 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45425 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45438 + hb_face_t *face = hb_test_open_font_file ("fonts/OpenSans-Regular.ttf");
45451 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45456 + hb_face_t *face = hb_test_open_font_file ("fonts/SourceSansPro-Regular.otf");
45465 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45481 + hb_face_t *face = hb_test_open_font_file ("fonts/OpenSans-Regular.ttf");
45496 + g_assert_cmpmem (str, draw_data.consumed, expected1, sizeof (expected1) - 1);
45506 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45513 + hb_face_t *face = hb_test_open_font_file ("fonts/SourceSansPro-Regular.otf");
45524 + g_assert_cmpmem (str, draw_data.consumed, expected1, sizeof (expected1) - 1);
45530 + g_assert_cmpmem (str, draw_data.consumed, expected2, sizeof (expected2) - 1);
45539 @@ -900,22 +1074,70 @@ test_hb_draw_immutable (void)
45560 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45566 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45578 + char expected[] = "M0,0C100,0 150,-20 250,-20C350,-20 400,0 500,0C500,100 520,150 520,250"
45580 + "C0,400 -20,350 -20,250C-20,150 0,100 0,0ZM50,50C50,130 34,170 34,250"
45584 + g_assert_cmpmem (str, draw_data.consumed, expected, sizeof (expected) - 1);
45595 - hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) move_to);
45596 - hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) line_to);
45597 - hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) quadratic_to);
45598 - hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) cubic_to);
45599 - hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) close_path);
45608 - hb_draw_funcs_set_move_to_func (funcs2, (hb_draw_move_to_func_t) move_to);
45609 - hb_draw_funcs_set_line_to_func (funcs2, (hb_draw_line_to_func_t) line_to);
45610 - hb_draw_funcs_set_cubic_to_func (funcs2, (hb_draw_cubic_to_func_t) cubic_to);
45611 - hb_draw_funcs_set_close_path_func (funcs2, (hb_draw_close_path_func_t) close_path);
45619 @@ -929,17 +1151,17 @@ main (int argc, char **argv)
45623 - hb_test_add (test_hb_draw_stroking);
45638 -#else
45639 -int main (int argc HB_UNUSED, char **argv HB_UNUSED)
45640 -{
45641 - return 0;
45642 -}
45643 -#endif
45644 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-face.c b/src/third_party/harfbuzz-ng/…
45646 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-face.c
45647 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-face.c
45648 @@ -131,6 +131,7 @@ test_font (hb_font_t *font, hb_codepoint_t cp)
45656 @@ -162,11 +163,9 @@ test_font (hb_font_t *font, hb_codepoint_t cp)
45660 -#ifdef HB_EXPERIMENTAL_API
45662 - hb_font_draw_glyph (font, cp, funcs, NULL);
45665 -#endif
45669 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-math.c b/src/third_party/harfbuzz-ng/…
45671 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-math.c
45672 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-math.c
45673 @@ -312,7 +312,7 @@ test_get_glyph_kerning (void)
45675 g_assert(hb_font_get_glyph_from_name (hb_font, "I", -1, &glyph));
45677 - g_assert_cmpint(hb_ot_math_get_glyph_kerning (hb_font, glyph, HB_OT_MATH_KERN_TOP_RIGHT, 7), ==,…
45682 @@ -332,6 +332,87 @@ test_get_glyph_kerning (void)
45697 + g_assert(hb_font_get_glyph_from_name (hb_font, "space", -1, &glyph));
45705 + g_assert(hb_font_get_glyph_from_name (hb_font, "space", -1, &glyph));
45713 + g_assert(hb_font_get_glyph_from_name (hb_font, "space", -1, &glyph));
45721 + g_assert(hb_font_get_glyph_from_name (hb_font, "I", -1, &glyph));
45770 @@ -707,6 +788,7 @@ main (int argc, char **argv)
45778 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-metrics-tt-var.c b/src/third_party/ha…
45780 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-metrics-tt-var.c
45781 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-metrics-tt-var.c
45782 @@ -80,7 +80,7 @@ test_advance_tt_var_nohvar (void)
45786 - g_assert_cmpint (y, ==, -1000);
45787 + g_assert_cmpint (y, ==, -1257);
45791 @@ -92,7 +92,7 @@ test_advance_tt_var_nohvar (void)
45795 - g_assert_cmpint (y, ==, -1000);
45796 + g_assert_cmpint (y, ==, -1257);
45800 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-ot-tag.c b/src/third_party/harfbuzz-ng/s…
45802 --- a/src/third_party/harfbuzz-ng/src/test/api/test-ot-tag.c
45803 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-ot-tag.c
45804 @@ -140,6 +140,8 @@ test_ot_tag_script_simple (void)
45813 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-set.c b/src/third_party/harfbuzz-ng/src/…
45815 --- a/src/third_party/harfbuzz-ng/src/test/api/test-set.c
45816 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-set.c
45817 @@ -1067,6 +1067,130 @@ test_set_inverted_operations (void)
45842 + for (int i=0; i<600; i++)
45844 + for (int i=6000; i<6100; i++)
45852 + for (int i=0; i<600; i++)
45854 + for (int i=0; i<100; i++)
45858 + for (int i = 0; i < 700; i++)
45865 + g_assert_cmpint (array[n - 1], ==, 6099);
45874 + for (int i=0; i<600; i++)
45876 + for (int i=6000; i<6100; i++)
45883 + for (int i=0; i<9; i++)
45920 + for (int i=4; i<997; i++)
45948 @@ -1090,5 +1214,11 @@ main (int argc, char **argv)
45960 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-style.c b/src/third_party/harfbuzz-ng/sr…
45962 --- a/src/third_party/harfbuzz-ng/src/test/api/test-style.c
45963 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-style.c
45964 @@ -147,6 +147,34 @@ test_face_user_setting (void)
45986 + /* We expect a negative angle for a typical italic font,
45989 + assert_cmpfloat (hb_style_get_value (font, HB_STYLE_TAG_SLANT_ANGLE), -12);
45999 @@ -155,6 +183,7 @@ main (int argc, char **argv)
46007 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-subset-repacker.c b/src/third_party/harf…
46010 --- /dev/null
46011 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-subset-repacker.c
46012 @@ -0,0 +1,225 @@
46020 + * software and its documentation for any purpose, provided that the
46024 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
46032 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
46033 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
46038 +#include "hb-test.h"
46039 +#include "hb-subset-test.h"
46042 +#include "hb-subset-repacker.h"
46213 + for (unsigned i = 0 ; i < 15; i++)
46238 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-subset.c b/src/third_party/harfbuzz-ng/s…
46240 --- a/src/third_party/harfbuzz-ng/src/test/api/test-subset.c
46241 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-subset.c
46242 @@ -155,6 +155,44 @@ test_subset_sets (void)
46249 + hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf");
46250 + hb_face_t *face_ac = hb_test_open_font_file ("fonts/Roboto-Regular.ac.ttf");
46287 @@ -165,6 +203,7 @@ main (int argc, char **argv)
46295 diff --git a/src/third_party/harfbuzz-ng/src/test/api/test-var-coords.c b/src/third_party/harfbuzz-…
46297 --- a/src/third_party/harfbuzz-ng/src/test/api/test-var-coords.c
46298 +++ b/src/third_party/harfbuzz-ng/src/test/api/test-var-coords.c
46299 @@ -31,7 +31,6 @@
46303 -#ifdef HB_EXPERIMENTAL_API
46306 (((a) > (b) ? (a) - (b) : (b) - (a)) < (epsilon))
46307 @@ -66,7 +65,6 @@ test_get_var_coords (void)
46311 -#endif
46315 …--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-hb-shape-fuzzer-54…
46322 zdaOzj_ynOCz+Ol3gcuG0QtHXh@Qj^-aRnIYrse15B^D$yz<s)c5gcM*Aj8bSycHM@
46323 zj10`oY{YmG%^9V6nT|##uHdkI&cFzdBV&%V|5(Al|H2H|WoQH-&W6P~x-2B(L4Xw$
46329 …--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-shape…
46334 zc$}?N&rcIU6#iy*DL+C@NjNAmq)1JuP_qbasdA|Nu$mYlAsm$!EQC-OQpyDrQ~U!6
46335 z@n)37n^zBpvx$i(JsA=Y9=Lh&q=`bBbbW7T*Oj(lVtkvO-JN+qzWLra3jx3g18;u7
46336 z1R~LB^x)t-%u$rXndzw+wBZ(cq^m(pWM*c^K0e)f&)>jfr*gJpfaBZHjRA;4u4JQy
46337 z)1XxRrdGsCzQ}XHE<&^-5umY!*8F#gA-V|yB9vIFcoSD>3_FfPApWR$zEQ<Hr`T^a
46339 zh)uE}n(5-a=|Gmo(IrAH9yuQ*2n)?`hFBT6ib;Fp!F;~BzPx0&tK^2nd@;AMk_W1o
46340 zcH~1fYjrl@$87K}AlG6ZQF}}lqX^(KjeVJk$s3g^+*6*NUy)@IetPwVM0hP-1#Ytl
46341 zV~eXc0~d;(*Nx~AZmA~0O}OatpxI@Kz1a4fr3KEpB?l!uz-2IPDo?Z9Ya%3|a&+kQ
46342 zl#BJ`{Pcb6J*}a{NPIY%jE`6&@1E`KYS&mQ9#5rG!`Q-p6R=+{mvif-d@%@LC4%KD
46344 zFBVElf70&d)kEkWh{EbZf$B2?i3W#|n`!6Pa&>3uN!@=UfeT%u-EVEQs>9+$mM_t^
46352 …--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subse…
46357 zc${NkWME)my2P^nh3+k9f1e-*w*a63gEspM28P_kiULsvH6svTlRu0Bq|^#XfM^hq
46359 zGi-9=VJJ>5OJ!jAFUmKKm4Stcft5j67AWVyqtXLW1u+L=FNoxSRL{ZuKi`>!n>mF+
46366 …--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/clusterfuzz-testcase-minimized-hb-subse…
46372 zSgmvK%(}Ci4P@ivz`X9A`#ST00nkkym?58qI2&G^$_N-#Zder6?rUQ*x|_-fG?w-O
46375 zVR?+Pg+6w(+QdmVw|X|(7*ZK<T4=Ak;x-53)9{<)eG0QeRM_%s`pmZyE$~Gl^81a%
46376 zb@Pxk)kV485!b0_pPi&b5Ese44SddtXuISC%b1tv6-PW_lTWf|Z<{YNHhcW6%oCf+
46383 …--git a/src/third_party/harfbuzz-ng/src/test/fuzzing/fonts/crash-d223bc42a8226c4d655c417d63d9a7676…
46388 zc%1VO3Grv(XJ}wxX6SHsb2CbEj5)->!0?BGfw#y#z(063BZB~t&%pPabDsxC+&a!{
46389 z$KI8)u=PJ<FpSAKFOtf_oH+Th@c)1H3=Tj3{Rabg1_tKO@vK*Yx)c~$nShkwV-5xe
46390 z76z$gDMNpi(ijHje{l-_Y(R<B#OU+PB0O9S3_K1DvaC6^^OxHQ?qgu!`~Z~X%1x{&
46392 zV9QHPNnP>#KNrw)petCt3i6Aa{$B(t7UB0{`2SLYiIJ5-SQf~a;86ilN`kU$7}#Xo
46398 diff --git a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-draw-fuzzer.cc b/src/third_party/harfb…
46400 --- a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-draw-fuzzer.cc
46401 +++ b/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-draw-fuzzer.cc
46402 @@ -5,77 +5,80 @@
46404 #include "hb-fuzzer.hh"
46406 -#ifdef HB_EXPERIMENTAL_API
46407 -struct _user_data_t
46410 - bool is_open;
46412 - hb_position_t path_start_x;
46413 - hb_position_t path_start_y;
46414 - hb_position_t path_last_x;
46415 - hb_position_t path_last_y;
46423 -_move_to (hb_position_t to_x, hb_position_t to_y, void *user_data_)
46429 - _user_data_t *user_data = (_user_data_t *) user_data_;
46430 - assert (!user_data->is_open);
46431 - user_data->is_open = true;
46432 - user_data->path_start_x = user_data->path_last_x = to_x;
46433 - user_data->path_start_y = user_data->path_last_y = to_y;
46435 + assert (!st->path_open);
46436 + draw_data->path_start_x = draw_data->path_last_x = to_x;
46437 + draw_data->path_start_y = draw_data->path_last_y = to_y;
46441 -_line_to (hb_position_t to_x, hb_position_t to_y, void *user_data_)
46447 - _user_data_t *user_data = (_user_data_t *) user_data_;
46448 - assert (user_data->is_open);
46449 - assert (user_data->path_last_x != to_x || user_data->path_last_y != to_y);
46450 - ++user_data->path_len;
46451 - user_data->path_last_x = to_x;
46452 - user_data->path_last_y = to_y;
46454 + assert (st->path_open);
46455 + ++draw_data->path_len;
46456 + draw_data->path_last_x = to_x;
46457 + draw_data->path_last_y = to_y;
46461 -_quadratic_to (hb_position_t control_x, hb_position_t control_y,
46462 - hb_position_t to_x, hb_position_t to_y, void *user_data_)
46469 - _user_data_t *user_data = (_user_data_t *) user_data_;
46470 - assert (user_data->is_open);
46471 - assert (user_data->path_last_x != control_x || user_data->path_last_y != control_y ||
46472 - user_data->path_last_x != to_x || user_data->path_last_y != to_y);
46473 - ++user_data->path_len;
46474 - user_data->path_last_x = to_x;
46475 - user_data->path_last_y = to_y;
46477 + assert (st->path_open);
46478 + ++draw_data->path_len;
46479 + draw_data->path_last_x = to_x;
46480 + draw_data->path_last_y = to_y;
46484 -_cubic_to (hb_position_t control1_x, hb_position_t control1_y,
46485 - hb_position_t control2_x, hb_position_t control2_y,
46486 - hb_position_t to_x, hb_position_t to_y, void *user_data_)
46494 - _user_data_t *user_data = (_user_data_t *) user_data_;
46495 - assert (user_data->is_open);
46496 - assert (user_data->path_last_x != control1_x || user_data->path_last_y != control1_y ||
46497 - user_data->path_last_x != control2_x || user_data->path_last_y != control2_y ||
46498 - user_data->path_last_x != to_x || user_data->path_last_y != to_y);
46499 - ++user_data->path_len;
46500 - user_data->path_last_x = to_x;
46501 - user_data->path_last_y = to_y;
46503 + assert (st->path_open);
46504 + ++draw_data->path_len;
46505 + draw_data->path_last_x = to_x;
46506 + draw_data->path_last_y = to_y;
46510 -_close_path (void *user_data_)
46515 - _user_data_t *user_data = (_user_data_t *) user_data_;
46516 - assert (user_data->is_open && user_data->path_len != 0);
46517 - user_data->path_len = 0;
46518 - user_data->is_open = false;
46519 - assert (user_data->path_start_x == user_data->path_last_x &&
46520 - user_data->path_start_y == user_data->path_last_y);
46522 + assert (st->path_open && draw_data->path_len != 0);
46523 + draw_data->path_len = 0;
46524 + assert (draw_data->path_start_x == draw_data->path_last_x &&
46525 + draw_data->path_start_y == draw_data->path_last_y);
46527 -#endif
46529 /* Similar to test-ot-face.c's #test_font() */
46531 @@ -135,24 +138,19 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46535 -#ifdef HB_EXPERIMENTAL_API
46536 - _user_data_t user_data = {false, 0, 0, 0, 0, 0};
46540 - hb_draw_funcs_set_move_to_func (funcs, (hb_draw_move_to_func_t) _move_to);
46541 - hb_draw_funcs_set_line_to_func (funcs, (hb_draw_line_to_func_t) _line_to);
46542 - hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) _quadratic_to);
46543 - hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) _cubic_to);
46544 - hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) _close_path);
46545 -#endif
46553 for (unsigned gid = 0; gid < glyph_count; ++gid)
46555 -#ifdef HB_EXPERIMENTAL_API
46556 - hb_font_draw_glyph (font, gid, funcs, &user_data);
46557 - assert (!user_data.is_open);
46558 -#endif
46563 @@ -166,9 +164,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46567 -#ifdef HB_EXPERIMENTAL_API
46569 -#endif
46573 diff --git a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-set-fuzzer.cc b/src/third_party/harfbu…
46575 --- a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-set-fuzzer.cc
46576 +++ b/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-set-fuzzer.cc
46577 @@ -8,7 +8,7 @@
46581 -// Arbitarily long input sets do not trigger any meaningful
46583 // differences in behaviour so there's no benefit from allowing
46586 diff --git a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-shape-fuzzer.cc b/src/third_party/harf…
46588 --- a/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-shape-fuzzer.cc
46589 +++ b/src/third_party/harfbuzz-ng/src/test/fuzzing/hb-shape-fuzzer.cc
46590 @@ -33,6 +33,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46595 hb_buffer_add_utf8 (buffer, text, -1, 0, -1);
46598 @@ -50,6 +51,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
46603 hb_buffer_add_utf32 (buffer, text32, sizeof (text32) / sizeof (text32[0]), 0, -1);
46606 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/Makefile.sources b/src/third_part…
46608 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/Makefile.sources
46609 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/Makefile.sources
46610 @@ -128,6 +128,3 @@ TESTS = \
46614 -
46615 -DISABLED_TESTS = \
46616 - $(NULL)
46617 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/hb-aots-tester.cpp b/src/third_party/…
46619 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/hb-aots-tester.cpp
46620 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/hb-aots-tester.cpp
46621 @@ -258,7 +258,7 @@ bool cmap_test(const char *testName,
46625 - fprintf (tests_file, "\" --no-clusters --no-glyph-names --no-positions --font-funcs=ot;");
46626 + fprintf (tests_file, "\" --single-par --no-clusters --no-glyph-names --no-positions --font-fun…
46628 for (unsigned int i = 0; i < nbIn; i++)
46630 @@ -388,7 +388,7 @@ bool gpos_test(const char *testName,
46634 - fprintf (tests_file, "\" --no-clusters --no-glyph-names --ned;");
46635 + fprintf (tests_file, "\" --single-par --no-clusters --no-glyph-names --ned;");
46637 for (unsigned int i = 0; i < nbIn; i++)
46639 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos4_simple.tests b/src/th…
46641 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos4_simple.tests
46642 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos4_simple.tests
46643 @@ -1,4 +1,4 @@
46644 -#../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U…
46645 …os4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012…
46646 …../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+…
46647 …../fonts/gpos4_simple_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+…
46648 …_1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+0012,U+0013,U+…
46649 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos5.tests b/src/third_par…
46651 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos5.tests
46652 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/aots/tests/gpos5.tests
46653 @@ -1,2 +1,2 @@
46654 …s5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+0…
46655 -#../fonts/gpos5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+00…
46656 …s5_font1.otf;--features="test" --single-par --no-clusters --no-glyph-names --ned;U+0011,U+001E,U+0…
46657 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.am b/src/third_party…
46659 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.am
46660 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.am
46661 @@ -14,10 +14,18 @@ EXTRA_DIST = \
46667 -TESTS_ENVIRONMENT = HAVE_FREETYPE=1
46668 -else
46669 -TESTS_ENVIRONMENT = HAVE_FREETYPE=0
46681 TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT)
46683 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.sources b/src/third_…
46685 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.sources
46686 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/Makefile.sources
46687 @@ -13,12 +13,15 @@ TESTS = \
46689 tests/color-fonts.tests \
46690 tests/context-matching.tests \
46692 tests/cursive-positioning.tests \
46693 tests/default-ignorables.tests \
46697 tests/emoji-clusters.tests \
46698 tests/fallback-positioning.tests \
46699 + tests/glyph-props-no-gdef.tests \
46700 tests/hangul-jamo.tests \
46702 tests/indic-consonant-with-stacker.tests \
46703 @@ -45,6 +48,7 @@ TESTS = \
46704 tests/myanmar-misc.tests \
46705 tests/myanmar-syllable.tests \
46706 tests/myanmar-zawgyi.tests \
46707 + tests/nested-mark-filtering-sets.tests \
46708 tests/none-directional.tests \
46709 tests/positioning-features.tests \
46711 @@ -57,6 +61,8 @@ TESTS = \
46712 tests/tibetan-contractions-2.tests \
46713 tests/tibetan-vowels.tests \
46714 tests/tt-kern-gpos.tests \
46716 + tests/unsafe-to-concat.tests \
46717 tests/use-indic3.tests \
46718 tests/use-marchen.tests \
46719 tests/use-syllable.tests \
46720 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/190a621e48d4af1fffd8144bd41…
46725 zc${ri&u<%55dPl&h+VsJ5{RWFkakl-TPxVLoq|J^Lx@wSNR^y6fkS{&hZx&Z99#Cb
46726 zX)nk(q6SbTgh2cU1Vk@@a_FHP-~tB@oDfu{s3;dCkW$vEqdva3URkNc8_mu)GvCge
46727 zeLpt4u#m-JG@xTDoyk~lWX?AL{0xZv?9AB=`e6db3S&dFbJ=+ek_}^>e(&u3E7Q0B
46730 z3=KjE-?{1W(-RX4KHEHsrX`vqT608i4j7NdJ{%@DwfC9noaotfa!)v8eeen4?|JIP
46731 zb1!GFtd`=_FFx;@biy;SYTd4TnOMCZA5X;Mv3R;ty<RI7inf)ECzIAp?rLe-N>^%2
46732 zdE1V89k7LWb(lgJ-2+x^e>n87Gv;iCtw89}*j_n&Y46^)Pr<41NPxK|=kxHfz`_kh
46733 zc-R--d=k14&s5%TMVx4>+qpoAI^9mhiL_{27buLkB1eK!@7=oHB@z6pA?5Gu4T+}*
46734 zi0-cuS?g09{%^j#xxHPydHJZ6ck+!5Det{ACFLJKk+l2Zwv=~IHT-h_pW}_Lpkp|L
46736 zVwXF(gO34bsV-(6viw*yf88(1zs;0e{opWR=sRLl?XY%3yT!<RZ7c2~Ay`|3se9bs
46741 zLM^w7QM<g7#3(d%2{ELuAN$tHu-M(nPE8!pW9qEXTAt581UuI}X8Zd>E)qO3q9XzK
46747 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/23406a60ab081c4fb15e1596ea1…
46752 zc$}S7-)mD>9RHkqZ*J3CJ4>6<LBwRXP^sI@kCw6uvx!zHRD;o#7R22qH4P+9mb6>@
46753 zCQ@H!9|ZjaBrgW(OHmP}Fdri9LCRnghKwQW7-GQ}GZ@0|-RGQptD<{a$T#2b=bX>^
46754 zp3gbo?+FBe-M9c9spF}WX?%osz!&7`p5y5=iSdo$D)B+$@ssJ#qF3WH+km!2{8grC
46755 zl{fF5y-EBF@y|J{T6P>}g0Gv{pDQe%pSjtP@vpQ$=Vq;J@aprIfcTquXpRHEZ}Ecb
46757 zxRP20jO)Z-L)bOF>D)CYq$Uv#gzcIL*xSa$6e055XFxnb3#G(|q91mfALm!@udLj^
46761 zm~UdcCi5B-&IqQpRp!{M4ZNqR6^7UrSKwm}zSA~1vg&&A6cNF_H2Cy4bPXXl@B^vy
46767 zT>9u>GAaG&@Tlh#an~o~=3*ogiw-Ln8&fWR)N6D0fTpV5#wvGsd%3umO0-<Xnny>~
46768 eTC8x^PzoLQO=U90vZ|H)!VJ&*X{L%~weT-Lc>4GN
46773 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/34da9aab7bee86c4dfc3b85e423…
46780 z_nhyXJA3bd0Vu(F$QVl|hKA9MAfRp#Tb~?Dr4wr-tAt-8989L~A4qIXoF)7b;j5|i
46781 zJ<*FV?6d&#D}*1NUeK00*>6_}-z3~UGk@mP`sYQ*$=?Ln)@)YG#7@rqOzUOD#b=2K
46783 z(tmR)x00W5c^3f-)x#xSM?i0q-)1jLVW`AdVPTi_>jtl^vo!HmlYdh1(EIVVh%X>s
46784 zh2^eogJsV$FR_INJGl)8kDkCe{S6cWm7#E3EZ!P*IUVYV)9-gW{QeL84o4v1aQLY;
46786 za-lX|Tj3h?#CrX$L*Yz^w`HlRD;;wi%6umX->%#v-ST;7)uC{ms_d_E^ujY|n|ljY
46787 z*U=-+3ZHA@G)wQ?{8u@9T_RRn=`FH*%PY&uys@snUcMjbfAjYQJK$`O#*IA$Br0NS
46788 z>GV{)?klM*d(1LkTw5Dn=?DbJ#{!uXW*&c&I4tt+*q~}_h#W328CC7&-95ak)JSPy
46791 zwWP#ZkPJy_0+aF&2q;4cuo5c&AdxS_a~lW!2CqR!C;<3kdd-&RvmWS=I)@^Uv5T;f
46792 z@^hpO95XDNL=@i>TV#<Giy}$Nd46H{jbtj7WPNIVu-K?!nUsDcx{t51H70H{*A<=f
46793 z_u!zJ39F!9>`5UkaRq+%4g1$u-|g({(u$KjOX2rnR_Jh_k@BqRODM$!)0Z)TmrP$l
46794 z1lLU80uL)NeHD!?ghAx6gfm#i9A-!>Pl{2>Xh9pAgcl`0h$O}3C}JL2LL>AHiZ53`
46796 zq9;k-uEwsy{`{r`3jb9vcp&}((d`PY<tRG1uY><n)jXT}tCWAIL0>K=F_|gM!c=Bu
46798 zvY9y^9*sl>`B4-n#29Y!89j=aC2=$PkHNUdHu`P`z!JkFC+NGZh&}0MuCd;Lhaidd
46805 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/5bbf3712e6f79775c66a4407837…
46814 zh#A23pd<gZb-78G3{L>_!vNQJbM^52A_9c~`%nk-(1GoA5EDcL{S*TIXFH(4Onnn&
46815 z=cTQWDu04ln0}JGTL$hP+y}buJ%ym}aONGx1AqP@2RgLrUose-zr+7Q1>=9}fkAZ4
46816 zJFsYo9)jp)>5~9K@bFGM1l^+H0M<eb%>T`{pH2J96>UiE2WW>n7@c7s|K-U~s}8+{
46818 z32B1S8FVawwICM&IYEw)F?18U4c!AXwqS<#P}vt06#PHN8E6X#hi--gC^Ev(K%4al
46819 z-+{5LIvBJuxC1&Az;qyF>3kpSfdmg@Z4IcnhkpeivWEJmTKbOeYE4W3r;8+EWCWHY
46820 zJdF)ZpeKeDDFi-1jp~M+$|$i>V>{&y)U4^C)lKh@Zj6%tBp~7Rh9BV3+TVUykNv@I
46821 z#%NFb+~^)vaE&0;gQjH<LNWy*i6V>69WNg|HrtY9sq`3sdIleLykJ_1-iZ%)ZgY^g
46822 zptp|W&(`SY7C7xQo-F(U5DgRZe;bJW1ZwD>EoOv8G{89s{xvuKnEI@9+V^;ZEz?FQ
46823 z0_lZG<d2-_<Nqys{Om{KTE^slQGjwRBW86z6yEr0c6`oXEI2&Ock^cS_caS8)PPEM
46826 zBgNW)P$0A<NG!l%WV;iJyot{VF?Ip#cOr6yu3OqU5pfB_e8PCjV8kWj>b2P-Hr*lJ
46827 zj(BqP>o2c+(c>cHJfG)GVx^X%Rax7oY8^Q=+#_->WnYOdax03q(&ImgCvRA*Qy=^-
46831 z6S-TL?J%nLNL9f%<5-gT!Qd}`Q#Br&SFvMWg7<Ctdd@+0+kRC%-9TA7qx7p-O3_W)
46833 zo5!6|f1bCSu?VRbpIt)o(wbs89y3W|*`R8xp_MU8mB&zX$d~kEHhB5S-;9~H2!W`|
46834 zJdqq_+oTh2MQ6F!9^1<yn&(zq$YuLUd&EA=0%)}8lERAktDP6m3*Iw-nT18uRW|Ov
46836 zs+UdwkWip2G^-Xg^ddo&ja_7#-LYri#nPb;AF=}<^v=m{Fra>9Zx$E4qQ)i_P&Rbc
46837 zfaevxdrmcDrU?)|y+2t`{RnHuq3m2O>IR9zv-!VOH~K5yxPx9tO1Sy`7+upiX=fk*
46838 zRBL_zD?&ngYd@;wVvSGPUGI?OioDB@KB@#S`30_hVKfa@ChdQ=%3LgRe0vPWemn-A
46839 zdijD#rx^0UvfW)P-SA<jvjeGq@l-Pn0^2;>(C!<j*LvZ@(d7Gn{ta6dA>ph#UXlw+
46843 zjUQ0#wnDb9%x-7}%&;#f4Le&5@9`gJ!`-5t32h1yOpMI;pGgX}sL61&a`Le=#GoT%
46845 zWWqD$AI0>lDH_KiOP-yi8RgFjF%Gwp4~{WpV<+D-;^4z*|IIP~35!Oi1jiY2uoG?>
46849 zi{k#hM*#;9>yPrUFoCGk@Z+|xuKf>35!>Vc>rq7W?blJ%($dn?)6?DE-PzemBoec-
46853 zK>=7>Sy2IaAoqHpWqo~pdwY9%d3j@FV{2=RN~Nx>tgNlAO-@d3Zf+7<TNf4<fE-{4
46855 z3Wc(?wA4^v-$oz|4h~LDP1V)bb`m>#dwYk6hv#Nz$41BAzkmPk-8+0^WA&RiLqkI~
46856 z)zu($18)cLczk0+!`RqZds{oOxxTIrI0C#Tb#*N+EOwK-NnNDc+FB5B5QNc@k=2zI
46857 zU<0LxQc_Z~wz@VuI}0KJLb1HGH1PH<a6CON9oP-hlaicVRrz{$W(K6-MPA<A>>NlX
46858 zh;v(88wfIqL;`^t7#J8H8p1c?TU%Ne7ZyO8a&vM()*9;@+6ZkO?d|n-^<$$z?FdL;
46859 zMtTMaFW4bDIXTo#YI#}NtD>UUuV1GmB^SSX#d;t3(EySTG6gaYG6J?uc2-vYix)2o
46860 zUy9;d<sT6gqdI;MZVoLaYeW-{KWxfupith8fvhz*HD_mLkx68SoF11v(xo_}Npfd?
46861 zem;>hPy@W4Sxj#ksUnT!wG6hC`)WJ-ItC_-nklwfB#)PUq>;JOwzvHL%}KSr*V4N9
46862 z{O|?|ZS`FPPT9nU{^^$9(c-R&sLGz8iUI#3l6QV*K_mIy#LVr?wmX^ay&2*M-<_DB
46864 z51>%o@YD=E#inHH31x~Jpj!NZ3jT7e{(2dY{bkBE#0$B-BxGmn6zR#`GT}^lHA3!}
46867 zo4#xwcj(xT-JYYK*qiP?&*vUHL>pXW{&GUVK$PLJ|6X&-pK-I_Ph4}qBcPp@BE;}*
46869 zkvYq9Z_{J#7(%At7sFSYS=MwNFn?-kZM+)tx2;Fv?iw`p=jw4q@e;SIrcMauUCH3O
46874 zjEqc7N=jH{GO-ta!k0SX;xgRKY%6jatqaGJExGvl`Pro<l`G$E+<CZ^2A&HMT%?av
46877 z)ksT44^=fbtlHiQ1pHe4RX6fACdoX3Q$0bq0)9IdbW&^K_lX;el@z)T-2i7h^~#99
46879 zDc)=ocyuf`FYk0SW=2`be{;OIH;2Bg%)iQ#zC*V|oh{tf&LBha9n5{UKS|K-caAx)
46882 zY<aC{e6&2HVDOe7!Cl7{5%|eQ8L1#GT{E4jzV4MyXrjfowS?!9f`SuxJ_h7-aB?!R
46887 zc<@-hULBLQP*p!AjQ7AJ)8h<wXoW>if9a-k8z>c05;s$Xe|m5)JD3L-#i`fN!serQ
46888 zj~JoDWT&yO0H5)m;C7gaX36Hqg(O(ol8W`2XfUi?v-26oCkIT<RPMCO<V=)eD>xB3
46892 zV;q?kKL!j^MMfv)V^lCFcAquqYQLz%u85mq^c_$N!-%w4p`GvVtF?G7hFcBgi>)e=
46893 zPp>B;(h~|NtkYGBuvdGISDLO5GepsvGTqkuqsX~{Tkh@b?MvcjZs=P9bI?h-Ti2cL
46894 z-`~@DJonZkGNJIkny@Tl{)8u!wVs)2v6o7+1W%QzkTh>eustn3cA(%Q-019XQKP0D
46895 zT$JO3&-*~y<MM_UIY;BiiaSa4?cZaZ3x=P<Su{eO<yGLJyM+Q_JrS=W<=_z!fttPZ
46898 z5fM|3v25-Nk(|%@a0!TL7KSf+<+(>9BCOTJnuhc$T6<%ZM%=GXwlA}3f`_<5K>b~r
46902 zYrvZdH#)=3|JiXmQ-g2stc6wdjru8<{jdB}QfSoai+CwkemK(*fZJ6v?xovPB@5zN
46903 zB6RH4`S|v5LN(YD4&OQtAaDjlt6g)9#=-<pKg*7=zh5Aohu3h@M*Rj-GfiALj+^f~
46905 zn{W^`wBCmBvk+IF7*3NbVVNYW2d#+DNkt|wA<kAl+&p36MX-GaLy&~WHvfp|#n`lG
46906 zSGJTs<AfBY2gSm>+g0G58J#_KL-WZG7tUA~Mkjg(tY3c_+H_IQ<3rQ8;<_DCRZi)*
46907 z#-RkrVaigRZlYXP5w1fWcWwMm!Q*EHa42m#wVghsJgommYxG_~CcO?LBa4Po_L}Y%
46908 zMXfdRo>>wfu3S{y%&3OA-DL@0cKV(X6&%)QPD&cNTy_ho{XS$%{1%XdZ^1FO_U_*_
46913 zIy|yFH`dj5jd%IQx_vY3d4!KS92JmxE%`&vuGCG-+%2=t>hWMV{e$@HmbG_pOLM(9
46915 zS=D}9pF*cm-wZsR(Ni8%qvZu<uNrSC!Z*Z~s@+9=mh3v7xYlgKrFHBx2vK|=M-YCG
46916 z12s4KKHg^9J2|Qvrx)e^t-VQly{cn7D4fkRB!bPMSJlGJhIkTR`(3AxFkL6;`+j#>
46917 zmbXnvj40_pihq<9ejTT>vwl)$-i%#l^Y)u7)v&wj*HY^mB|Acxe=r99^DFc9o+Qz~
46919 z4-3Na5X6W)q%oonX>18UwH$#2Au$MszNBvoF&*;%_;Fa{wzqe2gP0C0*+422#1HBJ
46920 z)B*!A3^D-lk)Ks?`d>5}NC|@f<TwT$S_J#~qXW<({HsR(PyQpIA6R_I3s(LYuZ%+J
46925 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/FallbackPlus-Javanese-no-GD…
46931 zThZE98}%Tjf)$|(Vq&#TSv05tqSAm`s|csIQG_abh|-`zos|L8-|Xd>yY|@Af4g($
46932 z{=UEan9tmqz4!Oq%`Ym-2L_u#f_QIscKk=xN*I8C3ZU-KS+v;Gefr%@fNS;ufG>a1
46934 zWAY|m?;QGvY6BbUVMPH-G6)N~E>K%B{B+`j=-1<UWBuBj8~YDH3SJ+_Ks*quD}ej0
46935 z5091(P5S~Q$+`}7`-`8n>^q5@w!vUfX@S&jT@NVm500_5S%MbB;45vkAbKV7gFW#+
46936 zR-m%cVzLG7Xn&2p0p@c{RzeDy0RQEam!FpfnXQ{!Pe<?Sm_;lbO8WczarEc3<C_`C
46937 zkcUs3*ao9_9r|2TP|@RBf^-;rRoh@3lwZ|$_#xbLRm)hv7qTG$Av{*04Z<3nL<rWw
46939 z2b>?kaBG%PYs2vXgYdw%*4JDA(R$i?qWGNOXnn80-+zbycK=U>_bGAH|BUs$`Ogo*
46940 z7Yl?CEjthjtqKI!6ol5@oK#q`dR-{cU^OI1)<a|iiEJ1Gk&QI6Ny;1|H9r(Nd#TQ@
46942 zv_c!S!y))H`~^-xH~bUM!3Fpdt`Hkh$S`s}i6;ppnM@;T#7pLpg`}92l1frb8p*BX
46944 z=rX#BR?~XAp8kyfg5HJ44%)Ihw6VTw(&Tk@)oxenByO&HDcnrqW-2$+xS7t)3~o}n
46949 zYc`B0!$8Bm@&*_MV{jKt#C>K8q{3|Q;JRA?3!w;>z*5}J%W!w8!QH44Ho{ME4c-ZN
46951 zO{S7rB%Qd4kL2Lm%q0b65m`!BlTD<F{B|-^jh<f3Oi+yTQ8R_9Gntx>)#tk`e>zhq
46953 zajV}8zSX*MJOhivzAAkNQxoulozdnlY|hQ9(2WjkF%Fv&mS?(<a^&_(-FW}@GTmqn
46954 zm+BFFIH(&hwqo5~riR@QnG#;k3<s=syt5<N)bif%Q(O9E#Y}fHC6W-1POW)=xgOE$
46955 z%JikkJQGITA-o&&CG$!xQ?!J>T4&HmFwz~)d~H|PdWWLb>58@n&k&xqcuvG_$#@ns
46956 zZ5dm`)Dm4?rmIVJb&0OlFtwVgwM-2$wOCipUUPR1Q?d$<mzuOMza1~D_~ra8dxDX0
46957 zA<1ztsI4#9<xtG|?Z$jZa-&x1=y=TDh807D-Ez<z-QE;7M%xuaezgo%@bAwM{O&k$
46958 zpH7E)7_(MktlEUT^H%&$JOu}!3r@lrI1iVIjC=72GM-E)9+HRexDxl@&E!6^gS3$S
46959 z<R$V~(oH_X{q}3hXdE3ylW7{ALyKu8ZNT029=e_Gp>4E-9-}Ae8G4>ZBv~3J#Y@Rj
46962 zyGa<aIHqMh6TQT5ydqX5=nQ>8j}_)o#7YIdLeMJ(Jy{s-6?B%MCkomlXrG|n!aR!D
46963 zyqK2pO!Nlkv4oA+2lP#XPGS>;UhzUpf}qC<dWxV^1nm@bnxMxBdTI=Ly5P->X(?pW
46965 z-oP7~#hlC=<7LHonZkRqd|!+=C&pV4<IRon=Er!sF<xGbmmlL5#CYR`8Cw3rZ?z80
46966 z%dgMX2Xv933xxOM*RzF|`GQ^`=o~>W5_F-U7Ycfw@U$&2kwwlA-|_><v$of3VP-V>
46967 z^<((0#8kf?)BIba;rHjb#Xbs8V9*W2b8r~b-`C(cybY(|15AK>;R`S^{T@WVhuiLT
46968 zL?@%jO_&5v!GJp(H{cwyfaH@xvN)Oycahi0N%AiF05{-&k&EO@Vq(&3$BlR>9Zs*O
46970 znPH49m5qKgN!xe$@V+IT<$iy8r>q1qqG7lRJ9k-;aEtj`h$)u)A-a~$)0Ork-G5AL
46971 ziw4TEOvz+sy5eN&7^aS8>L`qo{XJIX4EC*c2K&}s4UY;2wDp$0;B4&+I}{_-vs|~z
46972 z6<8kVS%&5Qx2>`)6C<FJw0{Ze6FntXpN}nls%I&dZ||wb)-U#~VT#}48r$oviU-U%
46973 z>o(uYu*!=)#n`hm8otNs*lDCy7$c)`KM9ioW1|(ux0-Pn!AC{gnyoxwC#DDmQFnj1
46975 z5&PQvwYu#s^0`^sUb*43@}`C{dz-fGw(piVKC0dS#MZU;i@UV?ZF^-y*{yk;CwH&d
46977 zcAS3XhA_@J8K3+-D--JM!pW3$t+Wc9>=`TP@<)@bUd(~sZ^e}8v{m@6Jgme@%Z^$N
46986 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/fonts/NotoNastaliqUrdu-Regular.tt…
46991 zc%1Bg2b>$l`S#3gRoAMmdM_vGdM~!m=iYn89b+&CY-4P|RMSEay?2rjdJDY<LLjsx
46992 z5J-T8l0XP8Ktck+*r)HAm2|#yA%y%(zVG*$du~^|JM;E;-kDh)gc3q*WD60<jPYZ}
46993 zj=TD$Bd#NYHjI!o89!tC>@}uyJ|aRJKCirb{Oq}-g0DUkC&I<QBf^T~r_XL^zU9%S
46995 zUyTd;O^z(ud+<5E`k;-6pRa%a1$@4b5bfFn*R5P3O&Q-zh>qLZa|f+Be7$%c`w;g*
46996 zlf>7qIB3<m7d|Wz_Ooq-$c6Rm4%v9*K7WZ3_KO-qMtKOAjS=$V5uKZtIfnh62*P`~
46997 zLSCM{CCiVmzWnpe{U>d`RQr))!$%p<@)m^uR@QI7nGlzy|D>-R+K(#N2mXo6_!V&j
46999 zgR-8@!R0=FkNMd%TykjlL^9rZ{KP@nNP>iv-YWM~8d*N?KMBVhfaMib&zDwkLj{W~
47000 z*RKKApaXvyrLW59--;t_R{}Ssqkt1CxTJz}fKMto12`Mlw{p&L3UFlQ{1{+f<^JjA
47001 zwsZxK4*~0dD}YVFUBC}3=T+QZ0jHg-&^uvJ|2I_Rf-Gdo4j6K*sNkJ44EZjp^tY*^
47002 zw?Vqvt;~aE-JP6g>?)hlt}4@to#e{xWRoh5PX@_!X$95(zZxXZ4=cEFkWJpK;DZX@
47004 z(97D$5*()k^+33S<-jsvMCIPh%Kb)QJ}Z&=!t*$GATC}dqgX2$LC+*-v6yj;)1ycV
47005 z;Kw{*;m;V)(b9HyAAok1KAVj`BBY(3K>BcOp{vMVl#v3vh;-A*#7|pGZ{ym2bU2v^
47006 zjN|uc3z-f~VRrClCsSw>nPcGhWiW<*en%EC$jfYGe<4Z2;$jk}lgKJ@GU;?#$O3ba
47010 zu^YP1lY{6zX!}v=Wdrw@enz&H-X^D`?_)~c<YN*cuYmWdc&3kp27?`oYri8Nx)S>E
47011 zz$aTkpSN2`yySB9Q335lzXj;!-O@|sHk`i#e2IIX;a+3uJp)IV-eYmdcpYqbQ0YDL
47013 z%~nBQzeG%&T{@jQN>9==O5OBlr5D)CcrJ<0hgYs02wgc!w-|W2^ftSww3V#~Kl3Vd
47016 zc(U}Wu)g#vdm7jPSWE93$2QzwTG~o}kK+~Sql&kIncyP?-hK&r8^QaBc!vAMIvg*9
47017 zuKNw0eZdY!U)`nGA&c>uh@}%a?*{+4#{HBZtM`q2d!wIoA=6(=+vyk3$=jt@X-nxz
47019 z{v)9AIr@9I+#fpz0I#eL`r~ci!m-lUuqUTip~1YkhyGX!*U(mYm<%)Mim)qqVPBws
47021 zIIkyyZiOGtBlF-Hfb(JSvIx(7hHHnF-V~hZyT0@y^W(TLa64!m1MFX>&yNOd2JO$d
47026 zx6-E&W6$IIT*T`<$aVz!S_?jo$1`E*;OBVeLBIw1&%$vL=)a3LW8kwz(El->e+2fP
47027 z2%r24G4un-4^U@W52U{I8)8BZIUe-VXuk#hTv~dJEeAiG*8BMUDtH=!<7vPIz>HYE
47029 z#-7D-4e$nNwn8=s=uJl3<4e~G*TWZ*kn?lsd?NUs2Ks-4PQBn^6)*?S?vMKm@cdHH
47030 znv3>m!(!m!9z2_djQ65%<Qy^yxdCx1JPqIGd{%M-j{)xgMjV`1TEJtK3FUY+;(+HP
47031 z<PhY!w|PwPI5cw0?~z+}lSg>`SL4jcT|Djv<&}Zlf?QP1FGe4ilw;Po#-BqUM!wli
47032 z|NI$)XZ}nzFM&tH?i@UaRC(om^Kp>p&2>h;9wJATPa`+-KB{tY49ZtkzB!LZUgCW6
47034 zn#VVMpO4vw{~_OTdmH|R_&4$};>3_2G04Xh!=ERV#~CB$0Um=!F5*6!uEfKjd)51-
47036 zqaNcxJvLC2EiBh$)w--wn}v9N#%nWPmsM*rUXK~|T}$a%PM6c<FzC!T=+6M!z|S*-
47038 zP~mkzN3WK3QRR7n_t|BAaFqEh-EY_dGRO~+&#QeI^5NX*tIYpx)pkbPLA0v;@pFF7
47039 z;B^x50`9@`R&`U+OQ_n0^MwBI-DQ6M@BT9p!skE+o*}1Hp=>87a+p3K8#v6%hJx#X
47042 zDji#{>nX-zb~bWd5#z;5<j&t9&I?9;`ZmVa_t<N=w;K1ZMQ)1X-WuHdH`=m~aO_4d
47043 zTR<MbSpONz0H0wFfOCwQpRrGH`~!{!5(6d!vw;E-1loWGpciNb_+0&r(j%p-OP80v
47044 z3!GEBqI3a%uPptrbZlvJX+K~Mu-;ffF;<_50C@158b?t$8^;UD79tZL;cIURk|zzM
47045 z3vn=<EFnjetI18|Uh*LM4f#SAWse+|<8rq=Ql2C)l$Xi-%ZJFv$*0I?$>+%D$rs9(
47049 zd|Be|xIZ3_cNu)$xqXDe*H-XFOMeGv=My5Pp}|uKU$NSU)WQ3rrH@L_S3`4q5(x9N
47050 zt$md%mThltSGUVJquXBC_KR&>w>`TJF}Uq7+djtc`+<A5-G$$;Rh}P(^V_%0-!^yK
47053 z4-g5KyP8~1t|V6pACNoAkH~Z6=a`{iK`tZBBu$!N=|1ucatV2j{8kt#950+GoFsfl
47054 zIGMZ)FUUj7-1}=u3+Y5gjl*lR@Q-?O9xQPTnMUp)sHMp3!hRSjGs6DD8sPxpK;abO
47056 zy>P5>gRn(7jyx;eB-|_(;Da5)EyAs$U37>}Q6slPm$xCqxJ8d}mvFamkMImp5K$`f
47057 zvY9+W9u>V}Nc4$e(JuzXm>3m<Vq8p!x)>32Vp2?zw~^J}A%Cc-u4XsjzOz>a7XUv2
47060 z2kZ;L6J6-XjW+HRfv1szmI5CT;>DQa8%v1p0se&4J{9;b0Iv%)0Y3yVJ_W&Z@Ij<|
47063 z_6z{e)nPoU!?k+k-+Jh+9(_09yx|xC{4}C{<1YwlT0r3Z0BqM12N0#LtpN1aHiwXQ
47064 zWaxJE-;Tc8`w8hl#_4#MkWT2o^DRQUAY&Kw)U5!B>mEd4&jbMD^RO`hY(DH0LWb9r
47069 z<H0yT82+>Yv^PL!hrmA$f!#Mo0qA2R=x%ZY*Aa5)EJ6-b0n|i?&jwy4Wb;0R9D(uo
47071 z=mcPc6A||(La!&GkCToC5I^6+nDHIx>g34)eB>1Hek$~EDwKKZ-2h_vG{}D%;^#Ej
47076 z!@~d^uZNDWhs|$5-nn5F@FXEO_5i4DZ-jntLJZ%8JaRMQ=H{b-e-LsDWVjXWZiSED
47077 z2HtOj47VW`Z|?=b)9v8(j$r_N=njmqcS8Sn!gfDG-na`n^DgA8yWlr><C(jmzk49p
47080 z7=H>r`m;s=dG=?Bp{Jpfr+-bzGw_*b&LiYm`0lgt^Jii6=MDnkx6dQ5J`Z_*z8Zi}
47081 z{{pf4OA&zI{1VT-fZX^ZuKfyndI>)G62_#Lk&j=7-~Sr6{!Idaj$c81y$ar6gUr18
47082 z`7QkIcNlM8M_zpc_Iwku@D|2_-(wv317!aL_;?#M-hqGo5xRXBw*3?Q@K5le_mFqr
47083 z$9V7o?D_#de+b|D2tM`^`1~{Y`50r>$H@Pmz$ZUNtbU64_zPtG3&yp-K19f8u<hR<
47084 z@82;4`yBT80(^gg=l_A&_!4ot6+ZG6d~+LW^=-&S+rA{EUq_`_5A>s6yOmH{13XJ8
47085 zn*sckP~l)g#TMXigi7BbRQ3Zm5~>UXZYETn2Yf)N3D29JL-BP4p_T^V9TZ*X5o$wQ
47086 z+Ybq~PXhi-sAE3x3Zc%!3DqLN_X%~?0(jQ#1+F60GY$BhQ18)%`efiqLiG{AorL<)
47087 zpZ{_~13ut*;1fcFOMzby8X5=un$Yn6!0!o-ECAjlG`bx43!yQ{61M_4Cd|M&0O%yq
47089 zLhFwuv>^ffhR{Y_YqA3`650&jS`^?1gtnre)}IjChWl;kuO0er-%e=96@+$n0ie}&
47090 z6rtTw05<8_m(XDr-~mF1L+0UM5jp~T>&*i{CUhj^9f|gRcM&@3076H{0mw22Ivu+o
47091 z0KUeZ4E%}E@p}Q_cLMY|;dMeMUP9=kAOIUqMxRr_<CLEhIu-4v{*lmWYYCl>`_s|)
47092 z478a6+s~W};F($AZ`N4=<{`7U0DmQP&JqCrGZ+3e_jE$%!Cv#=U-L%;@Ph?+6S{CE
47093 zp?jqP&|CytFCGKH50^Ye=u-5z6z9v<5V{<?SOGs+aSfq+F9RMUbR}r6ge?0o;7|ZO
47094 zu7V9#Jw)ifMF9S_FZkK-w}h^S?e^~go*{J2MnVsOe;%-n&;utDdQc2Fj?lF$2wexc
47096 zlK}WR>NY};-c0B*;QyHS2tD=|Lbt&Gx4_oN;okAE`w8gh1o-NS;Nheu06zDfBMCh@
47098 z$Z$SvaRGF40r<TTd|d>aU3?v(7|-aXkma)VgkBE$uK;gX!mqA^k6sNuT?3x3MceN!
47099 zBJ}%+p&xV-dL4B4L&WR#ZG_$co!*!t^d`jAP2lTh*!X7X`WEzgE9`nJc)RUH0DgRX
47100 zHvqfeaVDX6QUH4V(J27p_pXHibbL2#fw6_&177ce-1klekVo!=p6=HG$az2HdH|mv
47101 zfL$L%u6YPF9|Dbs-X`>6*#BYZ`4N166!v@c210)fnI3Zixb_(6KaPHX0v-JXKKI07
47102 zg#Hw^`YHVXN#vI&VIK@D^eNcvDde=DZ2-0s`t;likhh*eUU&w6`7C1oIkb6xBmkfP
47104 zYw(rVVE5lXLFn&pBJ_3SwAXR|2I#(-1;E=|===9Na1x<^5CQ1!ZP@P}_~$#|?T^sG
47105 zyPp#JC&>8TcL{wT`SgAG)d$e!hc6KN5$yhF_}8BwC-h_FsgL0kpIl4mr?B&1V4J_(
47106 zOXy$W@1NoPGvuVdq3^%L5B`pP@j3Ya0(tBoKO^+Zj|ts+2ccg<-fi&NZJ@UuaorC+
47108 zBFr&`FlQ}c+DyV+mlEcFo-oYOm>2N<j4*v4!u)lF1&Y8qgoR!pEPOO!5jSB`6JfD7
47109 z!s5pfmbjj<<T%1o?Svu6v&<~uZNjqPC$}$QH5&-aKTB9~0%5i2v+fYW>dgS?H2{s^
47110 zxmf~kCamRn!djOT)^-qK?P%MvhOo|F;Nbrrbj5*R5Y`PH_JH4ElYy5A8@`0F5pxLZ
47111 z#pjW;G38!F*r=6+jXr>|u{RMm{zJkhgn`w-tAtI&^@)EYY|;$i3Bo2rH<N!w*c9k^
47112 z%AX0Fx*qtPuxUpC{~&BS?oU4v_=>O@rx7-j0t*4?cvcVa7-6$vo7vFMoOu9voI4%3
47115 z_}>IQ9130zgIy1UFCKm$VVf@_><G|3@>s%-+DzEdu;($*!?CdcmbHW(2j4j!GMw-n
47117 z?+3segq;stoR8-&fFE9felLWbF9eN?aJ*OsV3UiXpNl^s>=MMqC9v0}BLMJxX+L3?
47119 zp(Vz%&$lmS)3)C!-tyJ#IiiFbFj!hd_7XSpwOL(j(Sjp?AO*IfU?{yst|4*hetsi|
47121 zef3GXPkIEJnt9U%8lrhhi_`q(;-iliH-B)Ac;trS!w(e?`3gf>|4ASet3I9L&+1A-
47123 z$YRW7%V(rWPD^8eDlHc}$+g0EzA++X2O8-EZBw`?D^q=Wk2#f8P5zY05)R60O>Txs
47125 ziH=lMRBDpbrd3G?6DF<JJc#nUrg%tDz1a{8Cmf-Xw^kW(hHTyjc@Q7aOld5cU-}0(
47127 z8`rex2-<xOlEF^WA4lRYE$zRNVB$hTTr0}%wT_<k0eyKrvNE01Nv9M}#~KdE;J8d^
47128 zw3>>Gj&xK~$H(i-R10a*8MHZK0bzjb+2&Z7sh(^|Xo@+qNzR4PN3Iqxgyn0$*7o0k
47130 z?fI6iSZQ(TPvlBEtSoizn@T;iDz%<64@m8dI~-j5F)p=e8lTS|#)Y;+`*tH12852)
47132 zX6_1?0X+`Zj;xe_E8c)lv!|Voyv>wJ$)-X&9FB+Tld4yD*-W0i(~&Y8q6D)ZXIl3q
47134 z7mE06JZc~y32D8@>~U*;GxG$49>o=K$nm%%VwN3=0CW1xN+>AmVY?-!yTW#@VAplg
47136 z)<7uh2{rhVn!7o`yG8K+tn?|@ulsBCyWSV{Ifrx&{i5&w8@+zFrK(^@A+@uDzk-5G
47137 zP;ilSaK?A${F`XF*BNnHf-bJ&P=Kpgmi&PoDpmp^v7%zP&rH3Bii3998Fe|s13Fei
47138 zL1BoF{ld;V2DAN-lTzuGGPCY)$!yGN4!ZZqtTUnP#BBfLTG%GrqaJ(AWN@o_&1yKn
47139 ze1o{P$A@@?&*{Zzx>eXnb+MLsk?(Tt?Jdo|mge>j-Of_UY&MmY|LO^i$@!Oz8?j%(
47140 zR=e-2VpC6EcLjuvrp_52f6CI+7c`kL(JU3vk3~!j>Ss_#=;v`ya7@nHJ=#BPR@_!Q
47141 zb7pPr^oZMU^kX)A!seb~UKj6Yj<At@D#nR>C_l1X?&e}oq%Rhnl<e#YTAP-SDfR>%
47142 z9$}+8womg0O;dYaP8i@Q;Q;a-F#u=JRy*N2g!ct~qoW+}siV2Qy{(m>DbV<lCQHg=
47146 zB(iO-BUq*T6z|>ZsajT%<>iW+wou7r3S^5etKTe1c0_J6?5VSvRDVNVv{h(Qf@wv7
47147 zx;&m@)^By19n9|axb%ok^2b6RTa44~e~_G1`Vrq&tkC^tgqb4knR5Swaxf!{f-0Ik
47148 z?qUw4Eg<bNNX!0c*kg-=^f@TUE)Wmosawd6U~ma!@HS)2(S7<3CI<6R@#`GCX`z`?
47151 zm@R0%-GOAvFDi|7T4Ew^-T!w|gQ0H^t*LCcS6cV~ooOR`^jJD1C{1-*5>v_28Nw2B
47152 zkT{LFNYqe`0HeU^;A%XII;znFjjWR_xnfebs2C8k-78nAcAILmDZ&!PoJfa6TR?H8
47153 z1GTwP!#AidtHtC{Wh?qWTUbigi_?)Y65OA8-yMc#g>qt)+nPH#4WvY`XR_Cs3umWf
47154 zL8&$&sTN<-tf&r?Y8RG<o$+>GB=43j$y7)%1ua@8kd-By>QWV#4HLrBzQQVUir7Fh
47160 z6>~L{o6y-Y!tLZxaW;PmNicFiIm5y+D#OO{EHkR8*T+Q3=&!58B-~yzsYxr=*h5;m
47163 zE-B(+s@W{sbkSosyG{L1Fv%H9_2_z3Rx&nsK5vQ)D|jsRU7ezuEXE~^6w20mU3CFr
47167 zD0P&7R|*t)QpRKxY!;8->@?|ar|7aLqYiUWIJgjSf|@Ow6<mpgVDUGn)Zv8E74#%l
47168 zWRH*lAv6am%A;q8uJGik8*V1k)ylqhdoY`KsCJ*n?##8O=t;I-zp80=t*#+!R%;zz
47172 z64s#*jA8_<Buk$jWxA5hL5AbZ)Ysl*O+^9`49vZw6XAMc9rM-?FEXF*iNyV4Lm}iV
47173 zz>V(0=rIWusf{bQJbJWOvH>D-U=TD#vhGaK8`Wy#S}dx$gHB;pE*We~MT@?g)@I%3
47174 z@`l{jAUgb^u#n6b#}ErImfc2&<zdL^&ghL68=5n9wGBDV8h6@-g(HVI4;$0j*z1qP
47175 zwnXB`qLWR+IC7kL2}xJRG(*iD#u#6XDp{$HZ~Oz|t;}ma-0WfIm^Y~i0+S>O1G1<J
47177 zr^jqE$2e2{hm+$<&tP=o%O}a*@HCjE9UOJ#D-1C~l0=)z8DbWLpHR`Cj#t^~KU{V*
47180 zs#_2>ds0+vvJ%)XSOpePJzAZ~5^xAgP0H-HSbR3goKFU+*`Z3Z`$9!iL{pe4xawwB
47181 zhshR@ZL-z<|DHG}2pMFck1<Zvk+GFvYBt2#Q!wS)JK6_{WX$OG%6P7%AWk}1=VDqe
47182 z#$?JU+{mKX1X)BN*^6P9)1URlBNlDCL-nOwZ9%)D`$RcqwxE(|Zj*|ZjPQuST&A4b
47183 z;LO+f>}H=$u=KWRF{hUFsNSZ$$(E;*-)A!AesA+zC38?`KFuB#W4b?+^MsN4a>7yM
47184 z0Wo6C6d{cv2WG)L=F)r$Y-I8c3+-a-{tJR8^kcD@EnYK*ny|y^6lKj6^VJDQ1?^xv
47185 z8a7!i7N=isYPMN56MTHo{K8qCwGEzN7@`lEVOSe7wS%V^d_wyHCbW<LD-&AHmfCqj
47186 z`$1(wYxA`3GNC=CG~TE`oxJ)q<`+8(<n^khF*PRX^@}Do;5#`GxL?jkeQCGFDM-GA
47187 zb)wB>6tHhsI!NrMi+|py`=1gya2KlIZf*WQV-5YkYlnc6CH+n0!_wZo9xo4?#w;Aw
47188 zO-E%)dQmj&jyR)=(_-_AYFf+mH#Nn>)8{12&X&$VUQCPiT3zx#vZw!=RYP0UV-C7)
47189 z5m$B9Q1<)3c8Rn9aeLTltQv-F)m1}N*gs^|aK{>_%UxYHEUoCjo19izuQBSE7GwIn
47190 z=k*%pN}B7mQQ26nvH8ui=yW+Vsj$81F*(P~%8s@6-z}@DdO@<;-Nmfm;xs!1zE<Pc
47194 zBKcfjSFyx)s#g??f_mjYsj~h5+v|JWUjJqrE57Aps~angJ$e7P-dM49j~dumsh|4o
47196 zQt@S)jU5$dWkaRO@oo20b}bGE_EUCO9R8Q@c0}5~(QZd|%b|71vXtSL-)P5y85<6|
47197 zBuJD-|H*!X=F-aB4PCsN|7N=ld#>k|!TSx?`gHB!4To>NWze^3E#ES*TX)_vD2(mi
47200 zT}eG@kg5&rAa&rb#CNR2`-ZN=f3szH)vOMz!v8O<ojYV>xmR!NitKsqJl3An)jh18
47201 zGk>tW7Ho++`C4#dSoYhlows77_-2deZe5Ch!?klNusy7ugR8-7=jVu<NQSiRoTM<j
47203 zn=>;-47O)H7QHFjB`K*w{6bf#qNM+}1@v#V2sC6_>ucA5D66aiDZ-F7Ag#IPpRNHF
47204 zJ%iSO9Em||K+LIIj5VNuWp`^p-*{m?(drz!u%6dq@#@05#r!o3>z?YudX$w{)_L-+
47205 ztgKs|9;dOk?wDLt-(6i>S1fj$vAS+)3#425luoEcvMZn_CqnDLKc^czD>K$A)WU~S
47206 z^`eA<-k1(l2VtK_s%`aA*6<&{tRFXWz@TM);p-~<9V_~bDGs|slqJDjUd}HDb`<u5
47212 z?fJ4_F$W~v5w@x>MRfW_pVJjMMb@KQu-4Dt@<`aG1e#Q@DB6Rf-|h<h=P<J44b>X{
47213 z9$EPf)s8(Z-x@(yUAwIpcD(Va1#Aw~DCIYRWic2KjkVkMyhrH})4m>rmS&eFwfq7w
47214 zf8R5R7K7dZ4p-k!O$N1sy}7b%>$HjDPA{jvTISRJKfq`C#ngY5(f_8UUbFc1OTBy$
47216 zYsn-fQ!$mP7j=8c?u<HBr$|k@y+=zp(vogUYQ3*`)0)XyNb(n}9S!mSAWmrMMp3VD
47217 zvS&V&ucN$YVn*RThHR9qm}xYU-fH39{<W3&j><<EQa5CRbs9B=-7!I;jQ{m;i((g1
47219 zMd_-llDGezp<kc)zh44cdJ{$X31Zr)=i935ce#OjSWe`-lW|?3TF_Bb)S4y>wLWuu
47220 zcRoRVq7-Y;i+$Pus!l$jFOW^_QDgU^JnJ;PO&?r&^3EhXWuhW6*=&-fs3&N0nldQE
47221 zP(-{Spa#|2I^3$}r+$woz*=jBR4g0%Z}0tm`b%;ldju0m-g_&bF&n)jP|8!(7R93s
47223 znzWEtl}(-iZON$?W|DGs;r}R3s(V=JZ?K2;^*dOyT-m=0#CGgodEDjwD`%u8Ro*kJ
47226 zkd-bMmXM>xY4F5!xuP?E%8L&M(Ws#32CcjwZcEzj5qndc!{<u+Flo=`Q|b*?tEQ?p
47227 zyRbyT(P2vTX6(^G+GX}z)MzrQo@T)$+-$NKGpPS*ij;H{l{`r<;xD4^6bDB;lbRZd
47228 zh)OCPOQ~AKu2>Uc!5eehGCYpDOAE-8r9bh8`qwnPey4_3ayyyLRxuS-y@Lddzd+eU
47230 z(*I^85~qb|G}3<@KU)}y#QL`kTziv07{_x*q7{869*xF*QT(%MPJ1*uK8B|`mPTW-
47233 zH(;56`rfUnSZ>kk&Ex9lbc{aY`^$Uw$x%A-m}Tt^Q)@@8Upih-FYZ4`_6+Nauba2=
47234 znHiSueBY{lLNRm7LhYv3q@HjIq9-4=m{W13W%2S26I*7+=3KOKblu|dtFJ$NWHhiL
47236 z=V){W(_TG*!0qmx`n^j>wAR`L-IJ{A?|*)5msyi69#5hpiway07jHE^s=EB4kjaxB
47237 z*OZTmroOnE{)JzXyn#Z!qM-gK8win}q?<^HPizy(dREar&n@lg%B)rv#av4{(2V!I
47238 zee|-uHueRVE}h;zIvP5cS~vgYUNf^hF6_U#|H3V<Wz)mM@|o5x?nKeQ*Q{Cf<5C^H
47240 zOscI_V-x8nvlLv@-~Unn`=dPTGaa!RtCCa46vwtVHu^4Q#pdR5wcge8adk0Q$PPNI
47241 zOTQMcrne%S@c)xhvhuznAG0e1kg*C?Q8msg4#hwCd=I+wy1e@7yT<BvTiUkzd(-l%
47243 z9J|+-D!ASLNptz|KsJ;<P|js_2zw$y{W&89I*{9<thuE*-BAsT>fTmmo3=c3;zwjl
47244 zh8=U*-tkV<k*;wI<|o@nrroBCY3}T^U!M|iXZvcrg~oJOG*--qB<8WCFWR{A%M<(m
47245 z;S*F8ULB}2G2|(H9zY#-d&(W`4Yw|x8uZ2Ib!J;bvfZls8gyqd7%VuVV0Sfnf~M(7
47246 zd^8(cgFI%hjXClu(UhxO_=HyDH~Z=mEKu-g`q1i+rG7erUCEcMrCfWpQ0!=l3S8}|
47248 zLav+@Zu81+iydh|vPv?ujHnqlJK(d{&7YF-iGo2RKYjI$y;D7HO;%UL9Z9rK5ofIH
47252 zi~IKK&5h|<Q-(W4TW_>0?+gbuZ#cWOHWpAtQC)<PnNIxlT{a8Gj=|h~=&9sfr?J^k
47258 zWKQweG-cRcG07LOs9J4(KB~y(cs8F7E9RQCIBmm%X@%K)DgH*!)qm)7Hr8vY{SV)`
47259 zBoLarYQH68ov_q$sPZO|^p};%i^5cLU?r=(G%E|u<-J}bi~H!2R<m8oO^6T6>2-bi
47260 z);6EO9A-7}-4I-%==10O9hm9ga7L@%-k4uFy=lw|%i0f}9PXoQO-k1YJ)HNX`P5_?
47264 z)BH8gRC_L-v&9>_b2d+VJl;GdKYEsy9g&`R>Ua87HI=imMYk@lSvt4Fp*0*moVL_w
47266 z>P_)zV=y<P#^j5&-A$$GM=y@p$LEXFdovc@6^ctVV2uR)IX#&a$24Y+1KpXWui%mQ
47267 z^O?GC%+&cnQ=wg%vMPpW3aO-0dCl`e4`s4NwOBp5uI%c9k{B6NLcUZ(!eJM^iTX$j
47268 zQxuC;Vi-n(#isG?lb1Nt(?%E0X`3697Pn-3T4UZ(eRYkd=6v6g!wwh}?wNlY?(FNs
47269 zoys=r*G7BqUUT-DU<7+3vC)s%@qE0<B<qD-^^FF;JZ3ECmfxk-ku2}irtQ7=R80}x
47271 zHj)Tre(A6DRfM7$6@A{Yvk0-+&=olMkT(V|DAtYXY#WxVn{e$6d&*~yh7~0f8~=_e
47272 z5|VAPpoCf5c)Pah{6i1iG}(4~{~ff+k<e6oDk}Qpu1H(I-xAVA)s+egzJwNUAtGmj
47275 z`26$5pX0ev)J-p<v-lspa(5(@Q3{==P<L-HZjC6N!>oeJOD=uT_v>YOb)j{?#_ZU!
47281 zEDK!-R(mV+gYq!Ir$kVBTRC4=U)HWJI2&B*x>qqy_$t;^tFB5mZ(RoyndGU<ceUfB
47282 zwo~!Sip6hknb#@^LaJb~29lboecr>2ro<6rO<iNVRJE?XsEC&N-QLcwT2s$NisF+(
47284 z%V)gSe%-GQpMCAw8#AGn%N{@Qkms&xK?fFeFdH2>%fpc|<aPL5T#B$ZYef+aU6)=m
47285 z<&4)ttyet0|H03FuO&3A|E;^%{_;ldvBW|zB9pntc2qsqGIHeC-6?ISCMMA~en)6a
47287 z&C#20iQT+5dh^ZIA9T=6#vv4o#6~ne)ue-yg@V3^z8yk+8IKy!MJ4L*`jEc#sXJma
47289 zv3R2)LVIZ~d5=88-!rI`PCFLyHn~Ec`g%t;E}5n`oNKGC^M>jZs;4%=8pkHrp>bd7
47291 z@)G-mH+ScTl9mtDiur;g6&BU;$tL=kb!1A<$Bfs}Ylo*M^I>%_aNbWI=JUBS=ehFh
47292 z9md><cX77M6Sv4=-80i%Fnhzz=h|Y!+zy)(@VMNW?u0FrO3avnjtay>ULjBII-NYa
47296 z4(DsEVa=6~*aJ>`Dp0$0!qN-p_a7lRTSIGtqhf;EnxB*8e{$t*LdaM2FMJNuv^#DG
47297 zcpbuyMU9l18A3}-xQ3T0L9_c254F&h{Pq2vmK}__<?Wetv^nYu`_)LyGt(0;rc*O#
47298 z#BIe^he->ET<%m4oPQ#0`USfa&QV^t9n_0n{sNIQbWFcEACEN0-2Sjh%d56boy={Y
47299 zPV$Y0S#<AYA)cB!Jz-0CxUDWnTG4Fwrg;CIgZ7W%6O4>AsQO^i$SwvQ^68SYXUXua
47300 z*#nf|Wpr=8Us-Xp)UX{Cs$N&1X7UPsnER@GkG@LHo@}`nJy&ivojpL_5#Hk}9iohK
47302 zw>24;YD1>c9qcM=s^D|#@vzC!?9L1?9Kt8^>;d{Hc<}IwbSIOP*=X6_#R1+tKF-{)
47303 zQZfE9;Pd!0dSWQA=8!X_b7psU4IDrKaPaf;`%rWj5u{zN(8Z9-mW<2AusXWE|BF4y
47304 z=xlPQM-&ce9DKnLnvywW7<rwgj4Uze?QlK?zpJ^vyW5#aPhxgE8<sevyYJ$W_PVtV
47306 zFNo7K(1G!V-prtP(>Zx%CwAz*dyi<-QpsqMT5ZCEgPB{>w|V@T-L|Iv@=deSrgU6P
47309 z_iu&-q9^UDe#mq|_66W%gRlT2dLwtNK@;1`_E>e%8j=e`H)m+rEqiNH`DD0tT)wW}
47310 zXR;>r<j9(?Rf2A-2|7{{(Ui^P@<@o8VSTl2)9Nx4hoxh|L|77C*+^>G0mnOI{a-p$
47311 z9+NK@X8yFtm5&=Mx?j-?=`}py2aU{?_1cr%&f!z%WSth(Bs#5`4qv2Rl1CkP@I0T{
47312 z+!9YX9crLKkBuiP*`Lgy-=nAD%uA9`avK?qqGu7`6Uvr%ZuDgJ3nK6#qqc5o<|f~9
47313 zy}Icm>&D7{`L<G7W9Q9u;{mP?DoAdJ*DD6%R;woz7-K6W?WSNzJAQaH?}+vPG1lEv
47314 z_^~MzbV+J7>V4Jb2?r#>q3bKXR>`7LPhD-Kdze|W8qM%jFkvyCkrGzfqS$@t+#<VX
47315 zxWfTibog|WO|zTAL6>ZbM!bp6;h`FD#8^68Eo9go{5wm=w-2h{=fH`_TiF6anW2}b
47320 zZp`R;y{c!`%>H*ro<<+l-MX8K(P&oC;t9d*Z%Ikwi0xbdCB0Iz3je(?tl}eE$4(kN
47321 zau*R-?aBwb=q&wKY!p60Dk!h2RWob3F6`jnZYf_br`>^9h05P@X>R9Xp_gAmR*Y1k
47322 z>t#D-+fw|YZZ>k=Y<DOgRg?xxN25Nzd5(4cq@qd9j;!lh=C&oGkyxO+kZSeYYl8Q5
47325 zU$E^c?MLE1$T(TdvtOn%_0kqPlRie@U|nnzJBeM)ZeUNb->~<&-|~TgYnhKkvN7}y
47326 z{an2db(A;7Xyw~g3isOb4_}86tA9w(@K)nTs3tl-moIN@wsj2b-Bt|3_YEpjXs&qf
47328 zmg?hP-=OW<GJU&XgtlD$ZHUP?5B2iqV)>^ktzy_=ci)zwJ7^mODzq!_&<|dIFjg*&
47329 zHdT#PM*M-FvW|vin|34JRMz47TJXSbVp)Jn%CWP|(9yE`w;gv#EDc_LlND*l7nF8f
47333 z6DN1usI$)R9X)BZuPNY)S-f_COtS@}UT;@4KdxC63e$%j#_nNS=a|tU&7*tuShOaV
47335 zE3+qrr(JH7jahBwZ=7ka>Ye1ijH-!Lux<2$VXme&pQ(1llzbrU*HQ(OOAWdLVc9Fl
47337 zU6O5PvmhuU`;w)4i(;}{wK^oTE$Y=KwF@kiNn6Bx?Wg-tYKo`)Eq#l6Bg@;0%UXl+
47338 zh_|M%GceUQqQ@Ke=_zX<HmNB!V@lZO!CW}g-V@G`AD0hABY`RVWCI;F&XDGgXmidT
47339 z>5W?gA*(DYFr8U;MrX{K=yOt9A8i`t_R~Z$l5tb!Pr4<EiFUiF*YxDWwN6u-k7E(Z
47342 z?U*rhhO4eIhb(-2?0Lf_`_h?T){Y)McZ90-Zdm^K=yOI6eoR|A&m8I6ch2bZzPfMH
47343 zp(7XGvxezPB#Zfz!<$WH8k1qCR+qE|vZL0_oOAYQ)m}4l->IF8=C_)gIz8!J#HZ<@
47344 zx?H+DEV<PaR*jzD>}_oCz4-1mvLMuUr<yJKg(-i`(O|Kwo}gvyNUO(ZQerJmdomTX
47346 zqOkFZ0~6_NMAzey(V5PO$s;@==`~Kh5EG<&?_{&H)$i6_<*z_8EuJiY1u_w-D_^!b
47351 zMbRRqJN+pKs^;8^ZpG6WnZCZx*4~r%=%|9CjX`@`&v;J;Q=EKC4CK7-R=t1z|6%Vv
47353 zf^A@p4LB^eaoA<SHoG<$J=>UPzqP&g+J0b!X7-$_y0>rl%wYDt-|l<6zXdUpn4Xiq
47354 zbH4BY{l8Fz77=(6yz3Bw2Sd~{!%z4^L9d-;X`~dTrnl6X=z~6zrO}Z9tTB`8I%iQz
47355 zmVGm!g#|7a)(I#IhQIO!$RJG{rB({}W-1w9W)VPzLqB}M_v<7BfNf=9X5do;zcTRk
47356 zfxiL1ZwL7-@>R5mPM~|yE%YAr-9Vjv)%7}V1ZN4?Hf&c~?M4}h?SS+!K*Np0Idt`Q
47357 z>6zBGcy^URFB^w+>}lGzXgz3wJ2sQpHYcuKx~8~_i2azg!=bRI8yE-X+FrW-XS?=N
47358 z=~c(s7VBD5iS2|7VCM~YjP2#R8+4OL+S`ddPU?tb+Iu^7kU}3$-C@qJJ#7cp+Cy&V
47359 zk~u%qJLesTn@;sdo9&IkjI(sN!-g}X^UsKTpnXSt!%9}-`bEGoPj?hZQ@Y6s4pHf1
47360 z78dQp6TP%ww>XIC2On?&o>^!JZD$9(Y?<phJIG<L#|Q-DChJc`Jdm>oYW_#Zw}FF$
47365 zz`YW3AswtrF<N9OnWTI^HkbxlSMjL<0T1h|C0;JH7)kQ^JuFwYM&w-G^dWSjodv)m
47367 zIEoS;jI?M4EXc?bg-CX@rWa|^OIvcVVMQ|xJJ{hxasJfhv5IN>gZo;+l%Mc1d`OIp
47368 z1IdW7>Xk3R8auTbjaeM-qk`g-Z1}aiLP;SJRKh|wAx6T27~t@KgEaS(Qb&i?=-!9{
47369 ztI@GQBH>5UrPt;>+2fVLIL0JIF&m`ls8$Te1%l5c_`S!_zwLpAK-8zDD1aG?ao;$V
47371 z+DimGwHk&P;eZPpW}dzBkXOycC+@yE;g2%3AyJbD_m7h0%c~y$;g7y~{QRgP7g--e
47372 zhDL)2W|M)~eD=@<UE{rT!E&P2QDP-isSk#IisXm&ZX}Kn9#u?40y2#$&>j>t02eWT
47373 z+Y+tC-$woAM6tw#ro%Wnx{?VlbaJYM65)v5zrbDl=$y|-06$n1Br?B{N6{;Ld80I#
47376 zXR9sM0G7C1F1+=4bn9fnw#1%G&<^Svg~}4Rms->hY~hbiQkNSwiV6i~iICfS6Vbt`
47377 zQebt}7&#ua4|eMgF|?2@&juq@oI)r@O&fu*-z)~{%CVKAp=Y<2bdRWJ6@ZwdSQ;8?
47379 z>cw%272*by(x%E*qoc>Sj_2u^b<rCNdF{FlAwZis__Z0SW_F~s_-U{m9&Sz2JdTkc
47380 zzy}Up`D^@-vG)%|2KEe`7<drcY}e>^Bg2j*0{R$<?FjC`@DbFll54Or#}Rc6Vb9Co
47384 zK%TD6cLrm)GIRT(E5F`)<C|ZX(~DtbuO<wQ$b4gvk4bpu*w%vNQ-mvD7s3q5M1w>?
47386 zCeFqYeb9(>%(UcKS3B0$HPo7IJZ-3fA-hc=ajipsV@?AK>DoWAvu%!Z4d7B5F1m2D
47387 z3BYe860P<Q^1;cPa>xwahCvP+gV<=Io4Ssqo%A-F0BU#F-cMP0q;4Wyf8k=g)oo^>
47391 z>p@i9<0S}65*0#Z#Ieb-+n+>4g#5vscWP0^uxJx_%h9<+bUc6tD(0cL+;!X7GgrR)
47392 za^tpxvImbe7Rr%*mvDn>-gzQaGMfP@&9z?*E76IWq$%-ACPRAx-pGbjNUMmd;^Qh)
47394 z3PBvU9RTX*H4iH4J_!|1E&{i9dOvV$NAEiI>*G(2QOOj=M@lJ#S-ay<!I$}k=Sv62
47397 zM#iTec;=Szn-_F-<?X+EIq&mIB5?RjfeR3fTF^J&aOObn#I0sMac0j;?|ef!G8iXF
47399 zk`_aur@W$HrWt~L#dheRa#u5&+*Gc-&*y4;Scs)IU<1@w1_lN`Kk#1I_pt5+b(|h&
47400 zaWrnV!sBtP5sAiz;!&#;A3z4~2O8%zHZ-8a^l&FLyq8hw{5izCG)q!`!mlf|pU~>X
47402 zgpuJ#Z<~I{(+`zfBNik3D-r9?XWsWSLTF`vbU#7zzGjo>Lm55TsGFX~t%cG;Gse4<
47405 z`y>tV2Q`HNzoC@g`u;1Qn7Di8*e~BfKXGE}P)!*>)fl})hzZ5bBOOoR;+?-R_1x$7
47408 zmuSj{HnN!4CT50tgv$q}!0GRK?7&-ob2gGX_s9!ZKC$}L(NBKx{f}V;j&dpQ+=NI_
47409 zjF*g*h1|tQp5C*1$MDln`%b+4z%01czkl^hh>ZNM-CHL;hTE}etX+4L|2%orn4B3(
47410 zj4k7eY53@1-I9~#Kx0~EQl(Ok*Y?DjQnTb2T1%DWzSR-d1Veu9>bH>JLf+|o{-tMe
47412 zX~m|a9Jnf1zYgX&iM;GI`F1>ghd9sU(bd%no{z=3aOzkgaC=e{hNnj*X?inHyyq)%
47415 zz=dhOcbM)*IPB1jzH--S_d#sE{kY`!dk{VpD>r1HtW{aycN+|!lO>^Ar6iv|6~ji(
47416 z&z{-!P?jFuUq5`yGQs4M+&tp-YJ4o_pC`TH(tY3kLTA5SEcglhOX$bJ1s=KnOSM}?
47418 z%**XsZ|3yjOMig@H#&J_V=-kW*GBgo#PIw7;6sfS^p$ivBN{84Ffl{E`U<*^{;kt)
47420 zsjQaooDD7Soyx>RhYwk}2UAhnC&a*AIXW|W$Y@_&B*i0(&(?2gE{!T-Hh21HSWvu+
47423 zVmeM!$tW@Y;IlW)o$oyHyzk`856r+%1%ve+0Pm-`Eq+*O;;s%@iS6s@>0j9X<4>=i
47426 z|M+c|>I+%Xwj9+9@rr)wmceIUdP(rd=Z9T;+4AC;-$*xOdQkRBxmYweRjw}Q?)XY4
47428 z+KjVwuw;(DeEw^wHkgV^DWfUS@%a(BGLD)Jn2eFq!-J8<soZ>VYE<$k<i`H!I5KX<
47429 zjiMBlqjC2>`B56SmASrQz2=-e<W61Je&Fsxn~5c2O*yI+6BT{zj^#Ud={IY0>FB9~
47433 zm1OGw-gy0fQ`ngLARA%{b87u!Wh<{nqUM$FkH7tabf&DhhaSey^*@px{_AR-T|U0P
47436 zd4-@!sol_}Fo1mpKZb~v@{e8Q#NpYAwAVQF_Ve?nYEc8&cG<rXee`2n?qXm2IQj+@
47438 z^Yr+h)%NN{WOBnN=p5G^Qh5P4HijF&@K=w|-3m)E0$0C5WRbsj5U@?xw0nlZVeNbL
47442 zhhQEb`M+27ztXCpnfea$aoFklIv!rj%~kLDcs6U)=jBa4c6Ro;C-2SWmt;#c<haIi
47443 zStSx<DOp%P-hAvG&$*7Ck0%EkEFS`%^RQXaWu3EPnjCzj5y}S`$CE~$Mb=<8ZZ+2B
47444 zM4g$po7_8xWQAJsKs>I42ODLIa?oFFXjF{$_-G@^MC#GdP#Qt}$%N@$B4$>?G$|y@
47446 zFASv%u#4k2uKp!@e&D;XZ>;9BwcVhh3wl`ej_D(Q1`+*hdq$pqZk(nlpE~#Q$92nO
47447 zQx-;0vf0XcS&zUskF@O({|f!%ftO%?GOTZM#|&eRB%CqvpP4u*8*or>Yvo`rd+z)J
47448 zHIeiNs4M?Y6McTk9+>n~gpU)v3}-U<{q9=7Iq+X#Jwo5eJulw1xE{|Zn`fg@I5_*d
47450 ziTxE1F4`hJC>N?nw7u<YnF<H33hfIk*-TO1v%fu^4RU;mp&L_Stz{W0jT4kykhi4K
47452 zSzNhur9uZ~J|2wcLadLL={l#PQW-jBWm)J16j7Usq4Cju&2u)mI`f5FTyRxcTnWwp
47454 z>WN1u9^AgEMmg%`2v*vt8L(+@`RZ>BJOf@5^yeXE-lfQ~ZoZ+%bA+oDXd<w>8l)%!
47455 zp-~SP)L|YOiD7CXA+?4PQKuwK$fZ~_pGK6*!p!;*Db&{=JhJ)m=PG8=nFcYzG`VZ1
47456 z>3R|BHh;crQXFM4iqm+76x4Q2mm)bSJ_$g8tTcAbtxjysOr*)!XWp}XG-v6lq8Nzh
47458 z+_6gX8ST>PPdprJfieF8DmyS{Y+xYnjM*Q*x1BgQ(-HUt2pqgP=!Kt^rc_ZTJk9w$
47461 zPb_hJf)id31}u<5c`D<Y9L`I{iWkek32r-D+1wf;8y6az3*hJr(qQyi7n|15`ylrr
47462 zb$bEyaH#uzZdZfD!{X4C)9XU(rDXhY>hxe}e%vfqh2pWf+1vN#lC`#E<<!E-Qjw_m
47463 zyqex=#pc3+&`5FgMewvPFSVZe_z`a7?gOdT;YMk820Uz89ad-7R%0`Vf+TYZ^;(S~
47464 zEgzt*Xy%?bbyoMoQnjn!L!Ut&1NS2Zo8*Hx7H{`d&-M$0F_UhyM~~)Gmv-;$6~<(d
47467 zq-ZuA2z06wFStkcv7_B1E6+~DBhx3cTUAB$2SP?rU?S1@-ESV-*ciaBesf>|#gSJA
47468 zLIYXYced*0sMOuB2=s-Q$o|7}{|WrxvKq?Eo}f0hV8x^9SUVq@8_ArToYNAsZOhc6
47471 z@Ws}$J@4Mlm`=OjBmsxK6))_?dEKOgBZ7|#x8{*-K3i@^$V%*%BRK6(rvv$zSP2*R
47472 z&tx{T5o?MXoDIO*i`xc#1AmYC+^Wj{O#DYx!iP~P!C4{2M-x2hBh=%I|D2tiJ~ZK#
47473 zZ(hCfXK%W`2i4l;KSAA%IsOwa2+0pU8mNZ-g_7$$U3mMU3hnh%Ud;8MF8|!qV~>8N
47474 zy|~opJjspOBc04$Z+i3a+=Zm8KR-9{!vTN4{sha;10@g|G!^6cP_iJWo5cMO{x|>h
47475 zSFc_fcwyi**lQHNyIv(|x5~B6n{-UK@_f`sV~IeZh@vqeJV@sTNi7`?n&Tx`N&W`%
47476 zC$KEh?Y-8z4*S8PxRuuQO4J{Ug_<(J4)Ky6Zp@`42{E6Hic-=Fr$!3p)oSPBftqV~
47477 z-!$+m*TTadW7mU+zU7Vk{$dOF;xx^l_@xhbjV`H`@+itvL0@AAHsI}CSwen@R3UoB
47479 zxDp|oRQxXNxYflocHAMJcHn`c^kNT=Z?erNo_un#-M;-du;T1`2J_+^rHCpWS>K$K
47480 z5I$#q<ox+Pj~#g1S7u%IZuP072R^p(@*6Oc#C?pV<^>%5-A6{t{4I|@`UWTbU^9u3
47481 zl>Kv?l+6t^-9rB!8+#p2*5;DIt?jnbCI92}krd8Pl$B=m8bWsdY&9E*Cu7reWpq^D
47485 zb~-&cQh(-ceo3QgzyG0kO#Fv;ZSxlIz4FhcW?N}iqO^xJ>1Y@@OO8vas`~$)<iB;2
47486 z|F=}^zWm^Wm-AgJRxQOV#>gEjckQ|&*5=aj6WdhmM*hA(|KiBjHB>C#z8(>4%r1=Q
47487 zP@@v7b*Wfk_1KKcmD-&_jZa5=RIJ~My59Wz5oqW8)Ofp__To@xeZbxM)rvH&;W{sR
47490 z!Hgd~(-=gBm{=H#MuyiQ+^>Yytl5gnjK-SG%%h#=*;?&lNr>_YPU33KYwo-F`pH?8
47496 z_{@byHqbgce4vv&vagj09NHQR7`T6`t=)QHX)Pa8&6zAI9^3Qyg*#Tp3QFzX+Y-(9
47497 z@_~dR7`KBJL4WfT*!n=CyQ1xIh`S)ynz~Ikd*GWam`Py<_CR;-s895u65l@6oHm>L
47498 zhN|bR%#rnaEKu0W4Ow{=y_reRbSAg-=50%4=mU?JPt~So<|11s4}}c#XK=;JYOFRq
47500 z@R{?d$1wAYL$x|~0!bL{t%iF)ejfP^c!hiSqn9(!V(^-%I*lU!fT7?x>IoMI;e`q8
47501 zT?&_)X;MzhdmcO6aR>Sj1K$~-`g~u_zGiQXDmwf#cVpiIKlhj5=l%kD7`{UHPQf$p
47502 zF$Xpl@Cb2EtQNeqPm>jlKrz}%4YNYPL=Yw*2PZ@Me30}P<m|?3YWTn3n8-Zx{eEBG
47503 zzL3q`?MlG46_QMHbFqW~FR(^I3a#1LSX<`!plMcTvX}>zGZ79lXNPBR`cNTfH-iz7
47504 z@1Z!fZtZRp;a&^dUi)CDfYQB+;C~COP)Mdy`!>f}OAC`sLP(BGmpC&Oon<^CO-TIB
47505 z)AtEfb1uw|gcjD<C{2!u2<tCIt*l2@iZmbPNuC<X+-&zzhcNdp*a^WluzX)=+Oso(
47506 zX$QtV_V%@J^9_U0A8n0>qVgI{VaiWLj;t@dar3#~-Q!~0m1j;O{@+wfc4Ru3)%-Ar
47508 zaBGv~a-qr)ec^65_3Rr1{|R<Gsc(BqEQZE`j~c256e?byiNuBy(IOe!I}h2kSFT<`
47509 z;>dTQoV9L!$aV1riz;E=YK2?lB8Nxvk*XNhGVzjD*?R)zq}WhgG-TCBE17UKF;XZj
47511 zsRwqjAo-cWF$04vNOQ34uppjPJEDp75tk+YbL2CSsO+-DJIl;n77X&k@v-diro>p0
47512 zP*@+%$+48kX3SsdKx%k+DN;-bGAmD{5@tpbN~NTa<bBh(hW`i7@htKT^ith9u2(E?
47513 zPmw-2&q!e_9M*>Oky?;aghPi_FoAF8M4i?IaUz{C(~3Mg#1k}`Sj@xWzj^f=1D`^^
47514 z-W|SujSJk3P@&vZP{H&>v?_te-)L@9GRf&BMmnAAL|Br~1;eS)!jYxR5Aq>4EcRHa
47516 z+^Eb>%W8lT3fcI`lEz@VNg9@_*Yo#2GL&70-*W%{)jvj#Bhz*dkXSbp6H*^=i*#gg
47517 zxwtvzL3mlj-gl4}QZ(J(vyq%pePl9c;o}c!q9YQNL}p#~p)Zdg__#n0I2{=;)!y*-
47519 zMUdLQpb<$?9;VJyT4yqvss`SJh1cVa!-pFY$=MYc=%5YKpcMN|yemE0Ckh?}@sgy<
47520 z$Q~TPW^XJ-d!=N(77r8zA*+){>-fVlHUK0yJFtrAj$N>u3&Umsjq8P1Jf3HK3}z%`
47521 zM6s+24IxszphQhRze;&gjH!-=2?__w%f?ChnN0h9A(*pq>bH=eLmq%Lkm+tcy-VqK
47523 zT9Fu6+P5L6pz77O<9=PT3#Frjd-9pJEQxTkh?nL%?I@HvHM)5)8EXhWPa+?~rF3<&
47524 zY|H)cu6}*sBC-dbvf{jz?Nmei0`WXgAqZs}z->Sg9QVp%pv<wNFf*5^H<BKzn#v9f
47527 z4ax#)U)0;LyMF|j$eI16(&^Cf-Nj-un%P@Y!ZgYGaTLX2QnP2zn^se1^2qUxK)`&#
47528 zibR8gnQ7<=#{R0tUtPU2@CyTf?>sQ)h4*j-iza*`P;I%+Am$ZBG1-Jo0JKQ3jNF2o
47529 zsy;Oi@5YnhG9N)!w>6&gQRiKk4<@3>GKzXra-iv@B3c66JX(#U7&em=NgDSs$rzmk
47531 zK5{WUbYB|BZQ)HJ|A54Ml-zDU&Y|Q!xUYEZ;*_At#Z-Q2V<<B&7fxK6G7o(Btqb?e
47536 zjruJ-OHynmVk?*2bh^5)nHkffoHGqFhP(qhd9I|dHJb1+3v8%58p%Z?VQ7`ZWy2c?
47539 zoSZysw7s|)yLr5Eq88Us1{1>hP!)Qs!>>D7S)56S8nV3B=^QrNgfX2x)-E0{TNBoY
47542 z1az9SqT7IDKV`Sq8%Ny)KI{hT>$iI>PJ-oi*LOe5)xT6GF*<N?Vc%nLwPq_>s&`jg
47543 zo?8r7H?7!+=@WRmHa^i{5BMbS@J#y@TJUBopQ@p{kzASB``T~94S-WO3(f}0$M?@0
47544 zg@s6DB!abrd~JBB=wHM!bh5qjFx&%-m%fMvyQF}7&7m8PUoXeF_hmTJt3=qAheA-4
47548 zo5^R<u4_O-XDB?KoFRM&>czYXL!o#N5h@&?vZ_btnomFfQsv}oB_$u<;P{Y1l4nC(
47549 zBWLcD3g??-^5sWvKQTO;NGv>*3Fo!jsYo&-iSj*QK@hZ=*nL2~4)%iq_r_c=v;c#V
47552 zoIeeA&$pF&svBk8_8;24$hYkQ_`{qT&M)M%`-_EfOS<L!!R4_vF`lW!7RFLVG@fR}
47553 zTqv_R#Ik%elAKDOE@$4Z#u=061X2j85}fyoVBQN@-8m#MZ<B;Ta%Yl5f9ayT2zwp&
47554 z5&6R=rUVRFgN=JI4;wOJnLP=PsD5@hlZaPUbx-p)Rfr4exya~PbWbRP#tGS59IViM
47557 zA-`;YvmoZCc3tbeb+ZfYS=z(06w2^^ObG^>BCx2<dL-}VNCr$c$#H@<GpmV$4+qdG
47559 z;9PP@Upo-x!pck%c2tumBdkjK(`B<a5%hZx4}7)H?}hQ*9{6+EXWK8;bAiI5OwhDm
47560 z4zqexq|J!DS|XJa<1Gyb3TXs3i=pi{I-B-qn12XfS9RbYq1#S$KU4;<OV@(HbF=R)
47563 zYdxyJi*mX_9J3s&*^?|&xWy2Dl9#d;ku2>D=-6{Tj7kxYNR#=Nmb$CC9ojjBywINy
47564 z)pp`lT3<xR3b*1jELu}MlZ8-030dCoYBbVGPV75R7|I%owi89!<X84V?g5OrgmC>#
47568 z7}&&&W=Q{ICP8fxd=~itz_GC%`M2;Q**)ygw2l6qitwBSzg-ko!ejZ?V!Xy+Q;$5~
47570 z>`&zE7QN{eDOCxjOrNghgTdS_UeQ-<!HYog^7ci*2|8Xv>4W4KQ50MB`-Nzv9diO9
47573 zBbf?o@t7Q@1D)8$`B&csQ~j`8nbEaPt9m$d>BY{04{mZ6kFymkbN9-#xyHrm{r46&
47575 zfV4RT?tX}o>oBY5J6Hb{X(PBpdBS0vHu8qeYPX9!oj3N!p%#)l9Ac-_vjWNZ+!q!p
47576 zv^;*Y(PW29`J50F;rm*{fLbWHb=AlzgmoekJF~(2^U$4a@Ma>Ah--o_M@@!LYrzam
47580 zIo1{l-*hl1(Hc(ry$XhRh7B>CuT0N-lT`qzhf6Z+jk9uuBY^oY4cisB?v^-YsK34a
47581 z_7poJ`}V<Qz~6Wk#ims-xE-6ZQ%kdv)P#jII<;Z%#IS-5J4o^Bz}E)e>k>yj@~XS=
47583 zP$CJMl(cw-WdpLV>Aa^roiJpbi&?r7F17uP&vBfPQv<&?5O5JmyW0WO9p81E1OR<f
47584 zH;-rmm1p_1VVDvh7;6dsq(G-)gG+*_gBvLdfl^p;2mLCNaT4@<d9Bxu3WhcF%|PMi
47585 znrW&6%cTs%kmaGx$&e-{1+p<Wt7lqZY%UDO&Mww6nu`;D?;4!o!UXWE>v`>j33jeW
47586 zR4*=5#Wd|>fIy2HMix`M^FAgk53?~J!jL|1z9^t0w-+36(oJe9+%Tyn=J|=zT1Y$`
47587 zrK}dLG5j%!EvAa$`Pi<^7PyA{!5Z2>Sz?WI7+M#-?yT+Jon#Zq=tL>$qy6CLf^`8I
47588 zxwN<Q(2q^INi|dko|K33#v06>-}%C5q2w;|<WIWDFsk+8I=h(Qnk9O}R=on3XeJGy
47590 zyFh;@{@?{p_a-PG=Qm;jhR@59Ou!>3g2wx0G30Ofe4?oFaZBSfmYaZ)K%Ri_C?4CT
47592 zf42s3JO-OzXk-~GXpnwJiK{H1GL)c1`Q*kSjt?3LVkUThI)-~>jSnaNv_1|KjQ(g~
47596 zHEsecVp%rkeMvYtxA)XoEj%<y#^3+Y=pD_8iBvRu`edpZ_6rp8d~Gc$FejW-LZ3r@
47599 z68fM<(~=NB8fi#zno@b_Pt-zFGrR|f%=q`NUO|_Dc}aG0PtU%(0Jd*R8!lRLJtFS?
47601 zZB?*EIlN<wIjgtDgg9Qh!4{!w|0;4G-fwODlcGDIdEdRZU3}={gA1H)j>iI~EQHdg
47602 zPt)^(Q0`Vv&JC-kD((prxEf%^NhQdR%unS65nOElLC+UaVo?+ZDZvXoep2Ej*A~7s
47604 z9YzQKrkAYW-C@6}bt_5Wwld9e3vLUVabV8Hbj?uXI@k$6GCz^)8uCz17X6Yeba(LW
47605 zfgg1tf~$XauV2ujoxP>iS<_HNIJT)t%D$f}fQ3`d**UWyh*0f_!u}QIf37jn7-B*o
47607 zd^Dl>yi{gT7ZQ@+=W++nBJpiUVY`#-HP<B<&P&-k7Z-FviKPP&@P%?wK`_<)46Nx)
47609 zB(P~SqLterMWSh$m9n)ii!qG^h7rsQRuW12!Rwju`-2K}V4Z*#H}F|VhmqSjQQK{b
47613 zGNoJ;ll)OF;187oeukwaMs}0-zKX?QsCK&+uE(O=Xb(EUB?k9l*o=aEP|Cx~LU0V`
47616 z;eMaIb`oZbr83fR_S>`1Eqk+D`|gjI4rUJDQgYKn-hn>eO@r7Tw~PK^eu$wW1RN87
47617 zdW4pE9%wX}AX42J{K(AnD_&`;bkn<D-)`m^_9q=t)2};XZT)&9LIX=+!)~Q=PfWd0
47618 zF_(i$B?Gef%8_Cf!H^^vn?wnqDJU(Ox_My*rC2678^5&jOEb^zffJm4`-z#*Y`)l$
47620 z>Vdl+#z=+|&D_3;#LR)wlS5nUc~9pL-qShS97+|XOvh}mH4Nv>(2MwSCqHBR%v$~V
47622 z!vbppC!iF|9BaoHrm8fToEbg#@%e2T+Uu!ZyB^|3>)E-acFW(Go*&EMU><u>CntJ~
47626 z!Kq>%@`cHwPO>#ymt0cz-hAun%%u;skY$$=Tzz45vr{pR{ck?im=W@J0zfD$77q-%
47631 zdq*OkyL6}X5cVB`RMXRq)-)3c_;4@DE_Jrfytc93kLbB?FNI{-k7&ryKKIfM+7V&j
47637 zKsmL*80?Ky_y3Yxa#Yj%{>2DQ?b--US1VjcWsUG;c6o>u6^=F;FG65^ExLUC%IBae
47639 zzhUb+edXX<VEBkNc_F9$(mNbYm%e-N?5VImw0ifx;>KihhbD%o^q&AKHLt;YJ-B1T
47641 zFcuoOn&CoO2HJ2=!M!-CaFLNwnAcg_b2$I$Cto7vi-+F%dxMv!X59?sN6{CY#Nw38
47644 z;d*U;uw{*0Dkw=-O>kBz>{2TCV#l_rsa~U_{>fP^&B*l!9=a`AEg`szUp)Y0da1CS
47645 zxaaAg(kQ<WDFl<}H-3KM`DF;>?|AM=$BcB0(o|k?a~yvQ{T>YbkpIFa3oPnq=yH^0
47647 zv2IG&j>)=zbvtCVZzf5gg~3yZ*|UNF-~!{Nl$fqfr@R3*kSe7gb2nBQ<=Urfu>!66
47648 zC0+0`ZVA>8vAE+-_0j-#K!5nSmQ*i}&D!z;6VRzp8+zI&tUrCq_NJ1xYVzKHJ@K&H
47649 z6Xh}N;epIGn52uzZ-7Gx@E&lC(Pe<hak-G$jg5ly`NA#ZtwWn7Pv<L76!y<%cfUa7
47650 zF6=a%cZXki!+GIzTn*x2THq-94GA`jR`Myhnq*1$_%jpmVZK!uE0yn>Z5`ZKB0InR
47651 zOmSnP`|vZ171z=GF!qqc>-Aia9rN~K!!%4$NHT?~f|JFCGX``({G}Rn#~TeQehE5$
47652 z)y-P`VBzk?p(E=#&+u<QJ$il|PC67h+tmsmbxycnWY?Y0sZ@u_;73HC2lF5}qf2nc
47653 zVyyr+nkpL}Pq-M)N8>}WOM?%NA2iyBHjD6pr!G#yIl~1>930UhXYof@zl{DpW<o+y
47654 z>AkmJCfoIA25+zP(7mT3xsr^b0MS8*i-xnqV=mP-Jaqc?<L9Tq8x$iMH9WPyQ#{q^
47655 zY^~)8d)pK6mK7(%^|>MkeXhU0dIjj4@-`{uym@DSp<lw_q$x_yXmTbQ02Y*>byL=X
47656 z2}nXuuhXW2Tc{*Ol0xP1!c=YF{kL?8d#-#nK0lm*n_g_M&AYVPKVdvPXss8$zTRB!
47657 zLlLyZNPK)MfH3wxb=(HfIcatnrK7E4GRygsf`4d2&D3-HpV-2E-Ic#7?w_%5@~tN&
47658 zD;3l-!7lrD5L<WnmR<!&uNm^LlkR0S2wF3=uqQI#Kv38<7iToty<XrkRhk+mjSsgv
47661 zAe!o0IU3K^BD@`-{}Q5Mx4Lz4t~qFSKjd)Tv*_vSLXj~QmBt7H!5E|O9VUyK2N5WL
47662 zNanTape$rZ%hjWKW^!{Q+&;7cG|#^QCov9BBA8-{j2>1Lkr8=YgF6a00rLj8n^5(g
47663 z#`V-~anOt6!1E<Sn&P9barEq7R9t5A^q!U5+Me1=x8&BR)4P1TZz54l={}9!#K(0G
47664 zfna@-fs>S75bYsl#=Z&F0+=^m)IA=F=W-m)$7;N`fBe?BtT*-0NXP?J?%4S;s09KE
47665 zRw$Y<U2F5|ED}P00QC^rm*TV|Jwm<aalV)HNRmHNO-F(#Dbn2qK*cLpnk=rB^SK;D
47667 zUk|LGIOu+!^xCUx|1nh{Gkb>R7-uITc_7H$d*sSz;1yO46!(xgJu{3X?F1x}CffVT
47669 zEI|~^HbTt8$@;=EB{aG9)-&Ms!RudJFIjP=XoCBXLhFO!#K!=z-{^CkuLta}6^u(o
47671 z1x@!3i-uc1Ihq}-0#6z^oR}Q)YYV`WdG+hIsS9qjPyVadRr71<(I;+VL$)KcesO9(
47672 znhwPR<!4WpTsz-0e|F|S`el>>SH86~1s+BW`%ALy*hoAEq@3*Q5Tio8Vdg^>(G;Te
47673 z(4Ch%$#kSt74vruhbMv(!-s;UJhGhMS}x_y_PG%s58+2TJ+5>3@`H=XV0?LDh)Yy>
47675 zc-gp7J1!fm`~mXe9SuafSf%d72RyxClJhQL%BfY#8fG!*)d3C@6+aUxs;uGn8>}3X
47676 zYc+*S!yHsD6Hn9$HWng^AwlHS!5obfWJI0p&|V4%3=;b_<f8-8zDk^WU$<^In;oVS
47678 zVNdR4IF{_SX#naN+RJX6hTUHKjoUPkHZ-I{s!Xy3D)F_`gS)yk9Cy1kn8yy*riI*k
47682 zt<NCOIfB@kb*uG%y-9O0;|)@9gS18~bU0~Hnyy<+sBqpVP=(gcjNC}Z&d8;3GMUHx
47684 z_Y0%h!51#GLDnW7dz#a=fiU_(#O6nD!$nHAa-$Vn2$&q9fDn$n`fWQXlHEU{4;`3T
47689 z5^Su9GmxwUU~vK(Ib06fM(*gV9|+1)e7I?LBG2n_YW~d1q*Y!?hZ^Gt#-Xw63Cs$X
47690 z-g{?kZY1GCOI*o^)oo}A1@~d30JCIv8$7kY#4Od#TY*xluE%10gqCQUp#<OoDw%*3
47692 zU;m-N-}#>4mD5wLwj%+;XG`GRU$fxVG6V*^6WkX7ZzQ{(&Fo7-WrcFAb#fxT47HUP
47693 zNPsTYdT>=?S?m{mvXvdLbPqqk*oXfk9>CblP-~_!GDXavwWg->>*>^<M0_dk01X(E
47694 z=<2M>vnQc*@8a7+0215)-=eQ45<pWNy&fBk?83Y^$Z)^jIdrk`cLCDMOgAnDpu&LX
47696 zQY<%CJ{1J&+u@E^j=uVm1F55yCN7V}j}9-MT^xxN*3zlvc<)SNnG?<EOu|YBfev}c
47701 z+?dYY)G8m&OHo=sG&!+f-tQ1sp3i~({_yIzusQtG;C-+EIM<<9Dt{g6?NYJb3yu67
47703 zvB{fkqZmFIKR30yl6u!2@b-c|A8)&RKC`#DF_CiVoM<wvXHCW3`A6};1Cri<?asR!
47704 zcVKaIr=V}Vcjq&05CDjR7hL9gYno-@W%UsdhQ0QWnh`8sE?1hG2W&pFW}b3{jq;4U
47707 zgVEwF#9f8qOhLw3E9B8rjG)l!U={(Wy<wH=u9N;U{xP6TSGM2SwJv)520FC+z^-MK
47710 zPMw;Xx^w$q|5|_g{^VxbfD-*#HZ_wi1%jv;5!$)jkG*D)XuGq}yXkTK5bzYRJa$iL
47712 zkjI#i;-9?`OUEFKaaxvHQcR?HmX2gOvXE+=<M?RwIj5uqm}DHQ8-h&pc}EXXl$~z1
47713 z{Mh0np)Z1$y?-1CG8tWrB{IkJmxp7Ewtzc3vqD0pBLfuV<mHz?4_%DCL?9HvsSsuI
47714 z6>GisY?Fo66(p|TSnq9>bpoft2cZ1m3<0~b#AJ-KJRGE-KKIZ!e%uW$*u}<kKaf9n
47716 zW;*cO5Dr;wjpg09flB-4wbGT{O2kBvnMXJBcOJfOw>t=e$)b5O>I=AAPPEj$leY;H
47717 zhmcUBAg|6M=CxOJ?*?8;O3-Hk&b@252Kn80!vceu3qedEx=ohSl8U)gukG#D_ILEl
47718 zuU;8EJs{*)3XT@Jw6ycIn;v-l!MUq*g5|5Y*M)u*JcKj%LBsri*`370MvveK92qD$
47720 zyS;fzR^m-B_3NTypAzv}ys;z2Z0*wZci!GF<oE1hA&&nXjM%xi+;a0VBUCz*Q^uxS
47724 zAHif!^UUqqrPp2FE9Ca<vp>26@7BAx&1*_x;mUg+E1&Vi*v;>_-LmNCQ3hC~_Mslu
47726 zbkpN-9ttyUK{fQ6`zh6l1n0LFCeKkqe^S8gop~Xu1D%Qku>m@D@9H<_vyA-Y3-b@>
47727 z^9A7cLrJPwNY;gy-FxWo6eF-?&4-t#`(*aUYqslm1AmW4XU?xki3Cup0V&RSckxpi
47730 zLd%KG89k}y6`_jq(x?8eoe(nxX=B?^4K@%IxmT#G8xh8+-`Ni0A+AthHHoh5{ePJ>
47732 z7Wl4TxZ1u_(Nm!Sh9HFnYcA0DBBNU|-*<!t=ITp7&GAO8b!qzI$~zaf&%y$tHa`s=
47734 zX`afbNHUC|LEw1dhA7K)FjrY$%H%VVZY_Rke(|IxitnqgN49n{QD<$YT*X7#R-KcV
47741 z^rlNPpf_iric?9m90-66F$p}KXyw{P5ajZOJgW=L<?m3cz2NctkxxyfC*FeN=Z&(R
47742 z0Ve5XSK-AsZr1jwe7x3*H6=a1(TQIzSykZrU){*BZNaN9=2rq7C5blPT}r9EfYSWM
47743 zt-`DYc=QMNzJX?uF99BvJRUjO!I<6VVWmHoz?sCX3w#N~t&SNYf+A4;79bWp!CdC_
47744 zDJ!+xO)hn;s8;Pg2$Ac)VGB78H&dZ-C@d$ZGf4e!fdNPt<&AA!1)jQYeJ)^Csv;h{
47745 z{d|xJviSl;uOqX)?=*7VX;{e9$RB#M#0J#^hx2kk-K6{wKpG|IP_Cjar%FnG#;LSn
47748 zkb-vZ(W2MezqY13JprRukZ2zXhH1F$&210EN#W8?PV-TVPlt41(l?IBi^l5^2Z6OV
47750 zUL3FDhOj404!zXysv1|Tay%XTSMBfF-9C5rbiTt+ha#)F>zx!V50?82&wrw6^^I5?
47751 zRyleV!e0(um=dS9k3eRI16;<?u!B+aVa#Afz~t;o=Wzqp;JYc7f9-*~SHutz4(V*P
47756 zYqlEZg{G*-fV#d`T#h5TQ~4X)*)0e{6_-Ru3dpK}1Z<+Slv1n!?VQNpObU`8F`Wpl
47759 zDR==)IR$TEHIvB-%DGoO(@t&7+J2>Ev`8l^7VpRLe-^p|<m<$d^5ymP29B=3Ka9!2
47760 zDE^d}H5r3EfAZxYgfV=!5o3bDTMY-8-POXWT>hNxzq?xtiQTOhP?XF>7$5kLgD3&!
47765 zq3nPDrh(RUlLrn#;BGnX2xARAPk4m`e#MoGEq?T+yU^KMUT0d@whMP%DEq@t4e-S4
47767 z2r|OcFakkpD>_N0%P4gr{CPBhZZQ-HK>SeXS3|!$B~9%@HXr8VSS<Z*0x#gdxyzH6
47768 zPK!x_i41yHPF#KY1-B4<sZ0gK!4ScCpo_z5G(HYrQsMF1@ZdQ-|HMTpFS#8naoU3|
47769 zKLV3+)zb~(-12pZw;Y998Yka)d*$&_6}gAk>Y-Nv({%2B4LaRX{o?4X$7qN_GVZ4!
47770 zTssT9bZC9-#JeyV_moVrXeb;G(&q5MZkLXK-q3hH4i-(reB7VAm>(zW9$q^*_#e3W
47771 zxUC4A;KQw*GrPvwQ|{S$w_Rs&bO<$#l5%1)8}pNLu-srZ^t5-`(m2ZIF<{Vk_3d4>
47773 z|F&Ns`-+QqUbu5A4-dQNWh+v-SMANar#<`j+hY|4Ud1f5$-j$CPexB}_08cT4%Z~x
47774 z%;vMJVw_i1Rt({=ghNbn0!=35eB%auZZ~i0yc8-2VF3q2F_KbjH~;s2$jiUHI`mGU
47775 z53e7i4=2+vok^{Kw6#;m)97vv<|}-7%x(6|1ira3mV%ji;VtFbJQ`$zA(4UABd2q~
47776 z0bpaWcqerm7{AR{7#C<Zq2(s>FfaR#^hEu@H~#xX8b-|;vGwNdx2MueX3=v1Hl3j@
47777 zG**Ev<o4e8s`IxK+C(nK<<5NQr>E4Z8@?KI&pNC-#t?77Y*&-Vwq6g#-TTx2V5+f~
47781 zZFdpz6L+>Bnv42I^jCvF161D9ao+gED4?;ZYJ`ViE*6HgCbDxO+y_d(<Tm-W!zhNJ
47782 zPRx4X%C*Wo-}8ae-rWs?;1Sx$Cz^rUWFjt3dx^L&L2Fsgv8Pwo-Z!^--V3Ar*819w
47783 zZH~Xbk-dHQs@Vo{KeSdqgZ$Q1YO3Nj){o)5hfC|&z;QSkCO9<k(jxYSM<a1I>y#Qs
47785 zbe$uO_MNo=5#sU?sHPHrF)%uZycHG$k5(OZ4o(amgxP+Cji#+mGTAaEJtR|-2B&RB
47787 znMn4y<0;eWh^X*ss`tug`k5Te_Bc;3u686ABXHej%qDWZba|(ejW-`!!g(v+&my#)
47789 zTglBPsw;Djkk63abtNsUY1){5K%SjW&&CkkvJ+V2fh!fgjU-dkDay_YrCdM(_J&jN
47792 zprJO`200f<MY3(i%cWL2-pi;-ld$IEa)D&AXe>9Ms)*54LS-G9C9_6;u@fsdEy-Mk
47795 zPNn8n({X#PU#T$Eg2lvjtZ<%PIcqPR?N_7GB?r?!`hn)-)2$i3qUt;Qsn}dnN>M>M
47796 z@ns=SD+PtuGt&$H3C;$-cd9<MFt+Au@awol1zd)7@B~^mV$M;e1Q`Yf1r3BJQWbVC
47797 zqjl@%wfPg5N;J>>J9&4#zMYBMYct>g;rd*}OeyOn#*xqUmiF64Z~{AAd-=cJd8XCZ
47798 z%UXPUFQsN>J?%s@iT_DObpfU;($kCnx~6I5wg(<M!@WJ=r-Hg-;?1ej2G7G?4Fp^-
47800 zMl#6cT#k}d8Y?yAkgO1~lBI-s_W!5oJC`Elw~$rns}2R(r=>I6mhJtZT&|J4`bdLY
47801 z*h#0Va%A}lV{;o2z}qptWj*|ARRU7El-BYY7UwA0px#c4DutN^k<=)AE@S$MmmA1m
47802 zOqo-q!5WBB)@34}6;4m83(sD6d~=O*iRDi2!lUV=<VY?;A6w1aml}^6{HL95HIa6$
47803 z_38CjSSer_)Odv<+MDSo|E`lD$V?F$Y9WeaM6;dv4G9Jo3KebN*(Ot_6*XY81%->T
47804 z&{N3kr))U7MHxjwuKn>z9hys*rtX-j<au5rL^VXwoQ2>0!IQaktlBmzPc>%Bj6rak
47805 z^vBgJTcu30^Wc(D<v2k|Foqe#W%Px26(Z*L)`D#3G)&AU->qf}l3?td4S37C5P9mO
47806 zuqXZ?MF-6i7Up^2Yl>P3s8e2~xg-`YYDLqub(~klDtH$DH*p#dwL*QZnbNpy(*MeD
47810 zx36nh^rfXehw-zBJ?&5y@zPg^S;Ulp<4An5$}>nH)-I<BDq6XEDMVthRN_GH^M3`=
47811 zZtC+e(KocP`nBVTt}i5xB6_Jx^Y<rupf~#eFZ9MZ(aXIt#nH-pisNo<LUCAK&26M{
47813 zV6TsvfxSNBc&iUq?6r8xXgshR7-k<~tB;pS{w(sE@%%)$d$1odI~q;uRuSyaX7fo*
47814 zb1P&i+AOI8p=MY$7mZ~I!Gsi?Xtsk)DvmWHjK(UxLXf2GSS%BE>zd%4-;W`GGnD{}
47815 zr8_>Y<Z#YC9JI$Oh{ohP%gD(`-t@Ma?D@x2Nhj;FrT@vD?|S)V<mtsr)tHj16&~mn
47816 z-Pe}W@U}+Ml$Oz-`1_XWGbR&9Tlw#g>~6`l-g;;QXZU=c1$@!3eJ7CU&3n1wRxV7=
47817 zdzpv^+}|)Q^ZGYFY3o@m5I|7Vbhjsm8CE@8ai0IAn_Q{J<%Y>*jpD@;#-~!{rB<|j
47818 zE&|bZZ!~lr4GsH72VHq?8tY&Ziw(MCE|y<>XEW8G%Np%ych-tXEzvNy8u4qTr5H-B
47820 z50la30V|;B^ao#i#b9|{q*)8U^O=3eiI%&u%9D-!wnm09f_?l?QQfu0R`<>l2S~GO
47821 zErnu9RYu?bUOQ@TZ7-^JHX;F$UtRxQ5Uol=bo*SuXV7W%<ka-!*y>|fLJv_CKg|Mf
47823 zK6wg|m=Y0=EF{fRAjFz{ilky3t=Y?+Xwgx0Tk?sFBYzGDG&T>UM-KKJ_~o52`4bTs
47824 zdG%duv$wXj#+-piA{gy89+Xr*nUX0xp3KDLr5C@OAxYYZC~G_M`5FehkRuMmE411x
47825 zuuLLqCKa~akbN>F<m15P93tcBsCt}`cdpOg*o<g4BPJ!4;xQOot2rZWN(32Iv-PyR
47827 z-8)-J$HdWjB@jk~;ULqD$M#QUcHEhqnie&u`_{#aI1ruI3R^j8=na)5{K2399{HL-
47828 zlyl;^(7X0!#}yvGOu-$kT|bkoU$`-Aw2kSdg5DDK=w?@&pOY37NJwj3-rj!q?7ll;
47829 zn<e@BdPOcslEK(Sds#LJAUz=|x6$ukG149d0SEaUWVkk-t~ro9n(*PmBT8o9_5N*^
47830 zXJ}E=5)SP6b-^aMpQas+$T*Itmh?zFyWvt3J#$td2-+Kh4V^iL!i*}<M+FmzF{I=j
47831 z$nSv{I5WodVf(Q*#5Tf{f;?Gar-J*Cq+fg&FUeeppcRY^-u}$#d^(>>Re&^Sw{;u~
47832 zv7~*va1QxAl;><5$TQA^o1zj|C|==0bTEj%?R)ZC@m!-}XL1o4!!aYv#(y3PwG`Pt
47833 z=k9uiSNGRw6-xCO<0ke~W9cKM8Xdr+E~$@x_?b?snJfB&&87u=X0b&A!7j*o8VEKn
47834 zB-8OrtCg+2)(Mx&(q;jlwKID;cmKP<QN^TLL|wrqs2ER)QC*p@m=#-!`E-5)`MKd_
47835 z^ZN+)7@X&l_T+nNT0|0B3rbkiahe*n6qQY`TGSL__FX8!QHgp5E)83%hG-B?!p0(*
47836 zb{mV-LS7ZwYRM<#1IQEpg5HS@0!Q@79;Br8*qy9URDl~In7lyId`Q5<j+%`olOn<B
47842 ztXYY^LlUX9KgC)rMgtOUMr0(_jCvVn<Oh&{4MLFe_$H^L#!^5WeC)iiP-gB*wCtC@
47845 z!&iP|2OTf-8#^cTw|5pwDmZ4No(9T+O2`<Cz2n1PZ69>DQ`R(`zp+tX?TbtkE}eer
47846 zm)v_b)0x32IONns3*3EYmBUY7KOtpxI1<S_rji1e%II-D9eOkTWH)b(%_Wy9aHD~T
47848 z-22+puOeaiF?aIO5s!83TP$j2`#B;Nho@4`*W6Qu7z}<ZmS#xDA*xn_5K^OqApsG-
47850 z1Ofq(d)~@Gfy`ul5C6B3Ul~q|ah=}#-kj@tuYBaA@0;fH@q@P)HRQPPhVS_h^lWF(
47852 zjg*P<8$S9kP`bw@BBEo!Z5>9e*iH2Or#mCkwGeo^M!#Ww-O6xDO-RUq4X)dOo<{x}
47857 z#(npj<7O#HCGwo1!Pnr;4}ulSvQR8B?7O`QLg4#!qsa=5C}jIub)yT+QxHW0Q9Ba-
47859 z0HDDo#@VY_J|8}d{27pp`UrW-9yvqFEttT<$atxCe0_EvDF97w*IMo*B{fS3xVF9?
47861 zZ_NP8MR&I@F`4K=1!2T22QPIqak0qr6(-y}Q<*l>2lRXt*G)xYEHmL(rAg@KXvmgp
47864 zPpyHtt5988ou4(GIAJ)kmQ~LI1G`$3gpFIzOfN*Or&nez!xj-u%NlVf9Ei@7wQGA7
47865 z-?aV@<WCNr|LFL@n}|4?AO-F0`i7M|yT8OHVaT86?b*c^@WQ!bRbnxT!jri>`PQr@
47866 zQ7)=h;##SV(;z62QX)rr(LQdNG$~j-Eolp}bWSEhw0|)b<Yg$YlZzma#Ulp$LconI
47869 z*}n%67Q~%`L+!tD%NK&LqQPMn$$e#Rz0;9rh3m6N_04c#1eeOl?No@)M9-dC;NYS8
47870 z44au-sZ%mRaC$Y*gheVS3(c#=^yZwDs4)0qK`Tdt!DuNq<N!|=QdR*@is2GbinsW%
47871 zKqh(-sW%rZeaBGw^?SdMnrM1Vzd;f^N76V1O1$+YO#a3h+Kv_T`%44r?AfK3XfO1c
47873 zN}cSn&v+nU@P`I69Elod&U(BelNx-+tO5f4Yy`4Oee8^>qBKj8cr2FPJhksJh~fZ)
47874 zilHE*s654|*w|u@qx{a8e}TMxFyiw-XUs4WHdcS@cf;gvcM=NAlg%PUX|$DOVwHys
47878 z9*k=FT3QyBD<@a;v@H<rwe@I8An|b~)bd-3pY`dZ65xJoYJMm|eyHgF>T0T%KnHzE
47882 zj39|+L@L_BpOqIyLDxu28_X%*Ma;1;k6+g0mj}2XT<}_{*ZT>X;ps+!)-?F#>Vt-s
47883 zuV+M3BFhyu!!ho@*HzQx;g`jt9fG$-VlgJG4JQ0Fk#B%6cPHLSr+dU`&;iCb@pipe
47887 zPD2VVoh93)bI|Ph-UDOjDuJw9B%&yZz##SFrV5)kt9^N4ZC=8|QiRsn-ujlQi4&ck
47889 zWXy%_r0u}_t30;YaAJ|c-o*cF<K(HLk=-iDCN*3=Nawo3>}u38!2R|3Tv;1mq=-=Y
47891 z@{$eSp>rK^VMQO_q9zzB6u)1~=dyy4Df^e`t)l;N?-GagjP51EHI3jFf!%fQ5bpD<
47892 zK6X15+1_6jaFiAl65|q=t|s%S-bxg%KMRYSm1YScI0@J;Ga13~ASrXf5C~J8)}^-3
47893 zl`kS+1c6F>QuL2{+I|oF0hV}Lz<}?%1Fp|;AV(^X1M!n0M&??YL2dzlWaIXB(UUz-
47895 zN~toVASffVTtSg|HmAq+YB#2+hi8+9L&5M0V)PL-9H1gxD#fT#xRubGQ99_|`{?+H
47896 zE?5-h3!Vn9O!IrJU27wxx%SO7%L;hJOEMmoBea4_XKoiLg+y}u+2W<_9t>eJot}*1
47897 ztU!_?kiQ@%31K9F(AnL5d0Dc3-~A0pV>DNJ1fpwWyg7D3W7zHdQM#s_SEUFq%j%pl
47898 zTG9yDw8|XkEoqD?3K3%X{&j(k8VJJ6tR2%yav3rufCHW+-B#Qs8hBIn_As6GXI{WL
47899 zNZ<s4lQ`r_U{sRp=8qoUvRbX>t4rxqYYH9`bw)wC-uh;ORtSXOd-#d^<})|E+!3uO
47903 z^5th%k{BLy>-(f?Gs1vB5h8;@k_aP&Sc)h(5e(8aIBN(C6&rCjT1>?`x5y7BU%!Za
47905 znT{$df#VS)SXs{P{Se#)Z3;=r-33ijPzKRZfR3=5$@(&g$r2iK1S{=_PXB;x4^|5f
47906 zvr0bn<GU8h;VMNj6BTFjxpNiz@l8^r@Q|!vR7eatk=30Q4T<ekU-y1FOaw*X-ldBo
47910 zd#1j?#*LU9$!tG<;jF65>{CG1#-Q7r#ijWUZdDe6e2B{C$)r)AUC1M$!~$yOv<#&+
47911 z%=`i`DcNS6r5U)&6e$XcNIDnIO3h>>k(c`AP}uii{|cGA-#mh2^q}v|LMPJM&O|j*
47913 zu`&1dIG^Kyc`dPOrmW^lz-_GXJ>YNv@2FfAtB=n&fy0qnj0h~Uy>aSf(QtP1(7aah
47914 zP-SjLFrjY*d`8#2Lf=*sicXaIA~3IGKG8p&Iwezz<cmjBXU^*qe~7yB?2Kp~rY_?o
47915 zgbC{0-MMHLsd)aHGl+-2ohzMK%bkd2_meS|V`yOAT%!-K73y%A2PzyWot~-4e7U6z
47919 z+k$6bf!?er!%%X?Gjb~L?rByQU_?oo!-(=Z1RZQuJrq&i$7dUhEn_N(El0i@D=~ad
47920 zlLpsj$)W-s%wdR0knWv969H**ErbZ&O0Ps24NZLsriKm`Lf?00$)H#nR%g4V(VP^G
47921 z4_O5#miVlK3L@?3IHyTt_1Of)kMx7T&)Tn={&)9&10j&-2J3kI#LzKGbXO9~Or$uI
47923 z2l(;&!2y2B`KZKzKOd3v^>01GkCzxU7`DxBYI2I-|Eh%{lFp^ciG?99eSADtE+M<H
47929 zN26yOu_Mv5vmdI`$Zs77oh?Vlp|kz{<8ZSHZ129{!u?^h-o;7SEE08L@ncc5o-nr(
47930 z9pWv3L<p2mf@VjeSod*)u=~JRV!CcRX;V20$C{4Ej)Jk6?#famei+9x<L0-3v2r8B
47931 z@5a;r7!WHOt6tvIJ;3ea_P2{+wPtmQ*^C2`M?zR5P-*xi$3Uf{OR(<;DxG>w{oBWs
47934 z$z$;!ct`bCV|n%93Zxl-1rqY{K+G#-@Ij{WNkDEg*e6W&D<!jo{aCnSvK=NE1eB3j
47935 zI3~#$9l`^u(0FiOw2k7Wjce8F^^;XAe)F2B#Ldvz?CtZ9Sh-@tSj}PLwe9z`9_g%}
47936 zVlBhD`;c9G42>7c5~qI9H^ZGkd%&!*A(vxx`BXtKd}4tY22<CG6?-*AASfQdY+WIR
47937 zP$*t{U^!XOX3w5|_Sv`9Zl0_;a^-T4<KsGpJrut@``~j@>24ddf9Oq5-k4d-WctfX
47941 z@EezD`}7KXF-XF0W{M;toC@4zJe9v&tRyN|mMhO}G*`+FQhw{J>#gfBe<<QQilV?q
47944 zFKJd7wp1%Ik%c^0Tz~3pV}+l6B_>_l{#fN^du6w#-F~sHSL2vSCH{ku<aNtnxkxT&
47947 zC+YaZ9Pf9G`%D{<w1_l0ZUCM_k^O-Ky&4=iaIwe;+%KoLQgAr(_`m_vvEz&*@AQ_=
47948 zPFLKC1O6$-M-F5hBa`@_f=(Nwkputty>B2_koIufsXHyFJs3Ufy9D5uHkiDr)-usb
47950 zf-``HKY#CK<dHzr3)Db#-Npu^xM0DI*LX461?pK3S4m)DI$;Fln2r&6FdRffT*8ns
47952 zTq#jM55j<=T6)?P;(RimDp@IiQSzTn-Sb+De7w5Z^iAn#-w2?GSDmG7^;L`D_SCAy
47954 zH2Ue(k_j9ujIcs@QOoIaTu|iPmGddu7Q!5vT(qWDH9}HYpcU-vjU+~M&fbjTm&v~!
47955 z=?}}~y};>6M9k%Tv6pey<LRPVun|NENf{Rk<E%<1)}L-PZKsm%XM<!IW$}=?Q-vVd
47956 zzSM5#-~f~_-TO`C2J-&Ff_X3H<{TQ934cm#Y~k)MQEKGEJl~M@_+~49wY-=>!9jPQ
47961 zTCzTE&c{iGL<6WfhjJ-JPg6?MEX)fcfiKp7Q8ZQCiDt!SN{{E1=?d*(zQ~UuAM(23
47965 z_67|i_uPnZWmI+TOWlD^cXuWkAW@MALmEd7$-_6=?UZ6!wo<&^veL3QD<dCW%bPoS
47967 z&`2brl-|0v6{aK0sv%Gh_>4b=Si_3-L6-k;C)gOaA1yW_`H~Xl<3O_XypfazH8rQ=
47968 zm=EO(D|@SwB~Z0s-)LA8@1z)&93c4r1lEn&*u$)IxZ_zDP$Ozqh?S3E-Rz9?mgiqv
47970 zZT*~^t?OlyLN?lVb95UgEvxC(-w)=42du_0JC}w1M0{Me+(xl`_mICvetcL~*6|x7
47973 z)3=MXOrS*X^tE#L>{@#L{UGjgBK_?e7iWVs2fW$|D)8#kW-`|VEHuWJGMK=0^uN_o
47976 zF$P$;%Ivgg@l1G>aZ9CW+0D2WERqRRm|xxY4^uD0?$u!leWyD?+ELjXmuY>4pt-Q7
47977 zx%Dluh=W#OCP@(88jf-|$K@fb8XAwN;xJt!m^K4TH!^2D#sFWcI+m;%W+RUq!3UGK
47980 z)rBV-VksK^$m545n4iDnjn5oTF#oUj{vMq}5|Bfo@uVlDW8%SsE0TR*5c#_Vj#px4
47981 z)S>6zxe5XEC*Id?l*)>gW>Fz1rx`EpsV0d^88-Dc>(zWZR?>r1D8RtHDERPyx_4pf
47982 zC#PPV(t(<BKMc*Yj}9pAmjD%a<DpPAD{*?aR__LQ6wQAwD4BG&EU|ojsbAz-gbiYW
47983 z75LKb{R#3c!a=ura1f8b>9JhExJ!%Vq0=g5biF8~9Qfc$3-NTxgy~%&l#97ut6`cY
47984 zN`=p?YM1O@-aP>xT7ZRI_r8MsON9D1KIroexdqr(R_u798>zNnPN{dfk*X$h4l0Bk
47985 zD-3xi$6`e`2Gd9Fe$MO^T_-w>_5B9k&m%Kq``vx`SR0)Qn;^t3MFG0mUMnYTOU}r$
47986 zdomN8yTZhHzL`{Pj?cm7VI*0zEXpuS?g24u?uvVb9L+SHNP-}6KQQ?+Lcl2Da9}d}
47991 z5grRxL;Y+zg_A(-CItVU{^iuK!%t|3KXD**bh)&UiV(Pkg^Ow~sze1<GPjl#a6ulM
47992 zlyI;Wnu*j?AYc@8mg1k{8uB!>(t}fY{(gE`uhr-bE4BuYvBb)D%bHondS~mT>J@C^
47994 z2<5#!WnMgq9^aw{qrc%02jG_%Ix#jIj}}UNsU#O7n4a(&)U+5wuu-GMGNyIo^(SK@
47996 zjIDmD(5hY4V|gV%>vvWrc$39w%&h3N&SLx*-1f?LjlfHD%Q0d$1>L(<zo8IC5Tj;s
47997 z8I2(j(`yz7zTN+pc=&TmTXQirSu1>-@$es~v*!)UXx`qPh=(EjK7%sAahQf){(yn^
47998 z4~7RjoJI}Hqky<dX--|=(F{T%krEMZ<mw<Ej>Kdon?6@Bbn+U`|AMJS(!7uvl(?B!
47999 z0edU+D=}@&T!?|F7=ckS;zh-3!^$lPAS_IGdk)~UB_&inDFAcTNa=~3+%MB`T@ldQ
48002 zfM_^TAxwoNO%Dh{5GmqVJ@4`zlAheJ&RqGvxIW-HA@=(LnZF7PPY~5M=i@;^2%w>H
48003 zAfh<Wg9G%szaW?q-4X!(9ug62X|(UP3;vYo>B&h9fZcvo<OJzQGuy34S?pwipH#%z
48004 zGdB})JuazE=0fYu?+12cz-jnKDhtp(h!{<Kt|o+&Gl-e1M6|k9m=h$Dc<86Vv+ye)
48005 zA)lu!p)jEHpWpi$vWdJnm7c1>XEB&J0GzFFf%A-0nsrIFvQ$Ee=8=-i+j-8?;*y+8
48006 zovx~l-IyLpxx94<NmaIR>nc$d8KY<}M)PO@P0XW%w`}I;1&P2p<8?#EHqyE#%Tb8&
48008 zeiX%G#z-C^NL5+XC@Na&M2()Y8V_j<5XeE*DUip)0!NTye6D37Q$iv#kj4mjA8y5I
48009 zz^!oq3sjrR0<F9-+1@{_o}Cm(IBwwZ3-L=uWHEdD?)6kJUJ&64PS5V=<1&0E?bYvn
48010 z5qUnY*9R|Uwg+BzWx*Rm0D>)J#sSX-3AyhjUh5Vh|4E{8qWIESsjT;~!y&In4*7ZH
48011 zm)v^aG1%jH_7Akl5&9(Scp4>0#mf53#05afRGswsM!G~PB>Tab-iY`Ypi<QgctMpg
48012 zMmDBpW6qpQcsBsFi+=-Vae)&FSj;R*(f{bR%eh!#L?Sh&=e{JEC*go*hZbmgVkcT>
48018 z*a^rQESWWQac?~xvsY&-OS~ahi&j|PZi_cBE}ZFCqp>9$Q(-Er-<UOELT)c9*}O@q
48022 z@MNylH$Ae9++Mj<Hnddzh{0S4PK0EgJT#drErdU6>}^Su-g$U+VlbBnRec`m!?0<*
48026 zj!xr**r=tlypPZ_-gKPNh{q8WF!8O)F_V`Ut)|#qF%yjh7fJApCh3CMP4khcviRZ)
48027 zu!3IKll^#0U8->k!8i`giq=!SqHvXl<oBn&4S5KTvmLYCV|V0?J{$HX&uu?>e%rQN
48029 z_xiWy-q~1wqhN65x*DJ<wPLxSWHeJV(y;f*&2JbNih9c?z}KX1o)+|oCXM<Npqc+}
48031 zE!N!WE--M8P5nB2FxYT2LbIkF{jCxks{+5#!on0e`WD4U*honxWC8^2cxN?M5kwUC
48035 z=^kC%w^x2`CH>G!*vvm<pDb=|9#PeYxO<Ks3;r{>K-504@M&b7(c%8kgS+t5afI28
48037 zLMFAPvy18d9sS~~*9P0~9_Ustl^iW{X=(Z5v^=rH$%D&(JNPA-Xc>pgM~9j?k9VMh
48038 z%l&-7oJ0^=<GVS-rys5>yuHx9Rg%;Yi62-9>O<zwTr57^&+TQ63qHM-WZ`<JdZi$l
48039 zROI4P>*~hj+D~r-<0ppub&gm?=>1GCTpVO1-Q9{SD^H)|A+;Dr#`q)lE3TD+xP}A4
48040 zSUkFu^#(cflGNCnmKH1VIV-=HIeM8Q=d8@1ey&+tlfC)Q5cBzX@Z12a8><LAmP81R
48041 z$;}GQ5+MZ5n8|DIrrb%=@K6ZLwl!Peq$(aPoLv#(cE7Up-j$8f9w$gsY8%pIugqQk
48042 zzJ*vluB(0z^w)x49FNeCc)!P9cNX?Q`}+i8HK-(5C!;sL>kb;;%0@{8w;hs8+2KAx
48046 z*l{SpU4~}4ZJ;Q)^gu{vgxUP`$6htD_BG{5-~_~A?d#eMN}H{!o#$v<pnD4u#mr?5
48050 z6}u}g<z*8*&qys-C@|R1@tBxND#@gpd`0hi_VR15mi!gCTNyU)vFJwITFoT0u~fAB
48051 z{u}dm-Q|{TF`~^+OHxv!egE}W5M$hbok+EIM&n>6(yQ$pt?JP<=Z)-XrNptU>M{b}
48052 zV(@2WH=FA3AuPcSlE+%0!wPVyTn@jjBP>vfrNU?k4~C?{g2B_--q?CULZH0ey7#p~
48053 zWnG?2Zaf%w)-8XR;6`?OY?Gj{|H-#n>vPV874kO;J~y=m&-d-^3>-h*fvtha-2Jx$
48055 zD8I$35<(Ftk-WC^$=$&++*=Fn+Z9QnLSdRpXKGc*zVh~^@{eu4dui+3+6!xJf`z6C
48056 z2z2FgMKYpl^eeyis%PE!1UR;VJ0X5-tH&TNJi=av2iq9O(h(?Ulni;NtLQ9(p~<AM
48057 z2u)^X-nUCP7CU!JlFnf$5(d#9sk4bjZbrx$e1#!v{Rjv&7|pT&{rr13oD;>;nOwf@
48058 z*{Iz04j@)e6gC%({R^9Xx~G(*YKF6_34fT$4+g(J>ZI`cg%1-wVBzQ=ppaFVARa{H
48059 z8DVK?-vJ|6-qg8WmSr-GhEW6oF|{m2T@?A6{;@ZA-*dt_IZojI<A6RTYRGt}oVw82
48060 zynU*)x#*Mj8-TRpfu_dc^-jzqbeZWcZ0updAjC~GscXC6duBusU|twSF^Z?mTW-cX
48061 zr|i#tWad4);A-EwH6Z0mSuzVdi|1c=dCj_V&NJo#B>1<J!w3&i;ostDc)B|svUo~W
48062 z0vMXMz%%>snSp}=9$6X-6Ct2agF(@Z+P9(Y&Sstc-|N43bNk%dJGQ4s&n(Tc>3*|x
48063 zq11Tg-E61hg~EZU(6+Y=;qa?J@aBC6q3L8hQL4(|)u&RE<lF+>2l5;YhDDan_qX97
48065 zu&*<E^c+S7!bA|m5d=koNt4a3Jih;WAdOHV-dqHCCTKWG03R}l$v8*RO@`qKsh|~Z
48066 zca4tTf7eQ)w{~;$320|s<p*w0h$+#t3&pMM$qln!Zu-vmS3)OX_2jtoJ?<z>PPRPW
48070 zX}+H`IdpqVbeIm}wBWj7KltdF8@4y;WlT7}#&50P*_ns-u>FDS1GfTrUMs+@h$mx}
48072 zW3lJ=79^*thr@|-qG+Y3Q%@w<vrdh?@|p_;KyzYt`E1937t0$ij{(KYk1s)r6D3LP
48073 z%|>8#{+I84A$TJAR}i>XMyq5FaCwZ;F6jrJhHnO8Wnt?LZ+aqAQWOI6n|3|-T>h*x
48074 z2rO?c?Cz#)a0GGS_g0!(NG~eW-6uLvEyLYAW;KziH$J=h(AKP38sBTolv6+=!CAl)
48076 zbT~v(96U+y`(FY5)382%51w;cY(zq6I1s(|)UyGMAw?s9cFB0=(%vImy%>By-*d|=
48077 zEQ43!N$9&DScZ?MEamz}m=1Tg3J}ct>w7Pwe-@e=)nyMH#Y2AfF-~GQOp<a=lL}50
48078 z5QGLPnfK+?yMwR}t{}0y)dJRp_WZ)4-0zaH%cvxowotpYncOWd-8z#6y5+!1X?+bi
48079 zg6!@GUt2!o3F=n&)P^72?}ysn)Za0hkMV2$-<TiR*I)OhS7z&3B#1_BaiI!56kznB
48080 zzP`0k*k37yNh%P;37W`kh_i`TeGEqRX4T9-y7d#&FYGz{MHtb;=-H()v$a&Cq?!3E
48081 zZ}@-Mdk;8C?&?mwE2pkpUDZ{cbMBtlJ$Ys)?9R@HnVs2PZI-ms1{6@XKoSxNi6jYx
48082 zKq7->OcE9uW0E-=+xU+Shm8$37;`=w8~Z-?-^M-+?9S}{epS_RdeVx|`Fw}97Glv(
48084 zy&Xgm)~;8$VF_@%EG}_kHJ!QRZu<?Ky-LB~xAJR~Pw%d$_kf8@x0X+ow1DN~=SQ9$
48086 z=EI^+i|*n6u|oR3cTL-D?TM--bKvdSv%3}#rr&v!ZS$N;)QJMD?A(1Sz8km|pme2O
48087 z;na}f)JtIAyc=I>EF!Ho2e`ITnrKa#Z`U{;!AMr-!%Kk+uRF-;EZth4pl}sdqwHjv
48088 zjZ`bCj0}_I;VFHOC4{Bj*NhIt7Y|sc9+(Gz64ohT4b81n^q-v1Ia#tC&4m5Qh+AdF
48089 z?k8T{e6F`Cvg<5gOVZL-tZ<KS21|EU=KBy*B)EuFi7q^~AQ&8jFpPQK?%G1hqAB2o
48091 zhaSBE3l`~;(t98mFIq-INo#cyK1swN#-N3S!Pc_HBx-Ep*E?yL8O8{b!W#MHuhbaa
48092 zazYZv=GjG}^;B>LNJTJdFjL2`T{dCO!VXW~IE<UKz|l9|X3x>-^#9eAzzX8W@b5r%
48093 zrdl*&<HW6tLv@OZ@v(Ff1Hp?+!xAK;)>1>VT`8dzGEgfjRX--i)ugB>6`GzoRT`MQ
48096 zJ10N(@pD5x2lwV@bXFx5Q>Gzy{4c?A?;=JTD36Bzy1o;yZRYUp-*Jy!Ea{}mn;_dG
48097 zNxLqUGjrwfV^gr8vOfAsluR-}QXyG2W`bI#=*@+zBix<mPTYH}03sJ7ldCNbLC55}
48100 zwhO$0oK`tnbu)?I!9M^2q-~i5+9iFpS-UQY*dM_u6y;PgvY7qALylC~Mm|f)tZ#p3
48102 zMu1H~QCPnvfdH2yazgoUy)-J<jk&-QYBA&bBF3x@rg9<&d{J%6?~7$qmaZ&Z*FSl0
48103 zCbO8*^6I52JiM!J%S-Qlw9eC;uNOnPn2`<Et;VzXZ$b&6x)pp{GGC|nptbZLY-@pf
48105 z*z6N?iGzj1%eTR>&p(^Jwi=(G?&XxyOh3&V<y>Vk8XYwQ)sT&xhMIQ~|A=Q-8%(5Y
48107 zE=)Tz0!>E#bgk!D5k@V?cU6<SM-x!%f@x97mSvwpc?p)c^$tqR2k|#MA$Kzb=xXWe
48108 zM0AM(8ct{TfK7l@%Vul}Bv-U;3WQQ`o4*;;y^gzC(83A*-I)s$*#j9z$^iu}(MxsU
48110 zG0n(!xYe2<BoTDJKRO>xojRS#97<-M1}6<n!vOJQK4}(S-S0O3+{^$<^!xAw?GnAQ
48111 zbZq1UM>9SX<OiDGVlLJPv+dq*_EgbdjhruB7-=yZXMjl9487}Aa?eO&o!^6&?JdO1
48117 zw9~Q9>ZM-uVD<Pb&K}BV52Tg>8Izbp#?+DFl4%}!^sG&WlZTmkkun4^6?Cf~UmzZL
48118 z>j#~$PHs&|v-I(%n|u_9(mc*hkJiQ57LUCp%NAp&Q*2j0INy=m?|17SN2Ywk$(O$`
48119 zed?EIY*EHq#bo8tbB-w6We<OOcaPt8BEN}_60d0m>DEQ1<H+46|6J422;kU&0elET
48120 zPz-M8VNJ=ocF)66H7L<y$V@wK#2|6b>jZGqK}}4L4_M3b%xy2dIlgizdoXp#<$N3v
48121 z@MPW^J^t9u$8HQ7jw2Dgflylj2Rq-hL|?sM(=1qb<@*L*Zxg2}gkVKoksb5V(=;Cz
48123 zI!X)cA|%~&cGq`g`a(QP0uh-R*<HKC6_IOqPal%98iAp9TGH-4kn+OO+^tWhPQ80}
48124 zdDs07>6kz58@Oe*aDBDs$V|G$f55);G~t8d-1HxAM%YC#nn&ztHY-EJ;}}8FxN*ns
48131 zd2o#9v7zQdJ!tY>j4(yI6PYc-2XC)2y9PxlJQ(jUXG$uH$c)BVX>ESsVtghz$cT!*
48132 z@~U%+Qr%lS3*}r2YtgisQf1k11r82}_xD^E8H<i#Q>oCQmmbH->CuBPTX4guui|Im
48135 zfx?jdWOQ7VtYH7~;e)&0Fgt&A)@}JZZA~>?*f(|J$&1lZmm%-MZ|uyN+v`Hzx~ydV
48138 zEJYd3)y^cjS0<--tCpDzGNe!mJ#(#Xwk9G2vEC7u)Cd*F&AC!;C7WAG6&VB(h{zp@
48139 zV|_JLjw{89XfzU8MBhgx&MoVaM1K~GhJxeC-&h@k0@)MRb5=E~@rGdWdtN>=c)qXi
48140 zhT1L!r*OTG9)7HFabgZ->Fi8y<ffjU{{LsFbWkks^JuURf@B(=z24tNwr=t}e<AZS
48141 zt!JhOs<S)~>j(@Hz3ce-wdb3FmvAa^%5MF4gS+5CR*U7wd-^5>aC96P{?d&HPhI*}
48143 zAG)9u2I8iffb4)|+HfbT$x|4Chs?kv_BBS0<tKX21_KtZ1-+1*%P9wl@|K6fld;_X
48146 zEde3GH)QN}EpV4u%oVZ*+(iR-f})(p29(qd*q2!?o*%E=5CBq!X^xa#uGBFwe>U;@
48147 z-JKX1EeeR){oJAKj8&~VOT{ryyT-KDTsPI2mI^p>lS~5{8+2)5acS?!iF0dD)Uh%M
48149 zKlI7_3v<qHR{Rk0Mvo5~xK7n?P|~$U+pHHkPOvU-=of(AWM>AeGdv)Q!C69@2Slw7
48150 z!*1jK58jsUDIhq)5KK@4&S`xEm!e5HsV?>9)Rp_*hSMxmp`P9;-lj3c>wEhSoVxT6
48152 z^+*Io_ezv6Gc!<g$R)rX&X1ftxBADeePA>dRHn-9jbK&ffD=Jb48y3zP_}sI9oXM8
48157 z6sN&Im_l%%e^)`3u)hXgAUE05=ZG-y1IFH7pr(J-hMNSDX=Z<_9hnHBlP61YSxC-K
48160 zPrP|<;V>{g!wqDd7VlZyb@a(O8y1JUu(%Ha8+v#%8@k?Cclx((-K~AV1_5vPVzYjY
48161 zdxwFO_z(<4O2aUXq6OT+*>3=(tGB*j-Bsw@gU6gZbbUt13oPxylb8O;Zix-nq<r8_
48165 zZLEM526z3(ZdqFhl$YnO`K1#@XU1Z<1Lp^By0y0LJovCoi~_2UZfdZa@7-;OYS(HZ
48166 zz}eacYr38E1tT>UkCdtwf{`@Qm?&w*0yyAHZ@IVLl?>H-Q(4K2ebNqEd-`1ZLtdNy
48167 z%a-gNnlgNmT*mCb^J1bgWHQ__Vp4wm^vtc3E_NoAjhg9T{Y~3X5)S}rKen;7*Ui;t
48168 z7>@3U8Z<1oxnYKg-EsW<>JOXH4qy>ChIVvA+F<_%1feidhM|XP2a4qzfE@gJ9q^Gd
48171 zPLI5F&kdUbX-<BAeO(oGCka0e<YKNXGmv%Th20CSHr<4iS+vppiM7u-bBB~$9olg6
48172 zFgIu<WKqSkj1~n62BfqRk-qKnW6goY;AmuN--aWJ@0bjh;YcFtLKZ&@E_!9ViAHUE
48173 zJzo%lKMw_d)+swQjo|7$%s3u==*7um9w$)6A3C(OI@Hk)u6Nc7117<SgkmUt-@C9L
48174 z)(O~J?-y9WhalcKS`H;n&EJr?uxs()f$tBuBOZ@C^NpFJlAB6sQ7I-u%p>Xm9|#r%
48175 z<3~FKH76Kv-I>uP{q0J;^LtK&{>P37tid3TaOr=)gOCs~ghUagJ4T}36m4s6VJ~Ov
48177 zX1W6YskM*Vou=NPfTN5mMGxlQU&koidNfP5Llm$%_ns$trxE}H^S-xVeuvY0>e+v?
48179 z15z!iFM9CQ+H2f)H;v*PK^PtVZo4B-b7UvxA3sV5My{FRRZ|DK1hnDSXngtNrDvQz
48181 zhuifCT<VSPKfU_JMxUACKuF`&<a)EV-f6bU_7bg~W|YK&r*FR-pQi)EN9PvBsEBGI
48182 z-W*9BK7Z-idILIeaNz8#u3v%;uyrly;E{*VwzQxj@_xRcx(Yo?d<7`<F<YV0hAel}
48183 z=q}y7ty<H6E>p>cDJ>zuo5x6S@%ztwtkJH<5uEn=<aPaO*y)pk&3-k(Gmc8*Gjw3=
48185 zRO-W5=Fl192vF)H9gJv?Ze6>+5huF!V*i^2rC&|*j_^Z4IB;t1ZhIU!(wm6{QJkQ8
48187 z@UByjUF>Y&CVXDEAaNT1Hc<b4TNfniEz))MmPYgj4dGXudP_?c!Vc<t?8fOr%?Ezd
48189 zRHrlbC2-q&H^|v{+^#|>$93HjsK+Tbt^c(1HWpTM!m_i$*1YZV=Xc)Tf?fI7dR9H3
48194 z%>@Oi%yR?NVWS!|(}pPf@<A!4ju-p(XAb{TU$mG=TTsk?eC0dn%^+CRJoC+PsYTAP
48196 zlT{EHI)PC$FkI*b;V?(5eTRnfD|rwN=k}-Oj}}(4Ee+;`txc)f@#sWo{Cv+~ffw98
48197 zeZPu&?Nyp%t<3FQ7u)!y)<FU7%e+uA*q`**BGDta#^R}LddM2c1!wc=Q-ceqP2q>p
48201 zJ}~>H1GG9_zV?~>YVJ>j`uo?&$6B9LviBrco14pA=Yxug$?WKg%15J-pno*4#nXzA
48202 zwZ1q8m3DL?QcB92pzTT}t*lQjms1QSG1Iq%TV6&h)X{8hQ;4-4y^Iz!;2xx|52IZl
48203 z+3;bs>9jcg%G<lXi`Eld|1R1KH@m@^k<hlx?)<nK1!lK)sBHX)nB6KcyW-|%w~$B&
48205 zSbVy*ZMrJ!L`RHD;_B=ZE(?Lk#ulosvC%Cwc4L)2bAMFXSZ8C$2E*>kxKoHx--Kt&
48208 z<l&2i>02I7mNZLZGdVtCxIg?XB6RF!bYHM{-aSdTJjD_VSCiRFR55^2Pz_$n7`(~p
48209 zG|6!G6W;LE?rhn@Vf!wUq6v<Y?bo_pjQSnOUO45}-})g#@AlRTl&$7FF!k6T?ii27
48210 z1|q5{X}UUTx(~1LnjmHjR-x^eS1PrjPX`%1CvyfL=!-^&Q%1pL*=fWYL2!!mi;)yX
48213 zeZBV9eJ-p~0`;nA>~;IY@T2kQFx<7jr!+gF@cke>LvH_FXUBdb`Jd)N_isYv7&g~@
48214 zxwu9-9<ja=x6LDh17@1%D{@|MHBSKbhVFr)gQ_Mn3}(o)FB-@Ns;5Sej-*Z=t|kM;
48215 z6UE_xiF>DOQhxXFfl~uX-I~o&$!8w#e^KqgMA6rG@2$zfcT0h!Pd2MV|G|$>Vc_eR
48216 z&<yfhw%Cj{->bDZ;CJ|#b`)%@XA#i6RHSHdEP}z6V=qcX!QqFj!EADQDH`8ji|wjL
48218 z(UQFWv7wfgukr3HUmI^>lU-K6ni=1Q8(-CGzIEa2fB3^Q@Ku6c$n}lqDP7Ca)ouVo
48221 zU^BjGr!BP>8aFf<HX5YOVB|vuZ7dm=OgZWuzT>XZWCq%c!kweBiGa!jCG~5$USzg-
48222 ze1ExM)h>)N5<FD7q>Hw-2qq2yYmur*Di17Cq!#}lz*uOSao~_`Eb7mkXC26IvmIQw
48223 z70#t^^PzK&!$@@dPn{<ph_Cc)^w>E9S%-WISd3Jgv9(`|gWK1Az+Oa9TLbdomMS;j
48226 z`8~uMD{b}=Yjq%70LBi=9FBb769m^fSoe}Z-kr_7ZO_5fnu&dV{(vMk9mpIR^zWLF
48229 zS;*L7OvtBlG>MB|pc}3_-~=~=1V#~z=HN?mUft5Cyj~L5RG<`Y?0W}tH=G4%=8@3G
48232 z^m;Qx3P>J);6y!k#xQP>a<3VhpDs-I)gO^WfWOU3FjWY~68>^BoN#kjv>({(k@^CI
48234 zERC6?drHf<#!CsB36x2S*VIbCpHT?dG-q*~Wk`fkihdu>;5fKPiX<qa&>I%ajHty$
48235 zNodO|ds=tCtj{X1uF_Ro%AOufjT%PUEBtWRfi&-?ltad5DP>#+8KoGIrL+}Bu;5@R
48236 z!GMhN)Nzneiut^gQU3g1WGkG^8cBJR7uoU&tuNr)d_8&NX|cxV+V_*kfDNP+FK-Ev
48237 z=@hGY+qaXeaPc}#=c__OYc1K7>b1wtogF)?+QfB^#ZVN-$elfCKb=;`$KxkPxBa4h
48238 z(?pcEZ6da5Af*0X*{#e2ZI%1lj6<PbL9!(}v&9Q!-OK}~80+i<#gW-s7XyJQxlo6N
48239 zz)9SUZ)hThw__q~an^TeB24S<DX!wREyVRNjR!4iOA8_Lz)u4E&=(RyB~=P|CE-8Q
48240 zQUCXtvci<9hPj=ZGC8ISF=G=`2E(}1$i2??;)c_A77Vw-Dw^Ki8}p&qR54WWMal#r
48244 zBuqgvO^qfUNW4+6!TrV9&@kymtQX%tzgIGYJSh_dV@R=x6{;QRJ-PPbU@#b{EFGH4
48245 znAU7)ZZb=8IL|14-K0e!63O5F;GLPhjSs&bvQC9SfaZs*&f~C<90&|>Kbu>u682{o
48247 zLi>03><;u!rDjLGib(b_w9z{@J{L1P4v_Ktr~Jomeo=NGfvdFl#V9>CUd#vhc=-Rc
48248 zb6oiW5GD$_-4kkka>d=gZ8RJ&xc*qmh$si%b7a5~*`m)#b4v#nIi5@8Cy%`d>ctX<
48249 z)__R)jnODj3lO8p$ls#4C-3ppGF7LL+qKEi>^p(~pBLm}DxE&OG6}Vs;*)Y}Y^E$)
48255 zvD9nveGlwKWAVg*7V{U6$+?8Ma0U&<>_hUrHrPBQuk{bFzDF-zzid#5QHn(K)0GdT
48257 z-P4LHh&x+Z3iuaX`!Lprz60Fsscqb>>Y&4H39N6phfSAs;}LOJ^Wp#ObZnq*e8!ak
48259 zd|8qmT7*{d;8h?VKb*R2q56jBPKwKSA5B+}50vL-eOg%4NA=mI#rW*8AjJbC5*rvc
48260 z3IQ$_&HmEEBa26Xs-FXYIrq|eE9<zvp0|L5BWoYTPb2RFu|Loa!e$Wo^IGEp0PxFb
48263 zJf`!QrrP*0jA)$iC!l$>Z@tk4aP4)*9+1vJD|eunVH0th@h2F$$kN&L5*-hVlSHC;
48265 zo^a{NY<4*piA}RZbAb@#<dy#)KaKt-I50?VkOreVj*D%@VwBW#ntkGaMJ}*RCbPtV
48267 zP02nw9>v9E2&Xggg9qzmS#cU%#5U<d-_Jw?80||3&_G-aOnszIrWD|JMyF#emeFr`
48268 z%5YbUgA}c~!9HcTA>5a(>l;s;A}H1_@`uj8Ztu-E{~?+l=ogcNnrV#fEf`a?qY@$(
48269 z0@IJYcxK-tM_>JWbCGKvePqy=x8<KHN0-+=y!iO3=imG6BN&0BVw&DPrNHHGRHP#3
48270 zZ+ZFa_buK&`uf*1e{uIc$af%xP!U3DIW+<_ym{>HA9^Rp-1gDxEW}qlg3ZD<&S2X<
48271 z+k3SJUsg_T|D4z_1I_>wk%XK{j9uckdu-&&H?MpV(U3m?!H5SO42Pxxn8|+lAS{gS
48272 z3aGhjb~rh)ANN@%!+{K4OH~2`GdiCxm-CXbFTs}w%U-#<(33j6I3~dN!{Cn$V;2D@
48273 za?m)naiYs7e!GR{A9w#8`stRNPmZqA8-E_T@<&&`i(HSq59lnUsO7!O0v=sjoRo~J
48274 z5l){j25w6k^61RC8oGCic-QYF1Xx9YfA%R%14j>cULw-=vyd9J;Bi-ipYHg{=ylG0
48277 z{v#wwT!VS5{p20jkqgSo2jBUM(h*?t?1SM)f!8c~uIn&)WSh-vuqI)Te(aPC?A3H4
48279 zfN7LN-bm@vbK7T)t>X9>(dWROO?J68dy2qu1<ev2)$;gHU%i7y>3!f1?;Lk%I$RjO
48282 zzg`b$%CVKz<5x=?CbrwLcU~Q-FnRbsdI<d|`|)Tybj!5h-x|=>Mm4qG;&!YPNN*8!
48285 z&Z{{3yIU;p+Q06c4zya2Ore<@T~nKMA)bKkoBs}$5nbQxVx}BnqB4zC8-_;ih6A$Q
48287 z|LS>eBo{k0R_KkHSqU-v6NwD2WD*>kiW1cmOS$-=^6rZxuX_{oy}Rmudj+2ZS~1_L
48288 z6Y5o-d$J|EVRuLa_EftHm{&m(j9OoV(}1Lj^=j_EW2QOFB<wfSs_m(BJ-Y*B;g~HV
48289 zaR!RW>Y1tAR>~kC9h-`toBOTb_}r|{gksT}7S+p%9)I6;yU)LS@mcJMuf_L`UVghb
48290 zv1il`KdUs3l}da4L5)!%+H$(myFb70u{+bXs3g^MR_s|%5I$9h?7-D*NCP@skF7zH
48291 z)9zN*{;<WZ)b78#SmWc#_@EXwO35Do<n8-zL%$2}!p(Rb#{p6v;5eeCOW$a79I=&!
48293 z7Ysf|izoJ1z(rIp9C_+{dxJiN#_}V6<J0e~+0UB{-<a2Z6e{7_z17<5pE2kQf?%a{
48294 zA}xZ5OUevNX$3wZ2QGz{=-vT!u;xppf3*C-HJ0_>$A;~9PI^uh^hnfN`}fHw?$2Z^
48295 zKIEPJltHSpAeSl`mM)6A!0@7Mj91|DO#9-(_yw3KH}9qy2e@WTg$cM#pS$b=@gKRp
48298 z|1*M-vZR%w3)fHjdt+R&5>rF6H>^DR@swstG)v<Yw)))s!*_n{^^^M+Yl~BnUCWH@
48299 z7sbJ0U6S$O!LiuEd(J%c^zNHejzpuE&|yys_N=>$ty_0-57A-Oo1xy}!s$m2s|Ml?
48300 z8gOx!-&cOkv*A_)-X0fBo*fv!U5?A8m6Ic6;Fdc+IsMe94<p}fi%UJ&l|S$lPzJ@p
48304 z)y00cqv991x~r*h0qI(On|sisSAEoG65ncNfsx%A4X@Ol0FddIy}-=6#Ux?s>S$a0
48307 z%=$Q1zFDp$OhSzr3dt_6tJ(h)k0fxv5EMe-Pwwg=aGJ>p2G3ElrJ>m6!ERO4L2%+T
48313 z+bF%R39gz?z-)CV_4oE_EJ+!S8V0<>Eo?#!8nR@9f^`VF$S_&E7)xcMGq7ACq{0Nf
48315 zJ1BWRtY@7>-bk|brhp8?<ryjgE7p+wY<l}O+i$phzy-Hy;7bq5L2sn=q+6u1u)eU8
48316 z4}e$%)(v-KU-l$D6}SvgZ5Q!+<*mDrcd0ABb2x{xEn<y(84)K5gd$r6J5vZl!T!+(
48318 z8A-$$6rl*Y9BnFVSO7Gwy|uF{c?+o`BwnC1k=~*q>OqX38	Cn)a~{EeN26gZim<
48320 zZ>{P{DP#2&>kF=SQjFdYk*vhdl3?Vf?c}}kw)0%an12v|)+2ffo|D^bD>-@Zjt-8k
48321 zt?x1cR=Zs$$Z9z%NE53c+*V%yvj+QvF}vNAbaG?2-IUSN!!R{2UViTmGX8pgJm6W}
48326 z7U+09Y*>=Fya<lQUHK^z#(F#vPZhqgwIzyWi+=r{cpbhH*T6sOb)-l<EpF7ZKNjnP
48329 zBZL?L5O)ca$VTU$bc&M+LbQaY{|kGgrPa@Eb+-<<>Qg{x2AyMPoJO5t^t)k6zuj}#
48331 zbr{S!B}RG-Pr_y|w3umkK+%rzpiVo}K{gU}!_(eOu$f|<U>Q9jrvsTRpOYeQp?M!e
48332 z)6@^T9@j^)u|xnDOiD?bMXQ_)PzEDEMk`+M6TO6YmDmUlW}o_{=y#gD-2fx9(P1BJ
48333 zsaUtda_;Yb(7GG$1m%3-KYMu#@dU2?F_A<51=e1i(7-JvJ6#udU02;q*a;Gj<WJu^
48334 zDDiyh`$O|l+1j-yv2-F;o0>R2bko4McRjhZ=iVOV<WJtc_B&-gS@8L${YUN$^~Bl1
48335 zJ!LsliOFVwWe8j*NP;k|UZVuA(}agWUkeP>!q(<V-R3dJnkYXlW?OQJcP#nWwt0T!
48336 z<K3`-5HGhD+b(I%=ETZQn-ef(wO7nJrmoh^0_=oyXAKJEy}_`;VkqN<Gr=OlawwVW
48339 z$p<}WcFJaXeOg6Q3A?7z+9%jC$9*}UUE}Ce0v1m&>1-*%OtJ-YT2J`IWCW+JQnb8d
48341 z!}&}Cx}U2wPoLwtkhfQ4Rn}{Iagn4HCWm?b-uTGQFsa`QdQ0jeA}2tKtZ5>`g`@>N
48343 zSGQniyBBtl?Or7t5N`{vs0CXYYcR#mdh<Kt3i`-q*)Mdv_3ZaguTnM~jO<T5A^SlV
48345 zCM69$E~)+I+W6Ke(vh{}Zpn6hTLs&7B)SxCQK5bLKwL<Pkhqjh+)&gi#kVZT-qdT_
48348 zdo^7EE*-v?&8j?H1O8FuH#|$|1rP5rJsx*=s+&nW6gh1WJX}#Tkzmm<;&LJ>Dscn(
48350 zDIOG3wkwO3ezbYxV%is1ZK;SFxgc&d-If&79k*3brBr-t9f0osysHC?P?EOSwrEoW
48351 zqf_A%z!-pk7e)w~wA*Ljs)?Z(1{32&Q{#euoU}l;1q08NUk`-*S#XP{j$uh-l+{!}
48354 z4N4$U4bc1#n_I*$K?*1#<P!rNAlZ*fK339AKrt6Kk|rS7Fz`-#SHHeZygh!WC+n=)
48355 z2V@SW(`}QD>pG3(_EF?}C_2d@6k#_|TbhtsiDzhkPcb~`-2t}zKGI5oxR$~J<J#Jj
48356 zA)fGu13n>qDYiqHyxr_NxRX{_GiGoAsckl6C;hEQHSp(bd!c1mPVp)<)(n5Q-`4sn
48360 zrUY8d5~R-$5-ZD#kikGHpw~#-7KY40T2XW_hbn$U*}kCMEYP?`dJXUaFG=tuq33Zy
48362 z9k!tdjQmQd5?C2p*R&0pW(vk4@q{R{xIkjY4Y>rtnnIV>Z0SM)FC?-cOi^`(Cvc7+
48363 zX)la@zPa`*?nF$k`%FwbL~nx$nZ-IZFP&Z4cv@!dcj|yVINLYo!R@cl;$BYz$kbkY
48364 znSFb!c*kw<_S3%IZ69N#-99F~bZh@OSn$VV_5SfcZ%r8bIj29)r0tG!y*=)>l&eJ!
48365 zw#P-grF{7V+h&3@L39zj%M*m~{mrWCUFf}UL%{Fz8#MW!ulJEfXbM`#Lsq3t=bYBw
48367 zhIzVi_DgN^I<1NIw)l*l-1b<`W_)*ux`6%A&L!qHtE04|V7ig?lCEGMz;35;?qGfX
48368 zeFJ(Db`1b{N6F%S4Tw*)=pb9PR1oV6i|P1kelsEZqbqN-r`0S7P<Fa(Wb4>kr~L!Q
48369 z?<3&~Rz2QCM?~h6s_CX+sw5j1atWT7v?c`N!H@MY=}<i*15po5$-tMNMjo^0<RWn4
48370 zL;I{;N993n{V$z!bh;E%=unWL5`jo!ZN~Y>U?kBwU-zd{NTj^6Am)pReA-<5<1vzp
48373 zr+Ly&4E$;{F}MaWWOhtdXI2VzSdBAohkec-%39iTC~K?9!1iIw*S1WVufD2%h;DQ_
48374 zxaklbiq?l%GMQzJY_rgp-q$%bcX)jM|LZz6heR90>lrOI;=!FMH2g3yNd*uz-P{F9
48375 zv@!bS1&yeEvVGhzpMzi+Tk%`VFsr|E)x&Gg+sHm&+Cl>{Q7XiqcgN-1ON5cqrK_Ic
48376 za|U~IKwU@daI=es*d2_m)nkW1qTe6{E=K!V9t4pQs6bSi#YwWz%&jSj>P)Uz@7@-!
48379 z1F1Wl)1z@~?Pv8S*Ixr$&f^4IudmgiMJt}`uM%9eJ*uw?b+j#J>;Q@MljWBl-hfGw
48382 z;OEA<wF|NuVm7atypxRBk@&S&H&(y(JRSP4-9z+sBlT-%cQklMyu=CJGuD=&`%nLB
48385 z=9UdeANj;Z#xO=2qx;e2bG9*-8QECt%_S_q`05Lrk^1TX5|GTSWubf9hL%_V-Y%&S
48386 zv<90=jS0Op1VkD2rE3lvrdsWafvUk}h|P@0k9+-`po&qyo<K(Sbb_G5tk+A0IN8f9
48391 zy1r$=Fkn%*p$p&-5mjfqE>)kPvn>H(rvPwugx=q<0J@I#ISU+}_37}gYw?V`@z8K9
48392 z3-y1)`QNc?uXsNFsktX^8LtHx2E;HlN|uAD6!C{Mc%(pJ6b-@;HODZ4(HeH@4a*<@
48393 z#M)1B+|YSL1iy4+Krty?5~C55#P!$%AcAMiNK}+?LSOrK>Rc~B5aI>VC-54I_n8S6
48394 zl`t-11z8Yhh>E0!_(&gLJ^yz<e*V{<|FxgJ=*#cvKk(t_e)jFRJoDx^eeYXueakaX
48395 zf9DUMc>E1-_{vuwf8z1S`Hy}CA#VMH509w>F<cV7mPHT}AIqAx%v@hC>J=#*F@cAY
48397 zZ-}HcK>%SyR0@K4PcRjg5?GWHd5s^fFp*35JollsAARH_^N*f*&HI1y+z0nP_0(Vd
48399 zfz=?W31#R8s!79X^xYejHop+^78?jATBRX`X`hi*BNT(LBAeHxzKgsci-NNjH$Q9p
48401 zV^=&o85BUiy^gk^T&HbK-2NB=><I|S0qnE(@YuZPylvmz;HR}Gu>F?6W_JF)p*{`e
48403 zvO}Uw+#aQ?mRd*YE^S=x?ol;sV^2`8r~SEIBDw8_l}NhP-ZrbgVaaY)5{iIT5<OVW
48405 zRM;UxxFt7+Og36l<<>;`ssO`p9tTQ<AsmmA#f-$#dS1s+){9X_geOTaLgsp9hMHEG
48407 z^9;W1QS2SMc0)JON_dkIM!jU&q#P&~=MA9_Ev2-?&^b{Oa6k-BmJ9?(IEu>kNPrlX
48408 z!M=r2@DO|k9!}KZ;dlbYC~!Io1Bo$D7FipCTvTxtl`9HVh}E-=4J1ofvx8)lG2<Pq
48409 zC;7a+A0i2-5A9A1?BP49=+5_+T>hK-iXqtYDm$GQJNtC%%Yfbko`h$w=dkAno8nBZ
48410 zZ(Rqq)mmcPVM@cIwwLH{GD`}=2GuY|AP5EwCP(q$KQLgNLb3`H<H$=kWfDfjGa->u
48411 z<5bH=LF76NQ4u6eTfSISW@(wl=-!;==Yl*fXCf54x^HW)p?``{oIulrZ|!gD{0pb;
48416 zoK`z(ZFMy7rGMU;lWRhFmTWN7wjn(2G1w*{*iHaD*9SrL1-BLeLyr+Sr8vQt)VZ-B
48417 zxqXbzJL+NAcyCb`ji4KK!8%lPfdQ;T;Vrya^c?s6(p7Q8wjArLahb*wHT8(B-JfI}
48420 zL<PxhdXC}03L^N5XTRqa?gEI-ToRdSO-!gvrxR}B+0OOw;$RX5ZUluMi^MT6#p5{e
48424 zB+IojcI`Wz2K-wXs(`pNLni>|4Bq8jGzvNA>&*ezj^dojvVd{HZ#j&!4AiFxVLW2^
48426 zgKW}XX0kzjos0hLbK6HJ`|KwJ-rxz_{y0+|fT=UgZj7c9r8An%i;ksLJs|6$F@j-9
48431 z!2MkQ-4`_a_j^FiUgT7*Y{{zDB53#fYhK{hazh6<O)?m`9~`sqnUYY9<OJEiX9*@1
48435 zRtg|xjMLf3VvOV|XrDAF{TLMfwFfs{dT<;K+o0v0TBr>VzN@>f0y1pdDov`}s-CWN
48436 zRBU@SEH>?x6l}Fu7;W3DO{lUL5TGA*Xa4~?1FqJ#bKms`+noJ>6Qqg+WI-zxQ5{!7
48437 za==r(al5ns{{_UECT>kefPHGX5X|u)Yv^{z{~hW+0-~amop;uHY2*feWt-%_v3`jl
48438 zF9&y3w?qg+)J>7dNeT(C@lD&M|4a7GjtKV6f{?<!TAao@?-t)KGn%Q-(Ve6{8QUDS
48440 z^+tVjf@@%6^>iQmM^6$qj**OOURzA(dSZ5-a2ydpWW-sn`DAHeN?8UNPaGs|`05vT
48443 zDqa-s-XYo-UtjsmmCpcUyw}4)Y<DeFGr(OMK$h9@33hUVn*e{`%T7+R@E^e60UPeT
48446 zh=Pz%t;yiPnFE#{Jvx*g2#|u8)+>fou&lfo{?B*Z*Iaoi{bJ-^xZ2*RKcK2N9y~Xo
48447 ztR<6fQ2-t??jF<zGz0R=s5}1zN6&#-db^?({Jp(&BuXcHHJ{8;kzj3QrS=tM31LqD
48449 zrx-jw80hH<Gb+kj0|E`yzBf3OQdOLyap0~)Vvx6hz4--A|4C><J&ynz@E9`V3Bg@T
48450 zvADYj-|2`~0WnEOEpXs@GX3sycc?K)>DVE)nCvOm`sD8*U;4ohkby-O5yc~Gzq)n_
48451 z{5AT38to6oM?y>0if?jvD6?mvr-x3M)?g5oE1~Qz%L-g12WomTs#xOxNe8*}%6FOD
48453 z<nnt?j-6UQKJpD@;`ZA=SQ{Dyc7_BoidT{ehEfep*nQt{HsMd_6yMzGk=?am03-ZE
48455 zReZhikm%(C{$RgRLRdYSQzeB7&5a|-|Epv}SMlGOe?)&D2D(H%-S8BymuM*k+JG@T
48461 zcnM6%L<UdxSq5%YM1-qOPilj6gWzYq75uDMfuEJI3kA&|=GFn5_TDM5PpTM#fC!8d
48462 zB@V?9oF7Q_1DYo%d|nhG!FR%(!Dp89`4ZljKroi@C*vjj_-<T^%0qKy@WH#l2Y(rS
48464 zS&ZNbOwI&D3v)g$N^q$HLg;cl)Qjq-K+%~jIx%C3zM#K<PYs;twO3X>4<OG$SP<nr
48465 zm0o}JuU3D1k*s?;M;r7Ah-%5vN>8*J)1=HqmWKE{jKcDncs^Vz_4tdLMf&z&34e0R
48466 zQX{64k}^dRXC>MPf?+AddA%a5=$VW^NP-9#p_H5lz48hV=Xp7Dn@0c{k|z^)6|!{+
48467 zfYXwOLovP8a;4WANF-C^wQMl&i}<~Ko~srXPMyx}>pxTJIhN3kk$lCU5kv4{+<UHE
48468 z_S}xV4Q^*QGEVW<zE;QUyWG}Dr_Kk+Ugk-LKyj%e7ZOQ=V&tBjSW{&L$8m503XaHA
48471 zZL__1_3i3))$UHZBHf+kcGlg=C;9HAv!rv!22AJ>FkqTZCj>$-p(T_A2n0w1fe=XO
48472 zH6$SrLXA)NeQ#!VcV<^M*x~oj&*#;=&zo01@AE$O&6_t1H=GEJ-ZLfytVlAlR_?uG
48475 zuAD1S36SZ14w-`M33fsGw1-R&D%VdER6gxVl{#fOGS$_RqUT4=bO(?%WpiZw{(K@7
48476 z6Bz^;4sy(@-D9dqp&$lAeq`7!3YJ7Pey|)nGTRvlm5na*KVp0=ZWld-EYBt)_Y&|a
48477 z<)ji-<m9zX`3rB2Q^%Sgw^Ri$tqT1iCq#^q;YEhS0uP`SrAh&7K;Ssh;fO_@(G2Hc
48481 zPXCsgN*fJvG-_efVd{xwyq%LV-pM<y9LI;PQY!28_gQ#>a|$7;!zFcKJiMOd``pQ~
48482 z3}#GrQNqB;*<D_rB$yZ}XLVS!-rzLB;{L0@B@Fxy1q=Pth30~@d?=u@B(JQ=FFIJG
48484 zzyg<!AL{gt5*#)S*zh#)TtnJmAYMU+o{wB#;wLD$Id$x+Fj?Ul-rX6V8!%$J6^n5U
48486 zEE&2D^h+}hW2o9gmcwQbXC!d|(Y-mBXGtKEELaGLeGcA3BATn;Cyed|U0TCPcUq~E
48488 zRn1)?-6Ej@#4JawlVCv%%bP_K)i{LiZfs!yCViR1R%6bY4=0VHDGaP`o?$(4G*yJq
48490 zv^%X%9}57vZHw5#UHyGx+ycx&&g6{(&cZq|8w`P-f{V8zo|6U#2|90<)mEAEgVsFO
48495 zqgrDq@1~}E%Vhqfl4XUQ(;mqhk;7<WU6u?o$3h$-BAG@bll2kvg1eS(60s#=5qh$_
48496 z$&&{}K8P@>#b4K7uydN8I;a(t-T$((38?5%EUs(>sTM(*ge=Zy0e~g|Tn-nsIqk@5
48497 z<ZUKaV0k->M8Rm32t81cwQvCpF%Do1I<mb?qC3qxq;APdDBfYl#)N38jt@B&h^IG2
48498 z=I<?p&NYICTYf83-Y}PFoFyxpI@!?G^=gkm96NhZ$~u$&xI`$+0De}mGeELh-F61L
48502 zYuGCi8zZqc7b}?DR+G=;l5#wXhjYiP$Y`-5;vQ6{GrqwbLp0@>!{qVswvtbhrh>ee
48504 zE?;k$s6HF-ghWvjJ1-hJ#uhd+fy1QZHxR>i3G~Z6x!+@Rw(gWc&9mmJjU~ETjC$=U
48506 zLuTL<2vNtnN}tnYN-~GIT%=pYoDp6jLNO~8275Ue?3AWCfB}le^Ngd*JC6m#noN+h
48509 z)<bI-ddIGx8z)WelBRwF<w(wxQ8-B5Gpw~0ibM4dH|rFvjLStrLlz37+2JLhWbQtB
48511 zs)>r%`@Yl7(gS@Mmy?K#NgODZ91>y~G4Jb0SR~WXLb@}a8YLzg)-jp7Z#{CHq7oSF
48516 zDl}J#ToSn3%v+hvTy!|&>7K}y%5Ds8ywUgkKu#n~?ag_s0EFNC+>)o#ms>fUpLpt-
48517 z^6dwM6JXQC4UBq%Iae}92I>dzH+%-3H(2Q2APp~H%ybE<I7^Rz1n*C$O!NgCZ$?TC
48521 zJ{)B0Z?uK_C^A>Bg6pr+6VrMg2Qt4eHuO`AZ{s7)lNoKDG39VvLKSz2F-3xG{dgB!
48522 z+C%UOgO7qS_zOdq{Dt4f3%2?R|DEsGZUDiR7Q7Z~EG|TXm<tA35@7amiI^`u-0k5)
48525 z4pG+Ldk&d|qg3wo^&f@3l_np9#rK}0_VU<lzQ-FrP0$WK3Y)W!%ICo#W%NCMpEuI9
48527 zv~1@K2-XZeWgpr*)sMp{;%E8)7AZKZK`P?y`CUi__6%V7YQ@m4XM648l=3?hdd_F{
48529 zJJ;ZQffq>htZ;rROgO*amQ>i@$}3zC4T-&L3}3kV8lpO6m0Ycq%4Pb7Aqj2hgNAyB
48531 zX~fHC7C*|_1pB{3@}zyw8mPY-66o|QuZGaW2EhAu?|VG@fl2~>hta?HR*=5BC%@Lx
48532 zJVE*QKxi=cnD{ggKiGS#a`bTn9qq}-x{v7+*K-wh8J>+h=z-GccYG1OqJCHWRjuDZ
48533 z7ad|M5wv!?l<$a}QJ4JHaLkz7zZ%|Ek^rR3uipb-Fx(G6L!Eu+@3~bKKGybAh%op<
48535 ze7K~$J1Kv+BqlY!TaqoyhvYix(N(PBoqKnqpRsPkgN6?qzG1iu%pfnnyC-X;#v=ma
48539 z7R0dK?C#2SXL%BVNalp6S7KehpxI;`KA70NZ{T9e1_IWOP-rwBFS&RdE|>h4h$CsS
48540 z<hqhZx5aGdJGweM-GVI~?Cz9I?r6;H_ggYSW2#v3M*6+JIPcnH&76_M$0osup;L^y
48546 z12$2F3`<b7i^L`gnDNuEwr4}U&nc2Wy-r83U(7iCd@${ec`PLKHSxqvB8AOH1RS<-
48548 zhvAEcp92HPP~j@eJMUFaq-ni?rOT>_$q&+1`Ks^!?U9cnkVQ?EK9BNI3M<q|mMT}u
48549 zqKjOiDO&Q2C(6;ml)Xtf$I({mLR3^GjoC+-(i!zbPqHj|82Tu+q7f&(G^xT=f8qj^
48551 z@?0iT^%d<dF?~z<Z1=StvlB!n5<at;M4-IiZgEjD6o|{@w<M)*iF1d7oI@I_#JBDp
48553 z`6CPmeq-XWC&F`a4=2R?@|=l^kj327^EDzpzG$*9zjyK47w;@M%Vmp`*i}rwQ{lE5
48554 zISXc-yw%SM4AYmj-S_0%_U;xL6bzj!-828dnlZxhZXxL_c$jFX!x!!In(Y~@xl=5R
48556 zd-`I2Ye<YSe6}}ja+^&aJAA?S-q^Q-D;>EJlLJq`@}U>po?#Y$_`~O6$!HrQBP0^#
48557 z`;9edvDhKzsVF!(qnSg{Zj1OV-En8q7BIVstL?Of{U)Ew9yW$LUExp!0HfJxbWkZX
48558 zvP>|T%EyylUpX4jKk|a!m;dFbug9X<I~4MAL~6WD*x^VJN0x}v3x4?HdE(0b^y-h9
48559 zf5+c9tQyu0+lFTtUS@cc;q8X^89rtBs^Q-ZKQ;V{m?|g8fif5Zi{K2n13U%16ub+3
48561 z+_LC+GFF%%tjj6wW}Kt}x-+FDUzAOy>cLxzMUh)YvLR_^D(B?X*Y`Q<xmAf2Fhn*y
48565 zAQuNe9dUY{f&MIWz}!D!S*-XXf#~p24u>ik-wES<Uo>K$vXnZb1D<ju9N<FLG&*D{
48567 z=R6e*c0bu+$pxz?!vm@Q;8gbT7kZ9ok8}-6H}d?@v2O%|jv>Te@rYnN;P8Ww9e?e@
48568 z%frQ3CFLCHI#Ig^a~-GqZ#|GMcn1dj%l)^$O>}wUQGbj+^u6*4N0N8*llZ~>B<B_)
48570 z5<Oo<{lmvX0ZV^(f)f*g-dx4v%fhhR<t+FXD?JQgZH$R=^-t|}rAH97S%~h$9LnEZ
48571 zxzN!8HUw;BiDV0*!G0s}4BNa$`n|M>GhW%-;sZ9jV6~0_jBM$kRh(QK3>Ftj1x8>(
48573 zwOiqpZ>9vs>IK)(6Jab8nZ-b*!+*kfpqGjI?KOKjB~PQv>m;*Arm;FnrqPk16E1*I
48575 z7VGl_)6Q~S@<;c+!!5sd;T7Rhw3>Df<&GuOCwotgXY-yr?|kFn+pKURAW57r>=-ib
48577 z>8TDrBH*{WcoGD=jY*Fq>YOMK_T$n1&Vt*?du=w4(Ii;oVb@gD=?w%uQmBh~W-iCS
48579 z3F6X83>?{uk7sRBd;FI2_6Sa_U*5{~4f=nMd9%^$n*okgz#1VA-B8vu)bTM{0vL1e
48581 zs(8bGaeRWci!q7%Oa?!GI&-U`(=cneUe*1Elzebd)h-{;R#CR>DyzdD^|6j!39%BX
48582 zSjMitLQOS9LfzLyirPJPRpVEx^7cboD;2X>8gT-3i>NkrK4w8h8+yRYL&OP9PIt%R
48583 z&ziZ$>2}$8fkda-XFV$(J60p!so8$z9dIU;t##aZq_h|)266nZBTLtHOlKksv#F!w
48584 zcPt#fZTx6@VQy~@yl!do%-O+k!R?#4zIJ}@P~_NHaC-Q3ZR*U(ba3Y2-n+oSv5`x+
48592 zjueYS9#4O4>D-_V*=G+f9iq7Xh~Oq+8-2*zz)dxU4dm!?piSg7__35tExiXj69uWu
48593 z<wQnD(Br)O=JerMAY=j-3k1YB9ZDuALj5Ct=Gtq9&fCP0FFBk{kM)^-7~69L<yheI
48596 zE`%H}c~*BhDkR6_0}UjrkvfvTyAIs-<~&^)`oYybl*LCWmL3JmiUvvbAg9K=-7=C|
48597 zQnGBY;&R;js_vC^FzS_%Y5CwQQ->3Ri9`jg30N%v^h(3Yr}ht1GzZU&7H@@KYakV`
48599 zl)y>e@wy*VYPeF7A{Gh}+el9)d^Ao_<WqS|q&w=EuckV@PMJT6^!WY0f#_Z1V{SY-
48600 z?{d~+T^65cPYaG-PtoW0+Hzjrio4DZ*g_pq$3#Ask{s4BL*xkKu-{h++|oZDF(PrS
48603 z;RT<~UyMn~fYC<S`9&AX$K&VhPQM>pDlT~lp-|P|S&h3`>>8PgPF|CU#9~ppe);9A
48604 zAB7oofu4e(9IoAneu=A0tU<N;l5~T$HJmLEqrRRb$y<fkYG>7B&W1v1-qA4<Kt|pa
48606 z>R(9D#bc9k!c>ZgGI?LMA)#C(pR{yz*#)=YwqcI7i9X(>QF$|uN9ENQ-;}jQ!iv4n
48607 zihgemD1>X-Y{eE1SZ$q7Pboaj0$=Co<Iss%=#E6vtl4Wz#QeTN96vnMrO}Y{kEtOa
48609 zDs}%+d2~aPT#uq;2jaHOp#)DDr(MsEEgug>JY-0&$b1g$uXBqLYic}ZGHV9aRJ-2E
48610 zDPEu>>PxXa)1rar_tC(rQc(49s|NO{8#;7@YSqaW9y%V(98M*VBm(U^IWphTIbgH-
48612 zX>YU7Z1Rm~7K?Pod?TaC<n78%guRYO*X3!i-Q2Frk&(edB2e*?A$H`TClYeSx|4Q|
48613 zRzLDYw0fKB$Yj`tnR=XRo(<1ub5&c!O9d`g>xFRsNP5Cwve}-9+DEorG@4;#R_*S9
48616 z$ixYv-O}GvjE+V`#C-K}`uOl0yfc;^?8*-qjglC`;h@`Ptz<d_gCQGauSA|m3;<Pw
48617 zc*Wq8Kf|bwylvQzFF1IHI_y#Ikcs0(M{~^2dR%b>+~r-$h`EC(9Fm-tYFZvHVy-;%
48620 zfc*^c@1O$JYj)0^9LrZnIl`!6BWJQXEd$-f=t$I#ul%ab9>0Xk9!OFj<58j>G~HkW
48622 z7TLXLv;|Y?#r@2-8cLx=lLut6uk%2ESY#gga(kea7~R)~H^VHbTJ5iqp<nkHa)6$A
48624 z7W`l0IxxF0S&EU-s2wtUAAG`LAN=h8qzMiLsh&Xp*QgMxF2Sb>$DDmsj!_lo<M9^u
48627 z_FYljCluBi>6;%_C$ak&=_eE>KZez|8n66XXSJ<7P}eGFvcG2-{TN2v!aed{y%C32
48629 zF#jZoC-%RGkS#V9C+^SV2;{Xc!7YD4m!L%~n?e2`%t6pC0NA3vNq2n(;1BCBXx9h$
48630 zP{`g`AkexF7ax`Dtnl%B4v)2V@TjiDcvvu^z4!m0mKMgs-p10xqq-LTA)dom!2faO
48632 z-8v2-kGuy)ci1hbVL!<57SE|uy*KuE3~@u2!2{WNuiI<S&-J+{XGiTIcyjX9eTUQ8
48633 zqD>^GE6~Go7FTjS?Tk6BcI0MkW~ZNzjbsIf$IMj+rIHvH?S4UUaH3U3>jCf-!%!V9
48636 zSUI!F%CZJ%_>jQ`R?*GGoy)1;n4{aL==-(G3vM!BwtN)H0vXQ8u*l(YGbY9a={J^5
48638 zV&8&hL)K6+)auKS^(ABFi-+pTAquyvqynl>An&L2Gy$1}?yh9~`oU=SbiY4rwq+!H
48644 z<2^B-soF>6K^9-|V>oUoHm6P&V0x^(=3Mt?XxE%VGEvTQ(VeMwO-{ObOGpfrTwy62
48645 z$$5BNM`vhhGG8TfX=bpArH?Y1j?sk86PDtgVXM<(GG`-!>_}I%FyIf*AB=l?qTaBR
48646 z=WIk<W20(^gWwm2Uc;b{t2A$4aLRe}l>S<;m`p%p*B`-ADtAXu9X2~%nc-}2DS;$w
48647 zCT$drTxZE6bvm30TO{eUgBSLvqmkk;<)7}ch^IRuq$B>>TK9DC%s?dIp@-EI#v}Di
48649 zij0M<F^`Mq{Ml60YV}0TX20MHgsgtEC15r4nP_<Q<g{n{@PU3a7b2+h-GhPPa9qem
48650 zd#_FVqrAuE3NXO$;X_up-^MbKw{SL&6OCr6Y8ON4Fdxlyb~yN$I)(_ipS}pBm0_8W
48652 z@&f)EF%k6kI1#X0yb-@UKjk<1>|vs#Bl4TNFExnt^nsXiT75%@WHd*Y%IC{U<2Q_i
48655 zD*A?-C!-3Bj1O(1q3T%mJtb93&=+Rb-Ar(xx3B23cVy#3QD5)%y+emm;X~7%J<iU_
48656 z?(}rfN%v+C-+mD=xx?31Du-(cUnLVx2FtPRRHozbbtCD4q?I>WO&+@#^?C_19b^=r
48658 z>CR$4ni-ux7LLT`j|T?3u`SJ;Q`J<Zk`L$np|R3U1IW`cnky~jz4WymGFc{qfQP=Q
48660 zj^BUb#@@YcbP#}3o!u6|vrj$T6FG4c8D^Ob^DFR`R81A-jsNwL%4By|)lVN58ycAq
48663 z_0Omk8YYf@qBcGf3{{g8_uWt!ktA;}6&%RNP;8-R<?P_vL|-5<G!Pneff8_tj+x!#
48666 z?PTDWWQ+mAYE>$Z%0~v8XDm^Q%XCJK-QBWeI+X!u6e)FH>>u=w4=t2SH%+XaJ}@*o
48667 z<-2z}ZL^8lRJ_BH&y+%;`GuO)m(7kPhX+HMYkRupyN~q`&cwsxqmkp+fv3enp-!nc
48668 z8pui6sl9tcp`PBkRQ|NTOyBUNub(_ZkWA9k!-{m^8JQ)Bbk>jQqBcW)O@yUKC{`Os
48670 z?DnNIOA`aj)xe<x5B1%8K2rcWuQxS+apZ=j!}G*~J@@Kw4ZEPnAkYIM-0B*b`aYY&
48671 zxo+3cz(lDyK2~<SxxRphy?%1`@Zs4*$NZU*=-uN(Pa}HyBczoHxfO$_tSBj&$A`_X
48672 zp^QcJvwJa*G3H^v9E#JU;$B0F-$aV1)k8w+-$KhY=8A2;Kq+gbqc#){hdfSVSRBsI
48677 zMyQ4dvYc@$LD5j!<_^0HRncM-Z4S}vu=+#`!oGxE@LCwVueUVB=3Js>bd1CkuL2B%
48679 z(QJ1_l1wO-Erj~Qyp<JvlGh2{Y&JVPbCNf5b|W`XviD>HeW5UKv_--(afp6+;$hPB
48680 zS<<tMjJZ-(G)Pl{a9k}q?@GHnNpxuo<onWME!@kVem=(uMu*L8vIwuZ6d^wJOGqo{
48681 z<>^Vt$6%@F6gK%^VS-E@dHQaJMpuA*FcgaS4|a8xe9=T?EGjarWOF*=l3<R80$$eX
48682 z3I|e-P$AKo3QG}}GwaWFe9&q(+dU4KnEZ2rxO!omqf_$gXql3|`KIZpswWyX)w7C=
48685 z{>WR;9w+nhCeqkR@OpZln#WFk#HNp8_F=D|vn7u9Sjp_N;Ea_nrTOh$LF3-nLg~0f
48687 zaqr>I-cjPT+kF!8V|qImiq53nNWx^^<MY~#r1LvT=T8T()hdO$PH0gHijh82b%fHv
48690 z%#rjj0H~7x!%pI`z8xJ(L{jsO5xs^=B^TE_AWfB^y2f=G#Yc+vKxZhCJ}mjI4wu^-
48691 z^9F-1(b!jU#O+3ZVs!oxTk$zv-CZX*j`<Si8HTe;!3e@9jFW?dvt(qqkZvC&-TJ9c
48693 z_{NLr@l49+>*(n59yz2A^_gVy0#p&ur8w1{(5eHX53aYwT)9qXhhL04ohFmX(LFp-
48695 zNtEK93&R6*k^Bt{1&`4f_WFY{M_6<eNQ}k${T-2hzpI?;8S3o}b_e^WOQVmt><&*T
48696 z9P$RzKM@^)P?s|_5KU;P8<vl4th<&T<@h7bp=WgxH_kkZCY-$6>|}f<vn|=<1;OIj
48697 zZ1-er;c&;%u;g+W0TIGrgf(J|(F?2)6=oxmsY>5ibp5)4^~sNuaBlWcrQAn)H5hD$
48698 z4-robU=vB-NPbEh5DML>rXdMao~oviVaD(RHI0dX_D^b>G57(mrddNDNUCYhPy@?q
48701 z+PaPWJxfY1lG?lE7bU4xa&MRXy+G>RN^*{qa%T;f<yz;+^#ZxKP5SO3z0-d~r1!(*
48702 z-z-Vh+i7j3-bQyzE5A>_(Uv+VWXyL+sVy?js0NcK-us43msRrHCHbqQ^qS$KT;@E<
48703 z+cMnzs5D-Xv7qhTN#;knLu;NRZEljkk5#fJ&jXzqI*w%mt&+OhTsk{Z!)a0@x=;PH
48704 zy863n{T_LqcS)H+;uG{5ZkPY{kWx+jdk98bq--yN*GSo3wdF06+Q0V2mfo8!P)c7W
48707 zrVz#BBuOnB<_Olu$(6zrg!hh-zl#K(H%!ZQ50jiIk?g}Hw<gz^m($9<8CiZ84J+h&
48710 z<8WEUNs-Cj-(yx=<za_lOlS6ztPOi)+%AwS9pgE2pHlu1u?)~4|9ABv8tAtFhqp-}
48715 z2c8U`0-g%)2Tuck1fC9_0iFq-1)dF_1D*?>2c8f97`y<y5Ig{01YQhY0v-e}1up|H
48716 z2d@CH1P_6S!K(mqBEf6H>%i;58^9aEpMW=kKLu|FZvlS>-U{9Z-VWXY-U;3X-c2l^
48718 zhQ9_M10OfM*YG~WM+_e|yxH&;@K@lk!6(2c!Kc9AfKP+ZfWHNw1)l?-2Y(0t9{dCN
48719 z0{9~MNAM-^W$;hnE8w5OSHai7zkq)QUkBd+-vr+R-v-|S-v!?T-v>VcKLkGl{|0^x
48720 z{vG@W_)qW?@L%Ak;Ah~!!Oy|}fM0-Lf?t7OgWrJPg8v1NfGc1RT!jV*Af#WXgbY2W
48724 zha2z~cphGW7vUz{f|uZ}a2xKxU3eMZ25*OVz&qhx@NReyd=k7D-Upuyp8}r>?}tx=
48725 ze*~Wnp8=l<p9P-{p97x@p9h~0{}{diz7ReDUj$zaUqbw!m%^99m%~@USHg$j!|+w`
48726 z)$ld&weWTD_3#bwjqp$4o8X_qH^aBUKZ9?DZ-Z}#?||=w?}G1!?}6`y?}L91-w!_k
48727 zKL|erKMel@{w4ef{3!ew{5bq8_}B0g@RRUU@NeL!;b-9A!q39b!Oz3LgMSbI0e%5~
48728 z5&k3m68tj!C-@ck&+x18Yw%y-zrwG>Z@_QDZ^3WF@4)ZE@4@fGAHW~NAHjcvKZgGf
48731 z7wSems2BC2JSw0fDxor}pepJ|185Kpp<y(FM$s4=M-ylgO`#f^Ml)y@&7pa803Ae!
48732 z&;nXShtUyq6dglLXc-+xC(ucB4O&6hqU+H0=mvBnI)!dRtLQX3gU+HgbTc}K*3kyK
48736 zLLWwdf&LPG1bq~J41FB^75Z!R3G_+yDfBn!)95qkZ_#Jb=g{ZT-=V)p|A4-LzKH%2
48737 zeF=RT{S*2M`e*c2^fmM^=wH#-(KpaH(YMgI(Ra{y(f82z(GSoM(T~u-p&z4vNB@ET
48739 z3)qY;*otjf#CGh!PVB;NEMX7!VjuS701o014&w-p;uwzO1Ww`<PU8&D;vDY4owy5k
48742 z;|usA-o#t@62290;~l(<FXP+r?f4FSC%y~cjqkxv!uR6)@RRXV@Kf>q_-Xi$@YC@#
48743 z@H6qV@U!uA@N@C=@bmE>;}_r;;s@}H@Qd+F@PqiJ_+|Lz_!an-_#yl-eieQ-ehq#t
48745 z<G;Xvi9doria&-wj{ge(HU0$tB>ois8~kbf8T_~Sv-orP^Z4)Z-{XJ4U%+3)|A@bY
48747 zg8vKu6#oqWH~u;PAN&jaOZ+SRYy2DhTl~NH5qt&j;j4^+0SsgigBgZl8IF-peP`&|
48748 zoEFB)*cg$qGY-bdxEMDhF&@Ut_!vJEV1i7D2{REU%EXvBlVFleib*pWCd=fQ4yKdo
48752 z=xUU&ZQZ`PZ>HLeS!rf^^UQ@tn-o}HTypBlt0mNa6v(bZC)T#r7OXQ{m$#b*9GU`+
48753 zp)|8p#BB9SYLN!4-scup&z@Z+oy*sro%OBlT~bN|t!<N1Cs%hakW%Kk)r)tn)`uqp
48754 z^?sUnCT336Vfm&ETPH58-nqW9v$J|(^`Z=}-Mn=9(%SaM*0u`HZ{DneTy6E@MbaIA
48755 z{KD?)rL~=Pl9aP{S2xMsnbqBOdRM+GSqE2lwrQ4pm9xaft*y=3^~;-^s|%~!=NFgU
48756 z`iz4+>laB^!m-t}8><&Ctdc$~$5z)#AD0zKSfbfV+PJi?kVznk?X}&5t2dJwQqn7H
48762 zl!0kvL%H7&4;d5`2~kF&<3y#ux<IIP>oTEq-<Wp|P30n*(o|ZMrs}h&+-z{Uf~JOZ
48763 zb#vIv@wBtEW-gkrL&rr;%Gbq6K~okQ1+TjNC`G3>w$EI?II+EYdgF|OsWyiyVmbqb
48765 zw_i{vMTJN`xqd-A!_AEP?PBZgqI%oaBF1tNSBtc(64zqo+Hy5x*U7ok?X|bBZm*tS
48766 zy;H%z4z+TD22WXHj;-CM5i9~VI7{I?THK+@Q1um>IJ6-99ObDgW?_S{1GBWcxw>v5
48771 zu+FTl-!Z?r(X(}Vce$`AD8@-HO+@43#+j`PTPm^KM=z7PS=!h<cVX?&+RbX$k|y_9
48773 zym;zT-qZj%S;eni!VBvc&r;&e)Mjexbwa&Psn<zvd3E>pwY3X!rJ0RQZjy|bRF<y<
48775 z+|kvWDa@W+y`5f&n?x^%Rxhd-T4rHwje=(4H%+c?6AJ18Qo^bQPL=gwNe>py>L7b|
48777 zNs~&X9({8Ya#fQu?w&&vCS~X(WhN<Ff9@Dj7!;sY8UVdRk_Q*-cVvKDQK)Pru2gM{
48778 zl6ys+SUH1KVo5@tR(S?_m3c^aGO_C{K?<7GYtMv<-jPXV(TRs{91002W2j6+FU!h>
48783 zJG-R3rlFFpt`C+@whMDvN4K&?gTTUqS!F(1H2DT_o}X<b%?f`g({52QRp_L>Rn!2r
48785 z<g&v1+8o;2a=x|9a<Q#U!O@m;kW~iAsS{x&<f8>nv^A%ztmG`V_OO(9w-ut|?rY1X
48786 z-JK+Nr1nN>h4yA>1x<HL3K^U&2vDYO9V8)id)9(gLtY|Qf~w>w<!$w}de5wd+j}Gd
48787 zx|-KU@S>&8-?U_2%Rf3@QEQveTD}eEd|qnLqQtUkJE5G`hGMN9>-~z&wHKS4*(YzQ
48792 z5R0G@8v-?N5iYUT9XHiM(cGlW*|a74ievy9sAQhi*r<9NGNUXPMJ-6FY1d~E3TlVb
48794 zxb$8cnKzBnD{JSi=+G0H>I!|^1yK*`%rP-Yt+*}e=Z#p&nWoB7G)u!TZ7M>o$d>E$
48796 zq_C)GXPs5j$r1sY<D|fv1|UkhsiU-B(wq)j(7H?o>zvM=vS`7Y4w}<JE4G%Yw>Ghq
48797 zoo1~&w=$_Wfh&`3tWoDSodf1-&sv#u?vvTxT*0an&h`##dR`><Uh6Mv>0Hy!Kut?$
48798 zQc3GXYUhJAuWK)_r5@2=I=>@t(RPrxXnV-(!VlVxrjNXS7V>QZwUih2w!2;CmW!-X
48799 zr0qtbrEYshu_dEcY?J7=BJDz-ceLf??X9)ia>%T=X^)lG&I-=<GLvoY3}M$M$(M^n
48800 z)heK7s)<R~77<i{hOb(NC|I??%A}|TFKlg|(-tmT^^PHp+T_4ppFbxmQ$8`%5H8*Q
48805 z`U6@Eyr9z(3U6s_DY>ufZebrgxUkT!*%n&I)-F?dsohdizphQx%2Jz{%THi+0dv`W
48806 zP~(ENu9gtiYso1dYmuVmLTg5`C1WYyDtLvqRT<g*>vJZxrnsz|y_Hs)l(jm!+-9B1
48807 z?XH7<c3VJYT~P-0Oi<9*D(XSmlxx5im^fH^xNXctWVJr9JX^ZOGNK6Egkizas!<7J
48811 z&u9d_I<n5$bPy3`4P4f(2oXi8n}P-YU?V!z&s@QFP#?T$(J!}RxM0_35F}cPkT_D8
48812 zQMPE>SEi}~6}8Y(UJKP4v^t>*y&la4-E9(d>A;gmb#0Y&P}!zm4x8gu;iti}nry7i
48814 znRRP;tb&TE5!Gu~l#2RgqMB}HXwEj<!gjM-wwu+f1>IUtzICl=p(TS%)U1{TbSnpB
48815 z()9}q3%V7al5VYlK0?y39kiOqvNn1ov4QTXM@>hqT1yOHYcV-BohGU2Ryu3?r(!kT
48816 z5<^Xg!<-(6xt3n%T6&$+x2$))YG&<&2Q5%AYaJFr<6@h&7G2P|tb)cI3K~0T(HTIq
48821 z<pE}Co%}_F??{2Oh)fE)mi)+6Fth8V5F%56j;`K}h-f1s(3s97rrTN&Au=NP2@3MJ
48823 z*U}+U4nZf@)@8ql?omQSWAV-1m5OYxo>^brxwy7QJ#D!^jwI-gC38K40@fxC<=sql
48824 z!+T|_qF$@&b%GLK*~it`S<&2-p|mcSEKb_A+gT4TE~)ub>b0g`r`79>a;;9N*Gcs{
48828 ztJi{hEvna&dM&Hhih5Q1t*ZT2)qd59uc{MYt*ZT3>-|sQJ5Mj1M?07L$S+TR1@bGB
48829 zUy1z6<X0iTD*5%3-vB0M`sklL{ZpWSiu6y3{wd>?$uoKSr$GM{nLAG(*<RyLukNfZ
48830 zUcP8+Zj$UF+O5z67kPP;rF^TI)Z~^d^<9^8868ATD&2@F-_fLt?9%GR+g5i4<x;<0
48831 zPZu@ml3C>hxsVnpip@QpJv(%xsI9THQ-vG*I~CZj+2yI^h|Rs8^^C@jPqmH4zE8Cc
48832 z&F)V%N3#c1ZDety1(C*n&^lb-6{^72`rc3#tnU!5qfp-;s=}IauWg>WU~LXt2AiX%
48835 ztJi7uI-p+r)$62sRkn>zPW7qRyr{Q?^}XBjK5X?>q?V1@ipC;s&A1P5Z?5jjTV;=|
48836 zZm(_buCMKE>_|$kyj50{Eu24f?DFa93v(NHoi?67wX}N6+12&>F2BXPx4x)bEm&-X
48837 zpmnIZ$e}=a-OYmTrV@=eK@yy(;bOCw22|8S&CqsHAKEUqtO6|71Fn_=3-$PNu^zN6
48838 z>H<o&%URvPX7vM`)eUS`Kd{-Bfz9d$Hme)htZrbl`hm^13~aV_VEO{ub-Mb-oHj3*
48839 z<~myfC7S2i#}%%Z)do>C&!LaIXqMFOfy>Lkx_C{-sLgq&xu&~_u*za<+}d1I61%r6
48840 zIs7gaRz;?7CIYXfh+a_2?QGnkl-r?_tR&YcgDV9$H`E4sxer+hnrJ6ViuNL>1f?4}
48844 zgM=VKB!nPABm@aTf`~|vAR-bZNC*;`e$V%G&+K5HJkRg<em?I%@ARimcUM=}<<z-W
48845 zRo4()u9s8HoBB<<{)7Gt!GoIK(x2)tgwn_KF}nUze?`|PjkwT8Goy-NE8`X+ja!X7
48849 zH&fP0lv6&#FNxaVx1%}bQ_Xejk$XDPG0_q2NFK3j=@?GOXlt}R$DWgSAn$-RwtSvd
48850 zU$DWNV$Gmq4&uu@m3Oihl-FA;%7>KqwpK-5Yh7%LwK;FSwS#irXC1OmM2=bKbGAi{
48851 zygd=OY-6Hh*^1H`k>W^Iq;;fy*@{S~NcTv;NNr?<T^*@&EXRsWEUk`Ai_D^{d66ZN
48852 z)sYR6?U6l^Ly=>VlaX^#6^%yS*pz5dv?{tK+Rm|}ouj>@1ERyCqoQM@lcO`E^P-EQ
48854 zY({KuY*B1^Y)$E$*v8n-*uL1|*s0jL+|#zQZM)cRZdaGiu-n_+?Y?%cJ*sq$J>H&5
48855 z#~gcsy*zoOEM>2;H`?3m-Sz?dgq?~f;>Gc*cy&&%c>8#d_<;EE__(6t_|*8^_~Q5~
48858 zx2@aB?d1-1hr46TH@K7CS?)r2g}dI}R(jUmRl2HZmb=eA=AOzuoFj4)IR!b*a@yu}
48859 z%ITFeFlR*0n4F0@Q*-9#EY4X~(Jl9Q&W5szoNYO~at`L4$T^=IDy`3TbBpr&=j|x7
48860 z^E>BO=C;o5l-oPEf9}xSF}d}*GjiwVF3DY;yD4{j?%u|Gau4Sn$UUBWI`@2@k!P0<
48861 z&a2ET&Z{h>9?08~*D|kdUWdFcWfgh7D8Jggk$H7_6Z59#&CZ*jw>WQk-fHTxE%_Fu
48865 z!MK8{MFR`w7A!4TQ+lFcL&25;;*8Szf&&FdD;Ad|3r-fCFSH7ig=K}!3#$t|7xpY&
48867 zs-o(m4n^IHdKV2W8dg?QG`gt1Xll`{q6J0Eiq;lwF4|dipy+tfxkg5#+(yO4{Tnqe
48869 zJhpgB@$BM-#VZ<D7jG!uUcA5fSn=7$p~lI^m5r+#cWT_L@xaEz=%{Nvsqu`)^BXT~
48870 zyteVy(xS$D8XszWvhn#6t0Y-cQPQfUeMyg!{w2do>PjY+%q&?@vaDon$(EAcC5K8*
48873 zc9rcdJ6Lw4>_pkwvQ&Af+%8X+7nPTlSCv<n*N|-MQr?~9TF>$k^xmlQ-sOYK`_la+
48874 zx|>wqzkDFw4=Eo;Pe+xHp}4W-<IC&$>9q10q#NdyFDhSIzM*`3`QGxw<tNL}S6CHA
48877 zXh-!aw4*u%?Wq0=?WhhzJF3t0etke4(VrS|^#!z`E+8#<vu;EhHcp`vY2zYMD$3{_
48881 zyRhS6Gb#<`=Wwev!z9OF!u1Ffez5;xXK{nT-qdJsSALEh&@Pm$f?72S-YN`m@6gk0
48882 z7z;L)ujwhU5Ec*c{%*r~FT#hY#iiWx5;_~yUVonogX($-_nAp`s1QvUM?Qv<6lZfw
48883 zP)>;3=3^?Cad|bBYf?$A#O0zj;nJYmw&Z&==m|XW^SY9rUdek(-9YW|vD1i3YDM|t
48884 z?AM_=z3ImyM<aN0IbD@9CR)<-oXidzMrMZ%O*L=IJ=Byi(ScH-Ohxy|KYeY`6NB#j
48885 zy*WbkCfZfbtv0AleqJW^gq!K{LZXkh^fuaJP(Haqn-T%#xLgwz^n{O}5ZkSB-bpJb
48887 zGp02^=W3>R9bhv=Y0~`*+!_J3nw(1xrvhG!gBFA-W%I0lHYta63k<qWzb%5RBwsi5
48888 zU7B9atesK}it*cp`ucg}DqX_{`paW{G-jG^9MCi<*6*iuDkD?2K{=$$FoIfyv-fBT
48890 z5PlCLw}zg_-Bp=fkS_f!MD=aJeTZohG;$TC)d3fWvib(RRFc7Lx<2Ud#z9;I4$}FC
48893 z^nSCT7n1yrk9qWe1>@bXO^on)8NF8;l#TMzvCs+C{B9@<!@yy>J}s#Jh-;9HVM^!6
48897 zM9<5!D6WvHBFz^z<>9A<9B-B-^NTZ>Ysvk9GwAz@%w1Y4puF^(p)Bcf3G+>9mNd~>
48898 z5&(SABEZTGbXP@rU7xWybf62&fVZJ_J7qmjaxTab_gzIdvW-HNYfo{D=p}9yz1arz
48899 z+XWfYP)?F8s2<{GPU*|KG_6%q?b3Y(-H|S>E0tfBRZe%x+t)3A8`8b216dcoD7G{6
48902 z27H7lT?1xAY&~8RlndSJQ;SJ-35@wzYQ;U;N8HXm@9VG-<3(p=t;xL&sn=WFMo-&j
48903 z;YzctY8ITEvcB}~r5uWB!f%0k4LYZ5a#es^BTM5YGd0yLB`#qZnx-w--Do4UO`1<(
48904 zkpT;+r(cs6LA`x0z}dG|)4ZML5uK@fn}8S6_Uq-`&uPjxGJ4gwVf=R30e70**0i*;
48905 zgHjP2$=F8V6!5u0HAu%@nz3&+Ydc?NCo*!-2)v1wbkz`-ALxC9F`M><e5y1u7>NdU
48906 zq!qMNbD!%#1{*9reJeN2eU;XTg#qUMx<Lvx=o@fy1J2X-e=fBfScF7vka<y(rD=|8
48913 z^ALd-Vg^#ux4GJ9q$e~&Lyh3+Uz+7lH`o$QGgd}*pvTkn8KNiI+ONSX)R|JQV_ykv
48914 z2oY~K-~(DU+eRtRvY$-W56v>#y@B`5jGcZdTWbw|$0Zl>O_<_ZWyRom_C08<b=Do|
48915 z!?!zY*g9z79Z07Ju0ze5XC!g9w-qKFAzfNtWtY_~i&KHK_G}RV7yey`%w4mf9)4Nb
48917 z7s;*07h&Mii^?##o$2?QX0;<k8ZkR1u-!nR4O$|UMbphQ9&$QewxwP6El;m$7G+!f
48919 z%P5`CFX*S%7d>qeSi!K*Kt(rZEL#6AZD0E|m3|YPo!!C~SvF<!i*jsw5wBwOt-*S4
48920 zev!T3GRu}n|J|6ev&}5p3T0vNs$h(yF-xol>%q4<eA+j%c-{y+&f;KHqrtmQOVf(L
48921 z-_@DXm9&MJ9t%v%#}JQ#Rk6Oe0^2&4#mNTa#izw=%fz>B{F)kpuUs1Fr6wGg2x{hA
48922 z7rre}orz1+osq$a8H{)Mx-4DO@I@`G;U|{{mSJ_qercM~1O8R>jIG>(ZL6jk+}W%J
48923 zO1TC8bw1m9zMZB5z3o3i4HdsB#d->DdA40Kmuntvxt#8NUFg$>k)dW4jE(vjQi0_6
48924 zX-1MasF)&j;29bjno<0}09yQ-O8gC_ba=#0Qr+-(pOQ+Igb$3dN~$^jB}h^|B$Xuv
48925 z{t~nag>ni_c|2JXMPL+PQY|Ept^qs9r#X+%T*@|U=|wWF<RUp+c9Bjj%eqd-x5?sK
48928 zqb&o)Jz|i!R}7|fn6v0kPX~!wF-lAl)5Kh{P^=KE#741O>}L-XD>?+P%JA1?L@72z
48932 z05ZiQs=StBI`Rw}XhBlH_n^A^9C-_KXm2_c|F4umz14@(+)h1ci2h;>T|Xwq)6*x!
48937 z+i+L%u5)+S4(?gop|)r3z}gYD<7=nY&Z}KkyRLRy?Y`P$wdd}S-e1fkJv<{CnWXL$
48939 zg80!C#s+Z{D9t4QIy*!+QkY85W>A<-VIGBr-wI18te~(ucxRpe-oNFw<=^8PLZXt>
48940 zY`?e;(Ov&do%Vh^&Q=_MFdc8J=n-5e2s=)%Aph~v(^SV3=`>C!e&=*{Ug@;|dx)O9
48941 zuOLR}m?cCkK_N-k#S|(jH1|U~tuu)3@rTRpD0HCEnF94wjQS}?{S+Gz8yp)(=aCe~
48942 zP#8z~)l-;EVH$;*vAMAY6u<c5I>c5|SmvMkehr276gFjrtrT|NSKu0S-s5y~PSJV)
48944 zbjAgthU&B|NLy`39cqhH@6K@M`}J{BL0<cUbJCBubA$V3!MWNlc2@draYj-I%HU^|
48945 zU;5ny(Fm8@-L6DkIIk|w47+6mF6?Twp`jhw!LISoZY#R(h-<3rAoQ^_G@X~9FV!Ka
48951 zSE5^@mqTT{#1n~r6b1r^KK&+!`(-7lO^LeyzPxXT#H6fi>iYz>Jwa_xP`@V@QdmM^
48952 zIfYde)>64tufzrln<)f1NRZrakQ>C~kO9?+z2F0G!^&^-!GEex;>f?rkrPfRK{!hD
48953 zFXsc<k}X#P*^-tKnLNe>^;s6AnG?vMto)r~r_yO2yjSf;InBzf{Eh^n`@hN2UQT!D
48956 z@3iL<y}8t0mt>erxNu3IxunP3i7ad9124gO{=dKL&T!|r^WDYna(8vsyIc9)o$g-u
48957 z0H-^W^-ds1Txu_`sKQz~AwH)=iZAF;;!8TTI6;RY{!WJ}{y|4b{F9EbI8TQqJaQ}|
48958 zG9hzCq0E<sqC^(U%SE}oLS8Gbl-J3hiq7(N-AMdQH`AR|39q)h8f(Z^d#oW>1B8@3
48959 zM{g{myrue^yiF)Mf-PQYxbi)^dq@sruVs$-NGRP$PQ)|$0Oc)>g%URZS8TgJ&7ScZ
48960 zwwNc9*C356<sa$#`|K_MUff4-T`3;m65CT*mVAQZk9Y?tW{tXzU_DvxQk+mb2=4X%
48961 zN*-1(2@kxp_?=MdDXH00`Ix+SDTnaNd(5aw^4b#Yw^Nz&bxD4M+$F22=4a*i;K9q;
48965 z{43!dCEYF-(UYA#DshZ3u2cv1g#Efy1?LvQ`MTho7o01D^rgXl@8FE_kblU*1Ro$D
48967 znM<O!kp%JIo=Vp6oUWAjla~lj4{J9^kvEERw-TH$UME-}7BhUFo_@lf>H%O*J}h2C
48971 zBYz`^f@BY-FIU{nSU}5#1pi&mDJ`bar$vh3O>#NG2xILPN!%n4%D;d%<wFGjBI>Bz
48973 zdVUr>LI2)L{=XCtis1zNNnqw7`2xk?C9eUcliZN9A2?ermBhEIOg;!%BSS24-lv>j
48975 zmcZBl^uEgUh30XW^#8}Y!MS~qU$Ib(!6fB-vlv2fu1C^Vo)a}eJ{3V(7#~GFkn(bd
48977 zXG{m6+G6pSAeT0j%Wm-$WUXu}vC4We^W|0IF@iN>F2#Hxdj+XMZJ*1xDb5r9Shn9z
48978 z^>suC#^NrL@k(xDIjrQ*sh5HAeI#KCb85J3f-`aGAa3iuVoZ>0A#+Q*M#aH9mjw5X
48979 zf_F*2$wed&q$(x-;^&jbMRR&~4M_n1j_5}<Biw+lLG_;!kA?$|P`4eRR^*HS!=IW&
48983 zDfh{J1V51n2p%Mjl9Zpx&j@}lKPPxh9wYcS`8R?mN%ke>DS3+E8Tn6w=cFf+N-9mz
48984 zR2IP;l|wL3H6hrJBx6!tOPW5Zt|zIRR5z$@1iP!72;Qu2CU}RUwyXZCKfzII6v44-
48986 zDQc<uP<=@7h&n>>n4-3*uhdzQ#F7+(mZpBxF|wMH`h86nf!?8ako^Cn{-e-(r`{<H
48987 z{U`k=Vd`Camk8+(^amoWckA84(tp-}77@Ki?-5b`q5e?B^j^JJ*!m;=k%;SkdY?$>
48988 zkM+mGAsg&Uku<I~hz3X+Rgko7N1CFC=u0#_OpF%eN#D;PURy-;s)$Y{YhcAAh`z3t
48991 zQhc(QBBqkXHC?<Q<`~U*)hfO*5y6+1_^w2W&q+6HSwr-CyF5sJc8<R*X~&jsAO5c7
48994 zf?7IB07|_dRG@!?{x%*_-#1Ph=S*RS%$cTb=9)!jnc2*2X;zyx=4!K}*~RQ(_BQ*O
48995 z1I=1<m^soMV~#WH&B^Ap;FxL7G3T3$%%$cEw}ab(-dSgEG`E=B&0XeRIu4kJ&12?C
48997 z9-0-J8(KieVs}qyS!iWwO=x{+liS_x9@-k(5!xNv7djX^5;`6_6*?PAg^h4DwmR&F
49000 zGOL-@(yF#<td3R}K6+Ta-KkbTcdRwgs<nn$Bi+_+Yio=(&TZ~Cx9Y9Q)--FTHOHFo
49001 zR=SneB5SF&!dh*uvo=~=tnJn=Yp->{I&2-YPFiQI^ASad6-h*rk>W^2q$<)XveKOt
49002 zY3mM-w2yR(bc^(i^ojJ342lei438R-QIWdH_{hY_l*shRtjOHRg2>{?vdGHFn#lUd
49003 zrpVUFj>zuFzMO$M10x3`M<U1Fg^^Q{vyoKPz_+K-f@n#!GTJ=aI@&JUA=;Ua?$KV+
49006 zxLAE`a%@^`W^7JuzT3`i7h4ot8e0)t9a|UM7~2xt9@`b$8#@p?96RQYj-8C1iJiBV
49008 zguU2aX0No@*z5BL=MT0w*<0-$_HKKhebAj?AF+?yr|h$KDsIH1aW`HNFNs&io5x$n
49012 zoOhICISD7}6gw48mD9>;>$G<|Io;f-)6?nW^mhh1L!9BxD5uUDPsc=OiZk7r<;-;!
49014 zo<A5deBa&eMYtK@4t9sSBizyMSa*Uu$(`!Xa~HZxh-PNEvnjQIhx=9TT6crHnT~Dl
49015 zPIr&H-#z3Wb<gF9oKTLPlk1*vPdD7<6y-F_Da)zOsmbY>(<P?|-L=fR>z&h&D7`jk
49016 zSkB0tF*)OM>dA6@mTUkiUe=gl{Xl<4@Q)h4*X`<V_`!<2LOGw|>-ro$ovh#k7AW|5
49017 z9n=p<ir%j8Ah=e;4j)09TFTBEbFN2q2a5ldzMbGPP5!$Yp!Q-ULcw<%tf(xx-l%|w
49019 zjGF+;$;RgdzXvEhO*Xd7RW$@(Q!ny0`7yGm`huR`L*B3yuPONWD>deY-%)t$1qI!F
49020 zi-N8gpjKlnf-E{IekSK|eNf79vPq<#fVPVk>NcwLG>uV&U!si!;j8`zBRjH~{4?^^
49021 z7(R#*6Yop;7GGZhpG(akxYTG(DPu-Hdyt0+{zzeVc9wE6Dx#(e?12!6AE74`EKykF
49026 zj8L>z|DraYl&^8E{z>ovuuax4^_qIXz?e({@JVmo!~6noaG?U-UQKp2T1_cM71#VD
49029 zPoo#bG~rU30;)$01D>rxKB@dJ)ALTFBTIm<2|jP!2|hAGC-ZfRrNkkw{}HZd2|Qi}
49030 z%kdoznK0X=o|U5%agch-L>n(5PeF<cCj8jPLE$oFV5FqLIE1<xpwB-UL@lb^0FTsz
49031 zPGq$)3@rsk$x0J-{tGBj2@@lclk^5i4->8USdm0hn@z}vG3qGO13@{#z)Fy>42mc3
49033 zHZmVUHa=mlBDl@OnBv!FPslw5FL|EA2;vll+TLkE)*V;JkiUAA;7J8MmxK1?+v;6-
49034 z)#?IdtZ_f&r-8Aq<_e>%rn-yZ^W>CBIa1w7rEHauu_1X7Ez+QYCc2FI>o8s4r7)H`
49036 z7LgbEDe_daSQ>-hf34OKe1mHq1r%SX_n5Q5<7XIFs_zoa1$UDkAz7h1EA;yx)z1mO
49037 z2h50W3L~;lvo>*o6Y;Uaxa@WMCc56HUZ?9a))9m8uGq~wsFMbl-KxgZ^$wOKM-=%=
49038 z^0Wf}D<H$=o6sQg8At=w2lSw>(^!vIr_NLS3yLHm`O&{(x>`Z-0rH5YSgxDV^}~wr
49039 zBY&bX%F|!<rj&1}SLo>`wVAH(R!_3*#pvLNYB0fO<WqwS7ICkE-fji<<gZjKj&DQI
49040 z!6=~k4%6Fs$N{+kdCKQG&z}Kf<hj2@F(-gqqH46dMlB(@QauBD=Jv)Fcz>mVUc1F0
49041 zX{Lr64-;%-^utIibL%SxDC8kf5$Pky<cS7k=DVN@xe1g>k{me?&?M#L56D|5&kr#q
49043 z3NorCB)Pak9%I^W%cZxYn9H~hZ$qz%ht-#$D18M(jF@!=ZHu$&$4ue-S+0`)RjV}F
49044 z462o;))DzaTYbXP_-~*S;(d&(Kgl}rEcl&r#tN-@sHd2%$YN1lKou&6_Ih7IgL^6e
49046 zpgUwY^&8NnNxE1?4U$^&CYGXO4fORAV;{lS%_~_N4+3V)_K=w-aku;#UoV5?*ViDu
49049 zg_+0oM9+3J9eS!+@9cm)7n_-GpVL1g_^1JmHWzd&yBK6Ok?w<iH3Hg7w&ptD!|*vX
49051 z_l>cv#Yk$&?-<V!tcN65BTbSy;!9W>(gr>W19L#<2HDACs>00NKaFvW`F@aH*nx^D
49052 z{9Tp_m}%(GymPO50P<7S0jp{i+c|VC=0c~CCW0mKCrva%_90tYl4Pv-9xMm(t~$v4
49053 zLVO{IDY6p9VD&Id*N<63!mfJ<T2&53=_Gq01OKijP|P=KC|&;?Hmb~J_ySv5n-%8w
49056 z8Esy%D8v(Vl!_<mC=*Z7Q7$IYQ6YXnM-%ZZ9hKsT;yKZjS1&dfv*>6cW{Vd^OZ|!d
49059 zdGZyxQ2tyllm8``%Qxf-`3w0=xk|n%SIaf>ExA^{E!W9k%iqWia<lx4JV;iHQn@Or
49060 zE>o@4Rq967L)}7}<#shfJ*-BmN7ZQcT{T8Mrs~wwYLfb)nx%e1di$qpsrtEEu6FAj
49062 zRX3x!P5!wWb7ouVOfOZ}(De>Fcck-fKX0)wDF2`kS7K!FIE5qMI-jC6UHtl0_Yk56
49063 zKB>_2817{FV}>&sF2M|v-Uc4zkvySaB{)-qD}^EnAjSsqFH?V?5@%(JNJ&FRr7H`l
49066 zk<@$RRK1$4`>1JZrkbPXQ~xbhE7WSWPHj|M)ONK??NtZVVRcLo(L>Zpbw-`nN?SUi
49070 zcD5-Vh6OEdP#CNDAuJTKfE09&!W`O*61Kxf>L%DnfZ}Tf+k677V6m3Rc~7HtGRb2J
49071 zKQouYendP;L`dH{T}0R8HTmUgIFAm$r5|K_6SkXx1SRX>uPpD$Ym}ET3~5-A-_?+F
49078 zTbu37g>=`!>`X^@bFA6R>}w7%2b)995$5PnS*RHT#ZNFNnN!Uf=4@xFInP{ZE-{yz
49079 ztIW0LhWzUMYIC!>&D`lKbC0>-JY*g<PtbANJQot7P{<DDQi(xMp_btxp=w8jYC;`D
49081 zuF&4lfzaX5vCzrTnb7&L3R~esI2kSuSA?s=t-@_1HHo8<k@hfWuRSu{o{moT{BXB$
49082 z&v2h`|L~yj5ITm3M}_Oc<HHlfQ^L~|-NUoObHfY5i^I#pE5mET>%*JETf;lTyTkj!
49089 zDrUr@F*jBaD~VOcn!9adtz+$C9b%nh-DACCeVvWGdVOeYL~L|yY-~boQfz8$Mr?L$
49090 zUTk4(No;v+Rcvi+Lu_+wTWqJBjO~f-j~$8~jh%>{j-9iG9kOjZ*DkWloRfAlyQN)i
49091 z*VrBHE_M&Qx82VkXxBPt>|ypudyGBKu6JA6lkI8tOnZ(!-(F-d&2MS1uvgpb?2Yyo
49092 zd%L~M-fJJQ58KD=llB?=d|bt?cp{#R7so4{18zmUD&8vIHr_toDc&vKGu|iOKRzfv
49096 znmCa-ojB)^ICMge?c_Q|PMOopY3WouHBLvTi_^pD?eud7I<?L)XQVU68RyhHlbvbK
49098 z)=jucx7e+4tK3$+rn8gV&F$&-ar?W2+#z%fcSpH(?)dy_cOqKoPH|Vd)7@F_T)taI
49099 zcWeHar|aEK?pAk)yW8DI$3Yi<?Xw=nghr(B{o!{!j1s-%Va%zs2XEuL6#S1-7ck;G
49100 zD}`Bwms8L|pLwM5^+K#TlaHs^_COld32(`koPMzfZ}`I$G}M3#@ND{Bc!%KSsqF-h
49102 z{{noP`%-{OT#K$A)<?d=a{l2I#@?<-!TY~C1<hEMg7&}LgB@}e=iDp>&wdoJA;+d*
49103 zOSI><^z<;|ephNVw+>^aTRe<iDG%coZBno|-tw?w=qZ%t9ZkJK*E2lWY%hBq2!7yU
49104 zT&IPH5&BC!SY<bP;|aD%VWy(%g%23>k24-xzyjoQ*LX!7k5yJ{Q?N$v_uvRUmBJ|6
49105 zP!B$3-wP3LJL+&cg^}F@9(wbw3m91$c>yDKpQSKo@?#HUlZR3mv97y-@#f1@S0iPL
49106 zJVkMhN7j*d@B&7Z-}Ye1<fPg$hN;eSpoevctI((7*W9AwR3*IR6vm2{c(CP9rQr2G
49107 zpZYb$H}>F*e{}(#^qbsMPxHHHyh6st&3Nj;N;&6Yv}~-0wR7FP!Q4jF?PK(#n0x_a
49108 zLZ`isTne!9ixjNT$tlpx)D%Xf+NLlXSK?t-;U5<;>iKC3BbRGZ@X=eKzhrZ!z2=P7
49109 z<OPf#y~lZehMraXJd7*Uc~4`+(If9%{seuex_Fqq>EvPc-=9;kir+|Kw0mmmIc__=
49110 z;V)8m5WFjek?D|kC#88dbsTn@hw<!~2U~qI$Is{5-gg0GmXo~eVZV7;%h>b6{ahdP
49111 z&U5H%d5p2$n|pAfcM10<#_9j!VZ7nA2W#-ZyzZR-PNqgs)UUkh0_%zq|1O})OJQc_
49112 zn$({O-kbs^=cF*QxZcBT%zY{BO8HU>Biyff7!SM0L+kRrzMK!{H)eDEPdtp5-->mX
49114 zWc(rb#gCY-UP+x0SWP^Wv4?T558%tl(Oy^10VDdiaQ!cMm~-gE_58$xrTufp+iSp>
49117 z1d5V1scV?)G3VJ9C8{wV)`4zfIMmxia2q&XE%m;{m><@MtLFr`tgly#`4-4+^|-eL
49119 z2W)Qv6mMR@oZ(79s`&thpya1KVEE4{U6y$mVY&@?ka4DpX(^2J{S-A9PkI<7J>@Nc
49120 z3`zZlN--HflTx7V%^t?Ip7*X~90Ct{9z52~kQH*6H;T0e`ubM%om|awsh;ch6<_}f
49123 z??T$h3m!&fQ|KLe6*L`jH%fUDeJAcoeZq2&xI-QUW@H`KfD>Q9`|Igp&Y=U-;gudn
49125 z=#H~Y$<<s|8RU=1x$pv0EM{hUffvLIkLSZZj4J$sdqH|=??)^>S_41QLch!I-dz;`
49126 zgqKG(dCen_UKM-un65@J6%FA29mh3az!2jSUo$Ovz?C@9GUpF0_s&9VsOBC<_g`Uc
49129 zbmaw>S5+*%F%xx7>O;C->h<8KnCICByG6Xu7Rwr>5nrM#D&=jK%vGGyV>y<~<(_5v
49130 zypg5-E=tpg+g=DrvKLQ>!_Fan1U=P*b@v$74wD(TpLpos5!}+3S!aF4e0>@ilh1fq
49132 zHRu{@(RuERja&-snWtHg^zg8j`#RVd;*k`-N_iE%OtKp5S-zk8nkCZX3^7uUodu=5
49133 z!Na)9P7n2b9oUm^Fqbs~-HPMPr&oghWi8ttCsPYqN(;^ha|?rfK1%%;%NFRkttree
49135 znU8?mW!$3E&|Ji`WHX3=aC`s4(rF7)s>@j3e#6>oJG7pBo#7J3!-FjMrh2auoJ=r#
49137 zFO`>Jtv8RsUoEeZ9ptt0df8dtBL@ZJ@Y$pA{>c0DJoY{(7=2$T7s;hO-o9F{mz(7l
49138 z`6u~jc|d+D56REum-4v$yF7&z*UD9ws7uwg>PFRzN89gHkE<uuQ);4mMm?*RtMzJw
49140 zozd0khLygBy(#nv0>->MQRpT_(QqNkTl%38d%^dl^FRu<blpdYGWbaXdYIrH40|)Y
49144 zvmNwopE`)u<W$Znb(T^iWUd6PETVS39lo1-fpuA3s*d>=5@sO07?K;X)yFbC!CHF_
49145 zQmXUt0m-%;%yJdlWHNtYw+1?eq$M~`u%`1aG-fUy$a0&ldX}q4SbnM$<`}!N$8iYP
49149 zNNj*5Cib%=JaPdmq1JlyS@yolb-SMH*@8>NK0+zh%ZFjH&{KRvc00?rDC`H)8jwF1
49155 zXC2pZaYnm3NBmQF&>h7$7(*B5@edH<0)GpE?-#J%P)Lk32o;iziKB<m(TVw*xLOa;
49156 z8#0^?-UfGrw<oG8dVpC$ygfa`-~WljkNX^MCXC+dEaf;rrL>`=R5#Z+rVDh5uGGzS
49159 z#h7f&G<q2I#yaDGao9L!j4?JEy-j8GGmDMA=0szpvD8>?j5D?yCyiakd1H<--%J_<
49162 z{>ZNnl}F{6!>OFQAm1tGbaR$D*Ia;HD2FxlCh)e^++prE_n8OHBj$1QlzG-ng^W-%
49163 z<c11DC85et^HA$hyHJP!`KiE4NLcy(Q&U;GVI9$1-e+uuz{2=aw`913pyR=YyNg$j
49165 zfp1|+%EMp!t%tFs5Adz1s23O)c!u-58{fB)UxB9+5u=*(I^HMoHJsQgu*P@`zSk44
49166 zv#dPA^UF{2zGjc`*NUHTo-Ya5Qe*fF?K;*g5AnWcmwQ-EVe<Y;@1a~`EPN+AfpfTv
49167 z(>x<E=l6wxFSmied~L~lxE<y1qhAxS?b->*<+}v%d4NhoE1&}wC|G#Auv$!<!K|m;
49168 zhZuPr(AcA4ZFeP}$68Z(6x(=a^bA(GiQDkCp}Y^P4T-zif56IW(N0e0l)%HsobxuU
49169 zLlY^?#ZpQ?9%bFi>s3}D2eCw9zV;!kDx~@#|1n(F7^GL<)6k2xyf*TrfpxY5-#W=j
49170 z0$Ol7Y;pA{(iq=p@_6+@K#IZm(P>RSn0MO43MB)x|Hk`Rm1_LOpd8e_Sh-4kP5MlK
49172 zIlk0@pWF}iSGVYaTsPqPTFie_8l-H4TB%Xox>;O@M-8&M_4_EDWEjT2x1lT@N4)$@
49174 zqGWiUUuyJDEzjKloWBl!U0{Uqr`ShK-T|6aWjx=1idXC$RK!iXKd`6HVFp@Vso-@i
49175 zQm_&Z^DO&bUU&3Iw4K^Ty{t>|Edbfj_jAhq=qYvgw{^2vEil)w^fUTR-WLsDeG1mK
49177 z9eFux#A@gv(MGK$z1W`g;s@dyvg414J6JnD$l7rVG>~|fHR9BZG-4}_F{aC?kCwoS
49179 zZPKOF)o@td)Yk3U_BPwvzNNi`G=17WF4j@CgY;y<x9o0M-F?jC4VJg=5NKzzxpnsj
49181 zE1+gE4HPWKL0ah;^V^ray5x3VnbMVI*&6V_OfY5N!;+%4=D7}DE%Gw+d5-Zrf;Q*8
49182 zkon<KPE&*R?v!&SLrADcbZ1UaRI8^TjeOJS!x9AP-_Vd{J9)j)ohV&i#&vj5AExwI
49183 zb3RqbN47z^BFX$*jS}T@mbR<7^a!5Hh0M<-8Y8|1T>pDn3QRO$m4|rU$ECaqf12hM
49185 z3$wVMcS2gxb(k^yH@-%lzhXEAHTS+m4P`lEyl=P;)9|jG$!qQxbGaU4>0WNpqx|K-
49187 zu7Z|2$SWf&`8$?;tPd7(UN`?^mX-Httaf>j*Bl+>Z#-^L(B*^pIv;t8GF}hen{zJZ
49188 zoI7GS7x6CSoe1-KA_F;ir+9t#<NSSvt*bdVj25rPmj;yEO&7^K(BmYrUEmAh^nZ;M
49193 zDZZ#7d+<YyPVu)QV|Xq8EBFdRcIPy+c>VoaUah`Xw}58FcW9~|w6*-cI*Bn(jjw+%
49194 z*W|mawfyu!@`OmkY0S6u0FTJG^)-x(u1vk~_+P-cE^>y#da;)^S$OiC?sidMW1Msl
49195 zf4ePtXPu^mov(x5{J-zZhF(Pf`1@vlM0xh$eLXR+R8Lmzb~=`dT7g|&#)xrZ5!tDT
49198 z;oq!-R<H$0?_S0BZB%?E^JG4G<=x?Llb*d(-pyLMEo){eejxhLxq$akEuqkyXte`z
49199 z7_9s6$r#b{ex4`#2w%@oT55&&sfRC_1`|Ev`pbW-LrZ>JiMjd!bM9A!k_vgrw`xFk
49201 zXw1Y=Z_gJC$mU;28uXaJKcrFaatL7=d-dFp9hG#x#J7GEWt-rivHaSXFb2<4{rvwq
49203 z3#mUYlZCw3Z-PgPwjoZ}@{@l`?C?;{{}~ZHSIeolrO^%0+$Znm-N9X=H&`YI5v#}X
49205 z8jS(XUlPo&*;>TvKAhqRVCYGLX*}$do9XFMf(^Od$Z>-JjXHuMqk*d69rq-;uBZ&`
49207 z*9i)wwZg|(8`Uvfz!2k$ukw22Ngl5kXHR}CJ<YW`iYnfBpv-D%HM4T9-c~<rm^IL<
49211 z{3}D080B{j-ZdH0u7cO|O7alyCHi>-BN58wFWg@CP=_TFvu$sAr^$<Jz%uY~N_XO&
49212 zvSYj-N)G=^EB4AZc$aLG_s0$~_G7%yiOsuVCwL$1Jl^}d5$|nM#`{`V@b@82crWWt
49213 zl>alLD`|!2#EtwNNN?W1`ZnH)x}U&5)c$`{>T^^o%Daur>%-;UNr#ZbDU9-i>Og0r
49215 zDIB4&mBMj)-u&V^{J$>u+huNTD3>h6i_4~R<tYkhDWv?MNT8@_5ZoXX1fe7dl|i67
49216 ztJZ!w90+f!a}Y3|^eB(>O=7!9>Yu`5)z>qnk}u@_1K*hmmtkW-@9%mvKfQ}#7lx$c
49218 zp5!lG&-Lua{sv~8O^L5tH1F%E_<EebcbbN$ai0A&i$@&<`5XPodL!FS&Z1shA$F0i
49219 zyq9FoVY2K_iZetN=cSUCOvt2ICyU8msgkW^d)Z0$k=<lZ*;Zn&NzNhb-DBT=H}hs&
49221 z7*1e#3qwCW_m1%>!&MAlWyo`%2I~O!R|URVB*?R&##x4I87^dqaZ_RPe_-G%LxMvX
49224 z5l9~J7h=o4^-enN+^n>VgLEVd#LD13`1GSZjL?*L=n2bX%Z#sumtreT@bz!_ns?yx
49226 z#Sk|7%NH>I@%QumO<9WTgEbHYA7J<?!|e>;;L;oOHRx#)uQCxSP-I<@o~a=<Cg^K~
49228 zXYL2k{gABt9(4a&)_r@r-=B5gTp0Wx@acQfi@JZ-y+!w+@~_1E<hvU(A{|-4D>X`G
49229 z8L!f)=I<rj1#30h2dgzY@p_Fe*qKk>Bzwr4Nt)auZzYLxyX-6PAh~jv93ThsijI5b
49231 z$X#-`+=t!w$Wq68kH5;#<md93{F^-KulbPY<iF&3c|oS6#~!&>rV6RBvQ&=BQ%RMt
49232 z3REHawT)D<YOG3BsVY<DszNnU?bKDOMqRDit83J?s-wD2U9WCXT~t@q4SVpZo7Ekv
49233 zKl$}z)j0KiHC{cTCa5P>y_$j@_tXn&j(SPWRWGY~>J>F#y{Z;q-#zmCSE)DETk37K
49237 z^#6Qd-@S&|!~+jJGFtR!Sj%uE!|@EK4tr?S{bCNo`45eHs7@>n;A4-D6w4T{eB{BQ
49239 z7V$q=JNz%j4gXS}{+Fr+;wNH}_$f))*U1-HCVoY-^({Ht*b%A=%?$64jEhypy2M7s
49243 zUDwC8))JQ({GD^=-a9jAj@fLtec$(aey==py!U(0J@<3|eZQac|3`H<d;YcSXWsuf
49245 z=>KBJ7YDvL{>8a3u6=R$iziQR{lff<?Y|iP#n>;-|6=?X_kJ-sDNe>srcY*17EM-7
49246 zIwpH22PSt;j!uqEo}V0_yf-=drTAssm+4<-e_8Zp)t8Phd%hg_a_5($Uyglw{>$+%
49249 zsmW*Jv$$vJ&$6EtJ*#@=c-Hf5;MvY+qtC{koqski<rUU=N4N^4q5QnZP8d&*#Bwml
49250 z*^M;NDAG8`zzJ{~oI~0M>zbS34!DnZ@dQu66jVVGwTPmT-mt<nI5%u9uw9usu@Mfz
49253 z$bZ7k=7;%V?nQot|2-~)KfwPXm&<>TKf>klf6D(ESID2>PjT<?XHcuNl>b})JRXrp
49255 zm$-KF*4ub*P5y1X&n3DpA>q71Tr&yh4HAyuHIjF++f6WZlMw0=o51dD;$q1<@^m%-
49257 zmq+;U$x9e#9J*VM;)vf_A)$^Vh;W$gl8e!`<6TKnn+E%-C-M)u*NBV9zPia5dP$hr
49260 z`_kI|2D*-Ncsyw#{}%r?U&1fNJJs>a`4xO6zmi{tVpz++&)4xEpcML$Z{QnwJMZGX
49261 zybq;e2j9te^B?i+`0w%?`Az&b{!{)len0>F{89e<{4suv|8xF-@u&H};?JS<#B<#6
49263 z`{dyMNjys&_oq*hcY29yAg+<TH=VfA#C?H;j!*YP-@v7Zd@F)THxl<_;_pr3=8{kb
49265 z@~|JZ49=t9VPwq?Bl&T3eM%Y`x`y)mt~7U*L#<D|JA;33hIzQ{i4c*tJ6`n-JQxMQ
49268 z(-~Ry)Sz^(Luq*$HlS9*MPw1WP@TBSjpO<NR49$^<5oJ{0}QBjZa}00r<V$)m;t4k
49269 zzr`-4nbcOV44U1$4)o()iMY9_Cj4jX!7r}`5PXdF3@pU?1o3Rs&+x1qBzceIL=%~3
49270 z3IJXu@;UZRq@CmqoHuwcEIeM1cSZP^jPgPB^ljo3r`^X=-h3?O&By+{L2vurSmMqg
49271 z{@)<a{dx1Tls6xfy!jaC4f2;m+;5ZT15$YYy!jaC3M>rCn|khL?kv_-+!a)2{aOl_
49272 z+eaV~YbkCDrM(JiBiw&tA!RsNM=c1<yOw5MyZrl$;C%7#EP}rA@~@FQ-%Ly4w&_n$
49274 zp5fI&xSjtqJi3Q|cz++fhvhT!PA_o{#5I!lrV}@sxG#_|V2$-NNn`y?(pWzu8tZ4I
49276 z;9ZA!5R2C%5H|l4$-n#*hxGd@5)$`ENV5f=m{6F1$bAnz`x_GeA@cleXvpM@)z?YL
49280 z6kgTnAr|0cfXl~cNZUa0IngXZsepJn(j(vu(k_tf#E*0k(n1im-0@Cqg%F=f@gC7q
49281 zO-Mr_jYBlj4s172`y1Pezk>LzoS$Qx0e^wC6C^qOjC;oXcGy>??>+BJ{?Ps5@`w-R
49283 zf5xd$pf|{Kxh6qA7c*Go`vB655NThWBK-e#d4<z1ikvF#FaHqP8kLm3_;`Xyl7?zY
49284 z;y)?WBDLVP#P@vEcJQA=f_n}lzNR;}gxCz#^GY<S_a-urFqVuL&LAg{B#~2|lF1C<
49285 zRC2-)4iTU1if2K5o6IMEo5Ldsc-99{rIKD@aw@Hq$N2YcrQaFiQ5*D?`xrABU$#kS
49286 z)cQ}M^`AfMKY7-F=B)p;S^qh+IpiGZZ<AAH@mHb$4B2mxuYlw$Ao&V{@)eML1tecV
49287 zP`-kod<7(50m)ZD@)d;TD+tP0e=6YoGBUm$_EqV7&-;=;bP_Jnn^7dcq11o#ZRvl1
49288 zT1N-fkQ|hf^h_va_LDOANuKp2&vzoTowymK=Tz=1#eJL~qd0tyZ45$w28<)juOY<m
49293 zF%SWK2XPz?DQhb7RWm7TJa~dQkV(>0xMZo}7-AnLf+K<;h#)gG@M+}>q<%ra`=K-z
49294 z133Tb>47_Q$X%p#heL@$wKg-PY&M6yBj1@q?joc+xts^yZV7q21*J|L(h0e!-Cl>j
49298 zo&f_1yT(_MNONcL10bEt=MO?HnBvd#SNL1_baj<M6|G9-9K>S%l*9|KG~u{bk}v-z
49300 z@8%B>jF_d%sR;-Uf9P+8g#K1Y=mk>fW*7(4I4isWZi6)V7~TV8un1Pd2Gjy7f<6+1
49303 z1g?doZX-?yDcA5F9)ZJ>v=E8E7VuJxIJ~+CVKf7g>*M;t32+u%0@=7MfCq@7<@>+P
49304 zm62G)kyyy_DGy2I(vVd4mzzXV-p#1Rfy1i>4jdv^0{T%cspCATOy2-^f&bJae=H!;
49308 z<lDOn`sD=4bgABv7?4(ZUQm4eckhPOP!fU^A4uBjoK!-r(p8{_z01k1f`DEK*xxwL
49309 zquQ_b;1jHb5luE~AlRm7O~-o)&EcL&tML6}y0}Ma4wIqm0f&*6J3)BLUo)A?Psn<B
49310 zY`g!2Fh`NBtQA25!1J{6Iv)|djL*FwTv8-lQUtF9d@|!3;0@$128)qpF9e0i#=Z;Q
49311 zMfP?Ds6_62cwPpmLHa-iR)f{ZXFX^@HrWpBNa6%e6iy3hL2?%!J16{91Z|*AVyPn7
49312 z05+hf-$iwTC#Sv%c+Lv?)>g0;T@QgF6b@dYs{z}=b|m>t@S75!6~S+T-$L*10ejH(
49313 zLBv~B;CtYED4av!5c2;=;E#}hls4$;5rEGI_!ICa$p81j_mQ7J1%HaZavU5-Z~Yng
49314 zGsG#zz!-Y#&%vLgw@!c)=&h6BBxfS$%=!7NNY0rPk&eLYt?@Z?fUJEI$Z2x``~ds_
49316 z@Fij{r~n|oq=u-44+SWoYXih*3!0#b(<0rCSF%`OEMi$UXhZT;e5MFYLmC~zIWV2m
49319 z0pEx3qo*Ih571j5!Vi)E2H1dnI`Ek;uo)sAg!ke_emu~F(6+)><g*RgAU#<{t->Ss
49320 zD9j$%gM6-mh_}M^a6R(B0d7EYe14t=ZibsVBOHJOD9kMo_knJM+mL)1ZbvR|$B6K^
49323 zhx}iHmr$605C0y8e;NJ|eG8x7r@`|H(7O-G`iMsml?r5;AEUP>-~{sX1^hx{(IWg3
49324 z;&Sp7K1F!G!t?jx6r4g~K7-FV4KMN{a`pT)PR&R0cn(P{AB(P2_?I{luO36!ukqhP
49326 zniksEfa@6ewR#+W0)K+s2k=2yPtm-f6R0Ces{@i&2OuX<LvjK&PfnobgW4exq#XiC
49330 z_kUp9C$}r`-D;&x0YcgnAfzn;g4!cwuBFlz5ktOb4r(9l1qGlA*_8FjDvTmMeHq+A
49331 z9MS}>NVgRso#REiU?-}nr{Pt24^HtG#P_rL626Y_;0F+EKEj{n$N2{;h<JOtDpyse
49336 zlhJC-G8P$Yj9%kL<4)rt<7wknrL_r^lwB(2vMei>WPFh9JCaNlB+HXzYKBZ;$TUH+
49337 zLP@4&_!EO<MUu?_X9+3|GG>c{d5MDAqF`R4V74gVSfXGKl?e=)CP-E&$+QfAVvwvz
49340 zBrB9;T82N73)Y-6-ax-hnSxiP;4M?|sua9s3SN~Gewl(dR3<QFnjl%BB-1kdi9xa=
49343 z)+pa7S1^al1cpo#BrB9;T82L{NLD1t{C|P|!3qVlR>54MVAd*_D-_IH<r@_W=1`fy
49345 z#2{IbB=i3T`d9;YLS)zpkzo@=hOQ5l2@IJgNEWKYL;Z<CvQXWuS1_+oFzXe}D-_In
49346 z1@j68vtIee3I%hhOkl_~L9#+gre*jOgJeaL%>QRlFjp#=4GQK;1+ziHT&Z9-DBq}5
49349 zD416&m?IR-D;3NU$~RUjm_ua(L#7Fm6-qKK!=D%=E0SdXzu=aXjM=PU4sd6)f;qsQ
49350 z&B`|d+&NSxFl3q_Stxf7^(O|&ih{oDZ+YUMJ!rH|9#g`<d{PhOyG5jg$#-va^0*uR
49353 zD$=hake*Xs>RrJ-Dgx<65lC-|K>A4p(jOuqG)PW*MFi3-B9NXC0i)vtgzqKf;$9v|
49354 zdU@1j*Fnsg3P}$MPkKlI=^Nom--w3vjR>S~L?C@5JlU%ekiHR~^nM6<Z&MV9SHY|3
49355 zx(PHP+&<t#SaI)%n)H6CN$-amd;~s1PjMfJn)H6CNxz3$>gD|(;D4YnaqkC?;YoCT
49357 z!#gJ;7x!ywU@<I4ZV4<wF7Dmbz%p2dT->{<fy?1?<P-O9YT!z^3c0vnQ-C$lj$8+9
49359 z_r?gMH-?8_!e<<h@+qFvpt6*Raw~;TL+(o`=QR9W{$+HX$)i%j<$`KdItIWYa0RMh
49361 zwb9yaZLM~j_Oy0f`&bvF%hkDbdvwQi7j+NCC^1j05FO$=al3d-yedA?$LS07Ui}`9
49362 zBU+LDCu=@D`-Vq9HTr4LPltYb^fOA_1<z_xp`U<$TJ#gq&wzeL^vmV?xMA)fcZr(-
49363 zsh|>-lFKj-*2CkxiFffE_+9)-{+7zDT8QF#O!ZWqk7DUk52+8UuM47(C-e%ZG=e5U
49364 zvp`d=S+6-l#q^r?q0XYq($(v_bc4FRy5qWQx+h|sm?PT75%Dy~DY1Yg7XIESUXkJ}
49366 zbhVVu9MN|4JG!vEqVq>X-qkU4S{L#~E%jB6l)D_^g{=4W%#y+?AvzL{{<&pNABIF^
49367 zpwUTXjUx=|d0`o!TYjHccJ(Ao<JZ;-BNL(FIVkl~jo^qK`|qo5fwHX$De-}F?JsA3
49368 zl%Zu=L#%3OiKol4hJ+Ma-owkThHwaWX=jyN4fzVYth39ihFJfvFX_)Kry7Fb>&yA`
49373 zi4cMhl5`D~@j*TVi1{GDv?lTUX2rt)T>aeV!MP_e<0$)3Ki5ZS-U?rv1_8h7U+R}G
49374 z1H#wptzh5kU*g-pDqUuLc+Q|8&++GMTs?Of;Ptc|G?5j{1E?)=kB{Sv_#XbS3j0d{
49375 z3E*4cJ>Vkea14Rp1V_OC!ZTLL4h)yUzd|#fBZArqi^xc+1BLNh@b}<Jcm_U1-!K3H
49378 z#U~ZDn`Xn=oR-XO;mI5pUYfUpXQ1$8j)|Jg3Q>{SAO5)>{`ne^%+Y{kwgtvLgS2=7
49380 z1h5UF);vBjoXlXs=O+)tVRZew@OP!QAK>SpwB$*v5ATaT4_$wYU%>IC7sSfhm6^-I
49382 z{3m^le=Ebk^=temGyErijei@%zm3DIR-(yXt+HQ^^K$-mL44S~e{`>n%we{2SzI;g
49385 zjN+*iL3g=Rw}S5GP5njCofV&CsN6-7b1RkAc;sA25EL@xI#4aB;8t*z((X$m+$Y>N
49386 z?jvp;w-VXkRVWAELw;(wPHr_<%XOhNtm8gF>GmPnp{apuMD?hNb8t?sg>!Qru9f?g
49387 zYeqR*#Qg@hm0QED<<@iG<u-Afxh>o<_c`a{@cP{aWTz3Mv;rwIX!nqrC?98$b%c0T
49388 zA>O%8-cKZ*dy%Z{naj=NUg73*uX5i);k?deb8m3p<`#0_!RwZ|Qm&Wl<M0aEer|vp
49391 z(D3dyYQoP*e=di)xLOJUx6cLg1h*d5C`1E#swY0RgiVB^m1Cp-rKu1@+(=X=jA1bi
49392 z{U?yNq?+L3g5s~1(!?JtEkS2|4yKvZy-E5WPIp7lbs+Uc3Xw^QnU=^+{{4W+J9-Ia
49395 z{{H;Xkrcw%%_wYt$<jTyti&tt8AIxW-#-r5Uz)Tb^~mo(P-bUJZ~6ayy-tv8u7=bH
49396 ze?61Gfx}cGAHm<6$p}$LBqH%?B(+aX;w+L9t*1)Jul_HF%vVfBRu-?SZa`XoBe$K~
49397 zPponb(M0L!w@tc-(*5V;K2~}DiF7YNA0hWMl;>Ned-?e=xsO+#4@&p)^H0hBOy&6&
49399 zdK-m$fI|HVg?clEdgvRW-b$e!rce)3s6VAp4^XH-p-^w8P!Cb4`zh30zY*#|3iYQH
49400 z>Ma!NZ4~Ow6zU-gbw7oAD}{O!g?ca?wQ3>49g2Djg?bx>dVoUx35B|!LcNtjy@^6S
49402 zsD>z1{S+!%bJ2C4uH&17P?R7P4O|243q#RQq1Z~H*hHbAH4$Bh={no*M*$9VS>PO3
49404 z9E#0tl&Virs8Jvh?*dGPN|$-MX5vuRqfmCEP>yk@xr^L5cZYjKg+iA}oQ}olEjxM(
49405 z@B6ib+s7T|PEc>rWoDCfdc%Cwnk+&!qz<)rdPw~MO6rG(u!%g2Rh|JQG<-cHNIoM-
49406 z9v>u+50cLelFPZH>~q1*1$P21AMJ#grFR;(8;_VSMBI-QEQ!;yqspTbUf3UVDi*g&
49408 z))a(2kvx-Itcm}dTCB-j8u5vH9q`Xa+7&jbA0nB!R)i)6{hz8}k3lk<)MA~3LP$d>
49410 zdc#Iew!r<GI`ULQdQLd<RFraJ7TG@~o%q+HG!AaDrjWR%qwnHxisXw%5-JYI`YW|q
49411 zXA`8UBn4mmB`sEe43kN!rjRm(_kv0zsfN?-c`a6JNQ*Uzv{;kSFAY7JLsH$!%_V)F
49416 zdu!~iOK;tI>uJ6vKP^8uzdYZOzb=1!{=xjy`PcFvEK)6sTQqM`!J_I#-bMY3b}u@*
49418 zEFNF{uuv$BFPy(dTUfXzqp+sXS2$3(r|{UC9fcRxoG84t=4RoOw@q)`-p+ozw72-}
49419 zhF;Ixy}cuE55Ilj?UTLN-@dYzd;8v6TM=g|DvDm~EXr8BttfBp(V|LAWs%F$&}ZsP
49420 zEZWeQU$oQWD>`gh-?!Vct?zW-m7=qKPl~Qvc7HV2a`2-v%h*R9AN3bKvYdNIYq|Q-
49421 zEz9k7g5}Y=^l99>l4+)O-f8jE(x)w$Rxqu6T3y^xV4HDn#?2W~#7g4&7elNtK4I}i
49422 z&VRPvW^QNElXpz-*xt#0r}UkMcY5C$e&@hDC*Qg9&b?x;IJ!8aIIp;}*j2otcxUn9
49424 zx}!?2b}uNozZ5QwSvq%Ve)qnmRo&;7db;l~-MDnu(j!aHExplGx%6>QZ>iX`r!=uN
49425 ztF*Z1ZfV^bLuuEVd8I>Z%1igH=_(ytv#a#dnp35B*4!?A8Y%Y1^=2%y^p-A5>-8<m
49427 zmmQ4k@9T@)-nTb$U*FltBYpQGPkm&Hy!g@l$m@~!BA-|UOO(YL>x;9;^~ddrJ05F}
49428 z-4~k{yD%;@t~mC7oGLD!8(Fr0*@<PBm)%`9RTfp2Ube8TqRd&gzHCR?p|Ue&<7E%u
49429 z72b`1cmBJD@7BEQdw1a7J?|cS_rklk-hI-sv)oi}E6*-3EpI6AEg$YoFF(*(Qhu`h
49430 zO8LFz-16wovE><^H<ssh!R3|9UCTEt-?{v7muvaiuHog^yN)e?RH3a%=$fj??6y`E
49432 zB6UsNikvmMYf2+-t?@-XT(e`%=!&v67gyLLrg~LoLvNZnuD7_iW<_7``rZ+9TJLdl
49434 zj@b1v6)~=ujWN5qtt&RH*tz2HinA-OuXt3ctxTxQtSqXmt?Z~AtlV39yz*k@?aE2t
49435 ziIwJ+sVj3<maVj}>{~g~Uc7R&-Lvx4%Bw5ySHY^7_Ul!1JGiR+4qH`Km8WWB)vl@|
49437 z>?-T3Uv;Oef7R2jgVmO<OI^3R9(N1fG1Y0^In}w{wcXzC4c*&KqupcO7plv<A67eh
49438 zqIyzI$9sxQXM0>d>#EoF?CUvZy3#Xly45pfdbq~ACUZ@}n#wf})6|-w2*a8q5pip-
49439 zuDQErG9s-vAtI|cFCxFUA)>5zAfmSSP=u@Zazt;$K*WxS{SikaPRD4u!RnFf(dtvx
49440 zSF7*82j7c%Z?5<5d-?BGz2|vv<9oZ_JM!MSw%+${wC#ECagA7$Sd&##>@(EV`R3Jh
49443 zt@B>z)7t*7#M<3m`CS!V_O2e|P}lCR!?j1du5{h$deSW#cXiJ-j&_%I*LQbx_jm6!
49444 z9`8PBJllQCc%?_^iRnr2$>}LE-s<rhANFiFPW6oST<E!BGOU57xHYM!v^7PhtTirE
49445 z{+eM^*_vafT9eDvYZ@@^Fzx3)sXbqNvv%Tr!~53v7qpJPU($N<{rdNN-rx5A{`XIK
49452 z9BIA$;b`l`ho`)8A71t5et6$o*8sg68)Cep4RgI0y*Is&8uHts8>-r}8$4|_ZJxIE
49454 zbu84Echm=`pT4f+vECC%KYd^42K`{?0sT&Y`gOssDE)!11^Q!M)%r7C>$--!_USKo
49455 zozvg!y03rGZPq_U=_jJ}i$Up^YREL?8A=T`1}8Vz@VHTIOl-_@7dIBWJ&kqlk;bmZ
49456 zp~ijgn~h^0RpTX3TH_s0apO~u$8PbA*wZ}6?YW-o_VQM))zWISJ6a3v>sp=m?XBBd
49458 zM_Yf}&bEVXC)+Ny-D-R66MQkgbYG6I#8>O{`ZoBs`wsZVd>4E-d=J}UdsKU>nB88~
49459 zUfu3$U)Mg|zOVh5SlB);R<uubm^-W;nH>dUeTPHzb_|K@I*xRl>A2c)w_{Qq>P!%K
49462 zCmzwUz%$oT;wkggdpbP*o}He9o|BGx&n-t!tI!(Ln%<hzTGCqE>UC^u-QIejb*%M5
49463 z>y6fjUg(YTrg|56i@eodmv^0a*t^er%zMr|?!E7wYBRT4+cMh<+A7-|ZM|(nZF|~|
49466 zYbG&XOcxh$gU)k~{mzGu6D={0%Pl#MyDhaX-j)rHsg{GyQ7xC6(_0?91XqkJ-Ide4
49467 z&{f-9;o9KZ?mFNab6s%Va6N2xx}%!cyBD~N+|_QEd!2jOy{~zP`<#2+ecwIhF?+0@
49468 zOizKQ(&O;-dWJlEJV!idJXbw;J(I15)`Zr1t$D5GtqrYRtplyQS`W3JYQ5ZgyLG~=
49469 z^~QNKyt&>|Z=KiY-RRxn9rd2@*Hx|17TuQCmfcqDudCXqw*6Xb+xfQZ{<^B2=gZRO
49470 z`l__WzCPbJe_hp9`R-}$?Ivx9zpiRGwD)L-+jndCw4c@<YQLjB(IINjcg)pZ)85fO
49472 z;%Mn@8EV<na-`)<%T;i+WzuDECAj9f@?7Pv23MDBz_rVD$aTtf*>&4B;nuq2+!^j%
49473 zcd5J1?Q?H*?{JU0Pq;6-Z@M3ORGw&0nkU;+?5Xj1JnKCpp8cNVp7WmTo(KNA+M3l`
49474 z*jm-<Z0!rwRpEZ?Q?DsdSA|LMphoLG>^<$TtD5Mxc#W-Xp=N%du4)#xUDA}aJ=RqF
49477 zV-F~BoCDR4`;Mt*bF;NMv$>$T5_p??n}?eBG#_a`(|oo0Zu6wm;7oANbLKhAoej<|
49480 z-&5hSdwM*Bp55wsp3~}F&mGT`R<Sj{b*{R&wM<>r+M%|$?rc5Sdb0IW>n(MMS5R;8
49481 zrmKg&CEi-ESG~u(U46(qras}lp+4UR)z{im)py#8)Q<%yn1uu(L&#?4<Ys10_A~RW
49483 zR?}mL;D~XgJ8~Q)j#`J;vB9z3alkR=xZt?qc-Rb^qncBj7c>_&S2w$w*EJ6}?`uBR
49485 zTW+^ZxU{Y~SB5LsRqCp9`CJ?Movu;W3D-r}P1hs0${o!gaA)(!+%;~Gd%b(ay`Mkh
49487 zHLa&rPF0VpU$tGePj!SFY|I03jSg7dINZ3e@mS-z#_`7cjZ@HNPqi<w7m;*ZXCJoj
49488 zvmdjcvya>F+ozh$P1dH&rh=x*CP!0m(@@i%rXx*fnyxn8ZJKl#90`tjjyy-XqruVT
49489 z7;x-z9CDm;Tz1@cOf+ko<C-&?bDK+>>zaMd8=H4Dk2arZzSw-T`H@rQjCQ6uvz^7x
49490 z8mGs(-Z|pj?>z22@4W7O(89G?T5K&@Erl&rEl#+uWn0VMmZL3aTduX-Yk3NXT#0a(
49491 zE8kV&vb%a*gK*S!7#??BfoEM$+@d?)J=eVuUUApMTkd}N(0$N-(tQa|xgYZePYfUD
49492 z$>GyHwS1Om1E23Xz?bp0yo>MU2lyS#5{gPvg9XGjWP^-`x&~jv#)cgYqYWn-E`r>K
49493 ziAHT>Tw_LKZewX<U8ApYW8;p-(Z&;v7aMOjKC-Lq(e^ZZw!PS1WB1tC+ehsC?Z@rs
49495 z4m(aet~l;Eo-~Wi@y&Ca7dDqQ*Ee@G_c!lsKG=M+`BL+(=EqLK8RJZM=73UXt<&q=
49496 z;N0#!;2d*a05#5sz}XVjlG?JMrKqJE^t7x)R%9R8-g2&Gyybq&l*<hExiY~KS0y;*
49497 z>U9md_JE77GvK=GF1Y75fG6&GP;i&SD0dgM!g(+k7Q-rNC$rr{)5|Z3r6h@zA3*v&
49498 z0g>RlG%^ksxC?$Zhm73??&3r4f_<ik_)HJ+nI7WvMd@s2`EEwYU3|!0@OyK~*kj->
49499 zHso#wbq9m);zORrhdc}Y!c6H|V6?FkoDJ%!{WbmxyM;5FL~_bD-i`kIKm*Jm9W;Vw
49500 z-~=te1>C?(X6(0v4$uj@KsQ(edcntF0~iEb!KYvtjDXL<cJM#JUT^^K2nYTI90kX~
49502 zW>lV%p$(>xdA(_H4tyDvuUAkBdj~FoOW`uO9Ik-X@I6=qSHoKP0sIg)!e-b4-LMsU
49503 zVLR-EAHj8a{yN+MH^I$t0B(gN@N@V(@b}<;`1^1a{vkXF{}>*H--pNXzH{)e;aT{%
49505 z{cGy|E9(8L>F4q<^Yi#u`1$;+d?x=IpT&QRf1S_f-%#P5mM@ZB`~VPuz$KxS*Kk&#
49506 z1zL2CS2-l1oG^1XveqF9*uZRQ&VLGc3A}_Pji8ZBCTsDN$&RKrvLZhj=NY>80xxp$
49510 zU@}>iVIynrtz_-J6_v8TLr*V(ODN<Yf*&G3{{a30`MCzJAw2&G{t;c{9Z-|WD*Yr>
49511 z7VjYcc&)w-mr3OQ9Q+)){|5dIx&IFS9X)*v9;49y1N;YP#buS7P4+vT2_s+xmr7QB
49512 z*l_7ZF5dMth3tNqOxA&<kaZw7vIA-gD${dN2<b4LOTwia`FRDtf}Y~tP-l=`0IXz9
49513 zM-tgNF^R0{u#z<$bI6*G6tbGbO4e~$$zA}-WCh1;vd8HhxC*X9sPK*e$*7*xBL8@I
49514 z)7h{d)+3yFk5e1j<1`i3oJRE2jx={H+3D0ub~;T(wW$Tk-O!CBc-PYyvg@f0)h{m!
49516 zO4hxkz%6hP$+yC-$j=Z&<qCcRKS6l#s*_n{w}NC;dp}1$@t&wDa4-B_lqUP&J`~g6
49523 z4T62BZbxwkkR+e@wILor`^9oRB8)99El)+<VkYI^$i;(spb*q@nOref&-HR6+(GUP
49524 zcb$7o-oay@^gI4<r#|P~R_3=;p5s52v^~Q8TgjMvxPR+&!oj2MY<V)_87z4`<=?-;
49526 z$&+Q5ms?gG$4^({^H-OWHGv$lmOQbRDq=0w#7+uieV~8W7ag*ec1}dr(#;u=ZCuMm
49527 zVh)4sOg|Vv)&TGHVnx<$JJRuZkCzN&wf1r^5qmWc*{kE+E65_9;$9~<XCbjU-yt?9
49528 zkL>#L7O_0}#PTdcmgf?;nAn`RiOnfOHs>F?cfgO3wOK-}%~E1*N|CksDYuMRn|H~c
49530 z7U}**?l)i)(&Af*79U3XyPf-tXzLwFTYs1PEu@KuxIIM69>DyF`van1{}AcdgWN%~
49531 zpY)#+4SF1D&|}=65v_TG><{x7@B-45XNaaeOLXMlART#?J4f{51*8}MmHPqw3DS1|
49533 z!g-%4F(thBd)j{iU&6ZuCH@MmX)`KeY2S!D;eD3V7z_%R$h2R=qwwzW>Ho!S3YYA(
49534 zUzt<=2>b{kc^<RE>s8YweuejzPybJ{EL<O6{FS*D-g7=3z69rTY2S!<;T5%M4EBXr
49535 z)TT)s46mr2D={&=mNq?vkKvu?UzAu`6{?wO3~q+^pHGK%uns-_COoYPI=ICDt!%9y
49537 zZ=&#@$MJpw?;^~<D$@fzYT+~Zo|;#4Y0qVScrA8X2=`0m6S>4+!T{6wG~_3o2jbP-
49539 zLbw+46}*#Q&+p(5@n`sP{-H`x#jED43RN{KpK3t0M|DhfL3K;@L~T;r)Y<A%b%VNB
49543 zW7SpF&g#DEZPk0Lk1G9(AgF(FnAz+2n@YcUu-{Laz2)1LagSiXpD;&5MkHx`h~FVa
49545 zXxs)BDGZB65*4>?%yEa$m9e7myr4&rMkMJB2HqqpZo`r^o`E-sikpl#G;UiIDGZB+
49547 zOvP=hA`Q=rWGZf36lpl#WGZe0ij;*nG;W&}DGZB+jf&e=MH-IRM#XJVk%s4mjf&fV
49549 z#%+@#g<-KsrQ)_lk%r?<rQ$ZANW=3Ym5N)xA`QozO2uuHB4yzXjfEfYY$_H5iZmSA
49550 zY$_I;6=`^?&!%FrNs)#ln@!=Bk%i**BTJ+3ZdRn>7}6-b{faa^CDSNmTO?^b6GJF6
49553 z1g*IwU7K1`f|;$>j#+KVn0B<}hW6A_sJ*JauY*gAbTLa^y17e-b@@w=>8h5F>pV-R
49554 zbQ?>px?QCOx+A5I(%#Y`-MP{ux*Mfeb&pFYml>8NEStA1PZXCmEbCe}ux!_|L(5Jr
49556 zn0$7tB4u$@7U!e+tc;h%`Di{HV6H5V%Hn)9pB-ZI+0U4Kc2JSBI4X<t(R^0M%i?@A
49560 zi}TSOHNZw$ypzTGXpY*?<fvPjY*gl*EY3%>(E#scF-#WcquJ;tCL0}OvQe3LvN#{j
49561 zMgzQ)#V}c%kLI0Qn7mVFm@Ljm^G-Iyl({5}^U(}b=8`PVM{`M;HL_+B(_E6x8vhUR
49563 zd;TqL-y%UfvM60Ux~N2ZYLQoab<y@k2NsQK?=QNcg9T6*Q;=G)prELrx&ZOV0>mE+
49564 zjuo6M7%#YAFtymc*t$4#alzus#g4_ji-#8PS$t&i874p6rbt<wkHw*Aekk{0vN#mY
49566 zWN|(ghobr6Rz=F{!(?$NnjgxXkHw*AekkK*aVVM}2ACj=^RYM-%?}3^DXR~Y#i3|^
49567 zD04m*hobqRjF-isXnq)Af-KI*;!rd{+@eTXeV8l`Me{?M^RYM-%@1X~EDlBU!vGUx
49568 zaXuD@qWR%~B4zbqvN#mY4`t5B;!rd{l<~4S6wL$&6e)|{u{adX1m)gJ7Kfslpv>-A
49571 z(0@C#TA&K$RtrYdR~8%(^uN7s6DnUX6kM-61HEvsUlSg^{#2vQPW1Q0W!p8i*@K#n
49572 z?8BPD>?@kR*-tdb--y>-d}E>J_8aw@$v67n*!jjmt@({h+SE55Yjbj9a?*2ha!PV)
49573 zwPiUQwDz0>Ib%5&a&F{2d=tJIrR{rjfp+B0>Nj0)u6uL%&3$hkd-L3z<8R)7b1K)I
49575 zW>#AjDXTY)#Xe|eC9@?K`=FVXjF-heXl51QP%O5@VjncK8dRjL-ZU2bpqZ7-mRRhA
49578 z5sLw_*ayv)`V}dwFO0=LXkH{^V6hLH7xgPr7T00151JRr{aY;dLGvOR1B-poyl9gm
49581 zSIUILuXG4!U)d>Kf90g`=#^U<?R-I#Fh6~M&ioQh=6tWFX#RFh?fkL%7v|rX|L|3)
49584 zvk#Uvr<sb(p;*?OW-0+r!eSpRYfdwjK}E{y*I`+6nyJX_gJsQWrXu5IS#z4H1ULzc
49586 zeXy)K%~WK(ENf14k^x1^;u$P!PID5u2Zv?NX-*>Z43;&g*++n9uowl)n$zr~Uy-tU
49587 zWmwjn<{2^umNln&M!zCuaR-()r+J3l)55amG|!MRu&g=FGd3ww7I$D-bDB}e+<|4y
49588 zX-2{34l+w%S#z2@$Si?n&1se(^8uDMr&$7<56G6EWzA{JFH2cFiqMw-*Rb)arcf)N
49589 zx?2^WdOFZ2F?+6R&+IbQvDqDgo{8DF)Y)l*x->1_-#d}!RUb&(u0EMIroNJPLw#=!
49590 z6u3F5LiC&>A!Ck9$eS}fXWyJ-Lgk!s!8K<}*pO~b&rB~!uS|CcJJW}R!|6xT&!k^X
49592 zWQ=B<$heqsGvm=qs+Xc)N_#2$rQ(-rUh=%O{-u$Z_P=!erSmUcXWIC!ij-xyS$2@N
49594 zmt_ZO8y~RdEW6FJgS3qwP^7FL29_P9ZM<x^S$2@N@iJbP9i*-KfFfmCXqFwMt-0Kn
49595 zz_Nq1HJ2?k%MQ|ZJ7A$%wwPrHX}jI8NLl>@EIUYBXc+^`4$>C7Uy-t`F3S$m7Fure
49598 zB9$-E<!}2YqSkNXxawBol<G;6Rc%TtP}`Cm>g=Q;b!pNObwkqCq`OIz>RxMtdf1w$
49601 zR8wkV>ipFF)QVJlYESB5>h9FTsi#w~Fzw)=B4yb&maU-epxl0C*$UbY23B&hY#Yl~
49603 zS+;_<c<eP>?A2KTE5@={EL%a_wthv*YJIY71#QLHYpVkGie;Htwt}`|n-nRlMai-i
49604 zv=w8oj0)H*mStku3ff-DZAX@^pzRfV1ryscu~#L@?Ln5Upe+;I2C-KJ$!$EAt)Q(9
49605 zdo>PwMk0G947)AHuoW-3Lajv%g!M70ftFLuFuWUc3{J(22ii}u1^oJ02frhB$lr#F
49610 z|15n<+ls)dUzYx7=~LQPY*M7*HHEec0sYU?^elZ!TLtz$tbz5tEKSeSr?mcOuY3q-
49611 zdX`RS=~G(&v-g5!ui0g<W?-*d2<UW{_Gal*TGMY*q^y<+OP|u3p1tZIpwn5}o25@_
49612 zoz7kv%U(0UULC;J-s~Cw?6s=wS^R80&7N(~UMI@d$n2T!?Ab}|S>|j`PwCUhNwC|J
49613 z5a8dIA!xN6feS2G1HDnx^5BVS4e;``0Y4L;c9~C~Ho-59isLJya(QP|9lt(mBfleR
49615 z`&5O|dsQ{jXQQu0--~|wg6W0C7v`&cFI2o>f1&4v!54PFaQKDOFI;)y&I?as#F+S)
49617 z#=*F#xYW1>aYb>}ajv*^al>)@;*Q0giyM!-A2&6_Ji|I8b4J08N~S&?P^2s!$<jo$
49619 zmL{TgBzx{|KpV339!nF^+K|0oi#_v}J;#=<_t^7h*(<2nb79#Ujy-3Uy?TkQ%h>Zp
49620 z*)tW`b2ZtFF-Q{`i-FhZ0sY32Kwp4K1r4S&Xf+l4djw1)u*Y;9ZZlnn`y)7bBEkkQ
49621 zM-;-l5l%Q2v5k+4I2v&_;u@bG@swX^PUI`h`Q{3<-P~gy<elcj{Ce{h^Bwb(NHH=#
49622 za&F{8en(_Ie<-p)a%beh$di$mB5y@L=FeDSEa{dUONph{;<aqBY_}Y+j9D&NZde{p
49623 zgVUm>rA}Kgt!P^HG}p9s(}t(*n|5s4xoP9m?oXSFGDlgXGNTHjDx(}xy-`C^d!mj+
49624 zor$^{bvJ5qx?y_4^m)_srk77|nBFygVEV4<ho+yJetG)s=@Ze~=(y;N=-lYi=(=cM
49625 z^v38N(WB8PqAxNv(Pl-;(k`r;O=}|d`UduVJNC@FfOcW&5mwEnb<QS5%3@%wnoa8*
49626 z_Pn@&c46reR?Vih3wsp-dsZ8J{u*14u;-+)=k>GanXxqndp;O@PCZ*Uu;*g2M=ja&
49628 z?}GdF!|;UunEsr8Tz_9b1uq+{@UEf2P-$=&dJRK{J%%H2%5asBGE5o`#suR$W1g|x
49629 z*ubY72aLOnhm5C;myNfL6DF-G&Xi%wHI<s`Og_^_(+<<9>4fQ`>89yXgeoFBA}u02
49630 zqBx=^!V|GRVkBaJ#PNvp5!WLgm^rh>Y%^z>3(Zw#r@7C(&Aiuq)O^-_&3w=NG}08A
49635 zqf6K2=t^|8IxpO&+pasH8`E9T-OxQ0p%^8miVMUdv08MA>%?JkpLk3>CytBv#VNg6
49636 zZ`Eh&3-pzGhrU-oq~D`IqCca*s=uqBG#CsChIxiOL%E^B&}A4f>@plOoHATC+%`-Y
49640 z?5ZBsplY}3FgU8Z0?w<Rs6}<Wdain*x=dXUZmRpig!-WRr23Njmin<E2r<wg<On4~
49641 zt>6_l2-}4N!kBPDxFI~$Kuwe;RkJ`-q^Z`pH0w0OnthsMnsb_Q&3(<3)~vN^GqnZU
49642 zO07fNs~ytr(H_yB(O%Ww)lTXRx&+-kU7oI7*P!dt4d{014(U$mF6(aVCPb|mCuWGb
49648 z68-vAW7qU(1~t1ihXeXl8?T+KT^OoQwU@NFw2wpescyqJ)u)_%?nyw8vC2$8C!dBw
49651 zhGDjbVYY^0wuWK0hG9+)!<-z3IXMh-av0|1FwDten3KaWCx>B94#S)rhS?T|*%pS`
49652 z7KYgthS?T|*%pS`7KYgthS?T|*%pR5B@A;)80M5P%qd}*Q^GK(gkeqz!<-U^IVB8p
49653 zN*LzUFwCi8m{Y?rr-orp4a1xohB-A1b7~mo)G*AcVVGx!VV)g^d3G4)*<qMxhhd%_
49654 zhIw`v=GkGGXNO^)9fmnA40Bo-=Cm-(X<?Yt!Z4?WVNMIfoEC;TEevy780I-)nCFCH
49655 zo)d<7P8jAnVVLLqf9%}}xExiv=>1x2RS$b7Bw-3u2!j|UKp-LW1Ox~(GKm~SR74IU
49656 z<{)Z5MMOo6o+EM)If#h4D9Cl-APxu6ixCkJ5Ne(a5m6Bl0wRVP?pyz^y|Z`kPSERj
49657 z_@3{%O+R^8Rdsc(RaI-P`mOF=)R;2wI;PCKjw$o5W6Heim@-cvQ|9So$~=8cnWv8_
49658 z^Yk%go<63`)5nx~`j|3LA5-S(W6HeSm@@A+rp&vIDf4b)%Dmf{GVeB~%)5;#^KN6x
49660 ztV!~|WuGknE|WEGvX)r~TZ7hN))5llB(Fj1XzMtM_sL7~Bnw-~i|1LiEu#k1fJ}Fu
49662 z*=m7IFH(ynE>-(VT&9*uJU|^N@gQ}W#3R%Z5|2{HN<3bjAn`=?4vD9z(<D|;NijSn
49663 z#i+B?`(;V>tQ5nuEi_L|G3wLmGqSvTZi-Q#Q=gOR>gg$lr>7Y8C3S@?xl&yzv3hQW
49664 zQLEKznXaCvV${{@YMK6qx>jQK3=5;arEZYv>Io}`XH{sPvtrcG)X!vj^-Kz*ey)Bl
49667 z>FU`nMm?$?mFenv7Dhd;9+&CrIW9&$sh*VS>Zuk+J*A$K>FSv-My*rpWcqpailwyD
49671 ztuNMJkR{c#A&mZ_{-R7*&zmv&GA(t3Cqx(-FMds?t7p#`p8lYD`h(Hm)!&un)iWTB
49672 zj3|E~)78^xjJ`?VB-7P1AdLQz{*g@IqHmK}J)g$td$iO6o>F6Y?t|gE51Qvb7#(P-
49673 z2|TgJ=v1dNT|M`~@Z1`sAJz}clIrO-Mn9_Mobnt8qo2^v%5?Q48^g03G|z4@Mg~ik
49674 z;;A;qw2icDp44E>I3s-*Pq;BWD?wM!xsmDW$q2^WZ|=96=2zxdR>M4C9<W+GE5S%_
49676 z`OZ7t+h`7da^&Y)BR<#bQ^WmYV?y08o+1CPmvw%$!G7`0@*3#(j{V-T-#hku$G@d_
49679 zo@yt0s-5YncA=-*m7Z!kJ=F|)s+rPLoo>ySKI&uEKGGvyWE~?t&lT3m(&wzU-Xs0Y
49680 z)z+ExFlR{*bF+1}^e3M6DQWw$b%nI_-&(7sEw8h_O&h$0Hh3Ft@DAGG-O~DITEC=y
49682 zp47BVeOzkPOX@TF6*EtLhiAb3j%UC<!ZYChC`a(-{`I4O{pepm`qz)Y`}(o5E5|Na
49683 zw$rbV?AwR>{c$7u{gLl)u;(8<+gfOCWA*q?|IVCZ9<)!k?{A#g$ePDDqt-DkuYF|u
49684 z-ho30?vky&UwXJ@lGpz78Yg-`z#4BID6dVd<?@<f9VD-b(gz+avOY{+n_7p<YcuH&
49685 zkFd6;N8Cbs#G|dPtYhT0xpl0(wv-<7IBRm<M|OJ0PQSSRNvWns|JUjHI=$V<zG`eQ
49687 zeM6^L==2Bl1U*`Or>&1{<(-z@Y0aH>+-bp`w!86GJGQ-cT56|_j%=NscG+o>owhi(
49688 z6?WQRr{#6pT&JCFsD*Xf*2q@XX-}P&G`0<OT2H6l{GW-dDRps*wY#-cYT4=19#lOF
49690 z=03A$?lU)%`>d|qXN}2yR*&3g^~`-%&)jEiB=^0$a^HJQ?tAyheea&R@7*)^y*HBk
49691 z?5^BrkI8*@kKAYX%zbvx+-Gkj_c>j;&l!{ZoF2K)>6!bSp1IH2NbYmHa-TaU_qjcC
49694 zNA8Py=Dw(B?u#~(`{J(L7mvw(agW>=_so59&)gSpB=;p<xi1-$`;s2HFX@^4lAgIQ
49695 z*+}k7yK-MTCikU1a$njr_oY2^Un<LnzDL+a#P{ZnzN$}EBV&t^acjiLc%0R$RjMRE
49697 z%^%k_f98mJIilNLFk)T~%yvKSdjILJ`R7N^Pnpy;Ke=muv#$9GUGsxo^Ubb#-If2#
49699 zv-Owd-x__pep20O?=Neu5CgwKPtzysGepLd^f&asjhL_ICh0@f2kbrU#ggk>HCb(^
49703 z^&9mr`tAC?`Y;(oT&q7P+t{AH9NNcf|Ej(Fo+@OIE+5*P-up6K3MDQ7b=5gj+l@Yh
49706 z)m`&fbj@GcHGg^6{Ky`*+4XsufBn}-&+q!}(erzJfAsv!ACI1&bKB_o1^0}eUlNU;
49707 z-|vCZ^9MdMdj627M$aGd;^_T3rui!KyL8Pj`#a|K*!dH096kT8>7(c0yL$Be2R9o%
49710 zY+vS|dwKNy3tL#N_WJdenKkNtW#2ezduqZXqw-UqyJ+<MEtib`{6i0n{`|w|j9&k*
49712 zX-%@GSw~vuS~pmas_Akqx<yaWr|H|}3V4aF?GM{e%NjddN9lXbTyw2G#lF0;t#yI5
49716 z=yg7??$WdL*Ui@EQhRd!`F*Vmtq0^9eyQ>KywB%-KJWASDtbh}-pctRmy>j0j+E^V
49718 zZG~(rWLs4Xh+$`o*6-AjYK@+)Z;*B}a*M}UH<*YmMr<)+ixFFl*kZ&MBeqz@kQmk5
49719 zz0g{xPE+^m6LitF-4jgAc4M|1v)!2O#%wocyD{61*=`jhVq9;1hIP4WtMk<J`rOgm
49723 z1-VwSAUZ^s=n;KlKn#fyactgQIa}wNlDtduF3Gzj?~=Sr@-E4{iY3t@x<rrY69ZyM
49726 zu79Up{}!~dQp_AvikV%dnAxKgGkca|<_1bJ^HobRYfLF-b(LaPk5bI)S&CU3D8;N-
49727 zEydnrO0joWDfaGBioJW5V($%<V((Wi#q2SqnB7&1**!`zyJsn8Z=e*jU$qo-#*|`C
49728 zS1IQ7D8-zfrI@pUQp|bPQp_Dwin(2-nA@Wib9<Iz?gmOR_f<<VZ%irXb(LaXk5bI*
49732 zmSX7!N>TmxBqkIsPLZ-G9Plf-`fJg^GKs$;J|J<!>+R2a`?KEu8(HrF);oap4%o<g
49734 zhi_!PV_5GP);ne+>%EEf-o$!u+Q@pxvfi<*ckD*iJC5~^W4+@xvfk0GcQorAy^-~f
49736 zhqTartV66L?P*r^H+d6fOB;Jt-<4Iri*Ee4QC*dr-)DBL%B|lflK+D&-NI_A<?55_
49739 z-Lt6G?fUhyWSKQp{Xy-c_EoQ_pR1SEi^i7m+qd-t>WAtjZRs!RpXodGU(~I#^h5ec
49740 z{W=*7y+iG-KdBzp|5INmTbf$`);07?*U&F{f7`EJTKbYHdUL&n`ixqox6xbcE!C&h
49741 zf2#k|ll4~mEBYS&3;ncOYZj}|>Z9~-dUyR!eWpHN#%15sCrIv7#{AOuxBkvn-Fv*L
49742 z`mGvJ?@-IMQCH{%dbL`uuGKTuBQjEZlioysM}J=O*i`bUa;Ua{dA;Q)*xtykEw;8Z
49743 z6VyRwyxH7rV>Z(by`R}s-J}mP<IF@eN#AHT(J!hC^*@;zW>0;ZnQitmGtJ&+mgKPA
49744 z->?_G_o2#lvO3sosg*j}Y^|GmA9bC&S?_PQFk9)L$SCj`{gS#!A7|#6x%yrD{brt7
49746 zua+_Hw`CmrkK{Vt+DsjxwO*;0$Z<VD-zdlPW9pBbuT%BeBhJ`nl0&uq_p{}nZ*YtA
49747 zt!;E$9ik4@Ur-0=mR_d5qkf_f(O=cK>HpHts(aPB`b52_-b??p)QF??MD@=yMpxE0
49749 z&ocA%1R3-Hd(WEQ>o?`zId5$Zs6*9ZW|8`+x>3*8cdI8%_3QWmTYR7N9N&|zRL5ys
49750 z`j{sD%^dmURBOEYm3o&tMK9J@=w0=6{XzW!b-%t|S3S&lDbs9qR#k#A?O~GD&^M`L
49752 zeW`x4`nA49|A)TL4E{qkXt}kc-brt(w^g6fEA)<f2fdx1Qr#U<eG?^1w%1ejmHL<Z
49753 zF8x<^m)TGKt3F20(0k}p^!xM?`WpQ${aML>$F9F&=#-%ImkW3NjeXB%a*Xd&^VJ8{
49754 zxAaf-pXtq~sy+Fui#7Vm^=CnSpwn-wnd)EYxA#;lWXYk{&h|`uUweOhxqXOzpgrH-
49755 z-JWIdVb8E<+jH!>_B?w}doO!|y!N&i+KcSP_7Z!ky^p=j-p@Y3KFB^;Ui;cJWs5sk
49756 zeV)2g-6bt{t+c6Iq}N!ZZ`HT!JEZTutNP1*=|wzR^%MF@{gi%M|5dM(e&q%IqJBxg
49758 zQy-B1|A_imb&>jab+Nizdap^+Z*6HNo2{z;s_Lsa5>u-qVf~>#67%%@&XJ&oN<Fi-
49761 z@`)AJZ1q-kwf>{}Ms@d={;vA7sctZN%qU}2qVLl;s1x<W`Z4{e{*!zz)<4wu>Oy~C
49765 zYyF`9t#<V9^>5^eo-J$sMLn%j^;6o{t#y68SKT+f58sm>`9^)S>`ABmcTzj=ru<du
49766 z<)~9qDW{ZVcWZNXwAx<T>Krv)tx-qmrBy$qrqhQl9o36%PAjhZ(=XDGyp5i)*I(u|
49769 z^sL8A-+F>NQR?7H>TT*|^>%U2Dbkb6Ra>1#pY>_AO4Ri^^(CpjUshLCcl@cV)iu@q
49770 zVCq}y+j1?uP9%1{T-k3>KNB6^A+73e^-JZbKt-yk?#faRs^6%GL{YyNMLwz?m-_jX
49772 z@z^4{>MYUw=>7CEy}w-Xm+OP%>U^wRC02+6KCC~Y&(R+hb9_vnr&m>XHF5R$lJvh{
49774 z632~~7BHdGoY~ZDCe9n`tF|`VNdH^)zE!U~Q+ndPNA$V-N}ns^VHr<!?mm28UaG$P
49776 z?(OT`)z`V7uX86~=N`V!-Fuz;_B!|Kb?(v|d4FE#&b-b&d7ZoQI``pq?!a4D^|n3k
49777 zz3bd**SW`T<b8D`@2KnCOV_!Ju5<rf=gzs#y>Xp8;X3!gb?$!a-0{}A*R6AxTj&0^
49779 zQRbIbKVen(l5N4?W+?gx%i4-x33a{fll^|7-!Jt0g?_)#)i0di?-%<0Lcd?=_X}P9
49780 z!l(NELcd?=_Y3`gp{rlGpx-a_`-OhL(C-(z`h`#T`-OhL(C-)e{X$p2u&UoL^!tT=
49781 zztHa&=oidz&!GFiNc4M#e$UYF8G7^#{of?|Jwv}|==Tg`dxrk668)Z`-!t@khOs?E
49784 zC(J5yp}E9dZdRLX%(u-A=0<aixy{^F{eRRXuLsS;<}ve>dDgsa+xDP6$)0Rav3IuL
49785 z$X#0trBy7q54Vr8Pq0t6Pqojm&$3tA=i2AnpS3TtFSW0*ud=VTud}~z-)yh3Z@2HU
49786 zJv*`Qw;!?}vDey9+s`+wMzb-#u~}p5#?;0xjp>cO8gm<q8_OC8H;!x^*Eq59j>c(?
49790 zTC-aVTl=<_w+?R|(>kGba_iLA8LhKgD_iHb&ToCTby4fm))lR*TGzI&Ykj|Ub8AiO
49791 z_SQWuua&g!Z#~p{q_wv7bnE%H)o!-Ow>N8V-JaUsr9Hj9S9@-IaeG<&;P#R2<Ju>-
49792 z-_bs;eP;XY_J`Zm{n)v6U(ajH=<CXV-&N%wzoz_OcSVtQcVG2?msB=!fH;vjnYbNs
49793 z3UPblRN`*LJ&Ci3vx#$vbBXha^N9<Hi-=2!`w;gfE+Za5Jdk)0@nGU1#6yXP5sx4q
49794 zMLe2#4Dndv@x-?fPavL1d@J!J;@gNP6W>mJ2k{i*yNIU}-%UJ?$p4R1y`T7L;ws{2
49795 zh@T^ViFi5j%fu^)R}xnfuO@zjcrEc;#BUS7L%fdopTz5l-zDBa{2B4*#5;(;Al^;<
49797 z6AiIJY!X|<HgQwp=EN<CTN0^_dMo1A#BGS%5~-z{TB@m~np&!NAnr)qiAXKg)KX0?
49799 zT;j)w=Mkw_`eNc2h+iaLMx>5u>X@dEY3i8%3Xz(oze=RO>8preBT|d>_lZ9s-bDNn
49800 z@fPAwh--*HCEiM;*6G`b_YkRRnmVRa;=@GhjQ$hxF(UOxKS87x=|2;xOZqRwr-^?h
49802 z)vLZi`UdG6<h3-2gFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue
49803 z91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&;$RR5gE$z(!5|I>
49804 zaWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m
49805 z#K9mA25~TmgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M
49806 z5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&;$RR5gE$z(!5|I>aWII3
49807 zK^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA
49808 z25~TmgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e
49810 zU=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~Tm
49811 zgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK
49812 z4hC^Bh|@Pn-ynU1yru?mF^G#nTnyr35Ep~E7{tXOE(UQih>Jm74B}!C7lXJM#Kj;k
49833 z4B}%DAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21
49835 z#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%D
49836 zAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>r
49838 z@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9
49839 z#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a
49841 zL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9#K#~$
49842 z2Jtb7k3oD4;$sjWgZLQ4?;E6VkiJ1)Q-cH;B)}j61_>}ofI$Kb5@3)3g9I2Pz#stz
49852 z1Q;a1AOQvmFi3zw0t^yhkN|@OeS`E3(l^L!YLF0vgcu~mARz_`F-V9(LJSgOkPw4}
49854 zVvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1p
49855 zh(SUO5@L`LgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3X
49857 zgcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO
49858 z5@L`LgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELC
49860 zARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO5@L`L
49861 zgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~
49862 z3=(3H5QBsmB*Y*g1_?1ph(SUO5@L|BZ;-x0`UZJT4H99H2!lizB*GvO28l38gh3(<
49863 z5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7c
49864 zNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(
49866 zgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7cNQ6Nm
49867 z3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+M
49869 z!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7cNQ6Nm3=(0G
49870 z2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!
49872 zi7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`BAs4bnGA-ypB4L1GLNV~`kw#26&TATb7s
49873 zF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl
49874 z#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I
49875 z7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-
49876 zVhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~U
49877 zi7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$Z
49878 zB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>v
49879 zkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lw
49880 zL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y
49881 z28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+
49882 z7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6veQLHY*i8{{=LNP<BU43c1w1cM|P
49883 zB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`H
49885 zK@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U2?j|pNP<BU43c1w1cM|PB*7pF
49886 z21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy
49887 z7$m_U2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-
49889 zf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U
49890 z2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZ
49892 zl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi6rjNZ%lRgS@5&Nij%@K~fBo
49893 zVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21zkU
49894 zia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6Y
49896 zq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21zkUia}Bg
49897 zl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~
49899 zASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21zkUia}Bgl46h)
49900 zgQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH
49902 zF-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p21)w{=^LbPkk`~883xHP
49913 z#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz
49914 z9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<
49915 zatxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd
49916 z$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-
49917 zB*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAV
49918 zkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTd
49919 zL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*
49920 z2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L
49921 z7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|
49922 zV~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B<~xfZ;-x0
49933 z4bnHrYif`ZgOnJg#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?
49935 zlo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{5`&Z&q{JX41}QN}i9t#X
49936 zQeu!2gOnJg#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)m
49938 zASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{5`&Z&q{JX41}QN}i9t#XQeu!2
49939 zgOnJg#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps8
49941 zF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{5`&Z&q{JX41}QN}i9t#XQeu!2gOnJg
49942 z#2_UGDKSWiK}rl#VvrJplo+JMASDJVF-VC)N(@qBkP?HG7^K7?B?c)mNQps83{ql{
49945 zX}9dQJs`FjXOFix8Gg63{ABy>_B-r%+Nap>65qVrKF$8;jpm@L9IQ*M%dOScHP$KC
49946 z>DCJC+p^Y;)(5R~tWQ|0tP6+V?JU2=y3M-Fa;(TItOu=!t;ejVHogyHvZslEC9Wer
49950 znkS`}8Yf$onq3`JEv=;5l9DZ5C9yg-n(b+}XV{)%dz$UZ{#i|HTglrnE&DE?yIkTG
49951 zOjk=(y`(8+SG+9#T|tgRb6@GXr7uhT%BU@US^j-p*4)gRC3WCLIq&DoC)zT<t@*v|
49952 z+k?D*CuObD-&V(sEl)6isFyuFV%Z<-Wsi(l_E5d-HzSrkQ7>D|vZ4GQAI|Tw`u#ug
49954 z;OUW)-ngUJEBcwr(c<Tho?lJQqupGod4I&*@$y(LS5{sx<=4o`_U`r`GN#<q-pih8
49958 zRQ3Poj8yf1rzli47MF7@@j>-liN9CBm-wiXHZAA+afwf=CnY|mo{}i%U80<Mxn|1C
49963 zJ=vaWPm?+}S8COA`$+qE>1$6DH>|YJvsc*{*_YX??Q8Ap?Hlbi_MNt4C-wvO!}eNx
49964 zo&9p7*_hCn+?d*!)|k<l+gRFI-Z-*xeB<QCX^j<)m5uWns~Q(IE^DlAT-&(5absgm
49966 z&C8mro7Xn4Z{FBk)4a3kG?V57&4-(7o9mh{x0<a9t;wyat!b?pt+}nGt>vvFTgSIf
49968 zMtg31X?uD5$oBE=liR1YSF~5Q&ug!0U(~*=y}EsE`}+2c?KSN?+fF-aKhS=-y|%rs
49969 z{qjI_V8X!UfvE%224)P*9auWBeBj7|;|ES2IBj6Xz{-L1238GRG;rC#>Vazqt{=E@
49970 zV9mgt1I|D)@W8;s18WD?4ZJ+q9GoyXd2s6Bw80sJa|f3WE+0H{@c6-#2TvPZF}PCB
49971 z<*%*#q!;e>-NuId;s1_rIIj7B;X96J{xAHN!&vv3d(FL)KHo`|U8e(eI<ZbC*Xee3
49972 zI;BpxuhXe@x?7#@S*Lr|>C8HvRj0G-bWWYlt<!mRI=@aA)ak-HT~wz_>vW$w-M3Dc
49974 zwmLnzPTyXq@2JyL>hxW8dTO1%yG~E5)3fUI{dM~3I$c$#pQ+Q&)#;b&^zu6Wa-CjL
49976 z?mGQtojP?I)M-?wMV<btP9Lb#2kZ1Vb^1`9{<cnkU#EYl(?{#{@j897PM@mNb#?ko
49978 z*XcHOx^11-?N!(9RoCrR*X>pBP^UZA=}vW8w@+QSPhGc9UAIqNw@+QSPhGc5y|_-7
49979 z)M?#5^?r3)w@<x)o!0GCFR#<Oo$9)M>bkw@y1nTYb-J=nKU}9Dsnc`n^rLlpZk>Lt
49980 zPS2~;y1nR&>+}nC`o%iEtWN9pqwDsg>-MAT_M^X2r*%8hU#-)+J?X3J^lNomw+H?G
49981 zI{iVN-c+YQs?%HQ^e1(?rcQrar?=K=-JbMqb$U;o*6l~v?MA0{`f#1r^<Mv}P9Lk&
49982 zx*g~z>a=bT`p<P*w+sE3I(@oM|5~SYd(m}!k?RntT#Y(uUB69zeUa-^Cmmm>o7Cxq
49983 zI<2oia`oz@b-R!&StqUAhpF3#soRIC+lQ&!hpF3#>9h}J?P5)|W>~YWh1R|@{yp3}
49987 z>Qd=-h7>T(%rSG#JhMQ`GQ%2YZ6X%fR9?o~T3*K5R$j)MV(ln#XL%Vpa<7;81}TS;
49988 zPt1_Gm$kRVdDbF{`&#=+JW5{1I^H^4;zzBIOFZBDl*CV4pO^UW@-o&X)@79^hR1#l
49990 zo5Ty1jDlo8FR_~HQgvxPLaQv-v<Ag#bFG#>P#-8us_{=-j=?m`mSZr_8Z@6WQcm*&
49991 z^8?G+yV$$%Ey`SuOM~Om;J7q6E)9-LgX7ZRxHLE}4US8L<I>=`G&n8|j!T2%(%`r>
49992 zI4%v2OM~Om;J7rbwelJ-=Xon@us%lXkIuOI=<FjS;{iGMhg%cn{J&R@W_7%p951`7
49993 z3$mm-UbfVTkI1yt3Yk7vooh{yy74iYu8y6}v9qgsB2j9J#EaBLR!i#3zss6ZXJmT)
49994 z(X=^^n@J7Ysy=p`RCP$Et0TCXSs-<(&2emS92*?Rh8)Lt{(o>B{~)h%)?ekdiS?qq
49997 z@=f(kiQiLeWcg3ktulS5x>Mp^>Mn`*sCy*dtL~E+t5{;HQi-|BC6=m`_$T!ziEGsp
49998 z691z9D)CwMtktI0+xjqln8YLW5fa~|-z4#9eYC_k>o;2i`ec2H5X$dXTLsUP|h
49999 zeTl@Y_0<ypOW!Elxmn*V@yGhd5`V7mmgs0-VyGjDiB2TmuYWIbtzIi_?m7LOOuwLC
50000 zk(yzfmc$**4%UEqgL#9*UCpl2{`N9^(F*5F98-I$zgn=`_Wt%ER-11PcWGQ>&2JoT
50003 zxln7hEu+g>GHyIUpQ+E6QQ-~xc3tQv*$-R(4YFOsb`7OCwJz0$-tClV!|yBhtkLzZ
50004 z%^E}7-thZFTi@^+)%FeVStE{I_p+hwj9#iZ=G75zjr#29Wka7Gy>uwwv7hc<Ix_F>
50007 zt3KWPoz7N9zBhVHrfw6xwl(&>p{<SXamF66_6CkjyXV^DHn8^4a$9-oAvvns*1eUI
50009 z+Wz`hFnZa@9(Lqf%`t1)J=U_j)~fbvXn&g{j=<1SS-;GdeVQWIl~rt8_t>`XvF&Qz
50010 zc8_(tm$hZx>C9{T<j%1iD%r>-LnT|kOv@3xQk|ynw6>5D!&QU2d2Vx+Wwo-_1MQOs
50011 z^`LHFRE-qc7qy-C^8?cclEJDz&Jyo*ek0qn{zkU?KDPQUcI3EW<wi#imx@uor@k-O
50012 zsaxbqb+>v(PZBr$T&_-c$W{J1{eqNjCppKHq|}?q%UD~<%UIi3)%T3s$;-(5J4t+<
50013 zyo@zXUPgL?JtQucm$CMdm$4494wZPMyo`*<PL}uqxoR5g6V@jsUL-GLU2J_}c<eAo
50014 z&FL{x(Dg{6*BIen86$i_BBKMj-ikr7QPY0C{d&&sLiVJ=o;28#27A(APa5n=gFR`m
50016 zlJeF5-&gG`a$N6!yNCZPtD50az^lo>S)Ff@EZRq=ld3Z>W&5G}p~PF%EfOn}PUN?;
50017 zP1Q5%8Eb;nhe_6^Sh7;#9o9tjHwpbs6#czmO_bw1jT-%t5y!XsMSBa0|9wZf8U+k?
50018 z##Gjy<<%JxOk_mRIr@Vf{Xs?qgKA5)rR;w-`kKVJz*hgP{#lOr$Pqzxlsn^sL2BI4
50024 z$e_Mg#v_9=9!Vr-G7=fof7E}JI5Zx4MaKF{Mk0e|ikV`KGq0C%Y@3mYG1JX-Yl7Ls
50025 z>><l%m_22AH8wHBqulwHp`YlCN(LE~4BAKAQtzdHZ7X$jUm2gCVtrU@-`DNa?Q_I9
50026 zcl}*sl=TK&e;r-Fq`Df6x7Lp?3`;xy9=Y5eaeW``k?Ww<t$^`8)>^;JmNCg0=0dZY
50027 zy_{toZk;CM?klVxT8{Oo2yTk>Q|qtTmH0;csX4-ey~j(v-|6+Kk@<|@U_RqFm`|^F
50028 zdVOkSKAUVXpG`KHPp@}+eX9D4q-i~j^y>Cl?}p}>b2oC?-!`JHoVea*-6N#2OWU&k
50029 zj1eR2v0ERx%x2jpwS9V9bHf%KTDQ?--O<ac<2X%P;fdBt>k`Uh54ST-&K+Obb%}bt
50030 z(-`#`GyG1YerH4PjsBcH{9d!iC+*?0Khmb-dK|^|%SNxOd#pRs@|(%>siGNURe#s!
50031 z$x>V2B7Ni&a!uAu-y#C~x&C?eH>mmvnSPFUv|RaamFtb>dZW4CXs$P!@18VQ4$aj<
50033 zvg#8%%ibJ3;uF=Ly|>4wx|b_!=&$C6=5#%$t-UNyP1aX%v@H9F<{^8~-q}9XUTI%w
50034 z|Iogxc~5IcG4@jVcY3S(+rT61zjo+o`a}`I`$YnuQkSc*sT;&cx5`obg&ebcs$-=b
50040 zrr)k_mnC<IQ5$m9@0K-P?MiF#v?tR(-(^;R12u_S+vG2y+Hx+QtbPI0Psyj&>2>n%
50042 zSe=P+oP%+kgK<{%+ryvaHLg}`=Ns%wr{mPNYTNo->v4Q*Jx(oAOC(lO9bcdS>Ko~C
50043 zeCIs)Dy{i`b-##rWSbtZ$ICuU&=bW}mF!!3Grd{;%gJ~gI3D$l$9v-u-FW>W{UJFk
50044 zAJ-q3HP08<jn|*jpOWdyZ{zhh^*1GcM}J4+f9mTc{vY)m^)EJ6oo%DFhSdGttftie
50045 z-L00HD^454Y2*1dqE(N%llr=2M)d=ot88b!>R%4GPU3Hwt98cJ%R8UHY<SE*`t$bi
50046 z=NsmYRj$?)YXv=%LKCX)g*x-?;a;a{EgN3i8kN)T^_H7mIW>oKQsk<w^?wJv!rD?k
50047 zca-%(8TWkCy4QMA4XR!AN$OxNwLwo)7wdgx^nRNP)I;hit`_6?MytiO$dd7s;+yYN
50050 zzX6Y2uJ|i?J$%$gziadT-*Gb6siW<>PQGh+Uf1)THK$wi>vtMmwYxD~yRA_z#~Rgc
50052 zUT4WWJ95n*y5e`P^y{zky{_-!=xe%ccT29TifgIiw?M-;0!IB*{j~a9DE=0?8r2(q
50053 z^E3SBXBgWXu9J!}yx|I|xHc;7Xh)V*zsVVXlQUeY6u-k6erePE(pL2*oBbW;tF~_b
50054 z?*6;V+tmK6zWr-s`c9ub)Q_oAb5#wWJf^Qxqvk5XU0|(MmsWz)gZk_GA#<vE*1oi{
50055 zd*hboam}Q4Mr&RBqJim_HL!SKjeP2j*7FE%H?`OB-=|i8ox1)WffLngb&a}KIeH6y
50057 zc2&E|^6Gc|mU@$VlPoz-9VhY4>dms`pVU9e^n279vd($xJo>fm_>21LJKgQ%y(!|e
50061 zhco1OwA3fnCna`%+veA3dWY&a-0CWRmedI~{Hj{_|CE2<v{YS}MlWmhSZ0PlT`e2x
50063 z-J=8}myJBKXIh^aE<>|N8Ja!H(Ckr$W>*>3&o_H~#vZe5eVN`N?)mI+nOZ%{)ap^D
50066 z34*9)7=|SXmc<xjj4>t{f?!$9U`%5Mvjo9zzWa2Qndh8W-EFsf?TF$=-I6}#IeG5M
50067 zpPPR-Gl~3_Wb8^Zb|rs;bWAaJr5L+Xj9n>Ym;F7?$Y?K2H9rN6Jpp4+z}OQYdjiH!
50068 z0b`TPY>8WBS{ad5X~wEFV^x~TMQO&0G-E}jr4psocrneiH{6uUFg9fRpE!no2Sz5r
50069 zusFjsVb-R0)B5V}w<*imltngWkxlmZ1o}PB=+uN&%Q<<*mOPV2c_!!NkxhBVM|sAs
50070 zJZqO<E9Drwa*SO$#;zQbemTar9Ag{DqPEljT;<K87+V!%t72?b$cKutQ&r7VYx-@7
50071 zF*d|dp0d9K`aOYukE7qU_q#H&cgl5Yz3IEN|Dawc^`V+fvGdEX-tL(>`db(0l;-dG
50073 z=FVj}7b?TKP-$8d<@Usv`)1H9bLYQe$ShI*>T*ul-~26eDdW?%=6Sos56#c(%%x3j
50074 zvfkW(+gvJ~DOKT2sTRA!Z;Z?B*mU38$#Oe36Sm><VLLV(wqtXB>nO|Z*mT&AErjjZ
50075 zT-ZLV3EQ!SupL_n+p#raJGKzEV{>6UHm93)bC|Ag{^R#Z*wQY9E$u;J8#^7gu`^*C
50076 zyBM~yhlFkH%B=i=u#G)1Y-87lZR}Fm#?FUr?3%C@oef*jwf$Zg9L|WB%<~U2_wsX=
50077 z!sjf7&shqevlKpODVzl_g-=)t=f6wgvz5a6?@~DbT?(I}6h1>Ke1=lk-j0Xq7BlVY
50078 zCe!vVj~gb!wsa7-r7I(>>98%G4lOH*Uv1yo-rZJczuSJPt@%5R-x>Fv>EBuKo%P>Y
50081 z`Ka^t4~h$Kb{^|I*LmXy%|Dp<gV{5#&A2z?`OH8Z7w5&z?~VK3)bF)_uk(97-`o1V
50082 zeT!RHo>_Ty<^7c}e>3x&jbVSXAnaH1ABMF9Wk6WDE-KfCv&9mVJGPX|bYHkAgko5w
50084 za%z;Cq}tVTwL$GxN7V&&M?HreG{YolhZV3McES-j54Yf%&ge!xLC?|4bdTPl59`zV
50086 zVq$J$S)w<wGjS+!CUGP2BpFXOBqt<iB^M{VliQL9lBbi`lMj-wQpHq@>5I=xb*6e!
50087 z+f#>9XHz#)Pl9AHG#D4m3YG-j!M5OFa4NVOJWQ)}ZF+QiT6$r6Rr-_k-t>v|#q^!@
50090 z_Q@*tN!C8Bh3AsxmA(V@o)VnzFqI5djLyg^Do<&-mBG~%lvcEIT(Uf3xQtWkYNn;L
50094 zXof19foKM#85oMa;cDi%n-8dF><yj+%VpSup%yFFUQB_ZzcFLXjP@B*W^~TjI%D0$
50095 z?ziW@J*i>u+ud(3{m!emx4gag?PG7BfBVMUkKP;i-qiQn-|Kv@=e>RJZC!eL>E)$&
50096 zmOlIS<gbtU_4=i4OJ^-zxOCOhjY|(L-Py6Mqq}2E$HR_Szgp<{bk4bsvmMvxT>sSx
50097 zzdCC{*Mdz8_AGe$-OP6z7aU!1X2I13_rE*-yVJkBV9twof_EC;8UN0#cNV>~=AF&&
50100 zyF<S|YFPWQWy97%EwsWE=zvwQ5q85dxLDrfPZvxte6pUem+SR<mp-b`>)ZNyEQmG6
50102 zuU-GO`|aKBTiTDdUvEFVWWkc<OL~@Ui{FkvN$5mfVsv6^VnJec;*-Rl#PP(X#NEWp
50105 z9Z%P%$Amq+HR(-Z5ASmNUiww0lxfXO%`C{Q%xui;$sEsI%-qeq%;vJAvXipy+2z>{
50106 z+1=U0*)!Se*+)5%tIdthP0r2Bb>@0=+j9s1+2!2n+?CwDkz+^BA31eO-IOI$)=b$n
50107 zrDe*TDQ&qI`Aohk-<F@3UzYF5@5mp{pUvOQKP@B+jfIJY*@Y#Ab%pJPgM~AN8-+(T
50108 zs;0hXT+Pgy#WmeEn``#g9Iv@pbGznQF(?i#jxA0vE-bDpellgxl*3a_Pq{jB`N(Y}
50109 zd%n^5jj`XD`i=R;J;fu%v&HMhhXcfbx&dPcOdqglK-YlH13n#aa=?`V_XoT#)s|XI
50111 zc4_Up+O4(wYfsf)t9?-WdQk14F@vTIY9F+G(E33;1|1r7X3*6^_XoYIE7mpFO{$w$
50112 z*IBo|Zdcury7P6n>z)nH3?4POZScIo%Ln%k-ZA*_;B$j-4t`o6)Hl?Rub*ANw0>Rv
50113 z_WDEhr|PfN->-i)q%fp;eB+QwL+1VB)*+okdgt!@=9+IVo_p(itEXkAHGcEVH}8M*
50118 zRM7%eLi1d*ywd-pd4#J0C<Rs?5bNoWovQ&bwLMbbUtA49DX{XuhUBPZs4ZQ#28eQ^
50122 z^R{rjVjnHtl-j4{N;jtks)XjbWO<|+=N3v``)H2kv_O^6JeMplYo?_ev&c5CbW?d?
50124 zseMqzKB!_Ju=ZgsJO`G$qr=!fpIZAchbmg2N@$)-mb>HP)IQ#Sm_rpUP$e|aCCg>s
50125 zDjvUdV;0%Qm2N5ztUO17p>|Z>_m?8i!%<-6ftBYdFx1Vxf#)Tk(peMBf#q(wrJ7|G
50128 z#XhKFAF%e}&^(tcudExV)+yFDOo5dLR-U6!C9KW6LSQfW)XlkESWB-D+0-z*Vewm&
50129 z-kS5)5_zOyO~WR6MqZWo<x5piEow@5cEcxXk2<a{sk`bW6k!xhggLMjx?wBqhZEs!
50130 z-E$r2#_3b1&zrt<diV4#UmNqasngF-zdrrJ^j9+qGn!^h&=d4*y;S$;?fQ^Dt8eHh
50131 zv1F_vHX$}Awlvlg+YvhyuCII&uCJUBuCMHlZ;9`VpNwCM-;KXW1c`>k_{6NlqQsgR
50132 zJ7yf1@!5>aGj7j#GE>j2o7p;Za&dfddT~K<Rbq3^g__%MFMGS|?M-j*N$g1+Nu2%a
50133 zxvyS(`|8{Gzj}Yt^hpa!J*BOseWjD5kCh6g=C5~s{gbcn`ugF-^~8h3tFONJ`jxNW
50134 z{rdCC(<aZKygXS*j!L#A=OvdXdy_kohm+@$H<FK2@l-=<Txw=&ajHADIkh)+JasX3
50137 z{IH+kHY%NW!pxszihFs7<G^x%Cdk#ob6~kYE5+F&tJor0Td)?M1Iz7vM!et0lts2-
50140 zR-U84P&-3_EdtgeU@Zd1BF;}-nZneLvAcCU9dV=#2(#lez9eQqnA^v3^CP7dTR9Fa
50143 z(zn!SeqO*<QhD3A^m7x(f#rUW)~{uGEgbiI*PJc1wx`_h7jw4II-hdeFY~SAN*$%Z
50147 z!V>6$EwIn@>@LAw)3eL8mD-xy+P-%4YmeGQ+nlyVZL8Wgw(V*=)OK1o>G67|UZmIP
50148 zO?t0BuFvb6re_zA)yKxhrpG#BD`Fe^zMZ=fdl-8iFU4EqljH4U#*UeiJCZv)=6LRU
50149 z?qPg+yeGabejt7-ekFcC{wk46G$ke`<|LLRx)WOypC*ncE++0Io+X21V{%+_dU9cM
50151 zm=w$lI)in=)?k0|S#UYH7rabo(v9f}>DlSU>8|va^xpKb^o8{8^wUf-(~udPnU-0Q
50155 z-zWuE9$0yf0z>VJ25J%Z5v9P&11rx_V5nUqfGwi=h*DtXftBYdFx0LJpcZjHqWOr*
50158 zR-U84P&>m#E#iFSQ()zRmFFlh^f$zf@WiS*Ia*GY9eSu9J1jG-Vc57~>xXS0c0ev~
50160 z>j$kEv3|rh`C1j5v}#suBe$tJYOz|QHmTj}$biy-<^gR3=GHB*>#5sTcR-yry_|dM
50161 zMf17l>&*}AUJcF-ZW=ss@SMR*26saS8ekmEghj9#Hq|%QkFB3tKfiu?eNX+i?7I5>
50162 z^(X2t*59swGDK$|<tF52<`!mO<#M^E(64^GJ}RG-0z<7lF5i>_Lo4#`%uY0q;I?cP
50164 zUiKLfhHGhmT~NfhS{|<nvhuj*#_N7uc}gdn|F(+*;xp4<-H_RtIg~k-xze(+WoOHw
50165 zmeVcwTCRx8;*NMGld@ipd1K2Pd*3+r#`!lMy>X+p(Av~Gp><a4s@8?W4-P*${NnK2
50167 zC9ePQ+-5X$<);j0K$xB1^7T_~nE7e^5y>5PB+_R%cYGx5Y8y8cWs)%ei(7Z~6wXsV
50169 z!c=I7rO*YNVJ{qkGjI(az)PKbGxO%0Hy6FR>dpE$Ti=|doAfw6O?T)Ox<_x-`}7HY
50172 z82`q!H|8g{C-x<dCoYsuC2l32Bz3ZsY)-Z%=Oh;=*Py(+mekYkcb+&uq)C3Dl9b_c
50173 z@R9Jp82zx{2Am%-1H$lXfnLW3oJV}-zm4n{b@*v81H$~W>VBK&+k_b|zrCb>@V^Q4
50175 zkbbj-TNPR6X)puA{MLi}r3Tdmj3!qS>!K|d|N9VYLk)TwOl->pr!kiF=TzNQ<Jb>1
50176 z$PYE-Y3TZM%5dw5u4eCbY{2=!XZ{;xJ$Zwy7xZnhUeLG7dh*s<FX&rqy`XQc^#YF&
50179 zNot;2W?CWJ)d6+N^bGH-R}IY#6B=eVENocSu%Tfm6vJH~=fN`Qf$eYrPQg{U53iD+
50180 zCXXi1Ca)(SCSRor#q-7M#RtV#0~QQeF<^aaRBHTyaRa8OrVltU;4@v+qx3{QM=#ag
50181 zdTXj<;Mjpv2hJb3f8dFM7xjMAYPqQIRCXpwy$muzV=y6@9V`yIf-S+`;8<`WxE(xA
50182 zC({k-vFT~)1?g4kjp^O#qv<p0tLgjcmzhkaF>`Rp<RNp1EFIE4Wb=@{g6nxk?|p8>
50184 zsg<Wa5gI?G(R>zteoBF%Rvte;rNGc=K8rp-7eA#|9zQ=9Kc#pc!vEsYe<DhOmB(`v
50185 zb~J%|B24Yd7Pr2`%zfYBdY8%rE6-72=(g0&)T2P8mZiE=TT-J_lT-6jpQetb&R2GZ
50186 zl8a1D`ib0aYSQ!arhKB}s$Pw)TT$0jx3z9x-IKv$aB*;R-HEyjb+-n$4W2!CvFYn|
50187 zs1<61+NBPu)9RXfs9r+}T46G@4_-5P<KUfx55aO+2V3CN!KVjb8GH|p!+E%w-Io0{
50192 z_#}E7+S0+2z(`Vt`*4-HW^4l{fQa8?a93x#wJK&@9p=yK`L!x1&rw>3x$7Bet%|)%
50193 zDX{XmXW-YW*vpvWc|v!sqGi@1p8_k7=MFz|EW+}X;t^zj^(1Ez?l)3-JgV$lg!|u^
50196 z>BexS-2(GY+@QCcUdKs&N#E8_Yn~QWu~cj+b`?J<?kXNGPAbkRE-9WVUM=2_#myVD
50197 zB{nHGH?}0!726!!9XlL56T23>AHFji;$!2};vMnMaL2@b@#FCe@mul736-c#G@G~P
50198 z?8M@5N5tKULy1#~D~WrF=gA=1kQ|eol59_QCcBfHlY9GC-91XaP8CzlsR^l>sfDRk
50199 zsSV+}yU$XWQg>3%f_P9Lj0vU$?ZNV3eXt`q6r2gJ2KR$k>0-J$Jt;jey(HZGa8LS3
50202 zxW5mB-)NWtVYv6>O5(hoCV892Nf{mswvxD1&^R%RtktMqzzhhB;`Ajc1Hz&>72_er
50205 zW<VI8X~%6nR}-#-_%<Pa*HIfV!>vhfzQ4zj#4T0r*no+(UNhEfV!ba(84y;{<mU&U
50208 zvfq5so`uV}-WUFkj9SF?EU-MK{(Ok-S@>^f%7BpsMv^ih%<rSv)gja)bcPN~0wYNo
50209 z?%hOwi1M#p9b$>K!DYZm0wYNo5LQWD>lwT9$z?Wo_!L-qVC6Xq42?7bV-c_x0c#O3
50210 z76EG!uoi)55w2H!V$%uND_9a3Ny>mQJn!az+vdMle1_-x{IA;lw}H<pnl!Ni*Xfu6
50211 zBMFQoWk6U(lmCwQiM0X0<FO<#l9T~q6UAz=UThQl#Bp&>To(_-3mM1;IZjTK9dd>2
50212 zkz3_Hc|u;0x8xHeSf0ylQ?tW$uN&3QaGd>0d7Uf7p%z-84Q9bYSP4C_1@^*GI0IMV
50213 z9z4}bmvpn9pl6Ec`%nAK?(b30OQPrXWq`<F0*Ls%D0jCEKW5Bu|BLpw{9Q793w-AH
50214 z+}!;!{5*#lFp|JXQU-+it9#rX4tzgg28<*yl9T~q{+P16rvbHr&hz2&PbDb>!lJW`
50217 zI-<^0R?$NaM!^JAw=9M(*aUmv7+ipx@K|eIuUqs)JxedtD|D~kruXV2`i#D+@9Jm5
50220 z_BLD!42_6pG-_6(W;JT05f~eRwGmhwf!GL)jlkLntc`$d^vj3)JFbsx&%`euSOyb7
50222 zm&SZ)TJ!PpU%z~@tj{^KoI9_4mZ^Qp^-m`Jnzklf`B7&sDeBDyVyI{^_u-<^kS23U
50223 zG0I#ZzGN;benGUD`y1v0(JJ0FKaUY#G54`zoFTtxE-Bs;ZRY;Axj;-YH9Ls8=8|H*
50224 zxs>?l;=3kw7m7vZ=kJ+Ii^XDz`T0F_X|Yr+Ge3V{{J{LY++0fhhPkv@Ay%26-#6_~
50225 zZQd5;cT7)MpL}F4ZAx3Y1b%ETEjE}-i{CL9h~G7r7N3|4#J@C`5}V8=#lJF_5}VB>
50230 z^c(lyc+onhyq`;JPiyChju9({uO6{}#EuaSBgT%HX6)Qxe0@-y5|_o@=9SGmn%9fx
50231 zfez}L@BTuvx$he-Id#O95%*;Kh!;(nz7~@^PPbP0<H2hM9!Xx?|NiwE9!a*6z(@ik
50233 zZShQI<S3Iz=g6gUo!l-D$ushX>0|5iDmOJvEl{h~X43{P?`V2YJ%<1qO$&H7EDhHO
50234 zAA+-R9Uhr}b)6m??rqZ*ew%bsU)J~Zt5_-48k-th5L+4B7~35?8oLm?6MG)d#hc@8
50236 zopQ-?t3_7PBCBYTM2liA!BjHT^>UJU*`+wGESD^IJx?{uDw<^#%@S!=jKzwz7gNc~
50237 z19^g|WO7`x+)q(Xi>#tW5-p0g1XIb-O5cu4J)TRJTP--HcrICP$C0QGnl6-<M>Fkt
50238 zDsEWHD_-Kb)q-v2IWRoZqF5c60z)G!XkOwuu-t0Fd5P!1^5|JOOK8rcw9+Hya{<SJ
50240 zX2L@AUOg+Wi~HdS_Ryy8rY$2^jojFDtm*v7LnBWQyIO9i$oX=4-OIr_xNq9y+jPC$
50241 zCy)2%?WmOzm1m!nTY&CZYQ<j4%Be)dVdjsuL>|c#8}i5oiKKuKJVzM$6*D{o7-_?-
50245 zsp{%~H~F5&46mZI?|~?c`v$knzAY-G+X>||V8bbI2Eom7zW4oH*u~_`sQ#e(D8o6p
50246 zOVAt~z1?WLn`Z?QYYvqMnx|Y6rHV@w$#s4{jLMKpu9y;kGJjBBmUraSK`ZkwRXqP-
50247 z&@)v(=x*J7HOAzM`KnWOhb`}8>YTdKw_8AyX?vSGX6T-}?z%0*3d0)f&emNYdVS~v
50248 zSXC?)+ltMw5q6qZ`DwTU_uz$2>Uup!Pu26vU*k2*YgpRQ-Eh6(LBlJ(Meo(e^m%<l
50249 zKN?;b-c-*0!xs);Wx95ySWB!eHYc_uwkEbIwkLKZb~biB_9(96weivMsqqEz)$vX7
50252 z(S$qGRCc5(d|EhGIG>)GUXWgy-jLprKA1k0zMQ_Bex6BYhGxcQre_vqx-wfb`^&p}
50254 zTta+`zY6@IpWs@PmT+2nZF`iKXz;>ehD-Se!e1$BTfmC3O9?-ZyUgnLB`E{K{1vjc
50255 z4%3Vcn(>1sHblg&#asqeSVs7DslNg<dLqn#ut-uflA4j!jxStImGq!CPzHqgYhSG<
50258 z|16q)7985Hgyfz@GtZ(~D=MCj6Du(HQ-BNa=Ns!k9G1@^TyC`eRyQ=yZFsDm=auk^
50260 zb1n7XNbdSYR}#Nld=^=V-x)4*$F>!b#P3cTCuVr9TJ%hq0bzKhohyl--Dj0KTl&7F
50263 z(Id8qz40yaZsD&JvTbziX&lB~_Y>uMm-s7z>^Q71<CAYxPN5SU%X3Z1*Lu4?AkK*!
50264 z;<41SR<_1;d541R#q90eq}1)y)9lln&eg$Km=9A6lMC|-%L?6vEzk?gVSj8(th>Cs
50265 zUTiX4fLn5z?2?=0E_o=uD}7j=GQH@#TIpKdswe5WnY)>1*<^NTc1(7vh-MOO-^`sa
50268 z2kBRtrc5p~!SviaGAm@8oGlmUR^>M2cFHv-wfDejI3$n22H06Sb1}6qbwa)jN72TY
50269 zcUN@M3Xcv^3Ji7UWvIMQfuZi~5GT*Y4=8>*-bEQ+VH=GK(^+fG6v{nr3k-+Bqi&c<
50270 z!lK&L&uNqaVR#<ff1l7A+_Ic#(9L?Ho~;+_)%ufIPVW|D#8mOAI3~^uydPy$^66-^
50271 z&w_9T=YAcOcWe%K(^@1~i@{-iy8xc)xUNq%rN*abrVgY|rY?z<VtwE0gexY8zX<o>
50272 zD(@V#u)qA%96{3=kLzlIM=-I^*D`72x0Pvb;PgpGAFVIA(Nu1Xo_ZHE{9d;s^)6c~
50274 zMcthIEO{w;Cv_}!PPZkWg`<*>Qm=zzYD{WMsy%29CI++h9FwQYC-v;sNAy{JO+V1D
50277 z*BVr>ecX{&I-^6Mm6jNv;TZAPCGMD@L^k+LqBjiwM#R;Gp9V|faaa2W!|Cob{674^
50280 zERw{}Nn1RawTOA;RR>~|*yF4;D7QE&bJfdbkK88r%M;;Svb>J3PPK;T-Yp5wh}ff!
50282 z89!hKj3h9UlmTJUtc5R084woDC-{<-0b%~vZ1%aa?=b^L5*SI!aP4fL8@FPqBxZIV
50284 zvbfij!vpfNI;H-DX`B8>bw>RsQ}!;Zzfym#o~R$Gr|NIiGxfLXg|TIl_+s__&*tli
50286 zv-XMxle_jCen1{DKVO!Y#W0i8PKhs>-1Z;DaFgRsi#n6*{-bCzIq!@ZYI5Iy5{)JY
50287 zo)sfaF1#p4n4I`mVz9}Le{H0ms3#`;kJOJ$_^0Zr3I8|hZ%p`S>X`}ox9V?=&KD-H
50288 zj%0m0QvCeCO8Akv@;}kH3Ez<4==&z-r};u5*?4yN{Nc-ncMqIqdUB6OOg3q}#I!HB
50292 zwow053WQoKsQ)PiLT&um|Cj+{HfHR9%mA@2Q!6Yo<$sg-RGbu-P22XhEXYx^P0kI!
50295 zz}8U@QVOg*u<{%QhDK!r+anokBx8#tmPp19$ymX~AdoKHOR^+m-rlYCTTRP!wkeaV
50301 z^n>*4Ol@XNW@@G*vof<Gvnz8Xb0%{w^C0swn?to-O7QKA6sc2O-i2yA8(K2lopW~i
50302 z2VUJqEm5o;im^hmHYnBt#l$a}*d-IUBr!`SUdhBNNt_i=1YY^Xyh~vJ2Tn=gLQ95!
50304 z0CQlt-@c}nDAo?eSfN-O6l;NE;+IV9l8IZAm?aahWMY*h&Wa}rRq}tqNkNYL{x4L?
50305 z|E?Cw{rpcYQLG(`u|lynV0ld4{7++-Ox%*hESY#E6RY&%w5=w;-ou=>)lyFUnA({g
50306 zzW(R5*wz-cgx3E)wN@zB23r49`KX0OW5@Ns%WTY&i5J)ZSkm=pP{sd#-G_NM@_#^V
50307 zpjs&J_WVyRq4mE{yFLF?8?Zd4-H!ih?704SS-0bV8n0wxl_XBC{^vL_9QRfHI*{YQ
50309 zA+7&?it|6V0?T8H^FNLs*Z(f_^FNMRGVw|#R$Kq)L_=n0`j!}--Y+JLxnha9lNlve
50310 zWoBkN#0KH^;@p;(KTG-f>q*@{n`^xwRz)Q2X&NggmDm1>*_m}>VP>ybnK^@cno*z7
50313 zuN-<Bt{fU0pBY~q?}~4YABcYzzY@Q1`i=$nToGYcqEzy50;LG|7pU?Vt4meUq^jsq
50314 ztQN`YkgNvj$Vcl{T<iRGGWai0<u7*4jLZEmC-GmP%3rKqs)|*ricN~ONL8^%Rk22~
50318 zpSd<D)&iXWGfwVwW0y?alEf^TcqJ37m24DKMTb}=Hi^CBM0xKw@j~XpG2S_Harj-p
50319 z?(!%vOp({Z)5DUgQB72H`)7haLp505%Q+kehU4)bR}0U9;r?6>wM4OYD8>pb&ru-M
50320 z#xI%JB@?$KF-s<1$;4_Uaf{9B!mC?d;<qVj$;$R~zYJwP4P1D)WKb=N)uC7ol988;
50321 zv<(-?R#7Wj#741G9F+UTC2>nkbo|Y?X=#hO+w^9Q9;roJ-`vawvE8&`v9D<h-oE{P
50322 z-}-H6Tdu3MqHPZZuj;LC^#_%9zL+HDI5wXU=fw@w&hH{m@&S1gJjX<zteZTUt;6uD
50325 zg8YG8ZvI-{_f;EBD?_~?{?c3!uA_l)pIHc3(?GbI2E^Z*3&J%uAkAg&<ygV=kCH;k
50326 zv`m|yGcsd-&dHp)7i7WQi?V3$1LZ*T*Fn<M2gb^Jb2m?JY#lC#o4+>7k%qJwi$S)U
50327 z@}T5s`DJq-BgYu>75P;Y@)zYV8uFHGGe3V_e%<i$zNs=?#RGD>oNn$j<SawnXMR_{
50328 zYl!>gOXX5SzArnCwz3yM{)YTb^Yd!?k-7KE-!^1}+-QE@BsZJ;7P-^h|DF7I=KiVN
50329 zXYL2(L396oX?mijFL>76&&hM<eqNq8_Y3lZxnGnQ&Ha-6Lv#Nl`N!t|C-P6s{ZHke
50330 zn){#0KR5TkkhjeJKg<7Y?)T+=bAKTJ(%k=xd}QvA<zJiokK~Wc{cq%d6-s54@uw;(
50333 ze*R4TZ|1N6yZS%O&zF>WM)fD^y1Cy_|ChP{-^x6TdaO)NRsWCre}ytxCSmRY1m<23
50334 zlg#}a@C~8#c-?01-_*Zi?%&eiGWT!mZ<|~hGo`1=)P-}z(y&BEr^A%LoBciW-{G(p
50336 zl0KBamHEWzERmA!m+N??Wb0WbrZ+_{90|*ZyO9^gfU>-~KnygOG_`uI`FW7Jq_JkO
50338 zYo&GO(qg^2wD@gvDY4aDN^BGVgCV=jrO-aqk4?&a-VW4RX9wzRSQ4{g8O(-dFdLS;
50339 z%C6Hn-K?9#bo?jag>X0Lf#Gh>>2lhdpTBDArt+T7Uo-b|eKfF~%3@GCoee41K6PP@
50341 zfVm%3rUp{Kr+&}ekCaO)v_g3W#-LzPuqxOX><W$qXUb>Drh{~SdUSe9dS2>K>XaBO
50343 zD^2Fz80|-VK%SCU<wN<}__H<KEw3|d+aFYC)HU_c6#w$6z~wa@t6(GShNI;##Nnw<
50344 zhGziJ(u;Ms-W=|Ac0u3P&tpNXF*YIG-K;ydHT-_>O6-2@b-WaBiBE~okFSWY4_9!U
50345 zj$eu2i$6~UiN?g(#MD41<|jH6J&7%ey@_LqbBP;?hv`DPDe*d45Ybm-l}m*AHu?t7
50348 z=J54$Jn{q9OKIc>s+Z%o7V-5`>efuYUXEA%sQO8iYq%2WhI4a`OBEyE<D`Pmqg23p
50349 zDUDKr>g9Np3Ro|tQ7TZq9FI}~>!mbG1*}(B(W}_Juh=rhg|%J-#tN)gvwFF(_UYWv
50350 z{&&K*lt#ooFWfSl10tdb>lJ=piD;D5>|50*Zj1`)w_iQEp}?~XpFHi7Ug6d_5yS0-
50352 zp$MZ)3$sy-FYn$^9w{_!!iDmld}dl_tJLUl6vlniy7p0uJ^3NyN&ijgGc1YOP|+6l
50353 ze!5Ld^i$I-xgc(fCsNCjY&NZ-S#qIV74AZO(6ooHm_B5A)q9hgQ11QpTN`QX@t(m_
50356 z&#>>!ezW&QYW@9BeEMm}2-2TFMnKc4f4ra|J7uQ;xk9e!A2nDj*P5RzV+ZTxI`i|!
50361 z24e2_7HMeBhE`QVD<-u2WHzi%-QFz?shN<94XGGgWffZ`YbzJlr+$m4%ds7==Ho(r
50363 zTBx1spgN^4soUx)#PtNIgI1Ufb785eUpB)YI2vno@-yzMyUfq|en{Nc$8`kOt605w
50368 zY~)Wr8`=7g-wQusPva--WBg3#A#Dv%-iLZy-_EPoO?~kyT&Xu+_`8Hv#%Fv|DG@#^
50369 z|4zq{+%r&IIpxXuV>6goDR&IXJrm`lekp%!lZFE3Nid5-;qgD8y;c6g-t;pMguBSv
50374 z`s8CryDJHdBxOKYd5vhZm>8}Qjn2>h45f$7L6*>z>>;Vv!=zdd@eHne-CW{^!rr6x
50375 z<42V?k*bHY)!Iaw*~KruwNzgB_0zP8W_~dy`ZFBC{ww3h^6Jw3Kj=92^e@uv=P-`_
50377 zHT!E$)Lg8&UGt=<v#;c#TtjYLv93JVnje#&l5Y>cE-CLgKejyXU8pUz6egisGI~q?
50378 zEKc{M?-_btp}Vs!K6eP);lCT)J-C08^9p|!rwsag<W^dj^kl!EW|vvjudDJjm;qst
50380 z_!N%AMYsbmbf6pbSUpY8*UNQJc;3Wk`bv1pKrz-5?lQGJwm!Bib~tu6b|dyAuKT_d
50382 z$<)x)xYW$>6rs(jPs`_5r0%9(1ch9CZduS6p29jm=nQ&-t--$FSa2@55j+fDSI%Kg
50383 zPtQ-v&&e;zcjY(b_oNr3SESdccck~HPoyuVZ>OJRbfzxTnwgxLmsy(W&L7R6&0o)K
50385 z5se7#-Tb(AFYO2TIo?vP&2PhEPWx7C`!z_9ay_oKj$X;=a6M-A@*4cGeBZ&{kDKa+
50388 ze|b-G^F%as<X=S?rx%A^>-ZO!S77u)6}>p@TF1XwuSQ|J`u$7G6%A|si)VIdX^8ym
50389 zmj}0%!1>n?ZTFR@{-t_xSl7R_-ojxc|I+%9hPD31dZQERG2`^&uwDJs4{iO6=LTs_
50390 zV*RU8Y&5jpw_g*6Lt6jh`kRKfXHxrmp^9D_*7_IQtBDO!{-y658rJ4tKeXQypeJE)
50391 zr{3Vxz-_C*pP|DH_XD~e-In>i2YR9ge}WGli}}FO?Vd5?w(URY*X_?gVupJmKXi0k
50393 zyPwzLpQhoK7ytYkdg_LM-g=jCYX(;mGu(S~eT#dsSkmvmxqVH1*6-(^1@ESce_AVM
50395 zPUEb8&Q7(HDe>62O^wJ3zfJ1)-|3hEFp`u3VYYoi;{+y7AaMc{Coplkl7EL;d_6Sr
50397 z?3cpx_&5|Wp)m8$th2iDS2{lPPjv6;m%?9+;86Z)b*@E{*o|lVefD>p?T1%7qZ{-%
50399 zM}EgNlE+-4ev6xKR2t9r<KB&p9je3*Oze2JA2T-xSX$9XXZtC&vE$kPN)C=lPhTk4
50405 zJJn%zPTf*ZAPz%e9L$0x&}~|N2jLW4g$M9j*Xl8PnqC;5X1`Y-*B49+v3#0QF*YhT
50406 zF*Yl<D7G@TKDHy=4d-I)RyfyO8*lA@-+W%%&oV#^&w$}Jie*@m&Vl9FP?`y)5ut6|
50408 zp_FT9yB@{!0>E;sg-;hvEa5oqF}UfX84YwUgNsd8;lOgMg-;ji5sus1i%S>$EIj>5
50409 zPKw8^RW}yPa9xgT{4Phg|2-lNg;})|?(yg+{|@;4GwE?nj{6<1-TufiX83K=?WKlg
50410 zxZhEpVfj0ZIL35pjQC>2@rx11pYMp{NHH_~W+)nMyu`1|l!xV+zP-KsR$s<5@%ngc
50411 zd{TT)d{KOrDDST9kH2A3DR-CwBMFQoWk6U(lfO5UPpl0t14a@UNy>n*iY6d7;P0L=
50413 z&K?u)VX;bmqIT(-x<fD5y?VReuTPp5^(l2(-Br)aX9(*{eeLDiSW9dYjD;yM50=3?
50415 zp_8wuG#;tV3T~{FQX4xSE6sXs4L3(w=H@9&qmmVop1v69h-x*;jkD6QZpp?PxHP7@
50417 z+8fv1wC1Muwk1Dql-8}|ZJw}%zE|A()RhEAk}~{W!F9UL{dklXGhC<J`V^1SQc27z
50422 zo>-Jvo!FGvn>dlUn7EU8p3Ehik`t42lFO3olG~C8lBbhb`_6c8O-)J7??2=HeClTE
50423 zNe~Yjf^osjU{TN&Yzp=SM}zaht>9TYnQlmrPtQ&-PIslZr1z&!rZ1=OrC((VndZ!-
50427 zTq0zc@_w7AfZC~*HnATrdh27V7<n6(ww3{D=yCF+-{J!zZ^L3<&ZYRdAgmQJt%StS
50428 z8-=BQ(5zlcD<L_(9IyBh5WyqdiiC4h!P1`oRN(p$nD_Ljf~&!%f~6nzr-CnUQ^DmQ
50432 z@-;K&l{X2em(of|PA|u!HV!UnlvYA=Z$6Gk{>60|rXTkEm)2pFf7tI|{EnbB@-KZy
50434 zZ}B;o`x?>L;HIuiqtvB2m*cj*&*gIe-J`4MrM#!#zjPMXr#6>!bH|w5Tu#qM!8Gy%
50435 zt))30rJHM+O*ect3bo6o8`i5?dolf}-@nve%I&C8`M2_aQEv`2JaX05|DMB=m;qr?
50437 z@eUohSMK-IKX9z@XRI-^Z!y|a_fs1)TSNLY@R$K%wyyF$iy07RYfs<XR1z~hZt;O|
50439 zR`v5OmBb8>Fm-#ire#2w5~Ia<*(RTwlED5`s_*~h^~&XW_^*gB)=gB_O*H)D_d+;2
50440 zTOODFipcld?X7eWNzvMOVo#SiBd&<M#$R=!#n>?~JjG{|*e#BT)8;S!-p1UiIqoTK
50441 zE>%eOAMVr~dqNMMtH-A~jS{2fO=vUug8c`xoc#X9>id66tMA*sNUgv3j83J_U}j}V
50443 z*}t8>$$cin+By*BH>-xJLYe={-fT8+gK=V_m~6Z{%jB#1CNC`!onoa}1Ak~j{UKa8
50450 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/meson.build b/src/third_party…
50452 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/meson.build
50453 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/meson.build
50454 @@ -1,4 +1,4 @@
50455 -in_house_tests_base = [
50457 'aat-morx.tests',
50458 'aat-trak.tests',
50459 'arabic-fallback-shaping.tests',
50460 @@ -13,12 +13,15 @@ in_house_tests_base = [
50462 'color-fonts.tests',
50463 'context-matching.tests',
50465 'cursive-positioning.tests',
50466 'default-ignorables.tests',
50470 'emoji-clusters.tests',
50471 'fallback-positioning.tests',
50472 + 'glyph-props-no-gdef.tests',
50473 'hangul-jamo.tests',
50475 'indic-consonant-with-stacker.tests',
50476 @@ -45,6 +48,7 @@ in_house_tests_base = [
50477 'myanmar-misc.tests',
50478 'myanmar-syllable.tests',
50479 'myanmar-zawgyi.tests',
50480 + 'nested-mark-filtering-sets.tests',
50481 'none-directional.tests',
50482 'positioning-features.tests',
50484 @@ -57,6 +61,8 @@ in_house_tests_base = [
50485 'tibetan-contractions-2.tests',
50486 'tibetan-vowels.tests',
50487 'tt-kern-gpos.tests',
50489 + 'unsafe-to-concat.tests',
50490 'use-indic3.tests',
50491 'use-marchen.tests',
50492 'use-syllable.tests',
50493 @@ -67,15 +73,3 @@ in_house_tests_base = [
50495 'zero-width-marks.tests',
50497 -
50498 -in_house_tests_coretext = [
50499 - 'coretext.tests',
50500 -]
50501 -
50502 -in_house_tests_uniscribe = [
50503 - 'uniscribe.tests',
50504 -]
50505 -
50506 -in_house_tests_directwrite = [
50507 - 'directwrite.tests',
50508 -]
50509 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/collections.tests b/src…
50511 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/collections.tests
50512 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/collections.tests
50513 @@ -1,6 +1,6 @@
50514 …../fonts/DFONT.dfont;--face-index=0 --font-funcs=ot;U+2026,U+0020,U+002E;[ellipsis=0+723|space=1+2…
50515 -../fonts/DFONT.dfont;--face-index=1 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+1000|gid0=1+1000|…
50516 -../fonts/DFONT.dfont;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+1000|gid0=1+1000|…
50517 +../fonts/DFONT.dfont;--face-index=1 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+500|gid0=1+500|gi…
50518 +../fonts/DFONT.dfont;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+500|gid0=1+500|gi…
50519 …../fonts/TTC.ttc;--face-index=0 --font-funcs=ot;U+2026,U+0020,U+002E;[ellipsis=0+723|space=1+250|p…
50520 …../fonts/TTC.ttc;--face-index=1 --font-funcs=ot;U+2026,U+0020,U+002E;[ellipsis=0+723|space=1+250|p…
50521 -../fonts/TTC.ttc;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+1000|gid0=1+1000|gid0…
50522 +../fonts/TTC.ttc;--face-index=2 --font-funcs=ot;U+2026,U+0020,U+002E;[gid0=0+500|gid0=1+500|gid0=2…
50523 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/context-matching.tests b/sr…
50525 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/context-matching.tests
50526 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/context-matching.tests
50527 @@ -1,3 +1,4 @@
50532 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/glyph-props-no-gdef.tests b…
50535 --- /dev/null
50536 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/glyph-props-no-gdef.tests
50537 @@ -0,0 +1 @@
50538 +../fonts/FallbackPlus-Javanese-no-GDEF.otf;;U+A995,U+A9BF;[glyph01=0+600|uniA995=0+600]
50539 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-decompose.tests b/src…
50541 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-decompose.tests
50542 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-decompose.tests
50543 @@ -1 +1 @@
50544 -../fonts/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf;--font-funcs=ot;U+09DC,U+0020,U+09DD,U+0020,…
50545 +../fonts/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf;--font-funcs=ot;U+09DC,U+0020,U+09DD,U+0020,…
50546 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-feature-order.tests b…
50549 --- /dev/null
50550 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/indic-feature-order.tests
50551 @@ -0,0 +1 @@
50552 +../fonts/190a621e48d4af1fffd8144bd41d2027e9a32fbf.ttf;--features=ss03;U+0B95,U+0BC1;[uni0B95.ss03=…
50553 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/macos.tests b/src/third…
50555 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/macos.tests
50556 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/macos.tests
50557 @@ -141,3 +141,6 @@
50560 …/System/Library/Fonts/Apple Color Emoji.ttc@6b0fa4926a1c8a32267e93e18c5eff21558de83a;--font-funcs …
50563 …6ac4564651899da0b37d310d980db4de967d6;--font-funcs ot;1FAF1,1F3FF,200D,1FAF2,1F3FC;[u1FAF1.5.L=0+8…
50564 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/nested-mark-filtering-sets.…
50567 --- /dev/null
50568 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/nested-mark-filtering-sets.tes…
50569 @@ -0,0 +1,4 @@
50570 …NotoNastaliqUrdu-Regular.ttf;;U+0628,U+0628,U+6D2;[OneDotBelowYB=2@764,-183+0|YBc1=2@764,-282+0|Ye…
50571 …-Regular.ttf;;U+0628,U+0628,U+0628,U+6D2;[OneDotBelowYB=3@764,-183+0|YBc1=3@764,-282+0|OneDotBelow…
50572 …-Regular.ttf;;U+0628,U+0628,U+0628,U+0628,U+6D2;[OneDotBelowYB=4@659,-192+0|YBc1=4@659,-291+0|OneD…
50573 …-Regular.ttf;;U+0628,U+0628,U+0628,U+0628,U+0628,U+6D2;[OneDotBelowYB=5@659,-192+0|YBc1=5@659,-291…
50574 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/spaces.tests b/src/thir…
50576 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/spaces.tests
50577 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/spaces.tests
50578 @@ -15,20 +15,20 @@
50579 ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot;U+202F;[gid1=0+280]
50580 ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot;U+205F;[gid1=0+455]
50581 ../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot;U+3000;[gid1=0+2048]
50582 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+0020;[gid1…
50583 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+00A0;[gid1…
50584 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+1680;[gid0…
50585 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2000;[gid1…
50586 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2001;[gid1…
50587 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2002;[gid1…
50588 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2003;[gid1…
50589 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2004;[gid1…
50590 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2005;[gid1…
50591 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2006;[gid1…
50592 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2007;[gid1…
50593 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2008;[gid1…
50594 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2009;[gid1…
50595 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+200A;[gid1…
50596 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+202F;[gid1…
50597 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+205F;[gid1…
50598 -../fonts/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+3000;[gid1…
50599 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+0020;[gid1=0@-280,…
50600 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+00A0;[gid1=0@-280,…
50601 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+1680;[gid0=0@-346,…
50602 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2000;[gid1=0@-280,…
50603 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2001;[gid1=0@-280,…
50604 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2002;[gid1=0@-280,…
50605 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2003;[gid1=0@-280,…
50606 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2004;[gid1=0@-280,…
50607 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2005;[gid1=0@-280,…
50608 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2006;[gid1=0@-280,…
50609 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2007;[gid1=0@-280,…
50610 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2008;[gid1=0@-280,…
50611 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+2009;[gid1=0@-280,…
50612 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+200A;[gid1=0@-280,…
50613 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+202F;[gid1=0@-280,…
50614 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+205F;[gid1=0@-280,…
50615 …/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf;--font-funcs=ot --direction=ttb;U+3000;[gid1=0@-280,…
50616 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/unsafe-to-concat.tests b/sr…
50619 --- /dev/null
50620 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/unsafe-to-concat.tests
50621 @@ -0,0 +1 @@
50622 +../fonts/34da9aab7bee86c4dfc3b85e423435822fdf4b62.ttf;--show-flags --unsafe-to-concat;U+0628,U+200…
50623 …--git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use-syllable.tests b/src/th…
50625 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use-syllable.tests
50626 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use-syllable.tests
50627 @@ -3,6 +3,7 @@
50628 …11f09b70890289c8fd.ttf;;U+AA00,U+AA35,U+AA33;[a_cham=0+1121|laMedial_cham=0@-32,0+0|yaMedial_cham=…
50630 …../fonts/074a5ae6b19de8f29772fdd5df2d3d833f81f5e6.ttf;--no-glyph-names;U+11320,U+20F0,U+11367;[3=0…
50632 …../fonts/373e67bf41ca264e260a9716162b71a23549e885.ttf;--no-glyph-names;U+A8AC,U+A8B4,U+A8B5;[2=0+3…
50633 …../fonts/59a585a63b3df608fbeef00956c8c108deec7de6.ttf;--no-glyph-names;U+1BC7,U+1BEA,U+1BF3;[1=0+7…
50635 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use.tests b/src/third_p…
50637 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use.tests
50638 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/use.tests
50639 @@ -9,6 +9,7 @@
50641 …dv.alt=0+208|Candrabindu=0@17,-8+0|E_dv.alt=5+275|Ga.icd=5+367|Gha.diag=5@100,0+386|AU_dv_part.alt…
50647 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/vertical.tests b/src/th…
50649 --- a/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/vertical.tests
50650 +++ b/src/third_party/harfbuzz-ng/src/test/shape/data/in-house/tests/vertical.tests
50651 @@ -1,4 +1,4 @@
50652 …1826b9643e3f124d865d617ae609db6a2ce203.ttf;--direction=t --font-funcs=ft;U+300C;[uni300C.vert=0@-5…
50653 …57789a22cb4241107746fd3d0.ttf;--direction=t --font-funcs=ft;U+0041,U+0042;[gid1=0@-654,-2128+0,-27…
50654 -../fonts/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf;--direction=t --font-funcs=ot;U+0041,U+0042;…
50655 …57789a22cb4241107746fd3d0.ttf;--direction=t --font-funcs=ot;U+0041,U+0042;[gid1=0@-654,-2128+0,-27…
50656 …s/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf;--direction=t --font-funcs=ot;U+FF38;[gid2=0@-500,-…
50657 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/meson.build b/src/third_party/harfbuzz-ng/s…
50659 --- a/src/third_party/harfbuzz-ng/src/test/shape/meson.build
50660 +++ b/src/third_party/harfbuzz-ng/src/test/shape/meson.build
50661 @@ -3,60 +3,52 @@ subdir('data/in-house') # in_house_tests
50663 subdir('data/text-rendering-tests') # text_rendering_tests
50665 -shaping_run_tests_py = find_program('run-tests.py')
50666 +shape_run_tests_py = find_program('run-tests.py')
50670 -
50671 -in_house_tests = in_house_tests_base
50672 -if conf.get('HAVE_CORETEXT', 0) == 1
50673 - in_house_tests += in_house_tests_coretext
50674 -endif
50675 -if conf.get('HAVE_UNISCRIBE', 0) == 1
50676 - in_house_tests += in_house_tests_uniscribe
50677 -endif
50678 -if conf.get('HAVE_DIRECTWRITE', 0) == 1
50679 - in_house_tests += in_house_tests_directwrite
50680 -endif
50688 - test(test_name, shaping_run_tests_py,
50692 meson.current_source_dir() / 'data' / 'in-house' / 'tests' / file_name,
50696 - suite: ['shaping', 'in-house'],
50697 + suite: ['shape', 'in-house'],
50704 - test(test_name, shaping_run_tests_py,
50712 - suite: ['shaping', 'aots'],
50720 - test(test_name, shaping_run_tests_py,
50724 meson.current_source_dir() / 'data' / 'text-rendering-tests' / 'tests' / file_name,
50728 - suite: ['shaping', 'text-rendering-tests'],
50729 + suite: ['shape', 'text-rendering-tests'],
50732 diff --git a/src/third_party/harfbuzz-ng/src/test/shape/run-tests.py b/src/third_party/harfbuzz-ng/…
50734 --- a/src/third_party/harfbuzz-ng/src/test/shape/run-tests.py
50735 +++ b/src/third_party/harfbuzz-ng/src/test/shape/run-tests.py
50736 @@ -11,7 +11,10 @@ def shape_cmd(command):
50740 -have_freetype = bool(int(os.getenv ('HAVE_FREETYPE', '1')))
50746 if not args or args[0].find('hb-shape') == -1 or not os.path.exists (args[0]):
50747 sys.exit ("""First argument does not seem to point to usable hb-shape.""")
50748 @@ -91,6 +94,18 @@ for filename in args:
50752 + if "--shaper=coretext" in options and not have_coretext:
50756 + if "--shaper=directwrite" in options and not have_directwrite:
50760 + if "--shaper=uniscribe" in options and not have_uniscribe:
50764 if "--font-funcs=ot" in options or not have_freetype:
50765 …glyphs1 = shape_cmd ([fontfile, "--font-funcs=ot"] + extra_options + ["--unicodes", unicodes] + op…
50767 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/Roboto-Regular.default…
50772 zc$}qIc~nzZ8vpKlFE0xbUP2(4RCyr+B0-Qqu#_rVz^w{`OTvhN><T6dxU}Pp-IPh8
50773 zbaAYs-DWvG7JBMSx=659=d`vRXWFW@J>#6(Y0sHyt>bjM&S|YA^WB#Of_DCxGmrDW
50776 zyxi8<?Ew`eqHe=}ZCmHgR!3X!N&vMA-;ws_t{sWS#B}VRi~T9>Esf3BHlD-%8Hye4
50780 zKl0!VWoJ-}@mX@!99*i-i>xv6#LGOVPeK@7`K4oVD{SNN)xs3H4`fMqHlQSOi}e7s
50783 z;DsG<9wV~?YGE%lz#1rEO5kPi!vpXd<sEDQ19J#O)&g-{F&MZ35EK#^_!LMYPlJv>
50784 z3Gw^|IiW~~+k=@_04NSB?C4TzxMj~mD-#JyY}_ZFMU|C{pcEQm6AwXvR^>qk!$qE?
50785 zeOxi_C*of?k{Vc#^}v-?+`bByHtpQn2^DQyTQ)&OXJgN1Fu@GqDykQVaMSY2+flAq
50786 zum)vy<#Lo*1)=c1avNsAMKIFq>}YEQgDm6688Q*JoIH|Xy%JoBwhZQ*$CtruOhI-$
50787 zwsciK!ZQ!%MR=NIo+g>6DZ-N*=YgwkYT3FORFOUDUg2<U#8nuWEsw3joGGH!{9hj;
50789 z%O!a~CDskD!QmZ%d07|H=}D-H=nSsEFru?Db}mL&KnBJ%tn)NaPz`RpIo;5MZw{gs
50790 zXoFtp#0uGpHQIu*8#=IWGuA~uMraP$p$Kk~Q68eA>*mC+cN@MQ*ooE-9MO)p=&U)Y
50794 z%$synODHYKnkLT`suqM<fnOh|L<hw3T^%W9{`n@-?XRce=TzjHNRPjg3O5ylR2-oq
50796 zQdc>BggoFHA)))Ed#Cx-Z2kHiiP%K3yrWDa4LK5HlgKPfj>Ou;3W-gxsCHUiqF3}T
50797 zY4(a0VtZq=#HGtEcC>h1xuOI$&JL8ToEE9nWgb^sT(06AiKEMK@-ki*F0e7Oz(#oi
50798 zoIjQ$DQwF`iOr~Tu5?Pf%gj<~nagakh~?7BDyMX^%xrPFawLA7qZp2-%vNcW_*prU
50801 z;^Jc8hydd@>g5!hRN6NpLao!61!d*{WU-gZTse5|yFypk%iIe5<(vsW^&7Kh>GU^C
50805 z9{XJ|{+CW+pmy<xZ>-%w@6i6x6;9;oSHe_i_3KS$N>49HEc&d<m7UX~bK0oeECM#_
50808 z`Gx7JxOq5J0umFVlvM~+$kGQfq*T;JNf0Chm6Hk5_}b%<B<KnwVYg<;S-_Ap^P2Xl
50811 zw3e7cqX8paq@!-sUpaBy9T-x(Uw`?ZfdhM_l{L@y9bhuPC%Jbs1y`Y`j}&~T969p@
50812 z`SMriDEm5O|20NA3FF-9SIKdv0ZfjZ3z?wl`lDb{0Uc+`ec^=Z9TQXM)5fp`!6(EV
50815 z*NyCn7+dO5w{!?}*ZW9=P9_zVZ%Pa#f|Pg$3oLIAW}y&IGCE>Zh6~A_WYv8-JUlv7
50817 z`7B039D+DQ1jyG`xPGXo{sd#3d^rg|T}%p+<W72DO`BX*X*X6?kzHq?7gS~uO-W%P
50818 zEwG}A`f9lR``6v-XTCqz`_U~8+n?S0sQcvce~j+md!%~x&|WOGF_PWC<A;yVebv0y
50819 z{m21t-ENZq_0h9WlFtvF!`$@aN8VrYtmt5=U!zZyb0dV$2!oz5Q6Ciu6wxyhk074<
50821 zc=-!+0E?wv@tXV{IN#4tiKlDxf<z)2m_%s2Di}f1oRKuSK3)-fspF<>fg?ZJz^7%9
50822 z)q%j9MV)i!b{28PBsFK=yxJ04l%W&BWyFO$YVq3^?=)iy-4U-Ti0pXdWsGU|sbW&5
50823 z6{MsyQc|u@h~1s&1WQ_Gp`0%rODi$VV_ER;w-$&6^A;o)6*`cPgDd`FN$^emKGkhC
50826 z^6k#xy*ym2-%gr?C1YO9Tq;)4Tk;8?3itU{;omj9vy5l{r<0z7AmxSxQ;>`x`TxHI
50827 zXjPmZ9)9N)&v5FlE!#UTUSyVxj^bUg?#0u$K9;{}(|WuM@c&qb-dTJ;dX$M@>rcW2
50834 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/Roboto-Regular.drop-hi…
50846 z!jI8)7)f-!zDN2jJX<g`edUM?0pln12E<0>i^XDF68>}~TgpJ|l3y!^=3Sr>Cf)qW
50847 z8FhkKzhWi7T^ber%A8|rfoe|pA-SDucsVulR%+)tG@m~~6?`%+koHj?Y?Zv8+Sys^
50848 zU_Zrn^JMDaO_ZU0iHyp86?+yLBf}<x6YewOt9+OiNr?ak=jhr~SX5L<cao196w-(m
50851 zbJv5Nf>od@37$EWpWr!C=Q&d6IWobMU*!SRhT7&PG9`QpU-5L!0E$GzbOsJ|i$TwU
50852 zLGKnBt4a4~)K9ZSMDaC#hU*=}5DnMy#-gKzT|sAYl4AqJF$@?+A;WSCmQ%2tg5?zM
50853 z7^z$!a5LnEG(RDWt}IT-640k6WO<OC50VXJN6zB1BI-aT6vWpiNMVfe&}ylUmQny6
50855 zx6(9ts0O~3roa-wT5|PPi>}pT6?~RquE9x(8e;?UX+8_}7)z9C&sJ<%cDHMc)9H5E
50856 zZCOgH&E@ep9ck&RB|Y_KhsW!-SyL@(^4MWR9(!xcLB@W1JG`WNRZq*_WxZc=yLR2&
50859 z`&x?{J~-5+-P&~swVaQ51`y9pM1rm}8OWr%6H(agdQgZ!%CBB$+HP33x9OO6Iec{8
50860 zyJt<?O`ZOZ&6}QBQNG}f8kWr{<K^GmzS-tq{n;K{Zyz{U0Q(F$4@Jk*a94`ckq*W-
50861 zku%AiZUJAfD)1`?cJB&Cy3D~(-~T1Dan+95rCZxJO7=h4#K$GqB?`AO*G1!dU%brD
50864 zKGKcxgg8@e>dEfzo~}FZ7&6gaUUl-M+}#=6wo6@a_E$A`UMUkiE44ZDIq)2T?@}Uu
50865 zuT!;%mdW-CqHecHh4)$}Do=m-Y0&)UAN@;D++MkS>*@``J-dGHS-*OFNm<uwq$JA5
50869 zJ%I4=NtdT-`%~7L?keTIEaTQYbTlUX^CU(8FJwAv)ytfW*;r3F5~*ghzt<jQUms-`
50870 zR%%ZwbfscBtI_hJYXtKQ#C}k()`<VBmx!mYyZiGGLfsjyOP2eO9h0W@^q_9@-|3tD
50877 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/SourceSerifVariable-Ro…
50882 zc$}?S2XGtLnSO6~v5Q_8009CZ2oL~^zzPr~MX{+%l&EIfC)<i-S;eusbaryd+z7Ii
50885 zq231l&u{8(-xdG&kuSq!Eg8QJ>Sv!h^(;cn15j`7+Fe!q@V1YygL)6t_wU}*zUTbF
50889 z)XB5wvR6<o^gl%U5y4K2o<?%?U3f@snOH!S%@wnk$(%nzkDwo-eq4$l#Xn_=nJ1Z_
50890 zFe$d3-OT=sYv%|G#5BsxPZ5&d$r`eD>GSW{he(iX!AN)!y@>9<+H0cKZsuRDN6dfk
50892 z-0COq>%Vy9)vO`&Q|a^UTTtcc4vX_ZXn2cf&z(8B)TX4|2Am<%5~9-KymUAtWzM4=
50896 z0!#z5F+qq$XI6-%r#tS*<7Zz)N-hDfi^_orhX<<is9ZuTJ5UsU<0zSwjH7$vJrPBt
50897 zQNW~Bj!^Pl=o4KqQczB)f%?WG89-YeWKw`V)le5;lnNw~!+J_2gV{On3FIZzpxlZ`
50900 z>yfc}|B-`jK8m<?8#?!(rh^|pa||^dIdkZ7)O75?xf95WN)X$=cfAvt*6!K^e9x|}
50901 zz#%VWb9O|;4@r&2z_G`U96%!ErehTA#V7=<z$!e-`7A-HguYq8N)2xn^vj^cz!(j*
50902 z@=znQ_*?|j89en}3_Xi-SEH7^+*T^LmC9|+%e_)A{P>|WCt#I)Mu0vU#ll82A46lE
50903 zL7zvE?a>T#4*I2e?;%-iC>uq6`Fiilh|5M$4}C|Mnl2*;*wlf3y<!-_`uY60pXA$q
50904 zNbBS1-{AEv^j?I)KM4|Ya6N*h?L28Mq})omh4KQ*&6JxcH&QNAZlGLGxsGxz<(l(|
50909 z-jFXds2*$cWfsXXpD%N06+}v|ELq+c`m4e7b7cYY@;CBjDcmuR=F2ibet*6!N9B+=
50910 zb7cisXH~weM8pGjqm$@wA)_8dhoF22N{^w#Xcx2|hg0wb@}mxP3`z&l<10!ZWY$R-
50911 z{piyB{b!KY<IwuZ(u{Z3-*1Io(0T;M5Gl`mfbpHsas)6tx1#j^v(}@J!MHO}Tb}h^
50912 zZTG|MKfP)<mGd#+kATdFs0NGsbkk91q4y-zoTvs>g57K2Sq*2+?xmL1u>MKd;UFFN
50913 z1Z}T}9`Xd?JYG%LdmL6HqYgvsF^Xv|?I+`c@N1-NFYnL}IjaM8LFvOwo}1kT^Vk0g
50914 zi#S)T=6u(BKY+GcDop@N{-s(7O6}kaCt+M}jgJFH=cuQgh5BaLpCEAtoud2z?Ryk@
50917 z-7a1T2|Vw1`ReQIYE8!6z>t~eE3F&X8iNfM*EX}iTvg@L+kH+^ZFf{vJ3?LfOj)g=
50918 zyjbVAm0E=Yv7A*O-MXz))T#7RQD1h-R$E;l)vCD?p+KfDaj8pPa;r&Wv^#u;*5-!F
50919 zftsKwD2lpG=F-NFu6;eOLZ#efHxV5y*;z)%3?Lm~gX)4Ip@j+Rd_j=gXx0fK&;i5-
50920 zsd*tMu*oPA>Ak*?$>cazj4|H*6*b4oFP5zFY--e3HhN^M_SXfw>*^nFs@z*D^L4q!
50921 zkg0QL5&nhT?U#P`MOEhV-vr9{v>!OE_ImUk%}pn^Z9Cf<+^(%HC;7etF#Qc+S^^c=
50923 z%l|-I>;3*xud-$Bnp2(IPdB@oJRYmz0gp<Vvm)aK1RNx1hW^NY0yP~kF&hP+E)=8y
50924 z>7Memm3o_9GJ9v!nuqE_2iDjFbyj&ro88mq!)*t@E@!*HuI9$p-dE;XRan>5dSY|u
50925 znKu0@pS9dkc7IyymLJ9*Rf@urein2m{`6bWy_B5r6ltM22-4&o=iOkmFjybhUCXhV
50926 z&rOz??R7=Yw(`;~wbku~=ED8!)*cL%wC={k{_bX-U0&`m+G~n@_irRn6zPMlt50+`
50927 z?pp`9SNNtv`1{NxoNhAmEgLc$i-RFUozX1>-QW@6#uSCzwmx6TobzKfV+M)L?)v&4
50929 zbRRBpTMO(4i$>)U9h}r*6`LPeb2sqOKmhLC$dlFL2|%P0Zn9e-?;tZp!%gG}Qu7cn
50930 zNDQrT%@xgT;B8Lp4Y~MSz`-JB(9<2;-CY@aLS<EWeWi6KvuJi-tl!|OKfZI*Llq63
50933 z3URm?dG25xgr%Vl<PG`=3;7m9ba5;`-QEJR*bR@*Z>g-Y8SDJ!wOh}Mj}HCp(V-Jg
50936 z-zUkTsx0J?xtrymz6kpj6A=KI?2ofN>ZLo@y?sA+#a?QLrc-Y)=c8sJm<y5?W^wnm
50940 z+bwSshNs_a5)#SGCWvGYs(^gnfi^)-hYU``7|y2Lk&_Q&^NJ7-hQPVlV6l;Xry=uw
50941 z=NJsJEzuR(+`G#<_Hq`{U{?psW$VlaGl}c(o)$lG3Aa>JJMW-&#{Y6cd=vtign8qh
50942 z7K_sos?-`q!$z6aEUvkq203vz{M|qxvzK^5ZD5m^b6e#Xo+e&L`p9jb==28YR04P1
50943 zO1LvLz^S~f)w`0@due6(&>1bK?>lo@yLpvbsae+7<X(~Zq;@(uC}8Ju;xkvOm0F%-
50944 zz|c${i<K#laazUI?||Y9A2>fs2{!DLOW5o|d(l308g4fq5+C-j=p*lonI1FLm7Ik+
50945 zSF#!m4i&i4dXs1(NUd-s2;6tM()+=;_b+w1+`oX3FUfkOrQeQClz$yd@IL%9<72+e
50946 zZe(BJWL%i*=Vm0I=DUP7FQPVdo`LV-FTltz!u(c+!k|vEJjZb;HZp#<r>E!E$c(~j
50947 z)v;!i8opE&GIg=T;V{YBNZ*~`U%xdntCTBK)8nH+)3LdECK-u^Q95jkLkz?hV)HSX
50948 zAZ2+zH9dOc#*Kj}i&7c|cfp-Wr?Ud5&>M|LNo<Bw7Zw)sl2j@sSmcp=_wL=kJs3@g
50952 zTgwB1fL(>-DV|465;NIsmXk`Pyuix@Bnh9#k%5c0j)pR+RJxE(^7rnIEXed$tJNf$
50953 zMFpS`U%13YZ{6s-7lv=>noMT&4y9yrb0?t?j^Dd__3BtEGR4ECqN1&1!=_D}+M1dj
50957 z>wKa*GApaBZbqJPi6H0-3|3EhdAVH?nE?^wNnW7=k)`PcP#{sJSIPup3Mw(=Rj>x!
50960 z$z-<Ls)p?k^F>7ieSIKbV(a$p+fiw_f;V}}%E}rl*BC*GSb|sSL5a-pn<H-y4-b#U
50961 z9a@wbcNO(h8(mnmz+TYjLGo`rv2<c)W@Z*>OO4y@cBoUs*REW-(l;?W8c$A*&+>XL
50963 z{oU^_U%q@RF1NHj_~3)x>+8yjEM+A|jW7?|&0sasg-f+sW^Qgi5sQ({Og0e$M5Wh>
50966 zz$}6L{Qg+1UtusPu3nv-j9%>-8;)SLxw5*p%xRYMrK`*RH8rd1n;V+jfjZi+{^2T8
50967 zfUw%IPpeg_qEQr$s#J-@^w7w}#6<tqm!Es?xy#ezQ`3O{%tT^-dM@=DJb`j?|0B@t
50968 zM<i294K|z2Vb&?p!h%GhP^i;0<9&U7^PGl>!n`;u(;HMOm3b~Y-rL(drBVqflbVl2
50969 zBJ-&%ma5XancKH-&oj#6;$qqC<mBWmN`za7hN283kQ4;r#-;i6<m~uR|6Ks**4>e@
50970 zsc15p%y5FvBxPmtOnfLAi-XHXA%Ue978bHttI<kQvx9?!({WZSnV%O$Ft?;NGdDCe
50971 z6jwT!-q&7x4T5_3?r;n;yp)?#m)F$PIPv)Hn-B<hU%omNkH;f@eYYoMo*?9~dar!)
50972 zPM=g~Yiw+^s}e-u=K4^G1ZgYWkMVRr(AeBUR$#<pv(Z%*Y-|OpFZUK2^m@HfuTV&1
50974 z+3dx-*jrOmmm`df5oIjvaHL}~y<WPUeF>3ljAUUJa**<Aoe?h6-eTqa{O#LgDJInq
50976 zj0(amWK`GFQaggAcCYv5%`iWsGK0$6Fhdw<k8**I@iR-_v<)<Eb3(RF%I$W$JUI@B
50977 z<oJj+N47$ZW_);rP<&=arD72uR`~seYBV)9h17-qOHxK!)mrb1CDk-+aHKzsr;uoX
50980 z0HY4&<a8<%v1Do<{P^y*-@WwGORx5fMBeD58qTGnAiX50zz`%@VT8lOc<tJ?o@-N6
50982 z^u)A9E-iRtfxB_nu3ar<g0sQ}YB-C%t8{R_=6&wLeAZ>LNvRB%NJa#qV03hR*`de@
50983 zpB*1Jo8`T1B2l1x3uVK4OOZO2f<Ld6_z_~$(O6g-i>6udEHDTME=KHPoF)f(`KDbP
50984 z;GkankWRPkK6mm*d(h)ynBg71&6@|^r_k20o>y{klBrbF^TcW7N;ESQmd-@d5^y8%
50985 zCk`y-f|R=u2rqdP`M(_U{~cj)lndYpVN@6<2Uo85v(WollDQzu=F+iT389lo^!@j*
50986 z|M&Md-n@5nVJ4o4&5h@BF(htC-_hvx>jjIXP>l4$`70-n9L<Am+3-_#nxr#~Oep~f
50987 zyz94hcX#jHZiWk;rNC-6UX(^4;!pwP^NZ3fV=53Ov83!0OInF+t&oj#Y5VHH+*DMo
50988 zD$*4e>6rLnZ#uAH-$UKo*VCL03BFkr6^gE|-!IbW=;{_AIXu(T*FD9>NDtD`RGyq0
50989 z=^un#&ae^4z0=B}G~~%RD@|RLl88hwCVEloFffU%M61bMVoB?TB^-YRNd4+<NJ$L_
50994 z-kc$LsY=ZyqPH4<{>xvzdhO<$Z_H25MQ3M5a#jGFf#qgqdV0h~5`=*_`zXPuOJr;e
50995 zV*UNBwCv}9y^#1|RvREh%{9*<!P8dV=vr0nHppUQ>h<@ZI)3yc-PBfK*=-(=&9;C4
50996 e-5mAZO(r|La)j|)^|iIg{l2zb4xqm{*8U%J^xc~P
51001 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/full-font/SourceSerifVariable-Ro…
51006 zc$}?S2XGtLnSO6~v5Q_8009CZ2oL~^zzPr~MX{+%l&EIfC)<i-S;eusbaryd+z7Ii
51009 zq231l&u{8(-xdG&kuSq!Eg8QJ>Sv!h^(;cn15j`7+Fe!q@V1YygL)6t_wU}*zUTbF
51013 z)XB5wvR6<o^gl%U5y4K2o<?%?U3f@snOH!S%@wnk$(%nzkDwo-eq4$l#Xn_=nJ1Z_
51014 zFe$d3-OT=sYv%|G#5BsxPZ5&d$r`eD>GSW{he(iX!AN)!y@>9<+H0cKZsuRDN6dfk
51016 z-0COq>%Vy9)vO`&Q|a^UTTtcc4vX_ZXn2cf&z(8B)TX4|2Am<%5~9-KymUAtWzM4=
51020 z0!#z5F+qq$XI6-%r#tS*<7Zz)N-hDfi^_orhX<<is9ZuTJ5UsU<0zSwjH7$vJrPBt
51021 zQNW~Bj!^Pl=o4KqQczB)f%?WG89-YeWKw`V)le5;lnNw~!+J_2gV{On3FIZzpxlZ`
51024 z>yfc}|B-`jK8m<?8#?!(rh^|pa||^dIdkZ7)O75?xf95WN)X$=cfAvt*6!K^e9x|}
51025 zz#%VWb9O|;4@r&2z_G`U96%!ErehTA#V7=<z$!e-`7A-HguYq8N)2xn^vj^cz!(j*
51026 z@=znQ_*?|j89en}3_Xi-SEH7^+*T^LmC9|+%e_)A{P>|WCt#I)Mu0vU#ll82A46lE
51027 zL7zvE?a>T#4*I2e?;%-iC>uq6`Fiilh|5M$4}C|Mnl2*;*wlf3y<!-_`uY60pXA$q
51028 zNbBS1-{AEv^j?I)KM4|Ya6N*h?L28Mq})omh4KQ*&6JxcH&QNAZlGLGxsGxz<(l(|
51033 z-jFXds2*$cWfsXXpD%N06+}v|ELq+c`m4e7b7cYY@;CBjDcmuR=F2ibet*6!N9B+=
51034 zb7cisXH~weM8pGjqm$@wA)_8dhoF22N{^w#Xcx2|hg0wb@}mxP3`z&l<10!ZWY$R-
51035 z{piyB{b!KY<IwuZ(u{Z3-*1Io(0T;M5Gl`mfbpHsas)6tx1#j^v(}@J!MHO}Tb}h^
51036 zZTG|MKfP)<mGd#+kATdFs0NGsbkk91q4y-zoTvs>g57K2Sq*2+?xmL1u>MKd;UFFN
51037 z1Z}T}9`Xd?JYG%LdmL6HqYgvsF^Xv|?I+`c@N1-NFYnL}IjaM8LFvOwo}1kT^Vk0g
51038 zi#S)T=6u(BKY+GcDop@N{-s(7O6}kaCt+M}jgJFH=cuQgh5BaLpCEAtoud2z?Ryk@
51041 z-7a1T2|Vw1`ReQIYE8!6z>t~eE3F&X8iNfM*EX}iTvg@L+kH+^ZFf{vJ3?LfOj)g=
51042 zyjbVAm0E=Yv7A*O-MXz))T#7RQD1h-R$E;l)vCD?p+KfDaj8pPa;r&Wv^#u;*5-!F
51043 zftsKwD2lpG=F-NFu6;eOLZ#efHxV5y*;z)%3?Lm~gX)4Ip@j+Rd_j=gXx0fK&;i5-
51044 zsd*tMu*oPA>Ak*?$>cazj4|H*6*b4oFP5zFY--e3HhN^M_SXfw>*^nFs@z*D^L4q!
51045 zkg0QL5&nhT?U#P`MOEhV-vr9{v>!OE_ImUk%}pn^Z9Cf<+^(%HC;7etF#Qc+S^^c=
51047 z%l|-I>;3*xud-$Bnp2(IPdB@oJRYmz0gp<Vvm)aK1RNx1hW^NY0yP~kF&hP+E)=8y
51048 z>7Memm3o_9GJ9v!nuqE_2iDjFbyj&ro88mq!)*t@E@!*HuI9$p-dE;XRan>5dSY|u
51049 znKu0@pS9dkc7IyymLJ9*Rf@urein2m{`6bWy_B5r6ltM22-4&o=iOkmFjybhUCXhV
51050 z&rOz??R7=Yw(`;~wbku~=ED8!)*cL%wC={k{_bX-U0&`m+G~n@_irRn6zPMlt50+`
51051 z?pp`9SNNtv`1{NxoNhAmEgLc$i-RFUozX1>-QW@6#uSCzwmx6TobzKfV+M)L?)v&4
51053 zbRRBpTMO(4i$>)U9h}r*6`LPeb2sqOKmhLC$dlFL2|%P0Zn9e-?;tZp!%gG}Qu7cn
51054 zNDQrT%@xgT;B8Lp4Y~MSz`-JB(9<2;-CY@aLS<EWeWi6KvuJi-tl!|OKfZI*Llq63
51057 z3URm?dG25xgr%Vl<PG`=3;7m9ba5;`-QEJR*bR@*Z>g-Y8SDJ!wOh}Mj}HCp(V-Jg
51060 z-zUkTsx0J?xtrymz6kpj6A=KI?2ofN>ZLo@y?sA+#a?QLrc-Y)=c8sJm<y5?W^wnm
51064 z+bwSshNs_a5)#SGCWvGYs(^gnfi^)-hYU``7|y2Lk&_Q&^NJ7-hQPVlV6l;Xry=uw
51065 z=NJsJEzuR(+`G#<_Hq`{U{?psW$VlaGl}c(o)$lG3Aa>JJMW-&#{Y6cd=vtign8qh
51066 z7K_sos?-`q!$z6aEUvkq203vz{M|qxvzK^5ZD5m^b6e#Xo+e&L`p9jb==28YR04P1
51067 zO1LvLz^S~f)w`0@due6(&>1bK?>lo@yLpvbsae+7<X(~Zq;@(uC}8Ju;xkvOm0F%-
51068 zz|c${i<K#laazUI?||Y9A2>fs2{!DLOW5o|d(l308g4fq5+C-j=p*lonI1FLm7Ik+
51069 zSF#!m4i&i4dXs1(NUd-s2;6tM()+=;_b+w1+`oX3FUfkOrQeQClz$yd@IL%9<72+e
51070 zZe(BJWL%i*=Vm0I=DUP7FQPVdo`LV-FTltz!u(c+!k|vEJjZb;HZp#<r>E!E$c(~j
51071 z)v;!i8opE&GIg=T;V{YBNZ*~`U%xdntCTBK)8nH+)3LdECK-u^Q95jkLkz?hV)HSX
51072 zAZ2+zH9dOc#*Kj}i&7c|cfp-Wr?Ud5&>M|LNo<Bw7Zw)sl2j@sSmcp=_wL=kJs3@g
51076 zTgwB1fL(>-DV|465;NIsmXk`Pyuix@Bnh9#k%5c0j)pR+RJxE(^7rnIEXed$tJNf$
51077 zMFpS`U%13YZ{6s-7lv=>noMT&4y9yrb0?t?j^Dd__3BtEGR4ECqN1&1!=_D}+M1dj
51081 z>wKa*GApaBZbqJPi6H0-3|3EhdAVH?nE?^wNnW7=k)`PcP#{sJSIPup3Mw(=Rj>x!
51084 z$z-<Ls)p?k^F>7ieSIKbV(a$p+fiw_f;V}}%E}rl*BC*GSb|sSL5a-pn<H-y4-b#U
51085 z9a@wbcNO(h8(mnmz+TYjLGo`rv2<c)W@Z*>OO4y@cBoUs*REW-(l;?W8c$A*&+>XL
51087 z{oU^_U%q@RF1NHj_~3)x>+8yjEM+A|jW7?|&0sasg-f+sW^Qgi5sQ({Og0e$M5Wh>
51090 zz$}6L{Qg+1UtusPu3nv-j9%>-8;)SLxw5*p%xRYMrK`*RH8rd1n;V+jfjZi+{^2T8
51091 zfUw%IPpeg_qEQr$s#J-@^w7w}#6<tqm!Es?xy#ezQ`3O{%tT^-dM@=DJb`j?|0B@t
51092 zM<i294K|z2Vb&?p!h%GhP^i;0<9&U7^PGl>!n`;u(;HMOm3b~Y-rL(drBVqflbVl2
51093 zBJ-&%ma5XancKH-&oj#6;$qqC<mBWmN`za7hN283kQ4;r#-;i6<m~uR|6Ks**4>e@
51094 zsc15p%y5FvBxPmtOnfLAi-XHXA%Ue978bHttI<kQvx9?!({WZSnV%O$Ft?;NGdDCe
51095 z6jwT!-q&7x4T5_3?r;n;yp)?#m)F$PIPv)Hn-B<hU%omNkH;f@eYYoMo*?9~dar!)
51096 zPM=g~Yiw+^s}e-u=K4^G1ZgYWkMVRr(AeBUR$#<pv(Z%*Y-|OpFZUK2^m@HfuTV&1
51098 z+3dx-*jrOmmm`df5oIjvaHL}~y<WPUeF>3ljAUUJa**<Aoe?h6-eTqa{O#LgDJInq
51100 zj0(amWK`GFQaggAcCYv5%`iWsGK0$6Fhdw<k8**I@iR-_v<)<Eb3(RF%I$W$JUI@B
51101 z<oJj+N47$ZW_);rP<&=arD72uR`~seYBV)9h17-qOHxK!)mrb1CDk-+aHKzsr;uoX
51104 z0HY4&<a8<%v1Do<{P^y*-@WwGORx5fMBeD58qTGnAiX50zz`%@VT8lOc<tJ?o@-N6
51106 z^u)A9E-iRtfxB_nu3ar<g0sQ}YB-C%t8{R_=6&wLeAZ>LNvRB%NJa#qV03hR*`de@
51107 zpB*1Jo8`T1B2l1x3uVK4OOZO2f<Ld6_z_~$(O6g-i>6udEHDTME=KHPoF)f(`KDbP
51108 z;GkankWRPkK6mm*d(h)ynBg71&6@|^r_k20o>y{klBrbF^TcW7N;ESQmd-@d5^y8%
51109 zCk`y-f|R=u2rqdP`M(_U{~cj)lndYpVN@6<2Uo85v(WollDQzu=F+iT389lo^!@j*
51110 z|M&Md-n@5nVJ4o4&5h@BF(htC-_hvx>jjIXP>l4$`70-n9L<Am+3-_#nxr#~Oep~f
51111 zyz94hcX#jHZiWk;rNC-6UX(^4;!pwP^NZ3fV=53Ov83!0OInF+t&oj#Y5VHH+*DMo
51112 zD$*4e>6rLnZ#uAH-$UKo*VCL03BFkr6^gE|-!IbW=;{_AIXu(T*FD9>NDtD`RGyq0
51113 z=^un#&ae^4z0=B}G~~%RD@|RLl88hwCVEloFffU%M61bMVoB?TB^-YRNd4+<NJ$L_
51118 z-kc$LsY=ZyqPH4<{>xvzdhO<$Z_H25MQ3M5a#jGFf#qgqdV0h~5`=*_`zXPuOJr;e
51119 zV*UNBwCv}9y^#1|RvREh%{9*<!P8dV=vr0nHppUQ>h<@ZI)3yc-PBfK*=-(=&9;C4
51120 e-5mAZO(r|La)j|)^|iIg{l2zb4xqm{*8U%J^xc~P
51125 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51130 zc%1DzYmi%4dEdEDy;jmnT1hMI<7%&@-IcW3_rvyjtw{TDyiT%yM#^*L-L<p9uh@=p
51133 z`3Cl%pE+<Se`fT9E&$tA0QFz*InX=sd;jog3_vI%m-&Sg<<sg%6bbt+*dJdwe@?Sy
51136 z#mB<iuph_1cCvh8DgD{WF#zQOq{*B<b@trq$6)~HCu#olnWfW<6EA-Z^(T4$2pF){
51137 zRqz1WC@OpbG@zdV7vK$e4uQVFH9jKpC#-&qc-`jjUc7z;KN25b{SUm~qBYdhzd}9z
51138 zzr1nfm*@R2^HuAAAwD7ie5EIN@nO&S&p;J_NE6?hy_}@>AK#vKA+68<vic>&RS38C
51139 zJIfO6N%jL_M)-{A5f6wT6u&KfSS~0X%GcE+wkPeE9QQek&TqH|)-H23u3Z41jJFbW
51141 zbI(09Oe2n_J=D{}K^(q=n?5Xj4LE`L6wF93flqn{e2NPr_~`l@KD7EpxW4*DQCt0-
51142 z@cQbT(#-0c!qa&F`RaG1bE`iUK8kG|`+W$12H}@XKI=r8eGR_4zgS`H`I5oDU;`U0
51143 zoUVYHzlK_-2)OQ&n8Sp;0*7q**To!8I}x_$Uk4NZ0vU0#5@%QU6^-20BJ~$1D_zuo
51145 za1gDoqJPXQ3r+BC_#5~td>O96r{QDpLA+Mry>Jmu!y_;chhZ<|VS--*UJQIZ+M2N?
51146 z&JsAF9r`i0C7g}J5DX*aLueRAP`n@{p%dExWT3~wHfQ44&tlsI-H^gIj65TV5voDW
51147 zphE(&WDaFGzG96M*Dj<oX9Rr4vDX2kFowM}A0uh~T<3@tp$;711LEZL-h&V*pD7=K
51149 z=$FH*4yq6+J3X80FjE+z3?4#E5qVSGFfn@L-+&2~8y9g#L>dKsM0BA#x(u}8Gl_Hp
51150 z-U`OR^6C+!eQWh7myW1Nx({&5F!E`zD5tTCK94h3H{9=qcf)zSq3%9e2Oq`zA-oUc
51152 zKC-N2NBALj&Vm`l*_;InU}L*2ScDw2SujQJcP&^3gU1iS3PJ#P!znn2_uWv2vj~;Z
51154 z9wR=Bk(Px)j9v{n9>?bxhtA-07&#C;!+G{uy$ks4$G9PQ5}#$nEyEGsKZ?(jT#6;$
51156 zmgfDKks7Xh3a?{GMcUnoS}ve$8rJRO+;aPCRA+f_30v~ad3-J+rkT3~@boQnS2lAO
51157 zV?hG>=<>-j+`W8q`5f$CK6~mo<WDRuF2nel<IBhRrs6^@8#u9Tz{>8!N)f<X)QmA~
51158 za)Da(GX4~yMV(ONs#p2Ba-TAxBo&wZC-QOmZn;g$h);{>#3SO}!VTe^5M(d16m!Fm
51163 z5qFY8;+z2Nd|i7T_wz8fj=Nm5oQq3pdRF4JRmfI@)Eabqt2_AWjPKZ#BW~=wEJ-GC
51164 zw=-?y<vb+rImz0EB))e!@S-?%@~ClhTlhGR$T_;L2;_0I`ZkxsTN@MLbsll{x{;Uo
51165 zzSqdDZ;pHf>%m2MluPVI-g(?3!$<`+y@2mDg4H8DH($pb6Rc6j_xS3lcoTMY?<3gH
51166 z=iJtLg7I-1IQX2`qN6NPYS#KLd<A!?7rBkD@`yNs6)ulet&Q^+Yf=E;H-!!Tsx%}|
51167 z&>9nAO~X))X05+QWzvK!-`8Ua+~Z~*QDisp^MYADRm*pbj}ng4iV&#j&G<RrJgYbn
51168 zs~R8X?dI!{_q}x)9JcIku5bCDy}+>?T!sj*E)h@!%kS(W;-zr!Grhb~4+oc#S*umO
51172 zdu}zJF-<a>0f&lHB~8QEEBC%xLpg9?(HM#vU8VV>+RCA#AtcJ?%hrN^BpQnuP%@yP
51174 z9f3l5(U9gYToVKV*%+~<mKcp*b2qVki-w?{zvgFtoYM`MD=w9;1)0DXlrn~xHkt}W
51179 zT4-N!elA+xUn=UQSV=Q-2Z}fsCA(On^cZT!uou$TFl4yZZP?ZGI);m$FB`&<qXt{R
51181 zHnpOc$*J7f5G98gS`>w>N{O!3%ai634O@^KaioIinrih#?hIGxdIJ`!DO@G0$4V&-
51183 z5zW?P_%gExixp{cvJ^KOmh=lfhCegAuQ+?a9E`?r+|S1YnF{y{hl&-S4_#Q!8;xm7
51184 zISj3Q#X}D-J`5H_Ux<mhVuj3y`sP>A!?>(B71NQd3P;U(BEd|ikrHY$gYwVd=z3>u
51186 zTnX6H#<S^Y2bwF0IyR+yj8LY+s12jNscp_wL~0|MibQQRQ<14{$y5|-TQe1v+O|x^
51188 zQ&rNlUcVUXr=eUOs2{aD>PKxH^`ka{`ca!i{iy9k{iy9i{iy9m{isc$e$-|&+Bgr`
51189 z-V81qp4SQ_LV>#!lQ2s$+m|tV(?&1mV?U<CjJAb0_41fbh5eQoQPO^(>f(x9nWBg@
51191 z9;m?P@?)};$9jy>Og1#$V~qVeR1E9|MBj!kf?z_+YBN+4(6o21tjy>$SVM}q@nO})
51194 zHqw+)G_3#nH2PS_6{cy&auoO~$ZwNHbhD-^SVYhnG6tM{6IbL&LL^8C5ua8iU0VwS
51195 zVZ3S!4M*jqWea^A&9t*NWjOf!v_3<Nk{2gxCM0D{OB-;onAOH{LnrC2L5<|HTwy2)
51200 zyj5%6ouPm>?n3aM%r$^%1m+N61nkRPV|-*k0(|5E;mja#kZ=e%L^uQ-CL99p&0NP?
51201 zSU{+V5aUoObDf!E_aS7C-A{Oopa%$#Lk|)jhaMt44n0h3P9ZQ)YZ6eVH3>LEYZ9<P
51203 zjmK*aJk5JX4#CGv@D2pekkNTBkG-?F*IGE|OptIM=Qzy5Igi9UYh2&Sdz|8e2@=H<
51205 zYW%M79!G!L1PT2a6D0JjNNFMbwh0o#iU|_Jvzcp7ezG-`=ru_Yr|_i-%U~&=Hf&3V
51206 z7@xaP-K=}iXTBTHNgolOgaMe%?G82xf|z2GpfXt!_r_ZVaSy$j%c8VQ@99jCm+2jn
51210 z!YSAZ#;oC)E9U&|Oq9YQRCkams4i2by-_|YZx}6^1St?iMHH0FGLt}2C1n{6qcTyg
51212 z3ZP9p75-2aL1E!{uk??0w1v^C^H1&fdwdR=g&V`+SS}KBM?%qfQ0nl6d`@3SYoawg
51213 z9q(+-9`>Al<HmC@KK;-ek2+@_??vn0u{7L$SMluKicM`#%WivHCZMWfymv>RC)w@W
51216 z>%qy+_k8k|&;RkWS#j~L|NO~6&9<~2%pbcio7=W+m-o@9`tzA)kD`bYDxu09$--z?
51219 z#0AvipGk}H<<UT5u-o122>A4UyF<;oHyCreBw6lA6vj}E-{|ohJ^p|6SpDMae+e%$
51220 z`YUu-E)li~DE3~!=M|p9B&P@NW)KWCIH8TTk(i;5Bo}j(@|E%z1*6KOlB@^xnQX}K
51221 zbxj?NZ$CA9A{Fm&s|{XBzI5(~E@#-EJk%pQ8XX>YYbfAX+zy*+FU~Dma(s&&hbVOB
51223 z+txak?6TQgV-HU(Zo}0-hpYdD{TSMzJ=YSj3v5rdf|={OUC_?jMQhcyW#i<ikXzuY
51225 zLw&e+e@BN--guM#FAw`U^uXJ*h7;q+8RMpi1_WtOl=nodS27XWK*FtDk>q8O(cjes
51227 zu*7%6?#_hX-Wm=zdK#QI1$tNy?S}oPTX|#+4um#6P~h&D)H}%NA*XXFHFj4^Alld*
51228 ziNw;)9%t0wlJV=|hj-cAJx#rOT+^JMP%sgXwq);^=pKx_T%9RVb!T@<&p#up@k}VR
51230 zX5EYgPZ+-rd*ca%8#SHkN_J?Gu)opkR#6q!Yd2HYwCRXdS=O1=EmX~#<Yra!qhpEG
51231 ziNE-Rk=B$m81lDAw7y2SU2BYGUGc`=ok>SaV@oci=^?l6uB9J|c3;5NUmR=CdfR<E
51232 zW{J9OKw7#uEGvUrQ(*hv*=l6}9s33hvraQ4eSRj%Nj!w58J?K-HZvJbTpbkG21_P-
51235 zsgXS`p>}^b9MMyOkT21ZmLn2#M}od|yF1z#8f|WmHBYo8TiczDz1i&O9TQrAr_-5E
51237 z*rYr~)@Q~#8rY1aJ~P&1GlfjPfu@!jm>6-b%`7))<yyHht;{#E&=zT7npSD@XWEWW
51244 zwYX_r+P;AnRK>2S_RC;rik)4$C5POu+azW-N}UZX%qqpp)W}eOZzi=afp)MR^<`=l
51245 z!(c-YY*DC^RywIxLWP_@cSAVb7VGhcoX!3X<tjWDYLB(-ig;VxEe>zAAs)&Ov|)0^
51247 z6xFug-|Y7Ny^fen&2IL0`z`%#Q|z`&x8!gOe{VrtJ4CG8mBvPg2m7+LFSSIP{2n?<
51249 zpC2@K_BZcJBr~$Isq+)v_*&5x_hz&0z^m-5!bSKQZmBJ^MiY5I!bBy@RB4bgRook6
51251 z&10(;>;bH~q9WtLStQC!w?mm5-bjS!8kO0$UY665Tbmis*QaE>uAJjh!*M(1d{ei6
51253 zC`_g7rTn{8J)YHy_4-;nvN3(OAg@-+HR>o*@BB5?4*HKfPvgswO)RZ(5^ZI$iMD;w
51255 z?IFM2=4toFgPDPru3U2G_?AiQa=VnFNY<aM`(8al->W0df*@v@Bslo@>aN)BeXs7v
51257 zJi7Mndf?>tO+Q|L@`3y7zN@CH-&NiGyK3BhyWdsgVMwu5-FMZ|x(}=T(`s;Va9~0h
51258 z9j*I@)Ew&F&%duW4(Zb`yf88GM8SXmJ1_QqkAFm}ePSIx+%cKs-&m7-;&<lhE2~Gq
51264 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51270 z0yrkb!H6cLb%B&JC1rr71u}1K0wzGA41-(9w0sJsosiI>q3J+72?HI5g4J{Gd%If6
51273 zUZ~GNJ+|-2{)2nd|MLbyf)@#KI`$WjAA$B-=#M~Y*?-`^eLY`#-xfmp&H~QNowLOm
51277 zM}7`+dVYHO%unz2d=y)%AK^jX!U%a_@3A#^xQ2dA6yYW8`NqWQ1eVYJWXu7yZqG-R
51279 z>7iL@wOg1diHwQFR8RRC-@0|2syLz{mvV&dgytJKJ3;m(Vh~JRB!9a-U!wHUf=)ka
51280 zAr>-yq(qeLdElTOfeQ|i+6<_cambQ=M#w<79bjwr8DhYnL;*)iF?x1eUeBD(V|`|%
51281 z)Qa_s7GgAzkwUoCf=$m@P7^9-&Q9+vci?lu$*8maB3(G6i;t8T8Mz?M$YccE1N1@t
51282 z1pU+j+GN7B!n2_N=Y$tPgK6R;KO#RM-y_eHuaGa0XNV5(ljI5VIC+#jOiqy#<SsHr
51283 zUdLYw*e{b;$Yrts4n`@XGIh}1^e8<;&(TZF&Nj12wg<-kw(vZ+gGg+oiFAW^i7<DJ
51285 zW-E@`3RFf9gKrFK&18TKLM_SLYPl?wT&4_!k*N${2X(-AH{A{2qx2|z&(JgQJx9;M
51287 z@x&qS$ryVJ+{eL}r|&s-oCFURkKIk2-0PvOGKxq(L=J%dY@CXMw^6XEAHHY7t`ws|
51288 z3NF|%^3mYH$@5j1?clML+zyxmjE%lZh4AHn2i{AU?}r}2uqUT`u8J;28sVGZp5p-R
51291 zh1`nT7Oeo^PEVLHB{4c_!i-qxCKDD&hFVM*Bj{gDSc1rDH(?ndLT)C9A$|@+StQ2+
51292 zDuM;)$WgKjB%C4lfX8N`_W;1V$t<)Thu*{F5ZI~*#_i(odZ?X%cOOvS!$-RlunqyF
51297 z-Fp3fZC`u-H~xP0*YP@fez#vz-jnyh>E>#Ca*1Q&{#zu{zPUq1a`W7wxf5j5-0{N)
51298 zNcQ0D%p4gyc3^HlKMOhl%R=l>){r_l-*{joADlkI<|w4H1Eu^ckcje4<<rWO%A@js
51300 z4mj8GJvf~0D*ZSwl<Xy-Nx&}I4|{)sUNX)o^o&^^HOt+`$*@8#acai?3Qk*$%Sibt
51304 zTY*<H=azXJ&TX%nTjp~s+-?H58{>8}xUq2SG0u~fb0cwXtc$b58E$gP>{3O~4z4#F
51305 zpA{i%1+r8ir2>_?bNrIrp~h@Wc%<AP@qBm*#&($e4#O##$26QJYx&#)w-U}RnR8dq
51307 zq`+@%W==4C-DUbIHDlMwPr$_VA!>e|d<3IaxB?rcdIj$_R=c6VJ0SBWW3v%;ptmb-
51308 zKg>RA#-?1+=S$>^aL#=X*Wy|3d3)iUl!dcVBj-S<@JaaTn=PxC`9+TXW}843br7h~
51309 zEY=sP44Q!HL)BQAskz+Trp∓jLH~%p8TSIJd;>0{5;Z+Ti-a`Q^&J!%>V=Q-0&e
51310 z$+OW>eurdakp(UZLa&(InEpba;8>XB&IvE@4EF-WyXhzNLBMN=^R(d=%cZjMoM-B*
51311 zN&;Gy4Ki?o7kD%xS9rgZ08T7sbTM-UQ%sL%JSWMOyCueRALt0)<vJ>R{5oEWV5aAV
51312 zZwt>=^{BiQC|%ZG(GiTwD1$y(EJwy;;58@Vge`E%-B4P<d%CJ@OnL4Qpf|`ft-&`n
51313 z+l|$8d5dVuT5dxaWm=SmEs>6b70mg#eHVG(4zLq7kJMnz#h!?1(Q_+FD(o^nqTB-(
51314 z2Vcb%nhCpv(@<W9pO*;)PfFFvuKZ|0RVOYI=e7x5-f?SQUlZ0_3sd{l`CWOP#f!#;
51315 z^0c-$9F6Lvpp%?7f;Y>#sceT%Q@T2}uR~`kEviL3bRnhAToAlIlFjL!oH{j?EirE{
51316 zTZ#)go#l3(RCR|2K(08Wi<2kMGsa*TJvtkSV(WRQk7gq(fLivvhkBq-)5&Chws780
51318 zlhBj_Y<&=+!9qbT8Q8#4D>RukRqw+7F2wxYWL^br%okPNHkqG-78Uz!2=yb>KNX%T
51320 zhc2a5;6RKQK_(?Pnb#F9t6Q`zSO7?-I&_(<8#JNLl$5<$6+2Pfu)#il0dI6#m)fJy
51321 znN#Q0d6=uzCB;EQ+wxPB;o|l}UMoZks-D@AhrTfC#bl*JS5mq)mpl)y!?kXKs+QHj
51325 zgK3yqugguT^HZu`2Wsok-KmM4`I0y@Qi$m_v)aiH-IJQwmY>*RG=`(l?&0m;REfBA
51326 zyYeNs8%$Wt>UBvBIdH9P$%UU<_~_IRwh-cz`4XxR<ju~5g<;y-_NWGAWjJi~BMC$@
51327 zwiG~;ao~R(T9+DY6%&>S@o1p0oKA+%!!pFJ<x7zgVWT_qx?9Vtqq-B^uLdTb%BoYJ
51329 z3Cl>TBxBi-Dk)etrb-qpn^Gk!mdTV>*1s-Kfu=Pzt<&2uS~~PpRj0qwdDQ6asOn5q
51330 zI*%EhYKrKt<f?LlP){48qMX(8ML|9l_-Y3Eu+%_4EMp)amT`~|%LK@WWedoMWh=;s
51331 zWgEzcWjn}+Wjdt}afj_p!L-3CHHR$ZxJe-h)9ABZDZMkPcS1aNLnw@^t5{Pj4r-X#
51332 zuZj^y>3hm1E;;2<^f<k{y(CfJXdaRxO4(bbp4D*Hq|`pnc^`~s;EY~5Cxq>aykI-=
51333 ze~j;$M~1b*(i-YRS^GgBAi&D}L$DMFJM@86Ixy6s555{IIQBH4uLTnke_Tzg<Cqda
51334 zwKvYsk89(QL-MfjLDq#8X^>K%7c{&Ma+hBZ0GbHtG|tgV4wBXFx#aA8T2s}bc^Gs3
51338 zr_~`?(2;wyQANH?Q|NLWYByHzT?`|x<n5-lG<5lmRh;C?=9<C{&T^5<CeA?qNTU|V
51342 z0K6rouZ7|!)Z!?pTOEUix2&z3Q|Qq8O#p69ohM`rfJp!-0^3sODR0>h0B_lWIO729
51344 zqX10doCp+gP6YPioCr)K&L#k65C?%-#6e&m;vle}^ECp{ot!U(<~Uyn-NpGr=x)vz
51345 zLI*fs2p!~nA#{lIh0tNp@leHpM|e%o0C>~@ZvgNZDxKG|P&*E5t%-BO01@XNjzdkH
51347 z1Eq=ZpaCMnTMQ5p9s=BrmGRE-8b^QF01^GI28ifqfzm{Hn*k!iya6J@+f(Q5d}pi6
51348 z;qxLBM&Zx|X|Rw@>Xunuh)td>FV-ExLu8y>f382*pWn$xe3H1uw-Wa+N+&x=9o@I|
51349 zX9>c&g-@+Wcwv?H>(7!$P!~S_o0^L~v+(s_<#^)wFE<{0_*cuvYyGg#E_~~?=Ha*L
51351 z+?O8_-^CsvJ!B%Y$?s!KXs04ms3ZzoVhv2#jQ<BM3E~|8pLZtB;s4Uo0{-zpQO5s-
51352 z-9|}Asx=X93I$y?q=)t>ia$x46Mbv?2LiI}^ZNb0J^lRy{TmsF1_q1*`n2Xmi!3X$
51353 z;$$><^3ndD=7#!pcaPt3X1hm|q<U|})3YPu3WRDCX-CvMHD+sYHt*?{*F^9A;N?f&
51354 z`S$(K7VTq)`?uWIo}KNVe*Kd$Qcs&uW9?ldo;f2*=}z{}C+_^y-DN4i$PSYYM4!-I
51355 zllhFNi3(yc0OIyi8N{WExFyV6rDd%JgP@%-K^B;NTB0J66;Yl8#VAxzsug143JGVr
51358 z&t87yJrCdh>|OTpdpbe8H_Z06-IPCmvushCl9JQfnDQ!$5bIpu<w~@<H(9@Y`CESu
51359 zLewohE&Vl{AqkS1&>JT67iuWo9R8SE!^q|WZ^_hg!EfP$GecJ&gOc1^$k-`S{UkvX
51360 z0>~^ix1iAAGy`061!NC2vfiFysW;#h>8|(e+}*l$-S)$W);D&4@W|uCp^dkVw7mKK
51362 zH*yZcPiy$=AzMs-0fpgjnLzfvg)m0;3it~R+rt_Dw>oD8gY_Cpv~Zn^w9z(kk@<mP
51363 zHh>cJ_JCDD0yJN5Pb@ynDk5k-?yj9<^{S=LQqyzG+Kod;AG(81P<hjP9vc*<L5lC7
51364 z6hm_Z-gs}Dv)<-)Yuh#j>a|*b)b0=^sX3k-1Tn75ab1pIj~ol1TKEzBD8;|hYR$xh
51370 zH#ci&jj!Y1!_xmI9ponyx*hz;9_6YCdzrX7%xi*KD;NlkM1-YW7Nt3XGW>lvScA+}
51372 z+gjpUQ$x^S=c=(=WYR%9a5d~U%*s8hw<oaTh5}Z<gw~8o57_N%+6Qlnc*Aw|p-?ng
51373 z@3MzIk(5UZ-m%fz<nncDF;%s@0{(a`97*3W+}0a&I9l2T#hKn9KKfQkiKPO8wS&nd
51374 z*Z#uK#Q>8?C;5j7-HF<dQ3<r);5W1nHNmVE421Y{6>%fbD~-?u$VnnFi3!K9Q0q!0
51375 zu)}yY?BzQQuGD0EYob{V1wD1OP6b4vomL}c4W0IznPrJuovf_Z1Xrt^9T<$aAN-p?
51378 zOCYysrHVyVxT-CLSq#0|DysH#7lut4DsMRvS(ygizPC(cRUj)_PA}3D#kv}4W^gqs
51379 zsu)4ABCQz&VM=<tJ3HE2W6g~bzqi)uuz}6`XrG-2!U}O<d;^uOpcxH|A>j$FY46`0
51382 zOCw_m4Oxk#Ix?1G<F82<meW)s0|FzaHX7*$v|LFyhL-sv7FZ=L4Asg$Ppa|2n9o<|
51384 zmZ%yM1W;*JmB&DkZz|y2#z5Rzi3$RR(;1~Mic0K(-WU-iJjb2pfBDS_&-I8*Bxw;B
51390 zR!LL|Gn^DNpaOQcvnCj9jCObe_Il5<bQK&7G({sDL$wiS#8w-wi3QR<jSyThx6|QB
51396 z-2*vSkR{kS3rKnDS|~Gp%ZXrLqfpE0({egAYds}+`;>@PrE}P7*sdj=uV~iiyAyF2
51399 zJtV~NDKmzzK8hK@1AW!`+HQmM)es$8%-5K(uQhlfUzZcM-<=xK^6^CY8Y0)<6!2Ir
51403 zxt-sy)~(UT9)Emz_`aNH&+G5+dY)e*Rjye3b~le?_#JCvbL_?}-m<zF_^A!Dka5fU
51404 Ezv-jxbN~PV
51409 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51414 zc%0pO33OanmEe1St>xEVzjmp9sWz!L?YnH3RFY*&N-WDuRCX50lDBw?V>`hibYe&x
51418 zze2tZ?Nw-}j-5Mx<|6~1uMy&h`JL+V<qPMa-woq2s4d4&KXmNc%OAaskhXbv=T015
51420 z%<`pk{8!a~0Q?lRwX@4-j&{~|CIJ5jfHQOMz6%#?A0<67K8fS!&L2Iuy8REI1zwk+
51422 zhJ5aqz^B)K{mMVMJlEK&%|8RI2i7|G%)38-k8A8_MCShz2VR}MoWc5gfxn%(e&zKK
51429 z)yegCY`<tBMhBU!M%T00^^)Z>p+fn|mHqVr{JG}js5AE>tzFTDr`9<#c}-lE$mAs9
51430 z9|wCRwa4K7AmvDo&XA+jLLTCelNi4b-gy$^-bZ5Or{p2>pK6`ttF=zrLC(<Uq3<W8
51432 zwz-qF*YG7PwQrMGV2-!J_+P=d`{8{azDdD2%uSxHeV-nveIM~~eug^(wgE5DNq|lQ
51437 z2IyCn(&pAbhmH!2p98Br5B<kMau-cmbdy1t9ibk0G@#}_c#gyO$oX!NzzR^TL4-KX
51440 z?Phd9o1b9i9c*n1vru{(Vju-;R=|f#w4Jum7!6Q2wNZgwCx1`=j{KPXi2Q(jm%Kv0
51444 z&!2FA0j18rgMEuVms$Bu{wsjLpT7X*OF|mTKNd77KgPcfqu=0RHu9hO|Iyf+2-};|
51445 zY*%W(LFVsg<!2gu98au<?8%2nnu48B_@1^ISq%-Cu$yg~w&s@#o7;`|I=p`m@87}u
51446 zW3yc!`w_f9fcLv*`xSV<4)4nw<80m^nC&mY%YhAvxTgY@$b$lp0K0ZO^dX-b;}hgf
51447 zhbicjCTSS3o~LMe`{|odGhjO)Avy=;3VjyJm&iQyzm8c6{Xp$!P-elODD9%-W~P9;
51450 zfR)d%@<~>{?byk)%j7N1<;k-rFOmmOUbycxIoDjCIl6k1+<X4?$>ZQXsDT*M0IUEu
51451 z<sn`sgD5K_tPHa<#7ZB_-Fzfq)~Z<t&Du{|EQjQOl)ooGCx1wOTs|ky$X#+k`b+6s
51452 zQbha~zs9}7ouJRq6Lb<H0ei?_gU7!YBs<2qH7wV#4Jz-1S#8WlFt6oUzo8?!9$}a_
51454 z%ojUZ{!Q7pIPPMc-Ta-!#Gz(Z`bHQf=<8$@*Kq_B$J=Q40!}Z(?j<s<<4FvUBma*4
51455 z8<6*cVP|FzUILmeEGMUC456kckVaJ5=-J%nn0`3Mn+Uaqtzu&%3fnUxuy=55ALk*4
51456 zrJ>Bj!-J<6p~QUO_}&c<2lCUJ#<)#mnAf{mX0XA(VJkcv9Rn#5kh38}7vs(kUmyh@
51458 z*wo$NPq)L~xgEwGZ!jMZuW`mmnYCutakCDab;zuPW*snV)vSGH?KNwUS-V*+f$WiL
51463 zD-4)^h}Mn%DzTYe=B)0fw#*<WgBtb-w)A`8Hw$d#F2<X?VUN`0jW^rUCTlgu#ZA^~
51464 z#GK~XbE9mfO|nfeo-pd*H@q2HR2JC{3?n1P5tX$!BB&w%4w7Rua1cRkrmhueTN$L?
51466 z6rkS=(I*7w<TS}Njd)?C9q0-IXGP4w*g3$*zHeTQW3~`A>EX>$(cG&zh!L%(T{)TU
51467 z8Pcjh5|cUZqqvizZkpxKHSAt$*kWXpJaBCX%ZqSr5yy2>&~$QOajL3mvo8|o-dSDR
51469 z&KI=RYrJ126BXT8(Uz7b);WJ=Vm-}Qbgr`hlBO$304mF?x-fs~D#vj!jh;9fOJMI+
51470 zr%ESc8i2`(t3K+3v7}Ds7mrr21}MiC6bd?@*VW1*uBQho6%!$<t!nxg=XD`-=xRH4
51472 z18J-+Yr1WIaS3`f9J3)bfY88Fbg5dcMnPJ-Qd!Z-!lF)Q5jg?v=&as~Q0wgSi*B-l
51473 z7%z(CNVU4UT-9m5S~WSSYOBCca-v$)#exPD2<c_uNv_N<>T+^Iw<IS(1MtaGQJ0vw
51474 zK@!^Px_o3p!$D*>YLJg5;7zUQVlDxL6>UvhgSFPX#571~@8Z&Yba|n=n5-tMnqJ<w
51475 z2xC!{i%CjRmkYYJlD`Uu!=!G3W^y74=8~LP*103cbh-iy=yI;8TMHUe>jbt0azw)!
51476 z^zu>_QI;kdwYI`ltCLiwCUS{};n)kC4M{O(p?M&o0<14-Q)|g(R4NlTiK0SuEeb@|
51479 z$I;}aqV6lq?p>VSXLLpr(C=gY{=z!(Rt_w#d%d8-<q6%BN0$TBnpk&X;f6w|0ni1X
51483 z*7-uRt_WRP0+A=Rl1}eJw<+p{roljC@P1>k*ff}F44yXzwF1#y`CBoJynfc;6&Y>j
51485 zv<i|?VY&rxETQps74*)$-U*J`4L&ig-9oL&<)I`-_&3CeBKJLYU9UT(DKtI3JGU-U
51487 z`oU|Khl=`Op%fe|>O=n&Dp>dmpbvwJNFc41v}ueDAllt)YtzYT2qufL148(Pt!ao-
51488 z)ejOLfgl#pgMcPLTun2yb%jjm_DcTfS}Cb%V{0(y=w>vnWXz{a;0-3WrY~V|Deqmp
51489 zCTOA-y(VPDNOb~3t_`Ahl6{ffxui>#8~t_(!=AA{36-VQq%Okl3d2HWISTL+hP)fU
51491 zSX~wx^oki%7RfOX)3(NtZe!y+lhe2;YH@o*gvg8`X`Sp}ENNq~vm^Cpr-pQys?eo0
51494 z)Fuqp(Lj^nJ|*xxWB#3mbsKCt^-q39lb-%{Suyg2acnFJp{mJV5>=DVX$Zh0`MOkg
51497 zSXcpQv4DSOMyOi2MvcBh02zIU5sxBtC*m>aF2rNd-H6AadvMJu0G4n~1eS441diaE
51499 z(0w4|v4#TAv6fy2@O}dv2k<-!owX*QbpiHT6X&7<BF+O0hnhGK!pGYhv%ZP7*cX=!
51501 z;c>v-(U|WFYccdE3=q-ZZh(mXBz$Qiyu$zyVa)&$;hlx6c9!DmQuM08@l$Ymf-qQ}
51502 z$m^D)I-i=qRNt(N>|Uex7(Y+mEVRQ3a{IcpI$7=w1|(6SJe?yP&s`xr<*(r3l2$=?
51505 z-Q<eU0q5ylIjgB0N9mkEIc_)MDE9>Zt%6jMon<`Z?@eWkyd2K+*#V#=lg;$^ZRbpK
51506 zl1Pne5E*oGK-ZFNN!h7rwT3f!uM)C}qSNnAwZ;5Jht(45EVlOX-Et%)^A?N6@6TsK
51507 zirePmoT}d&Y;lO8c+~HR!>TzriGPRu2RPBE%WVSB0UdLUt~-#fdw^g<_plScGsH{5
51508 z{9q=N?cdG~_6C41`8U)K)t+t>t(o=(znbz`-MKa)lnJIr@Kk>kp1<OcLfR=^vk}^p
51509 zA7q?u=LdrzS6-4H4v041%8BkoOtsiWkB~Sj23L3ev^ZHgxWnQ<y7&5z%4;~&L-^l4
51510 z{4fcT(Q9@}XJ+--{9;*Qss)mXi`*V9dz$pkF@0Cdc1rwS5~3j<)SYN!A{`vS^;Lf>
51512 zq?Zhp`(u=HogTME;3+qUmm46zlXykKR|(HEtK-q?3b|0gX(zq37p;!AWq=N#qQs+#
51513 zp-j;1TDc&K1%90zXxdaYPxl^K+kNWPf8;WKy{=ThKkQ1W(H-evd2-ZEUHNE!v1912
51514 zf!W6ozWpmx@yzkdAG-eOJ@2~n4}br6ALm7Zb7d^05w~g=Z4QeZ@ASmRGrbR7p4@Y8
51518 zX_TA6n?}m<C$|UyU8RmJurfkN#I0Fj+8Fd1ycl{w50sK^nJh516<_&+D9VD$TipS-
51519 zD%xe=U|-1Bn)7P~g{R)G&Mnz19@e7!7w9j_)v0pU5?*}j#PpFKEevMnR~EF#K6wb(
51520 ztkp>Dm!IMu<sKjsyKgl-0snR#CViVdfzT@rPp~zb4>A`}eI!i7sJq@a!vjo~13}~u
51521 z+572(vK2fr<n=oovfG}H72^5tFZ|ZS`&}J#1#!=J-_?0E6>b^M7Q7gJJ8NGi?*=Lo
51522 z#9emy1&+)BaSysF1PHmrWzins*AOBv8&)kzhh1F-yBOWGCuXyW)Xqt+SSTRK5DGZ2
51524 za@?Gs;{WJy<Ou>1mZ_av#yGn-nTSQ){1&t^5i~3KCNc%i!P{Ixw<>!AgFPW%Jm*V}
51528 zwd-vc)}P*f`oOk(5}p=Ep<wldT(17%fZHQTPD^C>k@4)=?GtO;cAiWlVJ+aB`?x<R
51529 zJ>=0@-3|uoXbrlpu=ABbSKM5*><)sjwz{pbO=A~7S2ge=;J1Vd7)Av`geno>93<jp
51530 z^Fp-TYHsa-z;A(2Eqf@*cSOShze6ECv`1?4@PWaMlgngTumy`(H{z`<HAmZp<#+BL
51531 z9K7$#T(W=rwy<4r*;H@99^bofr;oaGkx!gB0ipICe>xS<9>4rS7HSWEa^Yi-a*~z0
51532 z{8mRIkoO3J)nS#jPWQc!J@%*(X_r6t@Fe=ptDvjjr+D{2VK}Y_4fG0&P<-8c17=?%
51533 zcJbzB=AguG69wX?ZUI>9#>}O+XK>KWS)}}M5(-WVNAkOedwTgLnhFmd>VtJ(t9^_9
51534 zcdC;(X)Q-B_}@Qs8zF+l_Bf5B{RG=g`!S^kGsD!T)yNX(N^b8M-RE;8;w`PA(VV|6
51539 z5A06%IC#5iAAaD8yk+#<T`@;QY3Wm=d3QKA98dc>=g_WHPd@5!35q-6-v8+IN1}u6
51543 zLKP&=E(UzwzG+POiZj(>VKIN(`*zCy@zU3heROo>=yvqupVz)i-UA7Igk+ynzzl$_
51545 z{^o5K-$bdm+A;k=e?G5Bn29o<UgL*IhNxw)my#K3xDv_G4A<n!%m(YrHtoiSKSv8;
51546 z|LmX|c2b#3CRIV^IGzU*TH>y3q<z$r4!cSYTh~a)*Pn6(GwE+kzZ-}dFZE0h4J5|S
51549 zgE5Z^b%Vj3)DWBz0?}G#0+8@eF;M|^_DstlrbSDMKYQ12qh!)O-RU>IP<{ldc?F8c
51552 zyQRZhJU9g0yk7gS^k=-A<Vp3pq>stghI_jqMxLujmI&L}jP#3h-PYLHJUlhhGjoKy
51555 z<iutCPXc#xV}q{qu{q6Tyrh%y7Sc_->%5ppBZHN?dg@6xQ;*?^jHCXRU9<7&J_tn=
51556 z<AC4@qNbEm4=SpwKgj!bj1G*nwkwXbH@H19n0Lh60-<(qVz^waYi;uM_F+gqyKn1g
51559 z9{Kmc$PQ#AmT?Llp;lG(I=pVf#|^Jakt}*uig}gyU+7h6g5XtInr-qb<49XSD{bXd
51560 z#UTqPKw2TT1XZg|WcHW$rAi^$)3<XtllOD|gRb`R)!Ez53`#xE-kaN7$)e%KI{f_y
51561 zddw)!4bv6;|M7BX0tgBP-QY>w945lB!)(MU%&YgZ|E=k2iK@PaRyJ&_#IgGXyfiYC
51562 zTRg8~#D`<I!!<b=pT9jKri*U-&|FUI3WPk}ySjpvU1Kg9*w$ei9uM!mr{w0X(UK%P
51564 zOa=px^YK?U^7MvDMVkk1xM*NT6%05Ot4um*M<XF*3DE#v{baM-dCc3@RxZxfx51oZ
51566 z-zA8S%x#&D-O+H&)JiX1Cd1?*<7}nm5@GNGH#h<w!CVP&oLm?*gguQDSV+Lu6L|3l
51572 zL!wKyDVc0Uu}fjUzdNj&C$WD^-$zQMx7>v{m|4}Y2%yY4cFsgfDLdTYtu#krBM1fH
51574 zw4-D3xYOck^*hH!uP>M#-<MT_itMsWwpRNU1<u`af15Yq&5Zf&4vWie^Ev#a!NF5t
51577 z_gO+yvy%ZDX%CeP-7^tik%>l8yuoat+#j)et-MX9HqVgTVs%PX0B?|c623OSnsM2a
51580 zVt0U7?17R-sp__c9FAZ-7)d%E-ni2{uErvF<imYwE7-fY+vjjAo^UAWv-&);&(%0B
51582 zutWAL?vNug6n8~^UO2T?+C6RVmcg{usoFiAeuqbtt#Ul=?TWWH-3cXbc_#$1=+<{a
51584 zAG5u8@`Z%gjvfkoZ%fnl7?9P-zFnL99%N}Z>>(m<v>QhVcKcx5vt(I15rm!AxP~$I
51586 zxp~>=kwBkHd#QXVqNSXS3n*Tq^I&0*8^#pEloLq2+_-_+eEAY@+^#h6$R;!}r5iAC
51587 z<Z+m83sY*1g@Y~!NWnCv<~x{Xoz-^{Q+bKjfn;tZ5y@CR(MXr(aVjyVBj^gbtkGiH
51588 z-Qx7+wfIOnT1pozZl`K<=X~yfVzGLAy41McsWfFy*<XL=WTxZ)MCRn=azT$0b=*2_
51590 z@>tU?nr|Ryx7eadi`Ra*DIXlcd{ANeU@{6Dq_>_ACNUq3LO$rN=Yz_xAs-weBbjs}
51594 z`Ad~EzJ%B5;Z@P4nCBZW<WOy09-G(Vh&XJjO|*-ih~4g$-Ol=n^S$(~WRRR=8h#-a
51596 zRP;{n*%h$Z<4*kZq<4D%-WcVR%YB`bNo();M4!!K5iJgd3B{8tw8+uc7C&dPOT0DH
51602 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51608 z)B!?i9!YtGP@1F-AzdSz1e)^l=vzr1P1C%r_Y&IGvO-F-@<>+}X_J;FE@<A~``$a6
51609 zkz^89vbvszIrn__*}t>T-us+8hH=K26AFnrrb^{WUgkl@gf{5iH#NI!&+C?4nKAtd
51612 zdt_-j@xsM-Vf;B5@4ps0{GT^Nl|P91uD#*RZTsJT=Qdy-=5y)9jfa;W9)BE$gzrP~
51613 zu^X0dJ0-s6{SO#xfp+ZV(hWyCtCMlY<QTy0ICbOAXR4oK-7sFl@l&UdoLV0H!jp`N
51615 z;TLJ>PrVCry3DKh|A*aqk*L=H4N(u!`uETL^7d=&qyNVA;+r_|-JR#s`23#lUv{kC
51616 zf9VP5MLp=0>3}osPf%tu50spq66->p!w1H6ZMqI!31nruR;6~ya>?+^pVjfe0dAOT
51620 z^UdZjTjG`vTi&)Fu)b_d*dDU|n|-hS$Br4t1!vj$>AKI$zv{zwzQ|sgn_uDlk%bEX
51622 zy<A#p!}f~?rgX5<LU^SWyS{8V2iv6Z;NiX60RCOH3EY->kyr1pNDr?FtaMRc*0EBF
51625 zt{b8M-(k*Cc(zu*!+p?q3C6Mh*MRSM_2+CC%s&jcE>&OWE!Ee7&g<0v4vbX+&kiuP
51626 zkHaQ72H!nkA@j6jU-&h4s-Eq~T_b^CW7mS`QR<wvfLBxM0<-abYF%WL+@aPb*2`W~
51630 zldoQ$DYgqfQ&4-qT54?lI(!si{1jO4Y3M%&nmeQFVhbAp?A_$Ax}k3h;BEwn6D0X|
51631 z(7<8fI0hc)1Zj1yHveW-wwr0i&O*5ikc_;e32O69EKSbrWuB$eONW@}#L}6Q<dM-L
51632 ztK=2QUmm{Y^vx`B!_w*NS?GrAZ@3;{aKueM*2!G-L{IOLXXH^iCr4z9^p5ls={4z_
51634 z#rYYqc`iHvb2`A6&hSZI;KRI^=Xo1X@Cf&D2YgIi;u2eBzhFOOKVd&&-)Dc%zQex7
51635 zUSa=(y~Mu6DzHPIWuInGu}`qa*hB0Ah^Tjf-cEw{4zUA3>*v)IK<$^+KB)hsIt%qH
51637 z2g+MlA-?hlS09Ga|5+V{^0QUc#y_mS1O27yL8xD<V#NJFNRfZ93Nfqt=IR%q=bkF)
51638 zg`Zr-D7Jm|7f@cm`a>wEt6QL)tDc5(yt)s{ZzAWy*lHEv_rCj=P|m;m-*N7{FGK%U
51639 z>=z1E)a}O+k{zpljp8N7Nk(>;!5joWYb)SjZ$c@-3S>8Us#n>!8OFV@!uKoeMJO*&
51640 z|8rD+mOTyS6YOK`5%wVa5W9<d&oa!xt^*4_NbPx`^D>J-`S$AHLitN7zqYyysIqrI
51641 z45j=oYTQ&^f&Ra#-Ua1bs6qZu@BAUi^Tay`P|NS`gi^oy0T}(it23li&?9@3G<%k$
51643 zC8%l|zK}ieQTX=5w~JDk3~%8Xd{Vth>8rH^@O7zm3w(9(#j#6u-+x_$uYKQw@0;*_
51645 z;<thxFR^|oy^uX|-U=Rw^W7jd=bwb#1GWqvh%?;l9M*pv`rFxgD9!Bmah-&3;i`cD
51646 z=W0&(SL_-ne~NYKX`W?VoaLA!JOg_dAr+rRx)mmwB>q8NyC2&7>e^{&2kY8C$n9RM
51647 zYlGy%r`Fp1ZD=2=YySw^sk-*7OyY0WwZ9JS&)2oT1nrY`?axAcOI`bM(DT36wI6`?
51650 zB&r!0=KTU$nwFV6NJ0+wHb_sV`WU9JcKsi(8`IkF{pSEm2H-#kyhudb4pLb`J~POJ
51651 zQe))uFfa45Ad5q;kOX^gM=e)aE>>Yz&6gKqF-VbZyLVP}d-l&)dc&2rg~g+>^H<GR
51652 zgw&FfFdt4H3diFWwoqZkWC=6p;^IU{h36`<#iJb+A(xCN;~f<-7hAq4dc16+SaBC)
51654 z#*!5_JAY*1f{zPCP|8)rY{grgM|u@sv8V!sW6QD1%d-_Jz5hZRw-(EX%N1RDK3)-1
51655 z3v(Zw2jKAe`B-Ik7P<-mT^YpM;KD*|MS%v6+Mr8q#VTDm-i44a&(6m{8|Rl|71Qke
51656 zBJ{*?%!IXmto1L37a_3^gSIM`;^7LLo3F5)2porYcxR;vYfU?sUUaa-2=SuK4lOJ!
51657 zFTrsnyRe{2un=1Yd6E+g9Thnj0}iCr63C=4&dyi#$%%>~IRPsGQx-caI#M@iBDTDu
51658 zKQs};K@>Nvu#Y9cl@C|sOdJM_vGcL>Kx?H-PJxDY&o9n~m*y7clMC^MSf#LM9>&6`
51662 zUfh8QpaLsYabRl>S`Jz-Cm?c=QevQk!$7&>EH1{*FUBfPP+LdEmD{;@enna?Ewogu
51663 zN0PU7RNT3pyXSZAQ98qM=yy}UC%3{}#jEC5TrOC`rHP6&i(3v%YhuNYg#(HT_rY3-
51664 zsaZJGg8D$-iSw|+K-Q6oCt;da4=dw11$Hv_EPy0a!2cBVHZIm>mT-kJcM|kftgx{Q
51666 zk!&~tdh>y>-fTz3pIhPh41nVC8O*JS_zdM%Bz%T*D>6PKxfLBgqq!A5KAUnY27ET>
51667 zR*d+}=91b%RCJ4=@?<Pu;aB6f>8RxD27R@`o0P$hy1{g9@U$`*%dv_*dpUto)-Niu
51668 zqM-Hi#X-Ip@Rb1h@R<bp@Yw?L;WGvD;WG{L;j<Ow!)F`FhtGD951$#351;v5Y?Lgw
51669 zGY4b?i?JfIP^7hm-Izz??aEa;vz1QRm|I{^OvNs<tjVRpBzpMwgb1Vb-P&5O*mPwy
51670 zy~>u%ip;&`dGL-XWlx=YE(g<_i}exbeSl4YDQ~0+`*%}bu%G#!r+`-)OAfB|axco-
51671 z5BdNBHs>F9&C*~;WgwULk9JfBe-$WL_+bDaf+b?UR4gBxLf-(Y-G2W3RB{TO$vi|r
51672 zaK8|m1|cK#fQE;`iTNsi0F%J4rU-1s!X_%_V)n@Sd@>drJr6iX8o^?D1z$x6yFrDH
51673 zRTj~?6n4*Flwxu$d{Iivp@j)_xhC-5Nt%(IT&(Dd>-X&<x;-U4NyWwGWJQMP3d2%y
51675 zs!Ls?1%@!H=^_Tba$40zaun3GwKh~S(fDL?3W?$>j@49%!YG=qu)Xv7*eFDH<X-KJ
51677 z(S`g<7x%!v9d8(&3(q!;PHZ~&y=D}1mEr7r5iI2@BiZx78`>BMby-kY(0ru}W|T=}
51678 zw9mAn`6bBICKS=pK$Eb2^04z1{FAvA69gS?%KJ3wso$0rqfF?>Mw8&G>g*-Hpz=8d
51679 z4tO}LX=NH(BiVRT)r%@kO$FOQ1zu&_U%)e;$DObA!!F-(nf{%Cj(gmd0jSU9DnszN
51684 zwTAUpYSE0_lq$}+U8y4Y9e_s#xKpVjz+Fle0e%Ny$7=ZQrWS$Uqf`<6oKi*b--Vef
51685 zz=xD70^F-q5#T<6-B!bQKeY(_0i}xIA6BXe{vga$0e(-ZBEWg2iU1$UT`*IMThWCt
51686 zNP<{~(-XMCg^6s%aHJx(%-*I2>kjQyYJ$`B<L`NIs$=TCDfGxpclhuPr`Um`$4@S?
51687 zeaBB8Kf`8^-+bc<w&R8)%g0&i^oirgSej1YU4T2p!Ysm~tO-t}NtR-5%83;4byBI^
51688 z-gZ!#qcY33G>4jnrhjVsO4DOacQhrMr09>LuSBnl&P0XC-$lL>c{cKR<U^5@k-ZUJ
51689 z_-Enog<lRo7k(=ArO=K*#&y8?s8euUXMfZFP0J_DIn!z58~R7|dEJxz6rbTP_Cxk%
51690 z_9$D1bF@Ld*^=q(&m#vwLKB^&CH38!rXlU-Lb)-(=c6$Cr*O`8(HlFw(@PQm8zJ%T
51691 zqf~>G)lvN>kfQ(@szEy8n}BbSZYMTE+W<NZ5KS-#IqqS7te*|gZ3U-WJ2&-joT<#l
51692 z`-WcV8&GdGlzvIo#mmeg{j2m%=_%<tsZ0E4@mcYpXc3+l_VJ(b2YG-!1GF7<!>QbF
51696 ziC&rLm5E-N=#`0Hndp^?UYRJBiBg#;l~qba2iE!1;#1-$#K$&JDiNg;Q7RFo5>YA<
51698 zMHTxTn-Sg;-W1*tUK3swzTJphcp5Mx-U-4xL3k$!?*!qUAiNWVcY^RvsCa=(;c?+n
51700 zZv!^ORUlji!c`z#1;SMzTm=;uaKnEAyYeUeNBsNz?=?*PCH^H|;m-md#IlXBY$Gh&
51701 z2+KCYvQ5PT9PkVLIsRGxG=GABOvP~*KMP*-I=&1TaQ+z0AEWtWG=EH;4^;VSeu5w6
51702 zi+n%dOS32VDDUT8_-+8^;>@iyb1Ti<s?G#Te2{nZ98dEY55YVeH*kTy!`^29%>D^x
51704 zp54dpX1B4^>;!o6MSwxL4ZhO<9JTFrZ`t;-S+)bLevA#WZiotL79(q#APX3$wJVVB
51706 zTvxko#&5cz)ygp1;oUI@NFR;Jb$7{nku~BMdIcB%q5Ge)%@-+3&awcsT9}PL23B*O
51707 z^3I+jmq^$ZO3H2e`aUZ>-hvf;1@!+EtjJxU#eJZwE{Ln5ns*55yIV!R^*w7)^_154
51708 zXdE@-THn*y*4N1))^HhXa@6;&?=jR-6gE&4)=^yJQwJ7z5bUQHEYh|K*ZK`yZ_cHD
51709 z6E5|e@TA+o6ZYtt@&-`RqZ2+7ScGCDUa0%vBSR*aAt+h3C=DLpPnh8&g8k8NHUQ_E
51712 zbIml%LBBZIph-T<d%1-xnIHar2mIM2WQhWNbu~S%X-ubTvAzd$)-K2`O?B{%cGcLk
51715 z`An5!tw&VtMAHKH2^)G0><+NdS%@-e;P6@YcpY}W0egLqvR{pitD_0PjQ!HOUXgk=
51716 zoVpD-*Loy~;DL1#iW}h9dJGVcE5Pv`5HY7A3vku>Fl8-dvM*1aKD62OBf@3p2$z|$
51718 z%$%j)oo-R>S6OSEZ>0H3e3!}V8ERO<03C&o9@ecHFs8tc1i;ruoM^icX9_e&Aj&wW
51719 z8R|$ArNej7if>04#2O`hh^?(IU(&p@wkMTyr@*eHGq<cpOr$tRZ|j>W3Nd<zZ->2T
51725 z0&+~&NpDCmNe@Z;r6%$Fa2mc+xFmd<;aSba-{P-8K5`VI>>&5S`2&9uW>d4QjUUA~
51726 z;4e-rv>$PwV`hZEGQ<6i-00zHfTxju$6=veYk`jyp7`sIfb@uTMw*o};wAAF@gea_
51730 zS&Zgin@ba6GF=wWugjT{@EAA6V*Hid7-+U()49Kj13k@MzbnP}w0X;hohiPj&0E&(
51733 z3oXJ})RuB0!+rENdxL$8eHr}bW9)8-_IT@%r~CA^Qv;qv6*<MaK9|}j)b(k0sGTIV
51735 za$23WwZvPbHd@gfd{7R9nkxn=nk&!=%5GcWBd9C7HV3(I(pqz-{Yxq>Ltv^`Rbu;^
51737 z9qMVv&6Ho4is}f1>`6JTtF{QS_}lEy*aH+L@$S?EeSw-auC1E2W|3<>^>(Z1#ZDTK
51740 z${IrIS!7EcPq^MOIHhok;h_fF3Wi)mpOW3`8v68X?H;F*Z|6EnEvnC}*PH-$s-t_b
51743 z;QVruDW?Eg9bK-Co@BG|QAQ<obh0)&OEExu53P*0)keEXN7_9Zaxz3GH06fW!+33f
51746 zUh-x<#$?i9Y;E217rvCkU~Nyy!B$Vp$Zrh`I|82{i$~BmUW7A#cXpt)zkgt0OdRm*
51748 z-?6h2nVm0K@L$d>2^_uRmEi(yJ-(oIa<+S+V20Iqu>cQ<dS5o4NcZ&u@BK*M>uC~t
51749 zy1gEqjvIEA^(KpK33$yG+27NVZOYzsa?exuFZsGhbfxcnG`(lKV<??-BPYYvpGsHr
51752 z(0KVr;3da;3SBASMHKi<C@2U!aFcLBJWi}h8f(dTH0-dk9M8$?*sJGG4^>!OT{4kw
51756 zmhu-$BMxrQhO_hSgID+Oyl>x!zg})mA3OKN>gRVobl?kr{73hRvLx8khWxO@YnDw`
51758 zsC$qCH-}9i2}BTr2d+9bkm-v=B5lRJ+3ojs^kq$gY?1||J>>SvM!h7037SJ4$=2&X
51759 zy!!d+TS`~|#VK>?=AMc9Zf{TL;Ei`q-Tm&}!*ivnydiwm`4fk}cBpyz&JP!N++5JO
51760 zeh#=EW<!PkZcx2}LopNM^(IskLsG@)%D1<ID8qbM-dq$~jRChJi?R-AQDjme)Mj#J
51761 zbFvKXL^L{l4zFz1y9as$?k2FW9QYqsSLdeUb$l=u-aE&CSy(6+S`ESZhp(MF)Ex`L
51762 zR`posV)uS-KZ>dBlkf3o!QLL<SuxMfe@U+sB-kops>pn1fw~Jm5Lo6C7bIol=v2?L
51763 zvtotOD3f89ES&==wh^cRc`j_gQ%n{mu$pt|mANQgR}ZwXP;f({($<=aH#bGVQ-C$=
51766 zHPxDD$;o=%EXads**yux$EpUQh=Ys&)3bUb`1*j$W3}oX=2RrtoPB-n@jLh0+h=m}
51767 zuD^e%^GHiDI@FqTVFc=|evN$;xQH`H!RnFlH44yja2<r8ywEzJI4i}(L`5a=-v{ko
51768 zIkOzzwJTyW$=odH?2&*^0-cG1%V~-G-Tfon6)?F)XC`e6Wm~zoYr3?1Nbl^~eb)!4
51770 z)SLeXHYLF-n(TguSMT%<bO+qc8FzBrX=(C!d)M*mE9@^7TJ?#_Cua_1;(>IBE1b-h
51771 zL*X3i>j$8o*M;qndktUoa8_G27z6jixt&vlL~C5oIvIxui7#v*p-YJn+_zwW1d9W|
51772 z+USdP25*~h*dG8yTsE4FHmet`T#%YWeJ*b-*&N?F7V7u4wnvh2y))L|bM+sN+^TZL
51776 zt8aV=^zdC^`-|)n<ZB}rP46>*(ZeB@TX1V_fvts6j<yygDemZC$QwL3l*)Np`{dj2
51777 zV*i<xSQKK%9^r?O<=&&XPivFkVFbsRM;AI1E;#%UOPU-;P&;;snwt%w1LYEic{tTd
51782 z1^k3V*?_9YQ2rAnbMv-*_dO4nWx?yyyINekekY&mu{-iQy}5s?rL{QZH=0^fCY@Oq
51783 z9BK~qhMSNc{-2F@a66pK{+nVmaO}j8O~DsJG=u2d7@eCLmm!ox+=a8N#O_8LlL594
51785 z4Nx5S`)Z-QRf*;JUnZLMjJ6~kL6bvo_SvkCoIB!mn=Briv&Cym;-1TQ_#mq=1Z>H;
51786 z#S->Kx}9d5>RqqpM%K!nQ?wKiQA_t@4kO*aE`_nccm%Zvy9*?`pKStz8j7hKP!=x-
51787 zS4eFRQgbOf#ib}pNyM5Ws1~E1wenU)DXnSE<S<j%s2NIfECxw#^+zWYI-T9=449op
51788 zlh<m6BS*yRHJChIk!YV;wi%mSn%eb7UofbXBz?e^NPvb){-B!)WJS;OXCRZwK>RVe
51792 zf@)Cp2$X$-Pw;w_{0)PtO+W_`PU>}euWlk6%|e=~*T?eUERvjeG|gTkh249GT5{f~
51793 z)zgzwIW6!{K+rx|Fvr130jtg$t3gU5l?z?*TqD0t>&A%r^-M!9km{^s8f_}A_#*%M
51794 z)C-w!_xjuQg6QxXy}FkEFr-^qccRawYwE^4Ak${{TLa~SLk_sx^RA>1ax8BoQS4A7
51795 zD{tZFSr~080JelW7iv0J_-r_FlP!t3E7lEi)t3BTmqRD9Fb|_GB@?OuTJG#ucLW@l
51796 zG6Sh-T9g7luON;?qsL=P_YQUUv?Q`u<YlYhxLe?ZTY7WR@)qRvQuQDBYwR7?#P;s2
51797 zgn&Q1^n-vZ9oJZqH5Qv>JYYWn9#s?;)}RD&33dUh83Jz5?{(X)W+Q|1hK}65W*?y5
51798 zwd09)K5_aZ!RVeXyUL-U*JX3G219<gcl^$du-lSy8atblS4MJ9m*3HpayfguqH%8>
51800 z<J`dQP@kW;ML+l`PqGC20{y=V-s7Na`PBzq#o*&g3}`&;t~(K@F9WlAplE{d>2W!1
51801 z5Iqw-p>N1S)$5%N+R$YnH*N2+8=XdH!0Ao2hB16bGcl(#<ja=uFxldUW3I<$Hv60{
51802 z%~newIXR-`POpdw*v%u)d!6q$cM7xcx&u@HfVOY-ddh&%QRb}@WWP>h*y)vYf=Ord
51803 zI3r`2SX~`_;&&&f(^sSo?(zJOrw`BOrVE;n5yhLp7mr+Yz5nbz!Xx$B`<T$z-&^B~
51805 z2-%-Y%l_b-=4nB52igHlqgQt-N2?X=;at$ObHE$4alMdCdL=#V0Z1Wq(Pn#VsBOfV
51806 z3fl8lQ`d07-PdCEr&IrH>Z4bndb+0u`{Sc0bKaEA*J6+7o77XzB{9hYZ1j1nMR?ze
51808 z-K-5GLyB{O&$xfX$dHIdLcnJmZ>vQH&CJ%0x!MIbZU+n!$o2<avMdOCNwfw$9*b4-
51815 zp>)<G^bOeC#+P?qal?SF`^oDvyNj*3P?2^|-&Nh(P0`c*DVAb$1!L6hGD&E7YofsF
51816 z@C`;+>lQc54O1-DkkDcv(Nc1JW1yTnv=;`7$L?P0y29KZ?dpy6xP#HD{^)^RtkW)d
51817 z4otO-H2Zte=CbWY(QbCTQig%?gwNp=EROl@seY%`s-2XF_+fnaTIh^}Vgr7MC@^6L
51818 zgQ@U9okzkul-&&fZ**PJu-7eV$LKY?$_w;vV@#-BWZ>O7`c*+TS?#5P=GiMla;n2&
51819 z9-PU<x_klWmgz2kaeCCweOud2L*v2S*W?|dF${-otH(bSw8fkBg2k?r>{fTk6yMrr
51820 zcKa;)T(?K|c#V-<%&T+QYHRT@>{?J{5X>s!wupHDsVs*NHVGx>5ZfCTBwRnR>5_mS
51821 z@U2hRwR2J{3F`GWiGJ-Ag)7pt)M;z7S(2XIV#uI#2P}Tu;N<pZzY7<oy}Vsn5^KN;
51823 zqNMLWs|Aj=?YzBq6r?nzA74v>I3i{%-X@`0&`d02G1*$3o!1{u1a|B$ISqov={4!?
51824 zO$!I&?Lx4(DL$QP-9O|{nw@rUPmUYyZllT291rLXlF4J2WGkc$?c2k_2uSogur$w~
51825 zfE<6ZU<num-2P^hpzVLiNCiB`p3}B^O|B+wL{c+TF48f#mXU&JJ`W{gknh)>ayL5<
51826 zf>7~je@odabbEE<xhS0c;s(JTFh#~=%|j3jx9z=F4tnQ?S~@%-hpDyQn)EZ3`$HUm
51827 z&G6!{eZwOQICPHg4kfzbSqFx4C$*%LiwZ2{+jr9|a&Zl`kl74MhgXabFi2ME-J`Sw
51828 z$-1Par_E7JPi<Dv3Zy+7(^K*$Yi~~1?swu%{Vj=1KsL%Qzuskb`>l>vzcpy~8FWT-
51829 zFlBA-iA9H7qs=<2J|yW(L0famAe;5hRHr5CLQPex{3m3&r5EBZvxw`wvl0bSotka(
51830 z`)hH`-q?4R0+`<mT!WcPwPcOBuHScluv5hwDv6>sAM0=KUmS?HdwOG?<1W~GL5o*#
51831 z?LC|^dyPUiUsz1Ej}G#9e5fVR;!O!4jnim!;qKGBojR~7OIyCMKNM@R)$hO7-~Rqn
51832 zgVnFte>NfGcUr>M%WuBSHMb1K+sy{UWw&1MLZ9a2d-xI?X16ORCQBw6hN$WSPlp%Z
51833 z_9U!PCJcTMd+6R9p#tOyAHZ`22!m$~H3-nHH;5&$a|#Gn>!Son3(j+x4X0D_=Acim
51835 z#llX97#wNw?%e6WCJR}p8a~{eJprRjmW+~Yk|dK+$BnLBz-ur{2D{6wm$O?O#-Ps-
51836 z4>-aWiXyn;SMyup)Ct*1gt8OcZ<w9n4pfeZazpmsul=NB%`+)0PFJf2m%$SE3SuFL
51838 adOt*D)7CN5wlVV<l-o_)wwbU3<^Kb@dNbkx
51843 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51855 zy(dP*v*O3%zqF&;9qr%s8RsF6VWajDnRFd-)aV8JJ9-To9&i3zMeAw>+I*dL{epi5
51857 zD0+D-b?V8+v7eGp|5u*=(c}xg-2X%PClhz?{Or5U8$Mpe>!d>cY0gXvq7|z5P`{G#
51858 zuqEC;Zw}ETr~mk$KYoA9V*O<*hzVL0etJ%yrA~c{I_a-B2kHIIL9vf6i>sR-i6y*!
51859 zn;)uo0&`|vtsc!5-ys9)*R&$&Nv9W2P*P+tT5D(?!=q^)B=p{Zo;p<!X|~3Rqi;n!
51860 zjp1X;m3Hj|-T^9xL;)J05z=$xCr?wbvRav=;HAoqE6PL8<ED}l^G~l{C%+p*0iI4Z
51861 z=>2%R$VVqJI*vE3)Q_t7p!*8&HO%lrx(51?5z$BUZiEEAPfwE2r^E{w_o*?I-CxcW
51862 zt3rIMB*hQ?m^Z&tC0}M8(gO@O>O3Ogpe9Wrf9731&FKcN$-GMr{vjtVSM3(BP8VhR
51863 z)gsdixoSVt@A%0Xpj;_Z?c<?${jkB4es%uz7K8sb8Z^-`@Q&ELBR#KGHOg%m3tq}`
51864 znZdJjydyj{z!$}<E*8{{Ds!+#4dSeebs85<F7_ZcfA3<0-l8EFdx3}^qpNfS?_*R!
51865 zo!vltiI(XaouO4)pr<KLGqgw-fG&ZzN@qc>LUI{%t{}HbN?@HK+D}J7-N3U1xu?~d
51866 z7a?^8$ixnQ1`-M6e;=qg)-r(^t)e}I`HTx{y&;#niFQA1XPiUJ+AB1t=q0pQlm&~5
51868 z%8p^I&M1k;gf&<3T)=$x`~)H}4~tDy+$9y&neF-4UEi*&j6H*P0g~j_Vv?T!+*&l0
51870 z_1cP-()z`piK6JG|E3?)@6*f3<#C);K2_oTvS#$!7_<lQ2zA<P?indmEs!g#IkNCq
51871 zgU11-@w40sAX{<uUAQ(^j^Z*Uc994Gg{ei2)KR^%i1DYA9#^tun{H663Uw!ZD(Cp7
51874 z7TXaRQ8Dwong?jFd+RqS-wgNe)m%IE9UA@Hp88eRIP(T96-ukaUBvTm`XV)xcLQ`X
51877 zy@w7S)rM27KNQ@n9Y}_PUa#;^<b8oUqpm$vTW7Q#h{yKEu3ee^-knM~dBmIh@Y}t!
51879 zLHFTaYCp3wJaDM9v$H>YI(Fiv_@P)pGXjQI)7a4(GHQGt-K&e*j=0tL)mQGmdHm_z
51880 z<A1tRo4bA>Q%r^q431pARk;1h?a`TBA>oglS-Uj%-rU0rw_eFkTu*OV{T8eqrNik|
51881 zQs|mrpgCy@jcZpIn!dcl4Ug-_P-0&nTp1Ok#_q19)W258mryVqK9CG^M6IsgJ~*|T
51882 zUoqP-e4dbA(-dwB8MVIF;e+k1dk2E1U8jqdp}}3<i=Q_mr)R{+=~6!3=igI&?P6gr
51883 zY3@Nvf^{?IOMi5Z-4vUHoA1%L^>K<)Q@TFr(NIQ2&ol{dTg;cx`Z)6V=a{Q==+(dT
51884 zjYD>=5jl0LGY~LDt>$g)Y!7>U*q~ZVb6vEpHFZR^v<F)C=7HXZj#!@v4IR%-ANDmL
51885 znEu-N<G-01n%UbCceINRXdj?NI@TjJfiP;?$)MmbL5;qFBUe)a)+(e4ZQ6=<b~Nd`
51887 zz44Za70Y)-Y~B@@ac=xXufZv^dwsqXHfnTi!^Y@Cp_*Ew$yZ~9pE&XHzGK;9+8>-h
51890 z<sKPZX5q|mOmb@0%Qj7f{T@9Z^7u6Td1`wf8a~`-x0Iv*_^ZF|Z#|aiN$&4?_U-g-
51892 zPHWpvRg&0B_Z)H9MZJBfMmGC=i(zOQ4wU-#V6d*<6SVtd564=2;_beMqzdYl&O*$7
51897 zEJ)AP&2?-YEF+_folzcLZwQG@rwM3f)>}m@c$TE8;$mq%EHtIiV@o|IL)jwhli_UE
51898 z6^NJ%ru@;A^z@!v?-%vi{Cr+|^TnvtdrC9six7^i6-_xcg`qU0<p`sZQpv13(y*u>
51901 z1DH~dORowyB4I96eRCO;ne1-FF`rw=<>#d_5Ct=9u9<7lRUI;V5TWT}c`8zwDHW|!
51902 zv}DTkY!SQ&$Hg@zE`7GF$;Q^PVO7-qAgzpr?P6srQkz?nVjc>lZy+vfY?G~RfLk7#
51904 z$So_8TC0+CRMbCUy6na*ihSzY&Pffna%iI-A8>hSiCEFn05)->UDdR_T&U#YvdM<1
51906 zv~I>_t35egoSbzABT<aEs_~#*rIzfOVzs3ODXe5<bBs$4TPss-<faLY6k+5-@0luA
51908 zl9oSRlr2`q%*zIBzj`PxV=D$RQict0x3}Y4kXk8|$#5isFa*46&>xfEj77Q-w=kRy
51909 z#p1Hft_tqk5qR$R*j1hT4!i2%K4Mo5?mO+Om-~n8s*n4<cGb`Q!*;cX`<QKQB|>`3
51911 z7X0JB8~$<M1OK@1g@4@l!9VW%;UD+=;2-w`@Q?e1ZH}p(J7_~~d)dsg30aj}RAYiS
51913 zWDeTqA!Yd?tmeq%KdTe<yQ?icPT?P@A7{Cv)=2fB2(hmz!~+iOZa=D~G7^`=cA{-8
51916 z!0BzN8P<4Ndb9V}ZJCcf=X&yF%L|q?aJz!-$yOr3Wj^xmpHqQpxCpFq<k*6SalX0&
51918 z1ByRx6<8@}@#uC4*%>F&l1>*B<``~vw%#2y*)BH~(%S>-#LkZxCyBf5b~jrVZ}~@d
51919 zSd!gJSDC+b?ss`B#c7-$36A2pY|9p>BDh@5u~MQsB!Z~hWA|`pB2)KpGrP|Hyct<r
51921 z&eoJKxTOpKU%Qxn;&W`w!cnzjzeG!}odq1gqp_{190zqI7PZ{CxZZ4s-~>Vta>^c`
51922 zC8+S$giN8zCmt|9iRDDFRSpB6wB=!Rk8%|A2)8+o8+a>PkJ-GT<)eV7>~*4XfGGgM
51924 zVL62!XE}wQU^#`JWSx0{GV5eeVVw--SSN#dmN^cvz%mRLS%$$9%P_d0?8*UMRCY01
51925 zR(3IZO4-HetI94$my}(ME-SkjT~T&1x{4T&Z6|O=Q8Ep9&4I@NS2^g4%7D6#yVjMt
51926 z;XsyoTFD4k<{3=>()Oy)DoV|`=|G<GoC8_>d933K+;Sibe9eI@@O8)@-CpmuqLlbA
51933 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
51939 zK~u2O$&!O4+gE41BujF+7oe$NNmi9@ous?-`E;U=l6+R#bh+fJJIgv-wnbT-d;fRO
51940 z>}&vo<dVx(-a+?I@BjbufB*j`5k?59@Zykner9$KYv>w6_%ES$e17rJ(f|I}Uq1_t
51943 zR#wxWy!j(&{{*y;o`s6w#}yIE&yw-Z-v7{*N7sM&1%z0FA3FcQ>6Ksl^7Y*?|DQnn
51945 z?--On0z=|f3waRXQH^;48R#<bi9uJ<i|Ac2!ky~>qGcA*zt)GzSg-SM9)35`O?IvI
51946 zH{>C6h!=kZbo!K6uKm!X-lVg3|J7&>%=I^4{HE(}&-C|^$bN@3ys&UJPtrdNeDA<3
51949 z)G9o~@f^c&Fx;k|^M?-2;~LB{Yw=0E$Pg**C2dTI`3jjIWM%#3(7otS@%!<2nN!TY
51953 zKeL|2&mLYfYtJr`^6Jcb4=I1jfvgHN(~PbcNY!T?R}toF&z?TkZXka*-3)dYKZRS@
51954 zOzvIl44S#guL@{p2C+|r4n7UMKY-S-13ktyQH)bjj6Dj^B8oBZM=|tW^cZ@w^;Ps3
51955 zJpZlLhrZnE!=tU2umhf6bU%I`V1}UW#nuaqfhHN$`a9-@)>m;8%6GTE&VI4=4Q2%L
51956 z(bm^-f9nO>_kq?6=#|z#;!~}cn3r1LKwoNo4WEIw0;B<``#|d(_?KHRqu*=&8L4BQ
51958 zKpO(O+IE4EjEbQ1?9AN3V@O-Mv~mh*=T{!OKsBA%bc;ga(+^*|405#kU}$5J1gQg_
51960 zkY=sAPJ5y&AA-jRj}smN9#a1@Jb!P^L*@fp7J(vS={)=}loY6Qfjx;xMSkFt4&K29
51962 z;a}_XQ2znK6s)6t@GhX!@b1TZp+17X4KRbm-(V5u!|2QCZg@Y2lC~$o=<O&4@9)wP
51963 zo@aK!jEk6Pz8C*z+ROSA(FrmNCqe!!tQb}vqb#gOR-Qp_e7l`z(H!>Lc@7PuKeh8b
51970 z={KaeNUPGKG$<t`&aou^Gk-f@=6&2N+}|>v#eagAa6kGd^cD18koP25fW!7tJe?6s
51972 z33N6LoZ8-V8d@TqIsEV>DCL-Xq^;0yfX)K<VgNyAnX+e5smH?9bFp3hIJ=*(Q{Dsp
51973 z_K>&^-WzZhcUU@R9cCeM4nw`Y3my-}PJ^EhsE+}b2K;ouq!%zR!!HI}vIoT}CT(d3
51974 z0mm@V76*!w;IGms11n7lG;=#$MHu;O=)a;rM4v^^fxr0;^kMXV^iEit-wIlJ9<=by
51975 zz}<rY&%@|`=%vHR7{<=PXk=73j9W#-e^u?+tzxGoJ1yF2#!l0AnzB>FPLp<;u+zAm
51977 zS!zdC1nQxjMRe7*YFRsS^+3ByS1q>F#&voykg~L0u-h#Nep7E2QjS829ViP<*ftUe
51978 zDG#XtUi~jXSJLR0Y}{F@Rc&m29c-<7u2XM~v=fECThQU_%r2lOK^vA}9Z2suYkSmo
51981 z2lEKvdo9hp&Wth+{Kr(MhAFo-DtS!33AXj1%~3+NhM&QY;8PGe?S|+p0#VTa18w+Y
51982 z^m+6#^b6=2SUXO^x-|)NVf)9?p1hs2yf0Z(tU7*&I(ADxrVEC#>+mKV+henxafHs;
51985 z?<`&aENHS;6;OMBYSB&O0Go0|%NA}d)%-ROSlezn`;F`s7*lQZ!`x)%1k6a*7v9!V
51986 z5-G4$qXKj;0!J_tpoXFA0<!%g1D;%<SXkCd?0=&y(VPX{u>kZz(Au{^<U?@lrxxJt
51989 zXpB+?-6+#JIe^&;5dj)XAh$Tc=D=_EQNKrgmu!z|$)5BYr~Y#TH_HOzJ5U`3yzR9X
51990 z)nE)OvU5`$cq+m6&x#>1)pJa>t()^qhc-(OySd<`tA&$Flch02)<k8)M8}tAn})IQ
51992 zlPPCXnN-DO%f{+WR?|_vVfq`!@^XEh(Hiyj9NRFN#<44g>C8Z;v9fA%i&t(i3<JZM
51994 za`_WCda$c8dwSLsW|vYXn`<69xdgz`>q~~YxCm7>fHucTZoJtv)-7njs0XU-l416f
51996 z<Pr-jpYo#91maUXI@N5ht~5<tYBp^On#L;7lc_f=CSNuH11`4$G>MJHB~#4QO-H5<
52001 zb9H5=VtUH}Y8a-caexc}8IX|aC8Z-!@=|%JFp!rr#Q+|hhM7&Zv20vlHcS=RRxy3$
52002 zg=0(W-0Dm-Yr57lS1P8zyl{AF;iy#^O+me%)@$W;<ZB#XTKD-tge!GZEfJFg)vB+1
52003 z$jb{a69+&RY;JLBov;t+tzQQT!?fOFDg)ix`KZ-Sx_~8<nkG;(5BSeR?Pg)!LWJuG
52008 zWn-FZZeJOu4J{iDf<lAJ7Ob&Kl()ZZ_La;&Fw6n4iFxA|V$H0KXNZS?Rfs5|ey}a;
52009 zb+<4}RL>kJuJc%*T>|e&s2u8I&#hpF%f<-Bd;~_bU}m?^3HG}qE~Fj>o}<g+%<jzi
52015 z6YT9ugWzS0!W42)+TR_-SVG)M+ihuOh|2Hj!lcm_*D{H8wvyZyaSi-Om2h#+3^tY)
52016 zqp-Ld)6MF7Ki0r*_ik!E5?$QXTHmqntMzD<&B@ZMO*m6Fr%KlWH=<)e)Ga|lpjERU
52018 zHElfS!2wT}+FaQOrKwUXWAnwPro)2$zyjSe`y1qbL-SY7QLyp@x2Ru$;jrd6#~^>O
52019 zY)(LO8{y(Cu-lk}6}Zi<H<gJ(o3}ysQ27QzbC6kt3?`Yw<r|pR9Dxk2IZ9yWA#;qt
52021 zZZhXAWR}UCB(p;1B$-oWPLerIVD>>~mB5h98i661GX#cY?xA?iK<+HXi{#Exyh!d|
52022 ziWkY<NAV)L^As<VyPx7kau+CGB=-RDc)BCNi?n3cAp4+|-3!@Egz2<Yhtg$OYi*c^
52023 ztSo_fn8IKi<`L+;t264Ov_yMcv9hGcV^)@czXisz0Uo!q1mLY!mH@mBV0U-MdxDlI
52025 zxNc<$z|WO$C^W=1h3E~AVP|3Y1a7cdFPV-tlg%z(X)o3l>qKJ>et*rbk#ozNGQxwU
52026 zvBK!+*w}7%EGP&fD+rGVc$t+L-kXZ)4uw~_)EXaL-S^$fOyl-F4sGr5D}PlZm#XM7
52027 z@&ySy0ejM^n+nDU7R=b<Qq2h>M=J~_XOM4-*2pCQ!p(LiMu(d<1tZOeLO8^Vfl?}+
52028 z9~s`wjE$1{buGaR4eFX8V8?-3QFijqkghoS;83NMC_Q-L=&xQ|2@FmNGhcg8{^-8S
52030 zA#KE?UN;)TLjquh(|JIP;AEjRIyOrGjRgWjgYYIbfNv&U5JWdC0=}W!9^73ViH-L(
52033 z7zf4@cQAxSybz@=+zu^Gt7A#PJQ5jRJO|uB4vBS~BPVp2k-9k}Q_e(dqe$RcUbuu<
52035 z05pNHIFrs7fZ1+FBz(TK%i{B~(usH7<###-?2V`UhBZkG4!8rX7<PG!nqM6lko{7q
52036 zo@S@d&aQQHdudQV@YM04=Di1bS25?A#|}r(n@&6DMMt7~<u5-ydEDkVo8az2eJEQ?
52037 z8K6!FwrMi#3p}U~_pzG@>Szp6>QQP~1aYb-ZU%>rUmOGcV=+R&{--J<C7I!6o{>Be
52038 zzs^e{#|kV~B9%<xzMp;N<NF?-Az05`9wKND^^HI9`1}(;dSdd(%zV`mJ%0WCsXscE
52039 zTz&j!8wW1e+E{-Au%1K{wb4P$67jRlK?5@f$Y~*F*ltmAHW~fZ-U5&^i6{A;NwJjQ
52041 z*;>I7UV7Kr`BQ^N7|dLA9x<N!trI|ItA%1e`WW*w%)>~ar>B-DI>^qUFdE+Mi4eZl
52045 zl^t$D^^TkzYh!UY`YMVNETmgu;a6P>isGn+MWGvw4hjM&?L~-M2o}oX!G#Y!T~HLj
52047 zrAowcTK`UZ`pXI*J#;80%RE*X!4nGwI6#4Ae5x}Q^p8$qUr6?|YBBGQlnPky-#2r3
52049 z%kF?1RfKLe--af~xLDZ}^y;D-7#j@vlSO}Kuj))_`tTN91GN(~wSt&7f92qti>Xk)
52050 z;)`ZVvyo_-$m=Cw&$pTVD266)Y8Z8N7uvwhVC=zk6(!<pwkr_^|4Oc3Vknkl#b9ZG
52051 zDiXL&5aK4EBRKS)z+^B417Tj0CAUkbYhf}n;?s>xGPSTfG8!oK#xf~UHAaW-{N<@f
52053 z2nTcgW{fT0Z*jbf;TekiU^v3UXsoPjx-9hX32KRwztZnudkFrq*hsJ%>_2*9LL5Ff
52054 zd~_c$x9lG`-U}$)k0kUxRw8#MJH|Or1$c=C*Xv2ebxGm9qQnR8+W&*zy^W=sLpy!w
52057 zo{@=wSLFn^BeMV0-ol05_3OLl&gI&6A4cD@ypMb<yVw10XP5UWZ1q2s{{-WUJu`aT
52058 zw*3B;@|%YoE?KG`JW)9ka>-uJwtb&BRdskosX9I8OA#zy0M7h6CO1`eOI6fuNJMJ^
52060 zLuFK~71AmgIX=jNt?wsOJ=0}9WDz)=?I}W-U}*$d>*xf;<rVVzOxn^zOPWDTZt(1L
52061 ztL0oif9&WUcPf|=U0F3Z-KcsZc|*;pF2Sepe(&kV6;&RYOSq@w`wlP4K`rgWZfDs@
52062 z^$MD<1Qo?=ctx)~-E*4o>hD@##V=tKB~hXlbx<4ISfXfbk;F-s3d+_nYhAXHwe?CA
52063 z7*A$*@6=JhE0v5VLQ_R8o%gwWBELWBt-6${1IbEO)!bSwpN;hBYPFh^M6cAiFF|$Y
52066 zOKCTUZ1dAKSkQw|9_yLRPGu{xWIP#~EF}`IV$_((21J)=?A79-#oG-}LZ8WHq6JOc
52067 zn{)?cXQ40Rb8;f*3zB_C>+9g)a`=M~6aK@3=^~s;VIB-E77eo8fhaAq?IJ|m3V@^#
52069 zb_2XtZ9_W972-1pf_b*Ny%#I2Ab}MQH=E5`5Tl-aHl2t^LYmL*l0*{aO4K4PkI@Me
52072 z1PogOfei^H2(dzk^B8zZb$NrKWS|@pK~CZZLn-5T04CfoBZgyPw|#YMC&GQqZs}7S
52074 zn%nDA)8Tj_EbEbA${jDC^JtZkKunVy$)x<hgR-+&PivK+D(RUDtMpd*&to2#ABc$W
52075 zu`Th3_$;h@2Ws<C*j(d-!GI5T*CP3H;TfQiXPRV(Em%8jqVu3$48MYShKEf?+DODA
52076 zA>HqBDH5vSilc3{uqG3G-K0ou62x{u4%S;4(VT_Bsbn;wsqsQY3WiG2c=0}uR-6h%
52077 z0=|U=&-s#W-(EeYSK@movZ@d0aNZ$&mf`pN)NxsLNPboHd;GQ~H}NtWWA<CtC+A_W
52078 zT*8urIT)n{)+*RKR1q;JFamdpd^;xzuwy3M-V;2_Fbb9tBi~Df=iH=H+d3(@(+lm?
52081 z2K%e!VoxrUj7P#DP)V|j5_vR+$6Rf*>~@Xqqat{9pJv!c8kU=MGez4&s$tpZkTus-
52082 zRMk>tw+@=6ySxRkeRm;}4EBx1b-$u$Zh!CKgzYE6)WimkPGQ!e1k_{>Y&B4GI%9fr
52084 z-A~yP!!e<oEtacl$M@DEQG#fGVm=%1cZaIUa6xxR5?Zh)zl%^fJXnC;mE;>Mdfdf{
52086 z**n7@eEZzK{B3!Me{c1#_nlrW@2j=B%(4#xm#1#}-rzZ?#U{3kO}m+q(cunOG=M3=
52088 zRCvzGP+o->m!8KqLeF9AAVh*Bf+LI_X3{gxjkve{k5Qy>02bOznoJLtB=}%8QTRw+
52091 z1@kC-CrbSo@`FV=g;VUtqHLWbwUM+=INU6(!b6Y0?f%?A6%ezSC^#giLr!SfN8bI5
52093 zo^^=2MSL{;1*01~EsByPKzx+8q{uLw>T<|>IuvZ=9nnBEUoAXs&)>hxGqyUIE-OK&
52094 zKcqTb?Y-U0YzBp3x8QOzZ&=ao1OK+76Wg<xWNl=KmLCW>ICfU&M2ek~kB^bVwdK^G
52097 zAT`qqvH4Q@-aVsBN2|i*A6_pXpY0{p@m^o$_Hp~X<r2FJ)Ep<&kbRCH|AfaaJ*bCJ
52099 zwVX{$&;EX5Pp!{0-(w@N7YAAjm<7oMI+B6li*kGoLPK^1bx66@;WQNtY(-*VX=Pj{
52102 zroEO%=&^@&#K?GV>l}NiEVhmy?H1-uO?u>!N=CyZwCB3E`lDUvVrsXT3bwVV!R&Nq
52103 ze2-USSka;^1Zr0xl+8{tiZNQr^?IB+)j3fMWcvN##Q24=iIazm!o#op-^%eBs(tsZ
52105 zdB-1>E3Sy{bqFlW^O$vkx;cq(%0$~LK>@3>Gp>1qjhLqP?&{0s;$sol-lInnV@pRs
52106 z@&4fY%=tYN`HC-=cXPd=gs%HsKCk7eEZ>kt1>zgB)HnEkLf=4y1iqnw3thg!I%;j-
52107 z8|>s6D&r1@<6x^759*T4Qwf#)*=k5shvz2pC5;&w^YrXpUAXQ3F=6n-_ZAN~3Pd!q
52108 zUTx&~puL7NGx&X|ue0OL&>e3g9<p}48M@=OivRX^yv3e;mhf8ld)>hA&bfo-zN|~N
52111 zp1FpA1J}?tkeacrb;me5lS)K=s-<(nRvy5=p@6k7w%mdpPgBzKYo$asu8N_M=#u@i
52115 zL9W5AA<lITQJdcA&9mGSZ>+nu<&0xA&<8utd?po-hJpdj?^8Wa8RRnV?1X&w8PKNf
52116 zroMf<neRH5Q-hI!J`(L+>rVz{pL06m(~OE+XWf3MTJrl<Pa&KPR>!>&Sq&b)w<JiM
52117 z)0I;l!|C*FI6tn63T!$jF()_!<ldZYIvujwT#&tj-)TqGY#e_FeAZ9VUh-KZp=*}U
52118 z5a_LLx6c^8mC4ZCYbK<+w3%mTr%xRS4(^ILz;c|H<&*>9KU{IIl8dLZF>UXA-{F#F
52121 z-w|!p$%;=7@dBFHtw^Ydiw;{0DTg<7u;Z3Dyt1u!rIBdQ>CuGl_R2#g1$Gxk$`z}g
52122 zi3EE_lA13tP^`=(g1($84$sbpvy-YK*0Jm;=D1I5dwr_vUl{2LwpYa~pafHl&sxmn
52123 zB6cu+?ejY*uzjy_ekX67-{IGPekXU%?{?_)+9z?cefWi6|4E!IDe{g7XgiGYswZ)8
52124 zWT3%UJBfRZfjZXt+9z>uY^05YxY1#96xUk-zZi>#iD#tI!W5oz?GP<&K8oAPIc|#_
52128 zdQX02Cc7sZ?IU+SUM=9G3w)KRu-otU=n1Fa3rl=FT%CyO0m<PAMYw9c=eFM@cR)!s
52129 z<)^nmvO@G2$aRL?!KB;PV^Q-nvAk+z?AuxJxmAcqay2;(abkhQiFS<G-;NRAK-~5d
52132 z9G-;T&3ouA!SCwy%q9vcx#esA^sWw)@kq$$mBfuLkM&_e#~jH0LD0<*_OydHL2yFc
52133 zMK?WeT?%Fbkv;?CP(G-HToJc39CqfiuE?;$yCvB6O#0$-T=VF%Z?xocINU)cms3Jv
52137 z`y7yAZI;9$p@7>dOKlynZDuz!G-QdNI=RkQ23;0XjCd*o0oJJms-OY7R}Q&c!DKL!
52139 zZQnMYY#alSuY$5MCF%-KO$J!SNm-(Kl(0+mIlW*R<4I4{@2k4xMvt2I#>aA!TUXRR
52140 z&8709Bqnpd{v`QA=-UuyKZy6EaVBQplV>4X>1{_VP+)tzqm@1+aGY=vLA(Io@hSub
52144 zFvKbTJz-T#!OF(E=)xxZ9I&#Ht8Wr&I}}A#g0ASGVNB$LrLZj5Nu14z5N0QHqM*eB
52146 ziC8%3aRHBPv+ceI@BTuq?c8mSq!Oc<;$$k4m(*ya-%#DonA;WfggjETlJmyh{*sZL
52147 z%tfoYvcv1vWpB~%4LBW=Z?IoaDsE@jt-tZpT*=6nJ@nS!z{ag_{k!}Vz4@QZb#DHh
52148 z0Z&Nv8)3mIPIuk@`$vn4Lyl$~KILTBcRN#^?{<2?A644^2nuZF-@n`W_wRN#f44J4
52149 zKinzgQps2}0vj&B>T-4;7j#|p+TS#ejlM=~Zhe11zTKJ5I(!Z_Ec)euZiIZ!SNVF!
52150 zA#fh2);mD-yQ%~g@}Z-y#<zdLBXFAE`i7_TWpjmm*_`pwFPr&S`LelWf7v|tDxWsf
52151 wPZYX8ZFYLX)otH4yTd*uqRzSm)!F{GIUgIyZ~wTNmv~jFDBhH({c-dE2bAn=761SM
52156 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
52161 zc%0QbS#V@mb?4r<b-&*CZgop~t=8U)wi!v|k;m<BEuPWXmS?fMZESasG>goPN23|c
52163 zBaJusiJto1bMHOp+_T+t?rjMe00i(QgMVp$VG(`-Uk2c>!_mV_D|a9D{2<nklW_p{
52164 zlcl4_OHcgQXYv4!75x13-ABhJ-}}kay@>xY#ILQMt8Zw3smh4^L+sD3K6c5_z638|
52165 ze+~Qnr#4QX``~ootGJ*6;EkNFU);cPKhCGHb(}u?rc=Lu{rUxf-dTY7ht8a=uk}59
52167 zH;9iqfbnSk+{v-6#WVoP$PaCtzj$fuuV51A=V^Xp^W?_bflqz_`H@^71qN(u3w%H}
52169 z-}nO8#j5Q;F)@N`eZJoKkB5D8zW`18F-?49`N|-*-;MtK(2Gz1`h9`x8rl?8l&tx~
52170 zElLREn~7G2VSyuKpQ}^q^Qb9U?XSN7t8&Ncn{1SQm^-+i$GO2*`G@&`OP`iEm48=1
52172 z0-5L7dq6=|uJQ^}E?X^o2qswxM_me+6`6DNtkG%cyYF6NMbgZ&ueQOD;qdLkEOGu-
52177 z{nDc%dPuV^5m)Ht)i-Qjgy^~Y=IhbVAa;Z-TAEkb>)2s<4o-kuj55@j!5uJ*?-Gs$
52179 z;rG7y9T9&D?gC9n`flvMTSP6zqy)|uS3kTR=daxGc{5ysNAUw~pEGUn3H-bcKlkE?
52180 z+Ye=0ifYEbM2?i6gx{hp`!J(0-UZ*onKwbNz55tE32DS!WgkWj{Ors2o^c4v$?z=7
52182 z%kH&d2^N{(hGp0T|7ybud;-R8SVainE;x_6pU1Y2x$_df&%!!ffa9<UYw!lh!x1<M
52184 zWgtw@CcgI~J;6(Y-?-hojPD7Qo#1(V)9Q8f81+x#`%xjmNzt$4`vOXJLG&v4?!%|4
52185 zo3TSXqotp5gMRJ$EWzFQEFtu2t<>3jC32K;egh+G6UR@B7`1FM0W-**ph<iTl;%7>
52187 z*Dt~1`o;5Sp?L1(+B)2_d3OD@NailY(?qQLApjxd6T=uz2p-+yof7Y)cy~dMBdGmE
52188 z`<gbZr8HUnPxUeNjCz+kr@ECc1>~Q~-<JMOdZz^ZDfV6VA@(>{Hx6Hc55nWP3l6mQ
52190 zvmEW?n1IJc8xvGyo1K)wR-dTiLY}C=qkKv7D*{uZ+@StMWQ7RAL{C}4gO849p%`jF
52202 zCoM)r)^uPbjNcFiB-5zS18iS%dmL`?HMi}+I>sz($Q}Na>^Z9GBCASZ%TMhnu$D)d
52204 z_nu`_J$iq|+><nitF=?c)#DYD57e!T+-l}TGMzS|YC<_PPdB=9t&}%e&NOPL@+Qw^
52207 zVdg0>tS*@9LM3fV1JxrBR1i6NwPKhnD>zg{Y;%^N*=p5jSlB4hFb>&0!yKpial-uK
52208 zO2t5HT&)|XzEY{-h(U8YLDK|H*OE27a3;}Orn|gq!jXyz%Y>Z9esbCDA*g4${+u6H
52209 z3FA2hPE@OFb-X5Lt5sWrs<DRpWJ=Y%spJflKpv>0PFi`TVrrR^>ByAO14vTKo2oE3
52210 zTEbXsXeUYrO_I7vOMH4G-omP>jHYq2Y+N<2;#!SyWdJR7Po=h!tRJaXGSzg|FpEbk
52211 zIF}^5*rMc3EoVB**=ram!s-s}W=a_hmrSW{@)M^_wu%dw+GyT%<_wb7i)zVm!XOT2
52215 za^4K(mhY)7AGHRPX&euU@o=sI!SeA+BN#*%)=Op}OIr>@tJLt(%a1RUMbQ`1z)Gb-
52218 zBiXze%QYCaaWp)&iCjaXwky|=sZHh@3bm<RL#4Jm*U+f#$u%6*_U0N+YO}da(-Edx
52219 zLz8EWg2^7FZId^1ZIjW~<OORo-!?hen%uM|jU1T1?9CJ=T|aH<N{Y7Ymqz^zl&cT*
52222 zZRWWd&YqmHS4h4Wxmh?1JJ-bhyQ?fT4$)7E1M>WV%xq&1i;%9<Xb)6iclmMG)MxYN
52223 zOs)`{%bT+=hl&xtis<{$MGze@3dR!U1~l!#t5=sYOPEY5SOGEpVriOXED}Zw--1aj
52224 zYQ_*v#=JTp&>C(inXYp7<kdpPFy^iz&;6ZfM#17|s<<0$Y{RTkaw*<Zxh@-uk-RPs
52226 zoWT_qsdVXOu?q6rWs!`PTvgn}=nMq|PT9c~Ig$_qB!q--JEd-~g@G{Fw1t7A%AjqF
52227 z%p98O*4C7%i}}UO5-mzzJkT;BDPvjMgkzP0F^83%q_+nRlFN35sSaT8VEZA)a^h~$
52228 zZhI?3A%9z&B;}^NYIM@MQRSwKi<mzOWW_}@R<5ihvA7y@)k0&Og>m2B-Z6V5xzaIP
52230 zaOYY47jq3Ai%yf|RfhD^A1aDTC(2`U8BA4e@sh6EaxP&4z9rkV${pC-pG{|MyV%;a
52233 zs=4dT8oM7MYwQ8SV+6g9@C5WA;R)y=!V}QLwB`Z=HCmH^I;}~-30jkYRl>Ogfi=P*
52237 z`r9p#(Er2&3H=$Qv=RQ)0tw-&1rowLa@Snqh-<3JYciJ>@b-jhuv*HRj+3U;zjC=*
52239 zy57TJWT?;RPWrtt#imp(nq_^1gM0T(&&1S7xQ9<oPR~q>-<fE1Y7*Zx5>wSo-;k<#
52240 zB~4XX{LTvpM)#&>hs#HE=RTZ^##KpTes7Qep?%J-K)5fIO5Z&e2u?l3`))nHck1Gc
52242 zAD7L*N~IVpFinavu1zrqcQEFZ5679tmXl&e-esn05oT4UfW{SV9jyTlr{q}2i<6Ua
52243 zXS-!|VVPuc8dOD6)J>3NS=s=b60hqHr|fv-ri9gElEL)eiLrckXdu&<?(OMLCeXh7
52244 z*?!k<_MM(Nz-_xu2@}Wg9gT#Ai8FnJLuhO-*T~MBw_0{Smc9R74~5)rmHE5-#`c7r
52246 zqo;8Bho8OWxcCdk*7M2;`#I!cb=h>TR6ad2?3dV~WYIUw7-xq^aLX_I89!7N)5Q>H
52247 z!Uou&5hUAsQQ(X}-DVxhwvLCvP{v3?p5<k<hk_awI9Wu58HSeT<&khSM)8K0nVv>#
52249 z&D}Q~ij?BVE_RRi=_^MPgX8HyqT3-WT-6<lswlCpiCBJH<4@7w;))ab9PT1^7?{MK
52250 z28l~g(-$|q3Y^0UnZDOK!XP`8=|z`Lun9$|U@IVWn3{})aa)LAp$DoVb*k~;xxN00
52251 zLeGKp!(NXsFc8Xj-Fn#DJySeT?U~wt<nnz@MgEr*iS}nB2ky_ra-r#f-xHWfWIR1X
52252 zdL*1k>P{x9POYWN)>cy!PT%6e%k_b6J-_v1eg=LB-7r+_cL?{|ezQCVKDdiPH0;))
52253 zn{|`FVto|8c0RD3HZ1}c{kBnl!0ll{_sa6v`F(fX?(6Zobln+U{K((N(_P-dw4~_a
52255 z8gjW%g4)}PkH-W4rVNQO!{JlBp(B%txLE&}{Qc}n=z+OUMRd*%Et``V*lw{tx7JS<
52257 z4pj-eg>de%V>5=~ll8s{pWGF`I5$TYdI3XlfV~gK;D44)56PBh3YsaEj7c(XP3lU`
52258 zF78VgqNIUgXfX8(eIv_cWnIF=$W-9!y2IAV;xz~i1+)=0L<9{ntB4LaV5bm!Xa_bI
52259 z`0L{9U1=M=SZHE8=nL_;113|cx|2#$>!3>NJ=JQp7-KLz*x%RF-4zc9y&k6qV{FWc
52260 zww<sY-g0(KgdZ6iZLCq6#C$oJ>9fqOMqSSCY&blS>-Kj!f_gO4J=o=p$Fix^=p&Ax
52262 z;n&Nin>=9H9*9~VFl-M*w>{89%Bn5PGqk0Mo^68?qXD2TtZf@q7=9OIvVIP@EaA!E
52263 z%8f*1eM|?PG{uRRM{mWn!-{Fk3xflhbZ>Ve77F;istj3{wY-2nuv{>0rL?9KriB+o
52268 z9V0Y8hT0A6#9?7+n-Ol8CtfqBs`XRsWiUBj$c+vUWO}>15^*dIR6R5WX4s6U8OZI)
52269 zq<Of-SNr+PK7?6`#mh(SoDxXrL5Cjp>`w;5>6|x$krnayhj6!ehq`)WV>8{6kjoYJ
52271 zjL0um_y2!>8O1c8?oB2lA-@;h(#rCKR)V3@iES*}kzg|0X<k%%Jv0>SUc_wU3j|WG
52275 zb=~Xm2fKQ@hq|1un8!-7Smd%ZeS-;yKN=eI`2v2!y~pWry8M`8Rb?cvegO+y%r}&_
52278 z**#l!>`%?-_a}5bZ$(`DyMm#<yeGoAC+zi&()J%tbSK7UQjzG+jjG}fDzmOzFj+~i
52279 zxUa9z6HQXqv^K1LD*GaP9Ev<*M{X7)cf1+7*pbF}MlOFXk;`98<SMT|a-*%tRerC?
52280 zEm?6QU-`X5cj>iq+7Y{Vv~l`F1@GReiLw0X@OJP9{diz4vZAN$z&f*iWR10=cWOI&
52282 zl!ov82%T$t1L=@B+3GHeV^r52_r`j?b{uQr5Kj#Tj0{-Shb!<8FvadH>H|#Un0GaP
52283 z*oufOR#OE}0GlrQ7q_?5w^0u9Jr+i-!^!CTDDJF-)9G`P+lG;3y!HJRW75VeqbnfY
52285 z;9)Q5cf05tO?P`a-L9w2>~+)R<@ftz&R|Tz%IXUxyUFEr&Xc?$cYuz0zCk?Z6=pM7
52286 zUwtuAUjsd!u3ni6ES~ai!R_mg`t4JmU1h(ARrUfq2(vt8-(&hQSB*4t6?UYN_FOfF
52287 zCkR<ZJL2A8I-Vn%-#p%Uo$1V0HzV6|q3OKKjNfdv9aoypB73V%*WAf?V0SVX?r7T3
52292 O-v{;EZqo_C_x}MxSFwr!
52297 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
52302 zc%0>Y3wT`BdEhzc-aDgtzuyntd5<(B$&zJBmSt%?qX+nbW!X5Ac}ad@gKdm)T!&EN
52305 z#*AkeGtExzys})~*>NLd@t-iJ{@wPSJ$)a4^5E|Qd>-KE_Z?k0Za8lXGRA)Z?eTr5
52309 zBaBJ+K>KsBB(K$&gQ1Kr6W?Siy9MMV*ctXM_EA{j8rOfLw#4XP?Gaq-m;5&c&v|xU
52311 z^Tj*ge%N*12r^{`psfB+Xfv4?N=|Q?twEW?17n6>!?0m9@Y<-oE&lE2|Mq$l4YDZm
52312 z`<VhuofWgt-lDzvwXBbqq1U1aS&@a1L6EJCZr?t|OR(-{jX&dYu?xC45m`a;Rg^r*
52315 zb0&*v-t@G2#QdV=8p|8jJFWj>+i&|v`<VR?9XZG6oPOu;I$v<LyPk4q+)sOaji>h)
52316 zJt)&>*;i&}7dgLouFAiNy4iPpkr~V9fa*@HoVUu{tks-?YHj7`q!J8Upl&KZ$F%wv
52317 zk-_oBG{1YtY_)XvEVlQLFXplRY#Y-$*!WyzF^65xwVh#HF5SIvSA78gowo~a?|hcm
52318 z?ySlmT@-Bmyt3cG#>biTVUQrJ{V{yz>u>&0?Qf++EXohFuyi$x3KNU6*K6P8x7UW*
52320 z4~%7NZ?mt!dfhO-qxP~m2z>$gD9|?muzPE-vHNOYWZ$X%j6V+Ju!cBPdrfphdvEQN
52322 zOKg%m^}5XZ*(-WoVV?&t)anNE$1B)P>?C}yU<(jyPC|Kv9cDMPE7=LQpS>5Xc!nKd
52324 zb-`LH)UkE~%5^Xw>r=Ge8ohNI%3h!y>*G)&_64?=+6SRLMid;N_5zeQ164OuYZl5R
52326 zYHot(dYF%#Uk(!32NbIi-Hwn{XBzWw(RsUtG<FKg{Q$`*l9{1)HIv3Cx9(!zg%b;V
52328 z;}PT4#;wK?W6>BjS`F_QUN^jA_?qE)!{-f;817M2>5LE%1CbU3#aS~(SpH@3QVtYb
52329 zp=E#vsJ!^IrYOv`zS_mcEQrIBb>%F1eM`)SzS_^FG2)9ueB*qN_!5-6U`~OT`3O7%
52330 zd=2m9X&&c6c--8|4KVd>_6GYgdyTyc-t#j1I{Pa7GW#?3EIS82^f>!8@bDnJm)*_o
52333 z|KDGH2g<i=D2e}7!#(T2)-H$g%~}A;u8V_E-dCG|@|g?Q!pgo27oh%oHINv;@xlvK
52335 z0A)YF7s_qoR=_8V{{rQ;;v&jf{1E!TDn1M4xUfQ*6gQ(B#IsO-jmqc6NhrTSv(^ig
52336 z!$$?koP9^2mHoN+S130@HprP#pv~PP9)t3nKz=_UVo+`nDJXv=P#XV{U!XNndSB-+
52339 zKg#`0P);h%TxJ*9TkNOob?W{R`yTr?`#bg$`wFza#GYqQQ-2jcPq4?>qwxL&djQIN
52341 z&`XRL--8}Q8hE4jA(S8Fbe#Re#jU6@vcy*}UXLCoZUgvnvi;|!B>EQhKZZJC-{GHz
52342 z^7R^6DXU$Gz$mNz4%A-~UZkpaE$W#+2jxH4rjdSe7fD{BEHTB>z)v2YIOw8_wd?U2
52343 zBaf3JEJmwOk#BrLi=>nnnl$}@W#=K2Wqg(-Jj1tYZ~ZgLOM3sX{>JkLL~ovldJ;ZS
52344 z`1s-DgpV0MGR(UOpSR%iQ~10NpC9S#eGfk0hR@%@=Oy@j1wLPD;9B`X*yrJcG#lZ8
52346 zbC6qsme@Rc0=p0D&%zGIc?Ua-F$;D(&MoX?7{$QnId}|4p9lGADBt401?6Y?G@X^u
52348 z-lq2J(9SfqUtuzTt*QMrXg}H1ejeJ#n%bX-c5hSr5wMgun%eh3`<bTpZP328seJ_6
52349 z8%a;t7W``PPdtBh{(_v+0TK2y;Hme5er|=xdJuAg8Fm>Pg{-Snw`DWIVa)<HJJqaE
52350 zvr)|kH7nKZP_t0YLDnzG=FxJry_nItPm54Sswqr6F>)y3fJ`;yL8e+8Wfxd8QFc-H
52352 zn_$&4JPydiDzNG}JT^7~kCjcrW1-WthSLlm8^AaLV;<sfCo8Zb>#DM%T4h(xPRyw)
52353 z9INa*wp0x}_smxNBh~!e{6Y2Xm9tfmS<nty`%-%&iA0snRaqr9j;F24e7UR2i&b_0
52354 zU{_TXQ;Afft11=M{pTgGkCiJ`Peq-dFE0vjrM#GtDpgV0by}@jQ&6ca?61nxr_Tu?
52355 zV3}&-Ks159=j=XSj;c^imCt#&2gXuWHa&Y_?wp?sLMRujQlaXr%p$(3zf#cwBI<s%
52359 zsdBX~RR#^fl=-fzfy51xQ1>qy_m)*0M0O(@`B(zn#J;N1nSjBHdR9FPxE9wa8IaJ9
52363 z2}bNFE($SG-M=v2Rdp5tR8^~v%4S>uDxjgN6I(OTa+1DWu#l64qJj+e0p_Z!GOwPU
52370 z5B%Y~1Ng&tC-8^w?xH$EmfKSVw843`f+SQ(x8RN4XuNBR)t*AN2OP5(d}2zygj!Pz
52372 zl@{!0{--Df7#~dyE%tLC@;U(W00vg4AG~H^sH-|y><)}{Rfm2NC|LMD0ACL(V*ZTU
52376 z08R|bP{81n6|2IENJIvSkf78<>Jlz6gps-|ROnT*x-3#7Af}Ctp{kk2CsR|16ty_o
52377 z5Fs+7NxI5*&33CJu(KoedZ&tX>8hw2GSIrbIf>DfxSF-=+Df6xk2O(JsjF)qGo9ru
52378 z*Hv7C_|c70oU8^av(pjST-A}e?!`6S3x2z)WppMo-7;EUb?&>(s1&Qig?B?ZUaW2?
52379 zoCVs@#(=3yf`UT3t7~A!1hI_vnbjn}0GV1@V;v1N1@6-go~NxpSzI*3rc<BtE1LAw
52380 zZ_0|1CyZkwDF{_f_L7*>>70T9JY1+t<uYh(C?rz4Ty$<4BDfqx;M3gx9NrmuJ>As-
52381 z@bb-<=-&d%aj&O32=%SS>Uwx>Ln%&xxYbG6f$P$`qKF1v-3Ha|#dC~JLS-5%94kAD
52382 z=Q#DuK!tjCBFq$2b|DN_u0$BD>_!-@yr*~`Vqpbpvqk(G3~O`6^IYrO12wJhDum-$
52385 zRfg6ru-ED^C$%cVyq93O4s!}7Z)~jkThyW%r?o21c%N29@LORW9pL?16#;J3stEAg
52387 zGj)L9)v5?^R;wbwM~dexl;Tzmk#n+;CgAi0VQ{WosJ0!bO6lp-_077A?j-0u+|M3*
52389 zORyx}MrGhMif7Sox~Ex7>kUykNaX;P>!|E!>(y-g+wCv4Ki&Rl`(5p8+P(2N<KK!u
52390 z7k?yvdwf3bj=dIpF?N6KRBSdj9$ORh$3*nC=u6S3q7Oyyh@OnjN4G}1BQHj#gP-=_
52391 z>(Bch_6hG}-n(3nIJ4F@mNVwfrmXRdkr|HhGLN%=WG}FX*~!KYg?2N5?>m6shu|EI
52392 zcL;Gh<EK`Ex*DKHbf`A{#$YAX06_V5DDD0sPqz#!A>n|+R2F4^x|vuD(ing-lYRq%
52393 zHytbIw9y?0CkYCe!JA-Y4JP(BbINbXUy~n|Z;;nWKarl0u9d9fDY2XXl;6#R>@%P<
52394 zXVV?_ESpiTWn0-KE3si%vl}Q*vME@96O|<@$EX~oawC-^RBoVhn94~iC#W2!vO;B<
52395 z%JozZ0q!Qu@@w*|D{xN|?n%NuNw_Bo_axz-B;1pPdy;TZ64pt=I!Rb33F{<boz$@|
52397 zeB*>~obZhkzH!1gPWZ+N-#FnLCw$|CX`C>P6Q*$;6X5|pKPEjYeL{L*1*QsNst~3M
52398 zVX6?O3Sp`crV3%I5T**@s1S~djsr1ll_sT<G%WQ?-79dE2}hZ5lnF<faFhv0nQ)W|
52399 zN11SxY4x(c`V8ADek@)SuZma1%i`;;Yl~0Q%~*-bF)Bx?+(_jJl^duWrgA-%xGqpB
52404 zX9LaIpwGe8m%hho{tid`24|R{hjr-WFZecYeFN?(_9yI*AhtaMk^FvkmVKDr&Q7xv
52405 z><Bx^<^cxbR>aESkErc{UEvrz#P&jr-_54kX7H?0fbU~Ph?Oc?(<ZWj66tP?WIsw0
52406 z+(^<GA^tWH-C8W1qPR0j(O`l+b)0;uLN;F}%GU!$^{8&p@20P1m$9tR%`oCSiBj!5
52408 zbU63Jo^%}O+6<iKVV$Qz0}s-zxX>|a*@bnL9=@!-G)pvcl9fGtS=$5}zn9$#5quV;
52410 zIV<&M<jb@K9`p+PBlqj1C8lf12zd--YoMnA$iwJ&H;q*_%8WWq%{>y+zOh~E)4mO9
52411 z?a`p5Wos?(X>A)w4qTs!Bg^F=HOWCDIUtmwWsX7*N<#u^cmUd~|C-OB+p=!S%RNbX
52415 z$E);B9R|sl#4dgZoIs+?Ao9WwyYf$A|G$m7`DL)9CAk-T=cnvd*i)W|9ph1U54#QG
52416 z%5I3dLl9T$+HQ_2t?ky<l6BPkY>nu!)U&+Ztk)$hQVSMo1s17k4NJrOmU>#-=7wjt
52419 zJjJY5o2*NtRT3-ZQuk5o3VW+tPpj=Lr(RwLFSo$Ajv96TWs)WOx{=~hbA&gL$1CLV
52420 z8Z<^FnLJ*LW)gY4cCt3VTb9BnxfOE4)AX%8{yPTQSQ?%<p5Mi1#Jx-s7sWqPRM0Xg
52421 z6Vq-sI-nhAW^so&##lqP^(?CcL&&loS$tc(C}srae6}V&aZUU!s}CL-^n{uU!XvQ|
52422 zJTiCy`aqP$plpXMQlejj3ZOCvWiLD$rg%e=Oy@`Yb%KF*E<LU>?RN-_bSoM$7)w(N
52424 z%%6d!YFV=2r};fl-o;PA>fuJ#pfs!#r72eQ7$9Fi1^MMTSbN>yj4R?mglYF8n&s9<
52426 z#;s-wR_k5DAXZ>l>RBGg>gz4<F|noHn3HWwx-~W1Q3M_t>?GP`P52AgB}=aVlbdW<
52428 zwdq_~-xm#y7+a_9GK#F4M^e-_KSjSb$`aigZy3qUaGG?$8*?-(V9Nn!{Ka{4+3Ztr
52430 zgLHx&q!a8QonQy)1UpD4*g-nM4${eV8C|9qfS*$kX%7NLyV(_haTHD(-5`NDW$#1q
52431 zNDvFOcR_!5>hBKyo!8%P{q5A>cKvPB-&Xx?rnf=Q?gdDq%(BW)wHs^3D2rV>BiDUf
52435 zlGi86yKrCS^tTF};+S^g&|(M1F~I`x$Yc|OG6hMu1Z@ufa#kWQ#YmB--iAephecVa
52436 z{71yW)pP^F^}n*J+g*Ux3sbbK?-BG@e)L<!r5w(sx3rAQ4=0mTd@sL(5A!VdbHRSh
52437 zzRg}_=iqE|mUe|Jz$de;ep=L4jnk_26QkDGuJ=hRu-E4*jk)f|T%|GB-I%L1=DHhm
52438 z<;Gl3W3Jqo>uJoD8*@F4xuP-G)tD<9b6u?Ul<m~}nor06#yqJp&(D@l$n|;t#ysA@
52442 z=x(+X6RZDiqhLb6+oW8c30)fIMxNY88G!`e>L<UIU=QlS-)gg^eAPx6QZ0Q>>Weq^
52445 zNPB3A@R@<vIN;EvuKjIkeU=?8wH=^)$P;CtIs~xI5N^_hk0sy}rnqe&-PYGr8aw?k
52449 z@mmZBeP^_hz6&eSH-i=Wwsewy!#>pn+Xt}2?+V?FkL&pGZ;5#AkEIfOkMuLV1uoen
52452 zEf$UjWn-{l%r@u<3=HVxq_R1Kaht!xOGJf|CU?=)md{O_l5zXki~fug36vdSyT3;X
52453 z<-FPT$)MWx|0BPDTl;&yz&{HXYd8<y-d8Z@Mx{YmK435y4TgfOZr@&VI+H0!JbO(s
52456 zeHv*%oY5|zlX?SoiO=l0XZo))eVs!cm*wNxs439VU7jpD;&IPF-X^&%PHVc-zUAm}
52457 z<@EG@f4#Lmcm0`9UVQTMkL>*)U$6{!BzBAxdK00%lLywOQaPj3l8RVNs@-q&=DfYv
52459 z^$yOm=~yJ-vs+mg?^@z|0NBpuG@hZ?uT@gXoWan{=atvqyZzwJ_Ci1jerVms_M+@^
52461 zgs#0laT?;oKxu6TxiA3(pgah|z{X(=4tx$Rb^+}e$uD-MlWr&5z&9vByhkG*iPQBl
52462 zD%SO9bI=KPggW$j9RgH{!vQo`GOf4E`-fsvW8t1&SJyR@6E|Janduw!Bs%@Yh3+n8
52463 zjj1gV93Dtc#v`$ju8qHc@yXIHn+NWD;ws0?$=%t3x&H2nai2Ht^>6TxPj63-&qj^5
52465 zA@YPuxfDB-H(k+@?H!JWEzW>P?TAMr!@Z@4bteA!>N*oW6BT44SnAl*>vLNpu~5`y
52466 zYgbbz?;M?(0q^`KIR2lqw_#V=aNf*0#E&S%4=WK3aRcJ|6_Jvwi4#GbK*WGt6H--f
52467 zm4KDrBr-zg10EeOcw$3gU+CKPnW8thPI=#L7zc(gZsu?EUI;U;k{!hc^5Lg4odP0`
52468 zlp7$w8x@*Gf=QD584Q0C-22#0Z>M+7j?2^bP--X<UlT}dDr|o6;^xTiAKa~ughxw$
52470 z_a;#hI!|rBTp*sb`8-o@Uwb+jl6Q_HPx${Z`60g@^2d=s^}3wWuZSwbB7`bMs4ylD
52471 zXa-@>xi=cP!Ig5jdy8!rQ^4z!6v1WLsAe|UU6C;7wum>nDOM;%jn<;qU-0F(Wj6e~
52475 zd8+O&4(>pIS=;O{AWxA}*Qv4Ih|gL~1~;@P*QeDkWB$5KsC_BE+zS~~SE(}%=-ws3
52479 zY;WXKQhZ0Me{Qb7-Gl3Y1G0`q{(d;4nDKv#a;h8iE6O~yNTY2Uu)#}pi#Bx1;Ywx5
52480 z=?q!g2RgiA#og{qc1D5@Pr`1?`Z{-K{I2f4E~hi&8y<4DwS@u+gVi4^rVAr3qr+(P
52481 zX)#U|`PFb9Yr-n!Xp<UjY*iXQ$Stb=%FQ>G!ad&XRkNzmrl_j5a7F6G6%)5y58-X-
52482 zgMWCiqZ}x1UfU)_k0+*his7BN9=(5`Zh?H3KMa__?1F7%6BckN-4eZYz@fcW+f_A-
52483 zgcMLhi&-{E0UfeOzt?F8BaQN?(iGGO(MoY&)dDlRmeG)i52VKJqR(g8RE!mUu|%6a
52485 z`LIDJQ_ErDl&;7yat6<hGP@m9RRv(1z>w1{q=1T$lrzh~*)r%-@e+Ut@L`aKB0w%e
52488 zpg+#zno{+=m$cfdRv_KvNIBMy+vFafkV?f^!PlN?v-zTzyX+9wMKQ5`UbY3y+ado>
52489 z7kx>8%oinZh8>q5;wF}3pVzb-lu)~Of|$8{CsDMdH7krqQR@)EKofVeRbY@^6}SNq
52492 zAs`CX${T8}A70?t51NxCheT?HUf7(M4KfMTYNb29XgZ%!jG<*Z^?9|hjw-baOk5%<
52494 z(`8`DWg6I!#BrubT+)Cg0H$v>B>9GhMhmNg888L73-l~Yb4-%ty$p`LGrC@b0gPKV
52495 z3mCb|)g>pbtF)05G#oS$TbGWcQvp}dtA=gPTp*ga7)+L6*4DmOjjhi?0+UXMy&-#h
52496 zCTMhJdaO}T-O5Y+6D-ZHEm;zfSb`c|4K;>nx7WS!Osg*A%f?8t%N3et=}b?PLeVPg
52497 z8@Qg#_?s2m;R|#ah2->^e1`NuB<N{}9e<tM5btyQ)Kq8Q60ij)N=_x{>F9Q+{MjzI
52498 zFPf~-nf$x8pR>PVk1`M2yQP{1;vq#6f-Qgs>pJU3%S2r=F}E}**p5gk43QLBID-X6
52500 z@4f6VAQj!Ur5XlW@P9ajws5!}=ajn1#1*_2y^G<6z}ym)kQRVW6t0W2fY0NyS-|rn
52501 zJYpc48mIpy`#=K$^Kb<M{_MVyK*aB~J9D8>*yD_h4!EotmnEAV+U#-%!7kjcNO#=F
52505 z4SadIJ5zWzfPdQJ{T()QG-R~ed?~-(nGN}(9<#~YKkINtL!5`xPHQeH8@vH$JY%&4
52507 z#p*DtZ(4CkLA-8C%aS~4Y&mNWtZKoSfWQg7W39vFGP!~-UoscL6eQNEx?Ev@VSIhA
52508 z=uUeqev8*`vG`r-cAGVrn%tmgm7*y2u`%|(r@LdoE#Im!mVxb6$ci|FKU@}YvIIBd
52509 zjKViCa=0mcuL`H-Sdy%V?*$CsJBYu0HqjpRTQPW#@v&z9K;3kH(bHx+o}~0^Iy}lO
52510 zUDRPJjsHPlhlmpED)y&hLur4a-K1`ec{|N^V<eg%O?JB@$++L1_1a~N(HwDhlm?<*
52511 zYgJGCIEEhColi&m)bP6AtT~<Vs^)l`r$-I9+buq)xx;I6ge|VPBRe`2?_C$O2Yvcp
52512 zIRn{#9`{Q07l)GziPE+-SGcq_Qu0s_h(hZyfq8A2(||FGLfV4oIGN*DfLys@xix7J
52513 zGM@BgP=-P|D~Nn)zs#?MG2mi%f!q~3Kr4GOHJZ`PDV2ytyly*+JJ0j2=7iRhH0Csu
52514 zYB^2kAk;v@p9yw&oavZslnnm&^hEm-p_s{Ou|~qFu*i%}sPW;f*_2Fib5FN35e^h0
52517 zxDo}M-K^&qC-^jE(ML;m2j?OL(YFmEucUinTtD?o5KDE>YmKw1CIA?R;JOS9gDi#E
52518 z9LuG1Sx;su#A?hX4Xd(8rvuC-ue-vN3&}=V=g*e}3$TS^p_J0!cRAjT4R)xy0eCu9
52520 z@L|8r<g)Dk9fva#$#f>$HRXjm!!j@zP$X;HP!DqV#oE8JuW|#+ut&C3-53oZ#TR}!
52523 zX7uA%Pqm-bzQIF00g6~#T4RU(474ra2n}AiRZE2-2e^|`eM}#vz387aptFK(4C_}v
52526 zQwFu0{l+&=jjx>WlCra>GCn%eo{gEp*=WDon>X5x;{}gvYVXPQV-fX4Wkd~U+&mD-
52527 zg=1NR6d5(Ixn^6p9yfl%f56tW10_oyGC|SS#6omA3*aE~0wg-JLk2z)D~Dy7vN8f<
52529 zGm>-U0v3<iQRwm5jUG!|BEP@G8L<{ReYSRtCq+kpa%yJU9PlLF4ohbu<83obN?W+y
52530 zYIdnkt0yoPHGA5kQHx^LV~ptL7g;~aA_%gu{N`oR&-&B(&K6mq4qL>L%dYa3V*NkJ
52532 z-P~?1B-DZ=JM$5%eWO3KIpdC7<H5S;y&+`$Eof;d??+nz&(ppsy|lUF7gLdt%fSZu
52533 zpwe_a8tfLAVrf)rVhOb?9LcnIFk?+ecI_N<AWzP;J-xBgYw?;)j!;jB&EU4kUf0^I
52534 z3#rRCdg9%-wo+%HJ1$3x(FSKub7xZRlw_sN5sz4$s?*>y$A^NRp^Z_zMf_y#BG2>p
52535 zvo1V=r#--(qHDMP*L7CB8`8cmRVYf*cf`3%YP9kFHQo<_qXr}4ox3!)&4~c2((W^c
52538 zNu_5?B<pdeg4U*+<T#sO?Isz{-5_SZbZTn|HC`W)_47B^qj~+@y>z48xO}ABjMeU`
52541 zHiO9$%Fxx-a4yzvuo=U$!HkzzZHk4iuVU_|>@xp<A-l}8eCC(UE{(r1y|mgezwGF^
52542 za<%+2X197JHPCbE6GpQ6gpvGz<AjlD|J6<yMml0#`h?-Mh7zG|J-+NJCya#E<eCat
52544 zjz0Qk#1gQKl<`{z^mSi8Cwo2WU;=&pnc6e#a(FDva9-AaNi>)n3=9U00b_2|ym8b#
52550 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
52556 zkq31G$|fozA|fIpA|N7yA}S&RDk7Qw?sIw)0_yWT-}k=n|NZ~<XRiBnb#-;ssZ-}Z
52557 zRoy+)Aw@)92$MYRa@(~1IAR}m98Hi>tzFk!dTc0ucO+3eV8Q-&J$hxI+;cLD%&xDJ
52558 z@k`*A9(C%y^j7~4MCxnQQZR5-;n<6d2DBs!>4)?C4V*N==h{IBaJ&e|s|_AIWYqFT
52559 z-d#iy8;K(0h7^t;i+m4`r()|KGV-p$r?+)$OLVXm8Ivar9aLCUb;G&<j<3P-MnjR2
52560 z@J~-O?9bu)hK`yrIji6JhD0fQiQ;yT95b*mbm>dOh;CSh{k@|KCyxzr#{Gfv)ll9y
52561 zx^UE>I#$~%MEW$)VeFXk6RfAG9**bo@v-9ujV)^V63*4U{{ksemPJv-78$QUB_EB4
52563 zOAgxFGVaY<w?{Sqg<QrdKJsbD={0zJH2&uffmxT9de^yNQ*uHxyAD%lss-eL#>F}h
52565 zXZO4kr5?)nt4(fl)4;JM<jP))_R~4BF5Fb1cFLnA<<8!0w8G&qq(ibdlbzng-ODYh
52567 zC7N>AIf|T=%R@>o>VtyH3_*G*yvR-~ss<0W)0!ex?_k=Xw#pMso78}g1k(;$Lv@2`
52568 zCsIURXbepNx=<l}WCG+!8b)_eFB(ThG?8jkcN#=PkQ#|&<ES_G#-ZdeoHH6WtVda>
52570 z0NpvA3(2h)(g4{X3^`gf7$p0Jkas|<J7g~pvMN4hee?aPcfRue`L5|-#s0LTTkvUz
52574 zo7>Fy%$?>(=3ett^MLu8dC)v=o;1&!7aYAEeI2(u3LJ&-;mQ<75ggg^F(?TilTz?;
52575 zP$jAYpH0IjjH*)&3Wrx^Lf1O*kr-I18Oq)SI#!ZVyAGCR`%a;$=+V9O0FKPX=VqEm
52576 z3#fxx*{n>rK+~70t65^cN_pl6a|`t|-!XU40P}rw4-GayHuuv=^N{%!jWxe9zoEO#
52578 z+%3{S1-+S{+)IW0XryECQ4~vw!G0@@Kr+(Ydxfz`MVf7(#J3Hx1o)4SA@)!hsq2wu
52579 zt0);WLu{j{5k3yFkdkpU#7;^yHf2-|(c8r6c1D`DH^qtyedvia+frfN@4`{GsFE=^
52583 z<n#C|$6&``^jc$d!q8`f7UQF62`z<u4<Chj_YjUB#z!F<e}VK@2FBY+HBuof8%-f^
52584 zG;V}sdl^OxqXp7zHAAds7%PpH$YI+Vu-zfZ&y5qX;Md02$p6Op4r#Wd0Xwn<YnW}&
52585 zpLS+vNVcW{YaWL@VSX*P_yy@-9lfNV+@AsHk3xS2%c?-zGdBFukhwUPOtU?<%dv)V
52588 z`JMB3r{(JH8t5ACy2t&hd$apJx8?KtVtq-zO1>JtW>urB@BZWM(wj=pm0l<<#ma|7
52595 z+Ce+9c7Kc>rTU1B^)QFFqW9?^w4XjTni*4#X~w<AbmKlchDe!?IGF)Isf|e4MB-~z
52596 zj05}ie8ipA7@fNj6aPtDX&ZfJ6dD7lhB446G6orgjTy%M#!O?jF~pc-JYdW<ij4=2
52597 zdB#v<zA?-gVLWCmF~%6nj3<q;#tP$U<1XV_^D$$JaW}ndJa4QttHCcD8!s5EOt%?g
52598 zhMHltidNE#wAzd?Bh4x1-NtJ39&?8APxA?Lnfau-+<eNMXRI+^HeNCO#&&apImw)A
52599 z&N3e`=b8_jkC;o$$IbiAMdng-u{q70X+C5=YTj#3H}5m&n8oHobENqXbE0{dIp3UZ
52601 zn_rk;!ed>C0&WVyEVq$1nJdlb%_uX@^qBExv>9V2nTcksnQW$*UNgb0Vy2pv5c9r-
52602 zmmKj^rq55k^4jG4d{}-*cI)VO_UM!6Z;;}znO`v2SKKSlud5f@i}8VJ15&C~@l(E^
52603 za?)~nRi0CjUE8lR{l0?1wf#CXtx8&z+I}O`SG3NEjic-we@u?Apdh<M$L3_0R5x<`
52605 zOM_;n-^lRC<>YaD{`j1nV1X20k<Y)itKY2AXKhUtk<(^i8^5znUKPJlJ->V3JQPkT
52606 z&hz=Zc12bzl=e5_RFnLCUx{5B8r4KraL?zj%g5_-$*o=Ue6U7wq0b-MHLn0UK0X%8
52607 zsYaY?RFG1Di-r_f%O9RI&`;g-{M3;PSHXTtM}K8bRqj~0(L)2d#6|}V$j>h-#HCI~
52608 zetxhA`Mx6bCoMa_w%?KIg9c{xLiEX%(>2fUO3U`U)3PxFIHjPr-znyXC45CCt^wIT
52609 zKFHlovDIgZa%~3s9qCnYFvnNyD@I!-bsg1Vp>BBvT~i9X=jWy6SIPJJTlL7pu@tsT
52612 zmT8HhO)Jc`n~3<E)BV+O7NuP2TE&whGo?f8BErdNgH}?~s^q7`iK8-0v~J@sD$K3z
52614 z60;~bznVW{P}=0${+P^;-SRs2urpJtAU{U(V>3%AI;U4&Npv)ZurS;2&0xyGwX#d1
52616 zL@{ZwSB{@ru2o9OXvJkx3F$UH^Ze0i*}gXZNVs1F8ZLk<#v-QxI&4TxR9IBUP<D1U
52618 z-d4&iaq+ftW{I1(*JYN3@HQhet!yCt&H|V`&6nj@w=r#M`!g#Xj4wZUhkdYig@ZN9
52619 z500}B`ZCEMmGO5S=DxmW_mw+Zv42(2KOgj}ivIC74gKS7HS~|S)zLrR)<FMwdp-Kc
52621 z!<tsuB#k5dzbui$y{}g`)+Le7Htc%-8`4W0Dy~f)q9gaReg*UVU6}@%zJ{WCL)2!M
52625 zMDH{?Bdu+L-<fkQZwol=+0&DmQ&5!VcVKqKVKb*N1?d6~dDos(2-PqVq_xEur=f+m
52631 z?A@4AB`s)|U~kGza5GF0XVV_b5->a_%ijnr@9;PI9Z{W%jqx`|x>KgVDK?$iifv$S
52634 zlM@5DO->BtGVPHl;xe2V#AP@!n9Fcti0GAz)KJljQ^Q0rP7N2mI5k4_;?zjdi&LXS
52635 zFHVgXy*M=nHf~-%fMaFP-wMe)>||>s$Fb36FB^N~G1msmOt6z&W}=i)!7`I@a*Og>
52639 z2&Q@4KZqBD=oidqJPiy-C5b>1(tp?pT*5XT=m|^(?hoSeARYmJ3Su6x02mxh&j;oJ
52640 zcL(>U1$E-%58CIdLTtAHPXZGGEGMiNf@y|72yXNGU_19$sQ1NSpU?-o?FvNy!XUo3
52642 z;`<=J3!*|FrJvl#p+WSQCzt|i76ch_<Tr*=s-qzdbJn48j!$W(qdpCFd`aWg<1|z^
52643 zrf+}=z)iX#-G=QgKo*c1L;-L+&@y<eTkv>Y;8tzXt;UDgHl}*&5M}EI)Kbl-hxK)`
52645 z)q-vY+VU|~pKbv<=}71nNuAUU)Kl=44Xshn5z5nE8mA*@m{FBd&5@L<I?y1qBQ=Q*
52647 z$LCWl+gJ^wWb<vDw;1Q$iv5)oYd(N<51ii><rZNa?xPe{bT!Ns=-)1k_fK>e&9L^-
52650 z_0c|`mrrrD40QydnxNiv=yKB9Pp=?-5cnO(&f{2J>y+Rg>y-APk1H{TqpVZ(1M2Jx
52653 ze#cs?^0B>Oo!6PxCFMo`>ryOTg05k(>sjcL4t*GBtONRX=zBf-y$St2Y#mkApwkJY
52654 zzs2!z>nN>7x)09nNR?F$)K?5>*c-OhuK>qj<Mq~A+6f)AtW(Ag>yR<lI;7tR#sT5h
52656 z-^jG?XWd1A<guUfw(PhZ8-RKiqEF|nQuP~ba>6>K>RUUY?|wBH^>dkcl<5Gwbh5tG
52657 zkK%Z3>$G|tdR?+XzoGo=uno8K4(i`(_24`ye-Y=lhi;Y7#;>UFq+Oq$20&L`8}{RK
52658 zk6{};SH_du3$~%-a18b7H00r2;|*#q?V1=@=%Rl^{m_ekvEEld0JC9}fhZqi?J!c|
52659 z2lt|_qd{Nz0Q!u8UWFL5M(FQSw1NJrwYHsf0?G&bD7Ii-XQJJpKCGjTMHztg5MBDB
52660 z%z5P9X?<yUP<NKKPbXqK81SQwX}~bMeclQpr0w(U>t#@-XyX)gWIP8nhOR$|?uU&1
52661 z@R9l0j<61yHL#rr+zE6>eu{O{Z~z6sR-gv_;8$Qb(zjbD6?B2`e~Ixtr5vzrThz<`
52662 zGXQpa*xE#6tX0tEkbV+~$9Vw3UJSMo#^XF}c3yYJ`72>-a6=D8`c<T}g8j;e9S2yC
52663 z>yu)mFEJ*UB!4r;Z?<*G7zOmfv0HF%iS?<Gh4et2&*R$^<2xVrYlS-RM*H>QEBj%a
52664 z`!J?YV2l2tkDuz7(1yaeuE2QxjQvf}ceI>;NxcV-eTe*C;A?O6Z3^ld4LxR{Oe$=!
52665 z2W4IdqS60{vF(fYPvV?h_-qE+--_~YV!UsLPyPW8J&*na%46GsvaHW21Tka=+N*~1
52669 z^$f-Y<^cP@@ZcX-9&=S2HXnrt9FGt~5a&)XCzyv4TfRbU`HMKh{4e8~#4hGtg}724
52671 zja)}rzZezbRhizbqr@fFlVc|9Ri+cixuC5um+oL5@mhdmGsh|(Ly6Uh?L2?-Tvk@5
52674 zT1K`Eti#G7&q*1JZD37i<B$zK-v-uZ0<6slb1z}8Bdo~?>oLOmj&yyyU2c=X->u_v
52675 z<vMk^y8Wx#d^?B-g7tEJ58FClg_T#pZD1WJ;B&BM-z4YuyMnUz7&!h)#r=vl_>(RE
52677 z2->F1E@kJiPN;ta{dfO`5V<zdc=thI7tJYytCVIkLcXVQjL_S!2HSxFowfmA084=J
52681 zt50Lw46!VaHe;?oud4&+aSebp=FIc@Cv1;nn@-mO9f2M|I*<%B1nK}c0S$obgV)?|
52683 z@vAI`mElkPtq|8FcCNI)*T~nq75SzQUWtnp>#nG;=)+}S!FBd-N)P(_lAvF*uPzSa
52685 zJ%U&e#N9y%@6>Cyoq~ORCfLU@#NSe~@2i~-`p64GAL1A=3g{Ay15GG+4@j;-u@?BN
52686 z>#VZtA-SHYurB$l>z%T-%%84vczwick^1)fQPyVHT&q;PPN{f(Qns#<HQN7E>l*a`
52687 zzZ4fHQcb<V@~b~Azfs%r>$iXedkcTBNmGFms;OeIeFnHPPR~>rm(>-<txJXc7u05~
52688 zXYFz4@#K4J6Q$3%22f*EW4c6#bu-;rwNbIUvYJIEy>Gl>e1JIBL`BgEq|g3~*@wS#
52693 zY?9F$fNq)36V<*2xE%mLYlGXhu}Z0ZfGF!G0LSW}tvZPRbs7V&0B>O!?g7x38!-Rf
52694 zfcSF5t3>r20CcYR9#MTn(fTOU0D3im?hT=1qn-fx-xw>1#$5r7VPnh%jWK>rP)`%o
52696 z-V!nMrdS)TJ|xO+K$HW0auF-rz^B_jP1Fv4-0nM~_T7O?L>)qb%|sos(&~t@>V&zi
52697 zGgi8t5wp4+CF+W?>5B2{hOy`#4Zzktpm)z0qF(U;{Js}vk6tH<de;Fk#=Q|cZ-uS%
52699 zx*fiGJK8U(1;F15s{&Xf6~bPHXNU$kf%X8#a-a#oH;S-72z?p^y9}F5G#vB6aM*tM
52702 z0XM_HUjGu*hM#P~n7jc!-+(>dMC^GB`eUM{x1saf;Nv!weFy%&9e%eRe*G@EvIFDr
52703 z9(;Kx?E60W_CCgM7sh87){Gxuz48HkXE*$AH`@3Rw*L^k--Gq$N9fyL#Ey@_t$nSC
52704 zK7qe{0{!=6Zru-`+K;{-K)KHlV?KkA9E9x;AvPYuxE#X%VfgCjhzXw~h8)2-eSvzu
52705 zz?$$V${$7S`4Toc20f1<zI=r-J`TS){w~ppdI0S54UT;Sdz=I}PQo_dV$8pVPn<%%
52707 zp2N6Z0DmrEyncbN{sJ5R3VZy9{#`^Hzhj+z3Gwa^l>GxfaT#M=it#Ol&j-Ngz{kYv
52709 zfp>sUNO|8R6+H&{gH+5)Qn4kZ;xkAkv;mNpWRgm*N-CwE{9I0@zDBCj%>a&7ev#C5
52711 zCROJNQgsV~Spe#-`yuc%sd`O;qonFX$NDEoHJC`MVIqLOH>v`>OserzQcc>EYKr!o
52712 z9>ay-Mp8FEL#p|7QY~&H)v_4?eQ(-9s?{T;T7N+*djqLl*d;fMRGS`HYz`*X4*Io+
52713 zJ#X#<z`h+dkW8vmZJ-;e&b@&t0NU>I2JjWBThPZ_YLV&+8+2_!svB(8tt~Jdc!*T@
52714 zkAU-}de#6skm@y%RBzPL8+F_YUGkuNKJ4BHI``c~svqoh+k>R~W51vhaDmjo`T*=a
52716 z)MyW>F~C^(#~lqxjYA*D!QSIBz7y^uH4%N8_#LT9(0ww_pNzWh`k2(+2C1pA+db&-
52720 zvlg6Mhp~9oPwKV%Nv)qrY6He)Bm7|##%T-2?hTCLTYE`ug^k}q|F+L1^<Ga>JK?t<
52721 zVBB}Z&-cK_AEB<j@W*`-0DSgS_|Rt|qz=NKhtS^PBcwhLkop34KMGra3C<n6OzL<7
52722 zsS`P*zP^dnH$|jQ!hYW_A$4jVsqcXAA0zbxZ21G)KYf7IkJ|u@^_kB|{e=Cq-;(<I
52723 zG^umPNuB?O)CH9L1%C5ucT&H>UoLhc^?O}Xm!Rh#siZE0=cR}Rr5NJ?Y-4>zTD?Hp
52724 zSV-FJN7^x*w6h+tgS2Z7X?I)FA=Lns3w@k)SQ_vn>F}eZBfcaZ`8w&SMWj88Nqe`D
52727 z8{JI0aS`bz6G=C1MY>ry@Ga>ZH<4}*eOjQ6me-NKsWItRH<50Q{cQ9-2gh>XAl(+a
52728 zxBZ%QySGTU|Csd6-;?f`O1e`c(w)1L?s6OHTN;q=3jMqFAl*HebdNryd)6Y|s}AYj
52731 z4V)!C3S%&;34p$jnhrb%>;zy}#0ounE$K1Pacq6yR?>I$COr-|9gqHv$FT`5a0vi=
52734 z9*51A&L#Z>?6(YhJPF$@haWzLb60qQ*GNB&F?)KHjc2L{@%jJ1@oa~GjpwTW-^UAs
52735 z{vNBm|HHWXe+DnMCcU~L={1=E__?MN>6gH>my=1q0{-}aA-xtHT6-UW*tizH{2F5L
52736 zrYZp9;ih$@H)DKWM_pUO0Py7v)b|Er+?$BSZ?z-675i_)M%yZreg}Mh2ON0kBI)hm
52737 z#JiyYII;tE?u-P$oA<%(UC`$P13>Kf5V88hOQiQ89(*(nKz#ZLKJyV`@JD};-ivnk
52740 zU#-W;p#5a%NHUDJz;NIpU@dR}xWvD=1hRp_Kr!$#u#bOTNrodCXvx2>B*U3QhN~AD
52742 z_(b3pG7_LyVia(YjHD;XNI^Ok^;L2Jr^u-M1sT`f4SY$4?^`meyhBFSIb@_=CZpQ-
52743 zWK{ovj2f?!asA5w58=%JIcj3;Y8k)-0LHe~A7rFY0p2Gg12)ar4q&`9s{@nBsO<#e
52746 zXOYny`7NMN3zTh%ZOcsn`qc6e@H-i;&_=7xz%Bse-WvUC-3~xIt&fwDoe4Atz9J*1
52750 zt^3{yfIEHP0#1<8&jn-v9f2{xKY$Hn^iLz>_NM{ZwGcckoCv@#3f}-e1z_g^m4G(D
52752 z0DNjxG=Ta>!*@r6)1wg&Mx)L#5dhj816z%O&Br1J-GTHSoq<unJ!Fgn-^VQhRskq8
52755 z@suF>(Zs(uPkH#*!+VP>7e~$w%sn&r=-fSX-<<pM+~sp0nmcXo=(+vpcA499Zq}Wr
52756 zay(ToN1h4U6VlsVL-(X6<dnBogz`IM)Gk^E8BgJK<AC<=PVVmREO#p^cGq+dclUSa
52757 zxl`R$aRoBd-OOFnK2FohkF`Q>1C*}{nTJn*$+fp-pFI0Bp#7B(O?G$ZE!T!USSnzN
52758 z#Fah$e0iy)&&it?{!iYk@n3(ZMpan%WndN21ADRM-&XTCWfv1oI6yQp+TIFw0Vp%!
52759 zl)X<2fMS$!Rw(mtAZ-QPyQ*DWNz$vvEXc*iU2GK#*X1<BItV%1Ix9H=kr(A17k_6h
52760 zw$%MJtK2591%I(@TY`V3TyBGM-%z9+sk#9veG<MgTUXVoI$nEps5VtVT~z1PX?0Q^
52761 zQ-{@lwMXq#+te1dUisB(^_*I+mZ*hlo|>(ut0`&%<Y@bRHB=42htKTyr!&jWn;>WQ
52763 z_?F;j=ihuXRV0uJ4e-&avfa;Hjca)8yzwgJQ|2Om--o%E$AI4&0huB40Hj-vlIeo1
52765 z-9zLmk!?guR5EWDY3uf+$h9Inh|Ctr8Wx$orFSfAidHj3^Ra5NlsO`DpU7O1SSeDa
52766 z|M$O*M&3zspS*`;CiO%htqY_FQ4OffZ@dD)a~%#i?U#F~OTY!-3;@2X<G_(1jt9YS
52767 zKm&IXSLF$vdK1_PthL{4CePSc084>Iz(c`0=KwQ^#-__#hDc2co;Ma4UZMV?Adde9
52769 zI$$eh{b7jz80`OA37d=uMGBh?aL4-17$oU|BJU7sGo`D@LXj;wZW+&_{8?k1<P?ZR
52772 zb98>uTrF>yco|;3)?8=43cucHZZbEUubW%o-P_G~%^mRXUFHYoZu3KP54?Pz`H8u|
52774 z&@^lMY5w$)KOE;7xvofwV}ad}69O_80kLy{BiM|<49LezPf5;sk#-r0PF9MfkBNNg
52775 zKYjyL4AH2Wz%*cT5aWQ6!R=t60O$jN&7-h@9@QSm2AT)Uj4MA!BNF{htI}Q+zdMh;
52778 zhmo8>y)j-jf^Qw7{2kav;`|ASJW98L<gn$Dm8ddKN$y@qUVZYfg81!3uo7&nocE~F
52779 z&}<`QS#9I&+8iZ(MBfitp*Hg*=Nesu<&*7mr2ONmA&wg?bs=QMv-WVV(FF3^v%XW{
52780 zuGyWX-U3<SEJr2IH6DO0)4WSid)EAUl@HC2L0((uVLoE!veauJE7lpwxyIzbIO{Ey
52782 z%Q)Yo-^cl(#%*ZT_6)M$eI;+MGUc6B5r`Kw9P`w0%u~Y?Z4AR4(Wp1l(G`HXYdGdE
52786 zx?bL-R#VnxZRPE0?f6|u)R*TnDv&kW09m6AmNnW)S)+}WHQFT1U5982=C9A`Zp>j{
52787 z&{Uqs=pK2)+`aN{xmm(}iI34+y=NesQMf+pJ>os!-Rs@u-R^x8pN-zN-ZkEp-WA@Z
52789 z?0uy75l_H#(R0po+H=x#%yZbY-?Imwot|x;EuQrrzh^aC2-f6z&a>RJ#Iw*d&okRI
52790 z-802A!86)3)HA@-&(qt})ziU~>uHHk6Hh%)rl*F-=SlX&dLlh;kB+(=^=s7GsPCh`
52791 zjyf83Flt}a?x-D6Tcb8dy&Cm$)T*dwqLxK1j#>~^95pj)TGZsIaZw|q21gY{^}(lS
52795 zT*UH-B@qiF=0(hom>w}DVnW2|h@lY!BKk%2j_4ZEAtE=TrRQ`+lZbi|nGrQ2d=bfc
52796 z%OheVA|u=pI%-<@<?vs_&xU^={&o1#@Ppy|!goiF3*QmGHGFgUtKlz)uL^%Ad|CM7
52797 z@CD(;;WNXhg-;G27d|q4aCkv@pYWdHUBcUkXNNZrZxmiPJRS8^3$Kh%Vt8W2p77}K
52800 zlcC2#4~Om#-4nVqbX(|_(DkAI(AA;Og)R?W61p&SUg+%5>7i3XCxng;9U3|yv|niN
52804 z_e%E)_fq#F_e1VE?iuc>?n&;k?&0ntxwF&V-O1gy{4P*UcU5<)JKpVahq_Hyz;)4e
52806 zife*vbi`=aP}cxgKUZ&8S62tuxrkU-Zp3s~OIH(DJy)iyhRf$lcE!3PU2d0lUUvTK
52808 zb}op>buDxjJ7+ql^*-X99P0Phj5r)#>>leJ7n$mb3_*@_B=377qXs(%yN`rbji`qa
52809 zSl}#h_UYHmb2_qB=&|sTp_yT8V7IC$f6Up_*~Qu3neA-uY~-x#Ovk61v$Ch2YiI8x
52810 zuJzo<h-1z~XS6fi>Et~pITIb1{`FDE1;?52V#g`RamNvS4mkEYb~(03O^&$e9UF0)
52811 z`51A|rD4bCTnoXm-mb$@(_E)v$y~M=#$rO$WZ0^P^J|Pq@9>_m_dJYFSJ<)xtcY=O
52812 ze$RGu?JOG`8H)j~Z8Amy*K)R-jLA9IbntXK#(+n_4a**Nj{DczdslkaBd%?gST@r;
52813 zi6fO~dE`dNn^-lqvR3jps{*(xQPF{CAZJ=wL8&<+2U)nbP%Ev8kk4C>LjG<|!zwAm
52814 zx(74Cj=&F)zXbSx#%j6Rc*UyE*B_j(zO-(DeA2>Iqv}=q7V?jlZo|2T#aDrUSi>OC
52815 zTO)C_#Hs<A9Vn3cu|8FgS&HwuSxq2MTYP;PusS3EE@@>{pqTICSQ*j^-=XOr*b4bb
52817 z56GETPssKbUv(`DoQ514K<`w7)dez1<d@Rl#R0wtQy@C*4)7hI+e)KFALyW-=HBV(
52819 z1P-BQFW0Q5TQ^DTzassVRa08zYrgNK#gkSi$O{(VJzCFwN00a|=)<_b>RoFG(zC2y
52820 zNPli6K}PZ@z^Xh(;ejH~39J##b0AlVRnLpv-nH5xeZa!nS|zegtmA>^NVgQPD6wiG
52821 zZ3O;_baCJlq@S?vg>E%1uI-{+kAA@I(q*=`vaCDAD{^_%tQ8`cLw2?%BmYwi>soa$
52822 zdn5TvhohckYboSY*3-zj+ls-_w$`nXZaFJU#`=)OzOAfT;-7<&4zq9_MlV}gNO!W{
52823 zX1iIhL3&Fu?y9oIHtA>0<tt2!U%67(x?i-N4cRF0J94&Kiy?2cYKtesS5+11>2zxf
52824 z^tsn6LAseWocnHhq!;|2;WKj8THAU+<YvhF)+#Ca2xJFt1-iWpIe}97ib}kzZ{Q20
52825 z@3FRuuP%UW7(l<&oz^1AfQ9RRRmyhLcknkQ;hE?cC6vw*W@SU3U<Rq-7GFiiSTFE3
52826 zvvoJ*M7EFK#cB1v=&;{n?^-Ucyu^}T;v9-Eor#>gh0%Tst8(4i0+&^hl<#TX2$?U;
52827 zJu2fEZ9RxG{Umyf;_=e2TkNq-EfURPC3VT#1^F6}2>m2_PP6zr@>NN9wuVBUv^qi#
52830 zeJmG_YUTx<Wv0+xi=$0*Ya!C#u%GBoJZd_E9+t7#%J&Ma_aG-(x68P!<k!)PCv;~E
52831 z>-qFL<kQv($W`1Ij2iQ(NcwWY8jtig>rTjVELA<W54^e&(v1R5r7r`dcZ+2d*mIhc
52834 z!7~M&4X{>S*(<1&W18w{Jty&yM`X9mP-8hpsZXpzVH0ew!o`!HkcjsndoRtknzJu)
52835 zgoHoOm&kcZ>R~@W%$n0WnP0kCuOR(s;A5ooq+cHfzF|EjR-ckcUJw{6ee|;5Qm#b)
52836 z0CD6;99D}s{*dj-aWeNk&oNo`<(d(zACh??SLOn=LbprQ?Z>sz7VaHtE0tLWzM*aq
52837 z4R4k>-!$;4%y$>1FPkJ9x0SZq$~?kPEp{;9X}-kRB{GZsQ^xCpHHmos;`wevX&>R>
52838 zD47v>KJ8N4AF@RNUPsG?3*Yl7pdLd;hsWhTnOQoN7D`Euu`8_WnTawJ-CoLZ<4KtX
52841 zx*qwdRx;A{0!Y&wTjxM$(HXp>mEsi_q|TY8us?k+eR)s3x=?zNYq8xX$-H*SYARNB
52842 zKz_opi+;5dP-dOPsGmyN+f#(6kBFVm1%8%Rnv1L}7H9!Ek!MwHP<?5g?*!M96;3T#
52844 z1MHs<%gBBstB#SSzl(?Tm)Op}aUpOodvYoJWcSh#nFToK-arS5FayOJynfrrOrgib
52848 zWxj52Rg)Zk=3hH-l6d_PEp}iJJkIM|x>eSD9mJzfTBelT%~4eRHjh`)>a)NvDDzyf
52850 zAFPM#k*09@e*hHxPXPQs05ty(0Ns%P2Y_zG{{ujG=ePgs9{dJ>-IL$ouP5+Z`}N)Y
52852 zYuZFih8}<ay@t-z?LT@>Uw${t*Sqp`GAi$*aQ#K)(fqxV%0opC5ZO;;Z;@R^b`UB5
52853 zBBydokxfL_12QYie;2Ck6PYYBwsIt-Thj8D`bw8Y{wh*_xmZcwkYDL*kw-<!Z(%F#
52854 z6S-UDjxt$k>y>nwhLtvplvl@AdRe5r$-a`j*S^xSE7I1j(qfSdL>7yjDRP>~$ra={
52855 zkt0P87Fi%t{-aB!o+7)5Y%emqf^06bk;u9t(}8N0DoZ+%EmJ94(&1&YlJiO$k_Dy8
52861 zLb7lnS-6laTu2rcB#ZwiFZh!bE+h*Vl7$P&!h&RBL9(zQSy+%<AW~S6+_QodE+h*V
52862 zlC!T!+i#PF5y`@cWMM>dy2xrGD_4+-B845v!i8j~NEVbNj7SnjBuULl!iXecM3OKf
52863 zNf?nNj7SnjBncyu-W0j9f?O+djY#20(h8BnktAV9lCUF5*pVdcND_7=2|JR;CV?4A
52864 z!iXecM3OKfNf?nNj7SnjB()MLj7SnjBxQ-LDN=ZmB)mwH|3i`_yhsvWBndAPZC;3<
52869 zM-qf13Br*C;YfmTBth7bAnZsGb|eTp5`-Q6^-iLAVMn~MBVO1MFYJgHcEk%i;)NaY
52870 zdn-ucNW5?)UN~aM<apsoyl^C5I1(=$iC-a7I1(=$i5HH<i#Ns#N8*Je@xqaKnL*-Z
52871 z28kD@#0yj6g(>mElz3rEyf7ucl}KSqym(!_FeP4?5-&`N7pBAuQ{ruHg(>mElsI8Z
52874 zB2E|)Cya;_M#T9<3M1lV28ojyB+i~e>|V$`5-W^|6-LAgBVvUSvBHR0VMMGjB38H%
52879 z$B5_0i08+M=f{ZWM~ml2i|0p+=SPd@M~ml29}_8_A1$6AEj|-1o*%s}8r~kgo~>%H
52880 zsiI|eh?dzQT4smn<rSpN5z#V7M9UlzEwe-PbdfSUL<<+9g$2>Vf@onuw6GvrSP(5N
52883 zxhcrg^eg)Oxn#xiUSYadnC=yQykA$4!gsIm-CpN=?X!gSUSYj=t4LwJS6J^A)_aBZ
52884 zUSYj=*?&+{VuDv<f>&aKS7L%!`s<aL;1z3lM^-2~_&+FFAX1`-JtAHiHLt`Fuh`!!
52885 zqv@3x;*}WUt$Rh<UTv>M?W@k<TC~D?)n238ya@8zX1dL5o11o2kw{`k-C(q_*==*P
52886 z0xRtpWwSoWESrNiLxo>Kb~mU{ryWo1NMc7ei3T>u?U-OQx?&u&IUBrMw6(G$+uy~s
52887 ziZQB{NIM2rh;_l}YR5V|mi{?**-_Vya(0Z8=oE}a6{C>NQ`-&_Rcy=u&-r9!i5``N
52888 zO{rqTR2icb(Je(rAw{&Z??~9!-4(9^?JF{Swk4%z>o~{>`WDFEn(z2Ns`o>-Ho_tA
52889 zG5C&YiT;T1-Rk*}YovUFnF*O;%q6AW2H%GpXz+8GTIMLoC(MVX4Bx-M&furqW6bL%
52890 zha_i_oO_#`yI0N~Bj>i3bNT*df?-KXejYf+;5&=|(EMB_TJasq7g?&`HQ$T<S@U<G
52891 zzti_ZeyjPp@f^+V)-?G^$hRhcQ~w9Y)BL2!@jP;-Iru+g3^Dnx_IZ<^`Fv>do%k9i
52894 z<`BMf>4@UzCnj5CHUAbu)p77sR)>S1H_mcEbA8TH6*-SN__@Sl#|+2;4u104!E7oP
52895 z;ODeY^RFFLPxEoU56ZuYP~SM>Su2yD&wOMag-mwvQ-!0Z59tl&L7ep_Yp&Zm_=)Zr
52896 zlfRexgV~<jWqtH-4lenid78iV>8MT0Xv+U96?$^JFF5%A=tKuU{hK9ehsk$gpJ!XC
52897 zmF8i-A1vkDnI}<0s95`c2S3Bi)%^UhrRMwbrQ&au*lyH7@l%eA<_C~f`8Ox(NplV4
52898 z-J;b6^8v`m#a4@S74~7xPo+khKa#Q@)O?5dC;nB570^48?ypB6{gZ+5(qZi9I@^dv
52899 z{vyr48(FIP8Nvw7&y+4|zMp-M!B3AzvR07%+oPXMe%kP()b@qu`^~+DFIw+GZJ9<T
52900 z$h8Jrb-w23ez$7=#mGg??8wo4Z~Hs`f3A>qq%Hn7$0mdS({G0Uk?qF6K2i?N_si?3
52901 z@A-bS<|h(^H9sG2ui29uYaVe^^HZ!GZ6N)g=BIF#S$`GDztsVA(J$rH@NIS3;3q=c
52904 zGgb35YQN@Z@{L53&-t6f>Wt=Zj<?p2LB62*`QamaJLGbW_@k!qw};i8ENO`5rwvi+
52905 zOUUV(pPav@5w&z@y-RG;S@QWCH`O$A|1-_cSkesk`Fzdaui3^m>zBA@dRuRk2+16O
52906 z+TbU0BXl>mp}|iT25Nblr}?Q)iHyEiza~-Z5I@_|{LSVT>|MI6KE-~nlOflMm-<A9
52908 z1(~bE#UJ?F2OnvEZr_S)(A_lnjwK~O`KhY;8y~;2C2_8NV@31-9^RrS;H*$-{UwpF
52909 zi{*Q0=6*koxS?;>UqPlAS&+}LRdpZD-)qnYkLd|L59yydt>59_sOV`%H~wz7X1-72
52910 zU&!bVnxCESHXK|h`w}?9zvg<4*`cZ!96gE*j>dNyq3pwopBe5{1B8S86!#JKC2-_c
52911 z8B>lG-!P{T*=%oQpI>J3v*@Op=aEg^7j>QH=gDW;V(Jdf-{3gSTu{ACo@Hi>#g?*%
52912 zt5%wySDbh7=<IUvliRyx2ALqSrHjc=Zw{M0*5e&XNPp%)UsSZ_r;B$;<gd-KR2|f_
52913 zWu!QI<jEMFl&Eq}&yk}aiQn!+4N89?-gR6e414KteL~Xw4VS6rbfm|#7tuJDdb@+m
52916 z&z|IGUk3MRnZfnX<XMs);mANA85}Y8n*6P$I}9EXhsl;4W%Bd4G?Tx-R)r;<G5K3m
52917 zmduRz@q9|1<o8q?3|LPO=2<}9Y4SH0#v2?J<IH@vv&o**mS-jUjo(|QA`E_d|F-6t
52919 z1`_Rgr0Qt-_7g`-s-an{SJbmohG&WunrF`kG-hG#)O{i2B|;uE(25=?>!?>`&N`|+
52920 z5|e-9-*hQhTW9G%Agizs<J|qiT=uSc`Z|8{srb8H?`V$XF3o!O()>(&496TAuE&c1
52923 z;F;aTZv5S!z3j=<UVn?D?G?}RVe&1u<%*-(V``ktQ2bl9kJ$fds*LYR&EE~#s}PeZ
52924 zOZ3^S`MU{w`58Fo$3mHN*;ZpUe9}50v*!ej^(w7bh~Aja8_L|u;~OLVy-o94u7>8{
52926 z{N1tj!oEQYs{-o>wL#MS4Vn)WKa)>pNpFZR4H90Ih$baG7P^@K2fU+_6(aL8)|tjs
52927 zUg4;r2G6j2nP2pd#jJdRf5oc8WksE*d41JU^KWtgp|#9+urv92g-=iM3`Koaq4>sk
52928 z65n{8_LSHvS~p@=8cT$IJUTO3f;HUMbdlc+JJRHuqNX|nSx@o0B34}xt#-)x@_(Jb
52929 zB$`i>-$pKw`LU-l9&)pZb(Gp7tJD5610IzA=CP+4-y5)@@fy!Bbc%o9s9G63&wisv
52930 zar`u3XJaGV!MIiCpl$|#!zIbWdQ3Hwl~24b!MQVe-c-*U9J`juockn8%$WHy_w|){
52931 z#UB2N@r}eZlQczK{d`_!kydpv3w4#J^bO=GeM5Ol-%Xy<cbBL1J>)6<czH@cMV``6
52935 zew)B7{-zy#g4gCV2n?{^CSJAWm;b&shT{Lbe&b3Djf4M<zjHlx%`aWczY|e^M&?Cw
52937 z((u7dxl@}dcWN`ih0NK&blICyUT#8gJ36=>dQF`J{?v-x!_Djsz;81<l;`JWw!Eff
52938 zlWX?tm8UW@Yg~22mzjL^{<W=2Zn?cOW3RSnX5=*`-I<tVGA@_xXZ)IRw&H#;_xtkH
52939 z*H`Z&eH1uYzPB%9H>BL1s-JgtE!XY`&)9m+{^qOpUd?zJa#i{MGuP}d%UE2VUQnJY
52941 z8I2(8Uej`g{fzXA`x(_TDhE@E!EJPK8-A_+lIzU4YCru_`h~0Z<&J0isjJUQKVF`a
52942 zXF%x(%J=tPv%jk>^=E&tP~Z0Q)SKxWA=j4guenm{ul+$vt-NM`#Wnj&ui2Nou<3Fi
52943 zI(-f><C^1Bui2M-)#+o)_lK9KivCg`xoewVu5Y^BsZQ@yzTft*j+gJXN^e%4#>|?Y
52945 z_kCZcXC|{{W-^ndvu~3f2!Rk1AebO)2#X*X1R^3LBD;u)$OS}1b`cO!5fKm(y~ss2
52946 zxq!e^<Z`(RGX2h}{->wAvw&XTyYIgDCaJ&w`qxucr@nLQ)T#5!V=pxAH;}l_zvZVU
52947 z_}9!o-ptSChs%H^<p$Q4?<@n(mK)ewzP1ebS-!08eHZRIUp{Xa>UNfQH1<y^Lq9Da
52948 z-N<h#1D}=GH}d<Hfwpo3OUv`hfTiUIewO>no%MM2EpJFQornHh_BEXYL@et~dBDR`
52949 z1OH0zmH-b+O?W4dN))WuSLwOt`hxt^WS76vlWqA&8+#HdOAkOYaj$fH+qE~h<pKLj
52950 z*R&nGvMt|qz6AJKx}fd+xsAQEN`Q~0lN<SMZTTZhhqvT6%IyJ-{63}Sux-LSd9;Cf
52951 zrRk-?mNRY0SL!I`V4G;<LnXksQUlvcDt49Pdy{t*0ndtm*mGVUYs0tVOD(x)i@)Ae
52952 zzW78tez)>x5%910qvHK7_upLvd@DAPt$1Cld@tTwyt*ZSMcezE^2LkVpI-!2E1uKH
52953 zeYyx(Ry?ukJfK+dh^9OsSaCyB9#E;+ghxd{t>S{Fd==6NY56M-H1@iS&;Z3uBOfaQ
52954 zRux@M*8*M@#YC<!Uifo!-aPtt(>~x-p$Vf3FF<P24hw)sg~#`j2Ysf{qz@JVn+kVM
52955 z<m&oKp-C4k09F;6^t}S$RiOp13KteyFsZP!u%oemO2O0{3P+RO{1re8EF4l;-*Rlf
52956 z!pfHXlES=}{LDg&zE|igbhhLRg;YyEQt-9p9fby76#%XBf6c$!d_MnHzJXVHsE_<}
52957 z$iMjpF6E!hH}EG9_>+Gi-=cHX<x$h~ZqK)1Q2zRS17GrhJo!uVfG>FyQ}U+Xl{fXS
52959 zc~8E9FL@Ob$u;n0Qoot}%e|9p!I#`?xfVRhJ)3Lv-`o>z_corFYv@F|`*WZZ<r+Fs
52960 z?xtLezLUE;2l`F!A~Scs`D<c8u0^-WwP`kR<ixf-;6v_+wqp$~C%2*P%>KF6ZAZr1
52961 z@(bGX)s|cvlH>+*-EBuoZTU=duD$+qv0Mu;=3F^z+Z8QXGkJg3)SI%Vo;0CfWlbz<
52962 z*RLkzZ`RbKvTb@)dwxRy%D%AseAdLYtU1!nni!UC8{cM4EZe>QmX(@Uwt;W$@-ur&
52963 zTfS}7o4uB_{bjFe%eP=*woP-(Pe=W=xqoHb^tbHJmfVi)DQ)Msx8>V#G;5Bdv*vgr
52964 zyS^>IU)%L7+wx1=@-0}KotZVUHrv;BT?2Eog-JY=`Bb)L%$N1$TgF;hM^<mivsQf0
52965 z{IwO|Gw){FzC)F1(I@NppLw})_Bq6dru@^B_>g%L<xQrA-poUp2O9gp#hKePEqI-|
52966 zKGVSK4B&O<l1xJ%%$$q*M&_)R>rc-#FgpWyojEeoK;?FMm)Y1VFXc6D`OE>Wc-$@@
52969 zqn7;r>APF<x2A7u$zPYgx+Q-_uI2sdi(2J>`uy}cE%{Hk>QCuUra=a!k0mXC?fq}^
52970 zuX#Ky?>{2f7~fCo7v?#TT<Hzz#z-6OE%|*W^>x(WoAaemYk&E${*hkY+CS1`yY`Rt
52971 zf>!=aS6lfrJ<`fQ>4C}qDf8WX?qBkJX%c_ZnO*x+I@XFO=|C$#?~-@5@^{+WieG8b
52972 z+Mk;F6aP}<t^C-|U#UO0@>A;VHhya77s(&ywIKCUuS~Wl<X&jLw%uNdf4hvITE=q|
52973 z<H2@$y!+=(>h}}+LaNPDoqDP*Z_4rAKR+d<d#cS|ow~Oze`j01O^U;jHaVU$<#-CD
52974 zcj~fKLrSNh=cRV0c1+|E-&3cgT4ZkO=v0fXI(0~@WxSHwFV%v_sU@iv8Je1zYREJB
52975 zzP?mLcFOk^QmK~fBdHd7m~y0A_$|efE%xQ)yU7-QPQIRO$iCf`H~HM&%bR?<wY<qE
52976 zTg#h#w6(m+hg!><e4w?w$$MJMo4mcXyvdte%bUEuwY<q|+RA%nTX`>;EN{Dg5dZ4-
52978 z>>_X4<y(`yY?nXsSo3(aO&{1*U*1*!Y1em}^~>Gr6CX1Etjp_<ra#K-o8)Wzd_}wc
52979 zt6ksxTlLH21-sENKTN-C)4!VaTbbXBeu{t1`upzm({_FQZ`BXm_5XH#v|WC->vOy4
52980 zXCJ1I?L~gJ>qGe0+~5CSlNXcox6OZ*b0_zAJ3rKBAL(ebfpjd`^ZAMS-3B%1w&l-i
52985 z#+Qi7Xv*s`LNi@M(1Yje1by$mLC_of27=K!9>Azv<TdmxBs(z@IeC&}w4y^f#-m$<
52986 zvCPR!GIpGh-h^Ke%VGbU9KELg!cT?$b2-N3IY#;*9wY{&-x9`|d37B9dM^+=WYl(y
52987 z!ju#p=zS&2vQwb9?jP|8wPHLm@_~$dR^nI>N6GiTEF;5w5u>EjFQFeKd!3&ty^-)O
52989 z7WP?L_8-gA9Vxe88b`mwH~Edyx8+{gzA}!nfc}KvJ)j#D^h13F{lkcg<>LLaTsyEH
52992 zE8l*Me9N=QGrS;cX-MGuhv(T`Xs>tV(;nd%>8>K5zpvar!O=T;uB7K%$OG&!yoQa)
52993 zdb>@mgy-y(cRk0@pZk3FHF(-h{D*M;{W5CVxFRDgapdYtr9bpra{n!kJp5gb-ld<C
52996 z<vfWT#nFrL4vs#-Ysb;M)FwTEZ^EcV<T`$Z<m7%?B0Tag#@Awb;*-4|>VX}BJj1qf
52998 z@w|Y0xeeQtxzM{*JcgVAN1%P#Fs|*P-VZQl;J##$q#r36l)l2(%WsUlYxa~avZvsh
52999 zoMqU)(ChD(eY}c&3Xia&Z2iL|k6n#-@t1I)+2s?C!JbPG7QZJL-RmpzIq0pZC>R;(
53003 zo3N*|gYXFSTp8u^1N2F~5LW__%h0o*ypFuVcF42W;*~5e5W`n-TtBl-`WaurPmufQ
53004 z$$cfR4I@wDDhsj|*AI{jIkv)eEF*jIPI&&!(%1h<j&VDe$rUokag;Crf={3-2jpS%
53005 z<T{x=e;<xtgc143xb#)c$|H~9`U+@~-@y^`!Dr;X*y2R4G*dpfR$ha&4N&yuT_*kY
53006 zzleUT<SzUQ2Rt7Uatrzl(t{;Er*QPsT|v=jdOOERW$((hB0-L;WfB;<4xTBa!*Pt3
53009 zg47~of1NJB)bJd+6t@2+OYsMclSbDPT)nXG2e`UyDQXM!^}iwlU-4I5>oq_yqTO%g
53011 zB&hSOB^Z5fk;LK8O8;F#z6kq2LCpcQAc4630j{Y~2=d0qag7J*s^OPa`WQwW-HJ~j
53012 ztB@<mcKMx?Z3MmNkKo8@-x|lWmlBkoD>=rK)W)&4e@l>;4v>EH@5rd6M-hy!HVao<
53013 z)&BAUYB;BnUhF}#7rZ)-Xi$<p`dlg5nOw{93i_FXZiDFheU49iY5ZfbeTZN@#$TZh
53016 zaOKGkjQv=95hG!ebp%()%o%rJ>zK!1l01WL@k?1_-<S7ZD|OM81ix%{7C|5VQwhes
53017 z>?QbZulotEHgU-Kd*|RcXUKCDJ#*izp^Uh+2GW*}$bMA&ASzo2Bf=4k=1M+Z!+JQ5
53018 zV9nei@%dSbYq9Q>(H&30bx`m|l&W9GHAUolj(X-cT<b;dkbUhZGCu7!^akXv8dCT;
53019 zu9_pS$%ul-OV9gJdF7WSuKts9y{tFHlbyI`iT@rWsj@pUTC8}fhHFla;21OWryS$Q
53023 zaV#~f;OY+ksEmO3lpGU%TbB9(xl-jMY9kmq5X<#1az)BxHPnlw=QTYK>x%9-j@a^f
53024 zf-6y-_$3+gxLn(F4{q7L_#G0ugQ9-um)}g;MCTF)+;|CorH))iP@_SQd_i6W1X0MF
53025 z<d48H|3=;=9`YXffCNYl{zWLKoJ6Tc4HBbH>Lgj}rf!m>Ug{-z>ZbuxpdlI}B^se|
53026 zQl?3oCS5d3v!sXSX`b}b5}iu==nx$tRa%8n-#og2E+&iVQo58Zqs!<DvYf5~tXxIc
53027 z(F4hT^dP!{tfPm}BgldDNP03kjGjVIA;-~A($mQ{DAQTw1iBMy;S_p4@WL7Ne)<5p
53028 z8NcO5zC(WmBcxmDL-c3lHu@NSjC_~=oc<Cx<X7}p<oon#X#WT3^YnT0WBM|Eg*-%G
53029 zqwkQP()U4A_%*XKD|wpPp*Q@7Ihcby!+gNw|H6_iNuFhCmL|Vtc~&6Lu_<f{Xnj-J
53033 z1u>VNglj73#mXVdq4eL$J@QL)t?4jG8zAkE-`#=VF-Qvt6IDnfkOs`u4XGr5Iq0HH
53034 zrWm9EBo`zrBtaPTOa_{`;BP~E6VfY?UT8|di_jMY^ew?3hV&q$dm-Hk=@v*gn(12e
53035 z{8i?&E`xNT`FkFuosf1wIt9{pNJj%*-DWBg&bL511k!rQ56D!1?|!f!gX1e<e+i^{
53036 zkY+X#hq4G5XK*MF=Y6o>X_f)-f~SbWBQS3C!LNhxz&H_*G_L=bB>XzyKl+*Vdb&}z
53037 z$>jbm=KkA_G*PF!UUP4w4eR+kWtwQ4iF_lmzse-*mAxwy0m+Pcd{3S4x*Pmgf5vu`
53039 z;ClIOLzE7H@A3<c4CC-8aJ4g>m0z^OxVYpDd6r7KOltCri#7RuMbxfgd!5|gBexI9
53040 z?FDlCbGiM3-2PN<AC%krx9{pSz=*i^2i&iXn@8@HTlw`xY5gGlCb@k~ZhtAam&>jE
53041 zhAOT}BRa-8CyI=xN@`C@X?vC2ACp^*Wcz6uTmCDuyu>_PFXPQ}i;?zY@*ATBqYBsF
53042 zm$8C>BiA8652IuX`pu)VZr_yK-+&|<0y%>#0DJ^T15?Q$=pWO`45)ql`kIw2CS#zl
53043 z;Mdpu^6P5>vM)J>L_oTJid3Oq&mi+a+dY%ahn6{;EFhmD=fQpFlP{2EpzD5-tl+2d
53044 z(?B~to1YEisc-Rbk=6Xy{GZ7h`5mHtMN%Zm@$x%F+r{<bdUB4qN!&y}D{dAygD!fD
53045 zxP^R9+$wG*=ZV|J?d0>~PH`tWU)(M3CSMTuh<nHd;$CqtjHB-t_rvJp0r3F&l6X)&
53046 zNG=jT5<emri-*KR<P!0)c$i!&9ubd_%fzGNQ5d&AE*>XWh$qAo<jdko@g%uYJSCnY
53047 zUlG3+zb03Sr^VCctKu2)42-*<70;5diRZ*~<QnmUc#(Wvexvdm;#Kh`xlUQDY$7))
53049 z`!b~G+{1WG9)B8+KMB8&n%6yK9)AGRJ?637>(8FJr*ZGikgkXOuYq(WB+x-z7qq2w
53050 zA)N*3bn~8*A#H<n<ZhmKcx%2jxi-pc4rsm4wa;#zvwYWM^7x|3<E}Zoxo<kWWw7n}
53051 z(|7-@4@<5dNF9)J@XQ3H5bS#(*&(U*)VLOs^F2uKK>7ou*C4$F=~+m>hV%raM<D$O
53052 z(*2O`Cd7Fwq?;gJ2kC0(70!#``1!3gIM0Ff>H4qCe-hG(kdAFiM?g9Z(gsNTLs|`K
53054 zydIz7c+>oS#iVJ#{59#sdr8y1@?7`iJ7iu=-s^Y)N@}f_4QY|bfiA~0lXN?t+H;v4
53057 zNDfFkB<3DA{tD?`NN?4zGXNWnm(6{^N8@QofQ!bXkN^{n2O!-8>2^qfd&c#Uu7PwV
53058 zq)Q-O0O?#vXF&q2GXUodz&YbcNPug`Mo0&k&)>&P%ONd-G{=~348m`ZdA?)sbztNm
53062 zPlzGywC?WM-pYk-*^F1sbW2<sH)$-@F;CL;c2oQ8|DWsM_SJRXk$w9Wvkz>m_b-$c
53065 zjAnV!-ar0!{%WJ^Z{)9!#6x?ja~sfZdj`@|kRFHhu=)ESq<bOV3F#I{D6bfd6zWkY
53067 zB`G>Yze48FuW~QBLB_2}@B|-bNg20dL`JL_l@Tir6u%R{V~2=$#ec9v#b1=gY_qad
53068 zS;_8HRxA6mdu0p@{IbP81nunC5S)MgDS1j-<9;r!hZr*{h!IWL_sN&g%1>~n;eGlE
53070 zI*8ybzVsWQ4^oU$^CZRCR8Hwzph>HGO<J5c$>=hFCK(vT)oL)#gz+dwhgeK-PUtHX
53071 zZOwO*$8h$DhH;-_M5_eFd7$el#?RY_V$`LBD9+NYrPFW*l%f~HKKNd;8RtalGD*o1
53072 za&G2l1jne1;@9B*Si|T?m*D&geTraQrMt-uu)Q8_;`CT@nzWq0g)^WyQ$p{=BTy$e
53074 z;EeJjg7F3KliyEz0KY3uI^^~92#)z*K?^%QkW7K?`2-`hdE{O95cCvz9IXH>3ZqoY
53078 z5=IC+oZviqK-NYG=QG%EDbC^#QS{XLI>p(7S8-mD{uSB;pZuD9&SjDxaE9zq`HilB
53081 z2N9eNvXQG{dz`e?cN3f+{Ry@>Jbi)eDaijX&;)G1O-EsSJH?p;hB!b!i&lABkes%Z
53082 zpiOF>EZ40BV<6dUh!3wwUVTZ{Ko-ByMt)O6gu5GO4QWx*Tqfx8^GAZ788$id_nw@G
53085 zIk;X&`~l=aPmX>p1>hH2%07Yfj-p>iJlcWpC3g``TGrCCj6jdLnxc2kp)%&voj5bi
53086 zS0XQoOJpl-1s<frMSmjs99#K+P~cK=jV!5F@Ac+ZT2aK&L||;yMt*~|4o~KnLq6P;
53087 zpGkzAt(wSpL;kBx`2^$-Y05hwpP$V0aU$qzP5D1S{+mtt=OBM{Q~q(t_crD42kw2R
53088 zDStEM?`q0l1^H8&^5;W-2GPts<EN7s<X7xF$lm{)AZxCHo_Rj-^(o|7ayUqu)zEup
53091 zZ-C*P74#sA5q!HT#_<}aC=;hs`Q1=D3%0ZAe2G6ebH9Y5<XTBrOG$?wJnQL3iCrj*
53093 zKc+vH{S;CCQHtN(dK_c6(Whjr-+!j)yY>vlnbhZHM9&v7>K=WWzAVudeQREq5mMiz
53095 z8C!-i$=FJq7iU{Ak{ml0XDit@b~5_4FvRn78OpEEqmLuIKzcA-fqr1@1{rblCI%9X
53096 zeFvk9vD+}dGP@I_#IYZt?*e<2K}p#!WF)^AFm57y8RM?8-(%cL_8xjVa>k(@xq?wG
53097 z`A_&yh>JhWA0`(5Q_xd%{s@1BX#8jVXGG<X@<)lnALEbV924{*&VSB-4&46)e}Xvq
53098 zFZeHrgQMS!!GFnrN$mV7{uHtCU-4fNE9iG!&~K-rkB*opKnDO_4_aR=79jP+7)D+M
53100 z4bl+sVVQQ&3he|goB~p)m-f+qIzXoaKTe|~z>mO-z=?C{Tsn`=2X0(Km(nr140v%B
53102 z0@hzg|A}5tZ=g2<U)~4&_ygd>9|QkA3Vinz@*8m5ztCstZ-L)l1U`Ee`0GvNE8wbs
53104 z?*`cr@ZBhz&StQg$aTPT%YfIm0FP~B$FuG11a=}jiJc6520R8Fb^-e$yO4c}UBoVC
53105 zm#|COWyop3XTW2?VYdNi-No)^-(~l(@3DK4!+^hj0etl``&ae~dlk6qb@m2(ll>3&
53107 z7SqIt7!}ijUlt;t0GGTA-0>Ij9&iV62Ji*&1aL%3Nh=v8tK^itQc#LY3HW1JnWl^=
53110 z=1A>8a)8(l$AeWLUU)VGh4n;<!%$snuo86lyCc<aDB<^B#qT|WmXlJxyO-;WaDA%!
53112 zp>oM3m5VRN?FnBK?vpAPU4;9vJ?Z^F)@h-qz_YDnpxUdz!!(rv<Bq}8$r6r{XLq9N
53113 zNY-KvplSkI1WGAuz%A4eye<tdgI8wVDO&zS<@?{SeB$-5iBq>#?z^{g{QH37<7Wf)
53114 z$;meWT5!N!HU=-E_y!`qKL|ySIZ%F3M{j*Y7M~x~((csj^%v0c*TjtDEBD@4+4erj
53115 znA#1zO4jm!1Ig;D8u;+V@PHG8R0~#kp*VFW8|n`P{60-|lr7n;Zs|^~;nhmgVwCer
53117 zvV&!bR;;U{A`m07ct~g=AfrJ?ut8214yxMPK-p)_W^_v^Yq7;5s$MFtw763a*GxVT
53119 z09sKd0UTisvx5~Rp8@sh$+HZo=J?rDE-&H-E2t_!DZDOFCtMX*rH~JY;9X8t3siVF
53121 zPf?pn4NYB}PuAA{jGv0E+BvPabO>9zi41INe}_-Db+NeSdx5-5$F_zi<?wr}8*3v3
53123 zD6+trP^t@BdBgaPFtj2t1gMZ>>(n_5VIWz-wyvZZTO4gW!WXZrU+9BEKxbHs2*D1n
53127 zp)Zh(@5{${Z^~InBY(qiZ!H}F{st&R44!20;_ew7z-))fKN8GF|3Ob-we_`E$yG1_
53128 z_%CUN;zw<TRTHfc%vu|*;7U22$bCs{1z}lOE}Vpo-~jG(NGxqMLbB@uOEShK`}HL}
53129 z9no41@ZlA54ISm0cn3QBG-CM<VRzGMw@j7M838}YNpOC;i61u3Bz`#lbFu>QBZ&A>
53130 z+#{SW>nygzhh(>tP?mK_F@f;WU@su`Yk-xj=}b_E=2mS%yG>Vwio`Cxr4I<TOA=A}
53131 zaMI<`s=JA9I0$6dNsE)X+r<I+HLQ6cs+osCAjqxe4+q?ioXc4@EcvWz>Bz-msc3gb
53133 z>va)?9r-))>Y)5p>oo*Bsy0-=Sk{<Yzht%M)EvHGO0g?ek5zN&cAroqVMP!6EUIp(
53136 zs|BCcqH-o%XP0)U^GAY12OcWy(gbD;96OM4<ekpaMEwt^B3&74Z`k55xtzIr<wpy?
53138 z#jLu2k_)2w7A|-nxS$4HP$5IW1$~`C<bt7H-V|(qq1o&c4UUIrx#AvM#N$jjZP73`
53139 zv#Nx`ikc4vqVZ74r-h?}=YpeFpVu3(Qhy}k(>xJ}>PmQAF{|oKhp|2NXoLr24rokI
53140 z%;D~E1Vh}FcCYb-e9(l}px+fhqQ@U3wc68UCRqtYFPfD?qP;CFTW8}5rfqO>Gxs8s
53141 z?ty#d6|;a}b(gN#HO*-;ybg!%wfd}BE=$1T6spCkdW=BS;!s0Aiyyc<tx>CP3D`#!
53142 z<X;_2>9P21PQ^L?pzhK%LsNC9t~;#`k5f}^AzM&&`>l?U#Yq*bV)&4SVaM-<dT{HG
53143 zlmG%OZp#{*Q&$ZOl;3b!+?q|XgL3~K-!4D=<R{y{qaHS|YOz@vj!D?!x(?#4%Yk)L
53144 z4s4Qmw<=mk$)E&6jG@jbu5^{BDV(l`(82-7q)R8ROoDSbnqIYT-JO|2IxDnD<vS{w
53146 zh{Xa!w^|2KZWC#s{D`W>Zu?(Lb-Iv|RGSnxkqi_+=!?uN+DGPwrms#JovT)LcCLtf
53147 zLy}^v6}rvnbiW5F-iL1|Z;2G~l8?32vt!Q`J55nsC#imt$a8xqH=k}MS5m90b!sp3
53149 zlPX(P7^)z-_}fgc8!k#TUsNZ~yv(FL)3^YKlA=)r$O^njU>T~;NI0Dg7b1mBKA+VZ
53150 zg+ZB$WrF?(1u9~RhWZ8vrw-tr1|9BHi!JN3TSGB_Chv6?=2qNZx6|rA($k#@E54$~
53151 zrC9jKMIxu9lAf5`7M<Or>w4K4u-mne--{N-+L?SMIYpF6n#`1)qCXgb;W~_{#z5_1
53154 zznaSNHzuh}g?6Fxa^6eM7G+W-9o1sW5510#3Fv%_Ny9XO41nLEAaqr(*u_zWho&Av
53155 z?43F=lbPgXks7~mqU!-&8#O&=ql(26E>t}BkX2C}Ad@mNUzcIgLsPmE1H4y@<TMTq
53156 z?DJI$A-l`!WDdX26O0>5C>iw`Nu+T6d*tleZD>uZ7Sn+brLen+!jDEG1Jz=WG>(5y
53159 z*%X!Y7!T%(E?dYc>^@hz;CG~As^*<NCzx<>3m;}Y7-HGcP%sYqRNT|qrRg?LDHpIi
53161 z;qF-@;Y=1r?LA%Y^kRI*_`j19sLXqP22~vn^BLp+&fL|}U@{lwT5p#-vlPJZJbn;4
53162 zN-QUC(3x_wvO%Gwi`y%-qryPhpAcin3($+8?;tP@O#l*9;W3K6C)j7xL1`<D9J*O|
53163 z7`kC-{2<L%@|KLS=E;RSi*sgd(>->Z1thc`NVtG+AjgUoAluTUUy@LYN30ypZL&ji
53164 zoKN4xWRDI8C<&y4APA|y(YP5TW=OUjuWMTB)V?7k3e*(8Z>ir^j1|TTimlk0R&-k+
53166 zLN+T0?i(Y5C`>3@aj*meYAeo)@pZtGWRr@fSAd|-j#MJ(hl)^1p60byq7ie76CmXG
53167 z_4hT`tX8kuYz8Ve9xf<CF;WiA(c@8UY9&=Rbbr#7kHm*Zb-N#mzByj8MO=2P?n$c_
53171 z!|s0n%=!&jh;8I75g-9FRklipt^t6dG@z_m5O7lvcs)*o1Zbd%X=DQg)ke?ncQ99|
53175 z_Tq)Jm(N+=*^$pSB%?VHs9P#{oxo<uoWM)etq>uHiZl5H)2PK}y`-;4w>vCBA(CFl
53177 zjG*v2tX|9bkC@_0W=Dg;gsSBYZ@FxVPw(*Ax~B~bJyS_3HYHl<^n1F(eD!9-^(jvT
53178 zbewR?O=TxOkbFxVM`AEy8<Dj(rRakmYuE)v-EOSOuwQ2zH0-acn|SgIL^Jetv+QK2
53179 z4Fvslok44<i_bZID_4qefQQ3=-Qnsi1$&CBr|9d64?8zAOR0OZ!2Cd8-==<m4y#M)
53182 zF|Wbc5<piJ^;>tN;Dv)O2Pk+^8f{kahKBt0Varf`YwFMHlDx&>hRqkUx-3DjOL!ca
53183 zgwq<~$905VK&+7{a8EkTZK1xbj`0^Z(X&~F-49f$x7iUYX%VWTt_BSSHN=hyla5Na
53184 zXoou-kwV$2I|4q3%jNTDvh-|YR!Dcd9qz6v1*_ia^gDndT&`RwlypO}?<KdB-_p}S
53187 z0!H5f-{JwmqNNU3BI)8sJDq8bTkM)p!v!Pg6yZdet7s>xoxqQQaaICU4fQs)A$NuX
53191 zCs-@y5gUktX|gr&D|x`*d@GVe*gE)Ok`P8#8ForMF1z3GYYMSZn`&~lS5i{f6(k*!
53192 z3|g7em+$JFQgqu>E(c#%ozXXa-f+*XP&~OKp86EL{e<z8$r-grK!@oiQ>%SpsD}!g
53194 z828$pTn9Z)Q{3H2pEp_w<x+aFl5p6(sp$C0s+TFk7O;AzcU0`YE-$x^_Jmw{H}e*J
53196 z&Kl|OR>|T$6|`K8hCzU)u%H?gv_38b{jsT-jZ)SJ5?IEDwA{t=9n1u&0_r2f5sFRM
53197 z@q4l$XRKkb-R7yJ^>oat*aJD;tt%114TI}mF5Hfc(178>A8<QoVcqBMve?2-E`siY
53198 z)oZf_48>Z`M5xuNE2{Sr&8-PbjA?Mx%j`~z5mpV=?uFVhYXfR$hOC`4c^+`!51^s-
53199 zkR@bMb$%28Tz;c-ECeJjS+Zzeb^6GFMiyg_;23HFFySm1R&%xvm;|&%5GSh`Fhnx0
53201 zRX8d!k1JFNq~bRB3a1{(4HyxJ77PeAYqf#G)HhYJ25h!Gzn?RY#p<={Q(Wazz+nv-
53202 z+}c-;xRWk-#;5yx%NC<dl~BN9DZXfg?20uKWC6D$A(FvR9`5tS0HBKeljI%|CrNU#
53203 z?4vdYtwzT@ZiaIu2s1D?5=`vez4^)x7o?;!hC~_jLf*L0Gzev-55*)J;dQ2UtI4WW
53204 zMK`=8NoMkyvN~Zwgc_GM-4EE(Fms_*NXmn4>l|WW>;4f76whX}+Wb}!Z!xFKB~-U1
53205 z8R+7lj5wf56ETb3W^;wq-af<bwm=7K8cMnVn=Or@WXo7mwoc1n(mo~M*)*C2-ZQN<
53206 zz<U{~rJqw<D7E^=W3^%%fE=sadSIO44+)DN4typY{;pb11ae-Riz|V&eX-#I06TU3
53207 zcjjZ#M86~AwxH>Hmq&g0v%MesvLknS`#)qB|NqUY@&87?3zQr*-b>!79RdT&Y&GRT
53209 z`=qU|{^4+0<V3f-EAxNv%K!n)StdY$m>kz{8oz^_Te}VN%OoP0d63kmH6@ewb8LD=
53211 z#bJZ0(n4v3tg3K%T={IwQSn)99g+B)#C-es9jcz~=8EC)Rth1T%j)E4p$r9mYO>;R
53212 z8jRy-jb9$Whn!ivm6XYpYNvyu?ZNAjvmBtlLvAOLGJ-UaKb45bI&e<ZTf`y6gi;yo
53214 zsNCVO*i-)b4!76o0d))QjW5$*kTcm&Nr`k-J3b1z>0}2E1a?boGp)Wo&<ZWuAQgvl
53216 z@=Q$hJ3F#16aB!qrkx!4HYfRbQmdLN^Q}7QKgO$1I?3@5{`Y(JE!(qK-|+wU>TC1r
53217 zYnnwq;(y-^@}6gp0~_a0%pUiQmP7vyW{-`LIgQ!l?q&bS&mJ$#o3qEA!*NIJ>@fg=
53218 zIeQF1kdnY)PNzaXE%WA-Amp<$Z_aH&J}-e|Vj}3nG;ghWD#+fQ>ujD2YM#f5A_7Gf
53219 z6M-rcfp(p<>B(eO)ju#e)H-8xIHiWoX6!Oya}#ywx&xP&nzJ=Pe;Ki+F+q|e-DK|H
53221 zn{ep*n<g9n_K61Fs!vQb03D{)AL!^c>wD6c-S;=yv4^A-Kvoz4^!R8-Y;RCWeMB2J
53222 zH1Qs6*q*Ms4I4^h+OVNC{jydk&Avl_r^)vpX6}`JSDH$Ix>=ICNfT=K-)27DyXiDN
53223 z;A%CUmfgwJgy|GDo;{jQeXXX`1gqOln~bM+m(L~5r_QCN?vV-msb+H+(t>K68qN)%
53224 zTFyIx+dG&l5|XR_dz(~OExn}!DE3d-RD}e8G^sks@@O@>7h5Y(xI1&}-(_k=wU93$
53225 zXNb$VhH9aByzY!E9&b3~PMDYy<nt5eCAaIp%Dj{yiA+9ILh}-umZWia&!(k|2L@ek
53226 z%bqPuc7MR{-^H->|Cd1gUvKBxjot6Rg_qGk$mVH!HbB|CnmrjH-!1d!@iBnfrI0^W
53227 z+T+bUv6CdI7S_9psgR)&-dAa!f7i5Kd@_Q~r+c)3ZVL&K&ClM|RpU}Mq*=oXoaFE6
53232 zXFlS~6{L1H)tqXdP|dJ->GDV>739<%ah59X-le=VU>zJOr$N6|l2d|}*@c!@nzOxs
53239 z0<PU!{`?`YZ7-(3c2nOLej2%)qj3AYWFIpRa$_TQwWYU&fLp9q>AV5Nf_!ge7>ag0
53240 z-LzO~lPm^kYJSqXUb)^O*4^Rp&Tn$Tm=FSWo9ma9P{f!&EjAQWdIygjw7U6eT3#1A
53241 z4o58=LQyG>(ajZ!K(Skv;7WcFIZZ5w`~_0mH}f!-&5)vmix_CueAnKYh;=Y%XX$*<
53244 zZGZAm?bXTKgL}FC`nKEc<QB4qZDu-%KPL=;(xeQ7?P+8-XsfHp0pt*JZ}q!`hR}XV
53245 zU=YD0BFve_*;WhHVtSOTHcj1XP+P(t=T@i9y46jcDOZv^VDz(<1U-S^IzRPhd};0p
53248 zT22jAD2$M$*~I+qH^(-9pJE<Ko4+45-=8rbF!4zGxnweaS}d0Qsx{!V$H$+K$5XT;
53250 z(?WT|?MTK$cs(c)vGJpLp1n%O$U)@5>i(r5sG3$7?HoAF6m_vckw1oz-f$L|g8^xZ
53252 z631I+a-_W{IFr}=i!^{1;b6W`dXT_vpv?vXTSAJ@mz#0q!TG**`!5N0+1wUK&e1(5
53254 zhK0f0`thSw-}GszWA@wr$V%HtdG_YRqDgDkMje)cOfc=?!dH&jw1~s*Q@U4o4xF;G
53255 ze^qjyOSjMMTEB41^(R*o;Sp#2>HO?{dn-fH(Swif3k9KjZLO^qKLg>=OWr`ZxGMt6
53259 zuJQ55=1;S_6`RkO9xB-K88ue9*|Ja9Ox+WTMlHU=g5GjcSZ1g6+|NUb;tzLpYZ``Z
53260 z+D3@-5Iq63@-jK-4nJr@xF$9R)q?>)1fycBihfp7i3SK;9+iui8Yj@`F?oTsdidip
53261 zN;0WfISvB3ZcRh$YdX`-O!h`$KA0OaSz3r<e;w+j&trgo`GD=SBO5lX7@3=hUP$eq
53263 zEE^t-8wF~kawwe(;wVjSsEgE|mHXe}q5=jF(W<S!W8f$P#A(1>nziTBMdkff{Ky68
53266 zU*CdG{}%O(uB0c5;kUNbel4!1H^UHmkgSz58frkr^-dg^j{_?U0z9mN3{r^#3L~1?
53268 z9|(NUTMnvQetP@-pu@-+TfV-$oQ-$&_@*2)vwwlxCWK*gb|x3!$&x(>F0K^ggPUjT
53270 z6&ObQQ0_G4OQd6SyVZTdE<7?kwclmn7i=b6ffXnQ@-rHSq4U;_+l~Kqi>&14IzF4-
53271 z*}>@(b1s-#$U|wgX+Ql`W&0Utp4c5JIo&}`OSrSkB3A13dxSj|jN}vUXx8J1dNa;I
53272 zCOrQ$7vCCoS@lT9<?tK2;a817%5M)l-99a{C^h@ApwK(}i;68<^7$Ozpx@Ei8F$zm
53276 zK9_}j5;fdlgNVVVwZ@J4!eYH$zU^1NHb8G-*L0__D=M?iEKOe%4%oZaj^zVTNl0FK
53277 z#g-dq`3hb~&g08jJ#lY5JuoI#9y6k)``q&nnup)ynpGQT8K8539A6hM?o2eqDJkKI
53278 zlF3D7(Or%SRN?XB&_wJb&gnXgLcllS`a`}-TIlMh2!}&k@g(}HP_b&=U46x3A*N{2
53279 z=F$#HNBhY!uGYNt3_9OL(Ldo=-F7It?ugnH&K2gGHZb4`a8+^jhC8xGz%sh5P|4(H
53284 zoz-hXm1%Qxl{JI^yk>c<dnlUd&3bbqq5bBSK7QQB>GMxsG5+LPgI)23)sDVJ^S!w;
53285 zj#;{EHF_Vr6k~H$^A>69ibnjLF3F*tyUpHGmMiF#VmHTnG9eaK$)O1@@cR-Re&~5N
53286 z&2E9ATzq*VvoIV9yDh^f^)2`NLBa{mrdvXkh8C_`7GHW&r_W=z*<-=ZUN$`uQf$+@
53287 zNB3VaXRI%V-9HAEVgqh3kdeC*UJ#IELTND2&P>h*{$@@FEo__2pIEnz7f2x*L(5Qq
53289 z#TAaM$CI+=KYsGI14BJGo^rW8Xv<gw9sbo<Exp#&M05x7RGl5kpjXsUD~2-${eb0l
53291 zwUiUfx9z{YW6c3tsK<BpOS4@)-R|<I<_>ON9q<mOaw|*y2QS3%m>Z#?zbTQlM24$V
53292 z6CjU}&)8U~-q7ZxlVn37*^nR?#-iDDv=l3q@``MFoTtlXCOQhvw8&DZD(|b$$x7ua
53293 zKu@(>9ZGRgYI-q~@(-m3;t?NbprnP*k3zSo1VZJ|5T%J5&Kn30_VgZ8ilhpePp=<5
53295 zi&e#3u`_8xSKT-V|IO(I_#d29e{dkQ%Np7`hF#%j++v{mt$2KzP1rPMSe1M{GCLh8
53296 zxom1Un;ag<<_5D`K%aN`=!_U=!s21VJ-xEusRtAQ$~^tOE@PyuIW^I_A`wY}W}Q}O
53297 zAd<=SWcq?^-sa&zuqQBc{i4}W=`)F&zRfNtaneI>tS`~G$8g|2)|qm0wghy;X#E(S
53298 zJl34$OV+Kc-xmPDl}(Djs8k7NYM1zgpgfCD-fEt&Ll3BwimcXk^1GUxZf%)vTvzob
53299 z6O`mKiJoLnBt+sgZh}+Y?Q+2MzO0)q>M)@e`-Y^fFy#kw$xY>6U-z;e>Q5M!wMV#p
53300 zo`HO-Xr!i$6b;{CDpl=tB%E_sy9+aOi$A+_HWN(G77cdb&FechR|<Vj_mtCS(Ejdx
53301 z|JFWN%DLd;VT_%-0@(a%_6-<hbX1F3pPaQ(_Bd-(D0S9_IB-P6?{bnC8iQifUGPw!
53302 zy=Npmt-myPWy#x-2w3&haIiO(=!q0pmMnp!o^;$nl@+J0k2@BYD=TK@Z9z{orO>cF
53308 zYPB(=3SDMx?QQxDV6BrRpn<J-6_X*C1*gY?&CV%p^E}>`+{KmB%>F51|CCr)X`inA
53312 zBRA5XOZpSMDj8F?boM`2YFFB&1Fv&`#+|^g?e>v<naZNXhL|Epm?~9>va>!3v{uF-
53316 z8pg1%{w$;~Jb%U+_X%6>uQT(KkaOwl+$m?tH6%o->j5yL4uU>N@9#UbxA)+Vj;{5+
53318 zr*`ak{=PhaF!w%wS~v^ES`QDJL1t7(A^`Ry9Z@@sjo2uNT0S<Z$uv9-h3RQHZ72~7
53319 z2gwXNLs4P;TbH*eP>WOR0W3_Hq@Y&UWD-o;Lj3h{vD9p^?&*}?wS#)LWV3Z8gcw}g
53321 z9@LHQ-l8V7@<6xEJv3v$xpY`$v8AxW=sGCpEL7a!5FhCG3W0VIjMa}`K+t}>bB-(K
53323 zgRs*%toc>V7P9v5H^4d1cG&FUjN3A}-+hc`#mxDZY4fM)de>k@6SlP@{^4nzmeIu&
53324 z2Hg~D!sr?3vQMvIT`+G~Wy*ma%Qsel>T<0>kK-Sg@hGGphGNnhtPjqDbp7Gy%<o)%
53325 z`~vsNLpm!PS3Wa%-7imGbIk?Y^U?k<KX~NvkAAHm9%F;YtbxZMqgv}drfzA68t`C=
53327 zeYFp$g(-CEhu_Dirv04h)Y92$-gfUtzwP_=+ejbHGL<g>2v`KS_0gwjwo;Lv0!PEB
53328 zn*rvjw+T5j*A%k(nD{quiht{-#7*By-gI>0rkf`I!?XIx0zlLXAeaYd)T#vw25F83
53329 zm^sbZ{Boz$>2Z48E{@YxEn-3gT3S8DXuun{=;5Hy;^Ap;(5K#N%F>&CVNEk)LFSD(
53330 zLLHy0RDRoX0HCLj{0wU0Y9LUPP)`JH$3{hBqY!WoI;X10ic!sqQR<a5-U$_SLZxz}
53334 zSNA5Trr(~=OVxl`Hq&+}C&TK2Bk;i&czh`vQ-mIL`r_7z%i3Y}$NDZblGD9TT-2-k
53339 zDqE%^Z~vd%y$OIES9u`(UfoAmciq+Zec#j5$K2C%X-1<N-PcH#WXY24kuUkgU~J3y
53340 zz<|MESV9b#u!L~MU}A7K8wi07Y<3ArAb}7_Lb5;-em2R5WEUK;^uJft-P3bOSezlY
53341 zMw+gwuJ?W4d+&SS{TWUeBUg^@eUvjYR(&!mBJxKDXqJ^FBR|-fywxX?6r>5$Ba*D$
53343 zaa^A2>uAot5C0j-lsi8v*;<-IB)ua5VE3DCLnS@rPHaT&T}J2jO7|up_c&pWVGzz_
53345 zj%Aa5CY21=!fMd#3NRi{H?*7{EF=?qc1NW`-Q&`|w2M<U)oX<Sw!Q1%yTpglJJUGS
53347 zx&(|Dextj20%;v>9s+E$K{nAU41v-1ki9cC6-hV5(xthky@ErYkk_*JtIajnFW>dR
53349 z4f5}Sv1vsZz`$(_)=h-fVSVfy;!$5Qtaz=w%DJq#Li|^&5DCujh`3S(Q;&IgNpeNQ
53352 zZF*@c*s%JMT6ttdjwKffx0@J?-99q)mbSZebLFmWTqXwXH%y{8q}IxawVZRoNld^L
53353 zS(T%yMd<brd?qKGwMqQ-JLj2H5)%ITrC9RnYtbr0fWXJlYn<GEOQCUYf2uEK1_Q%x
53354 z01jSzYNDYe;^6{xN#t+$gL-W0rSq>Hkp`~I4eU+w$tacB1pC^cDoCI~BbsOrx)J_P
53355 zjV`B34Y~k*J%rK-p~0`niFlwwh!V+PGr1AF)X6hd3`Kc=N{B~kqW#i^#}MluMBL^J
53357 zn7zFo>f366zxMmSZ|iA=Q*wAKn5mIJTes=-q}u(E8b&lcj4-*4JPhJUq*{HhR?MU+
53358 zu-&nZD%kw}2->1>MBXz>a6qc19sV;*<p(hw~6(^UiI|{e$c7*giI#1bPw|_O$aL
53359 z^^%O!^k7%+SXaNX7ngu$X&r-MSQyl3#Un<nTs&CcmMfJ_-W9Xr?d<Rw(vq@%Pa;I|
53360 z=~O0%4uR-kP_G0VJ4>nUW66j=7NjXP9ZHPd@CrF{;dwcs^JXSUc$2!Ci=rKH+r{t0
53363 zSn@W*rIUgvF~V&CD3nZiXoysK9KEJ-svW&{)(u5L5?9baqIA-Pk|=evKxfyzg_F1q
53364 zZvm_dyRYETD*&%SPT;xK4e!GFnRE8L(43zCF<*uWu+)2*j)>sm1lM^3u>;N}-S;EC
53365 z6US+uKwA{a`#5e0qCfX3kYah3;?Dz-;TVy_L%Ch<&QNZ9C^Qhcejs}UH_x2~Zb5Rd
53366 z0Jqy7#%&K%-f9?1Mn@P63HEXWd7u-!_9BL9U%O!h8Ft?PVlaB~1FhKqwc7{w&u<$Z
53371 zQ%C}=<Fw5|T!0HMg+nq+!9_d4XJxJ41;Bg{3BJ{GKASFLKdhaZ*-aruzvxCM;1H=_
53378 zwj#Ew)_e`=Pp)%|1)h=weX=xqLX%?QP{cQq*FADhtKU#dwG>`ut%X!-#(>7yVqxxx
53380 z0vTN?npTz%Btqsu08%vN;n{pEt4AtwEahi-mP>7~6sBU^CIvUcqM1AVgO@AMQm1U8
53383 zM+Pcx)(A|X5PRU;(D#rUM=aR+3>FgZaF_;(4%8I!QsNHcMj{E{i^fZ%D-YZ0fixHe
53384 zSl7t`mUzy#MdXN25YG}HAl^^Bm3SE7Z16nsDeUk>zbRk|H*-Wx>mmEw1lR$0zzWQP
53385 ze*i~732h4z-4g)zG8_Lvur6K^)^UXO%Q{%c5X3=*a}yh9LGTw6cl8Qz&-`3*_x&7k
53387 zyxG)wkYn>~E`NR?Q6>Gr{|I_q<OOjx=qC7pr%ZBDB!nVrM5t(F72!)FC2-Y%Dlje8
53389 zq?16B+{@@-V^0E>^{`k6!%619wh2roO{W?9rv@(LfD5k}T4_sYX@+2E;-?NRLnoOl
53391 zRsIQMU?2>z5zsPz8VE!X0>AlFKtMtxMkLoy9+UOpqm#b<v46+l6M)STY(E-ZU-_vL
53392 zX7PKS6TAJ%p92oS^2yeUjS2L5W#5mD2(~GFt`8B-P_-*S#O+x_1h@mxBe^}RfG@)z
53393 zf{qgQDl0vtG=!FBt%hJ1D-gy=g?}`p+JCqipI9pPQ^n`fm?*#-!?P0xv1~Z@qad`>
53397 zlwcYrVGwC~A=m<+1^*NLH}FaD3Gi|7F7Qt9Ht-~P6?i4M54;=<g3lvdK9Bxofr$&|
53398 zca?jr+tZi*2s^>iY)7|7H=Izj38K-gujTA?|Bzi}8;9#SS$d6DFBP-*2gmt$VqL<7
53399 zWt&S#w(CRdq-L&VJ0%iWU58x|h*mdksNn!Wu&e__U#2I1eq+53`Z9&7E_bi%T*AoX
53400 z!Mio|2D?vpzSf^^+DqD6``bpkujgdPM$`-6M1R>ZZ&jrVu7S|(#CSV_-A;$g{?cJ)
53401 z_d8u0c3dYL{-8(T6`HWtyEZoWsG-;0@B6f&h!4H#o6P+tEfO6Ilg!Ihj9uAy<p(d_
53407 zT?)%wv8K1K+oj8Hnw4mgAz6xeo=8j<sQ3uy^3Z}5Hk8FCNd!_!k;)bS&uIwxXu>-<
53408 zb#yXxb)#^i?vI9y?9`BNS(+F%qNbH_`67!0iQP*<NoNT<)f^4x=C|d1;gE0XblTU-
53410 zo}#Ve3(uFPXZBBWnRj6u=;DjG^8Ke5?`p3+cb2di!>!l-g2zb5Qq_1+R!VWnmyX9*
53411 zckh4w4Cl_auU#HGdZ;c84C%>C$W*LADU%!t(i->RnVCa1quQK&%SX>LBv~9u)WqCM
53414 zTh;NaY<2PZR^w#-wm<*G_Qvk^aHx7>Pe3eHV~U#d3v$#Cag<l6o*u0&lv&=ZDhVaJ
53416 zMMt78OQyX+i-H{c{M7^3G+*&&AKpH=b7~~A>ut@#kZuHW#x!kO94{OE#Bd}nPz;pF
53417 z#2{Lj?S!uH9HC{eDpi|azd~}Rthbwy-IbZQ?mc?vwv3zNuEby;TUSr*!m-VSoL%?C
53418 z&?U;7J-GRcNK`ufZ%^`{Vr5(;5ln&)A(`Nhz_-B#BsDw-{|8Y*Qp!%^2yqwjM&g6S
53420 zP?699fdt&(2jCX42R)$x26}8m4GkIeuMRj^gE-R9g@Ah>crU=Aiv|v@L2oeOKfvEa
53421 zS4w~)%J3feGW3QDD8bv&T|cP6Z`z^YMTm2v0-#3R4Bw2Nu7Ut@0{aONd=_z(PzV{m
53423 zzxlutcpdtkNAJgQ6JQ5|Sh9^x*q$i<!qF-9bD@*;3rDBW&xKCdBk|gQuXI8bA`pd&
53424 zKSc_)fcLT#`UP7=KMkhTy8I$qvvvQAT`Gz7Am!X6d$84nkrath&I4Yd6`np1T$-V|
53425 zjPsyU@)s+&0jnCUTEX)m9SjH4;qxF|4~FaaflNFa&qU9U!ALXGR}^pvA`*jDG=%K-
53426 z$Vi7DffD1ER!5-%I9)+HJPibm7FH32hNv4@Wj84esqW%1q)H;S3QFU!SSuA*C(215
53428 zRy_%-RZq2RKmSETJryE;bj$}}7j<+RwZC&EsFy1K^T0|4Q$H8nL2aN)q^w$MHR&U~
53433 z7dsDP*=Q_#-@hMvwbN^h3|x*}KNh8uesA&@hEgDD(<&J{3mj6d+N5e{5-*NaYrdK{
53435 zN1P!}6Q_uS#D4UKBj`Oxi0#BYF-7b|@7qZfi9C@bGDMV!*nS*~Fl=8AO^~)P=da*j
53436 zz^}qThkpV;5C0hcAsYWV`{xPxdiWT8HGBj<1n-CU+MXQj#lb$Dlkfzrz!J>C3^bqy
53437 zB`AXD!FLhV7ZB_hz_-BPfxiZS1-=5ljIj7N!sXlGJ>Wlsr@&jmtHGn-LGS>$AKVM>
53439 zz<`tg+jHkQRqEDi&h+Xo+Kz)Vky$Ie*>ML^j!%PzeaZ7|$L-Yj@p7=^*N}})bsp9<
53442 z)Ys~EA4Eu9k$-1)YmWuIdb3&m2S+#hdEgz@t22e>V8NJKn)jIrilk`@QhHn`BtfbS
53443 z#7i=#a-t@QQQ2Ga@4TaxPKSJrcV3m7%yEL7PBhB?{D6-ql<ASgLMWK@4BmWvXti<p
53444 z-eb!<%Hwy9!ijhNmrwrodw=k&E|Mk*rq|brc>9J6FMzG_pno;q47tnYs4pt!m**m)
53445 z{Jqy)S-kht5c_Vt_34#K#A(dhTy>!CqOs$Mrb#X$VN_|om<bMO7*|yibQb*`%=iV_
53446 z;LU(Sg}uAVvM!h|Ur5q4-o>~*rHQPRAN2E3Otx~o%B9C0r^@~}PL37@l4D8RrNULV
53449 z3N{X~+K3l-=iwqg+?|IEB$F<fDZj9tDlEsEQ$#GDsOvFr@vxFhcovTn-@Jqm=Y@aV
53450 zJSKC^R=$b9-fUKX;VqjSITvnc1+kDEUM*XdV%jD8G-2w{fpNBS`!2?{^4^ChuOIj6
53451 zq9wX{i4Bbh56-0m@%h~0Rj(y;&B<W0Iby`iemSM<1(QdIJVmhrOF^13)np`~i=;^^
53452 zlOugi#Xd)xyLUv3g(%HW44e7mLtDW<&-1hvh^mUl78VKwabd@mI3~WA?stsP9M#(0
53453 z4oC6^=WRCV`nDN;^hA(x9e(d4**!B^-DhJ*Q#6CPA4^4Y9%l6*qXc+^=4slR8<#T^
53454 z3sEhSj<6yt_`U9drs-2iPo+|P^mz2h$)fE#VQ!|)xNkkVe{fQ`y<QW9P*B%sy|ptL
53456 zzj=V?ifOABuVzcZVAJra9#eN)f8zGUIK-?Oiq=YQ%guO$Ce5)gyw>zL{ly(73$0Ql
53457 znxC$`Cw25#PKd^Dzl2-n=`Gwc6gYh0e^Xx}-w7gM37ka7`Fwl!+}SKif_q<f*G*?|
53460 zZoY8(y4%c@8Sv|^L)FQv<B2Sb#!v~?Wyl6*W<2y3C$d(14^g9{JLfb{+G1Tyhz}-<
53461 zUTxd_lpIsIK#*nfk~_&WvG5cl1w}5SKu(CwkL7n=yOds<^iai@-B%0FjHc5m%9@!f
53462 zyzq@XubH{_sw&sMDlxw+k_|_9#>E{A@O8EMk)b$c%-(YN!l#-KJbY)~TMEOSmNGo1
53464 zli+D6!zf&W$B}&ZQurwKl-&$!Y7zW0c*rhhjjLndXoo42;EQO!3H%yp+Gbn{Ho*75
53466 zMZdYg65MMWhauPjo&b-5Vcgr$hGNk%6a9o?(|%&Gd4I;RDK8qfpD|dT7YCMY@W-9U
53472 z4wcQC#g#?cZF+irL(Wcd|Bez=cYf>F%90yn-khR`P7EPs>v&E)AhdO)-ouW<)$4$}
53473 zt|SZFA2HV{*s`uWYhPQH^<i%7iz5-=+9FP9r!tV|X_*p8fnell&_Hq?BT@-}Yd*_}
53475 z?7ersTn&W+Q+Mo~yQNSXPf!%cK-xu93`f&~rW&*=RSw=Uck^GIeJ89w8XO8)QNtG#
53477 z{jibFg~nojO*XPwk%I)xg-l$%gdhY;H4WZVoi1oTucn40(z+(NXE?XSNfOJvuRmDp
53478 zANoE}_irJyGlc5pH9|eP{rTeT%z<%E8Ncn+rzRhp5K?JDj+E0-+I{YDk<UK+#`2*F
53479 zp?D-w$+$c|Mp`<5)u1mmv%jnok8gf&bn~UcR-*WaHb3`okIdaMfBmPf6Sv(nFn^|z
53483 zUAXG&pp!W6?5zZmh&98LiC8@njSnZHv5^G&%1hB3PLsokgN;5b!YiwUuB*Tcy-p=`
53484 zyDCLDUpP!SLqcwGjul+A%WH@(+8Qhs!i8IJ-uKkQC(YU@GyA8Hr}r(ChSNn2;6_IO
53485 zL>+@~2XPQ>hx{x<V)=Xx2y}G2K^(^MXig17+XUqlS+8}t7iLZrT-o)CoxU*4mXoUs
53486 zGjDj^y_M!zOwwJ|NbJ_f-|;I-XnB780L{vLspjGtIh6GV>w|u#enYXm(1^<&Q2qvi
53487 zQUrtTY6^jZoAdg8>zeaAl?NTj60uM~c7q};(i@=b2M*V|$JQk$P8l~_=m46E-hZ6~
53489 zkOIkeEW{C*fE%U_$&Bu9^?KMl4mvC!@#;pm3UkMz2EEI-PUIWGq3q25!m)?;YZi0`
53490 zErUikjPj%Jyzqhc9m~gl`<(ddtEUgwjLB2=@pDRCDeXHt!US%-_1WnsKDyrlj4Z<6
53491 zMSwNigB*k;Tr!Qzw>l1oaI<3!D!mn`c2Ihko_5$eV}qI=c0j%9-Nl3{CxVikGiY-3
53493 z^6r+`EattYTLgn}a1Bzl4{%LorW4NJi@vvM+A9x@R=}Q9uik#c4SztS>w}(TL-%=-
53494 zMqn~!wP#0V=qUsWhjT;6nmZmk_{z`BMbg)ufAYcyc0G30)9-rcLnKWRo-|h;kqwa+
53495 zB#w<#l;Bi)@XqtIyUvZi?sfdt@4jaav5-Hx_;IMi&jLU0LMwEt*+uLww3!LYuJJ>*
53497 z@vHE^!#5#yd$=w5?DlV*-Jcfo5wTM>8+ssOBl5;d+AAMPm2ko5ZrVfFx@;P2wE{5J
53498 zD#VF5M?FC~#4*EluO2CA#io~#3L*1&${f6DTlDI2s-6|wI}#>hCWWb3d?xBaTjJv9
53502 zgT^h#D|aoV_m`2xc!+d02bo*1W){_b?|thlN`-s}#a+ZS7zO{$sW4-eAxm12U<V;b
53505 zO&hUOU%bn=jd!`-k=GvATrLL6p?IaP^SU+QHc8ee$$4E<1_lI;_fE&jvFqo~Y~X^6
53507 z#->+UNFmlptz(Uhjr%|qf}v)0Y+y8(j)V}>6<Fae!Oii4vNpPnZ0`xIwVK_=MzwWl
53508 z58rchqDZTBEa2NYfA?@Y9nTFuxi?a`#F^`+Ps1-=y=!+S)Vg+p^K3vndwS*OZ;}K}
53511 z-RYs!>54m$@UsFzFpx~fb=F1mq^ZnaTMvfB%yiBwj9i<zsxYuE5n4GMqZra8L|%y(
53512 z<JMKPQ-^)68@IFS(e1AvJlj|tH^T1x>8rwu!ENWfvYIz!-_4z)Wgqc(Xu_x36A2wj
53514 zZai=H9(io{XH&KOP;Ma`P6v4_SDxNh^n}A&Gb@p*D7%s~ksUXU%-p^E@y{(qGS{8|
53515 z<qIF!{+d&N^RzgUi|rXJ48(j{8CrvhM23~cL_p-DZj;qB`oMK}@7Q+z$gAJTpM3W{
53517 zXreRS1#R~2W2PU^1IJ&t>)Ko01&j7R*cgu#DMb-oNp~ZBaCzpwBai=K7qz`_y!z3<
53518 zI2%Y&!nH_XC`3t8bA|l5sV7b@-#+=8CpxF7Ef79R+ykn(`%VA>&e@eh`^r)Gi-YN8
53519 zIH-C+6;>T_&~7Z(FRYTS4X!??ehz~BZ2OjdWh4@gwWDX|+OL1(BR9oNJ`{_#^r*L(
53520 zsCsWcJM{S5-ln(`^P`Ro+h`&I#pTO1;@+UnYxy{~n-47I&;8y=q!hyK)G+K{AYy19
53522 z4TxEenA=yHuI4oINZ1EBZ1y_nnegny&HJke$NJ!x=HB-9*N>!(+(>euk>F{D4wn7n
53523 z@4o(z2x}-E)zZF(A|~d?Fs2@1F5s7ZX>WKavVA%~Uz#4LC=Zv^>j$Efa59$gm9(fH
53524 zO?0-Jix5E`mz%OUg0Nf1U9xU?JnHu%r1CJorKH*1a;_M5{h8dl=Z<1aiYMa@J!+Mb
53527 zcC?0GQfBv8I9fciR6+Ayx$XeWydh{HxgqQGL?zFW?d2n7Pe9@s-^}^p(|OZi35uiW
53528 zkTF+jz3$B_A77Y6bI-}#KwZ1hNTvVZ@|}5K#-r?=&h5>*LvGqXz30a2k%AeC`llbB
53529 z-g#*3Y$97RI%^<IU58FsqzXkZp$aJ;e0Z)`h58a|J9)UB8di>_%X{El3(a{jh>yzc
53530 z50)AQfuIGN;5~lLpm~-ek=`o$ONq=4ue|Vqg*#{Q^v~Wth!4oY%Fr$M%-{FIeIt8k
53532 zvd$IdFv+fbopFLTHlbB0;v_(W<YiMfXpz-gb*~miN@>wWLbY1i61&pTXkh<d_<Vb1
53533 zuASk0hhKaB{Ha>hhXiunwKw|U`;H(iaRs#(-cQ_5+zA+{+x1uj7r#K~;6Ee&bd4Qh
53534 z|Iu7lM!G*b^s{#9<Q#->hm2^@3BcC~yD^2`hz^`2JCdZiu{R>wkrX9}gR=sdX>|mJ
53537 zsp#-0bR0h1>G9aD%67_boP^H*LM9PG8*u;*teq#F3T#d<;$AMeX?2@D_F-}CriMIF
53540 zY>TH>yOOUh2RaeyAwc8K4AgnM+wP`^aQ9P^B+g-n0!jDuva|gU;bv42<g=L+(j9_|
53544 zxEC5hp}kc^3zH_Cikj#P_pSQ^R)6jF+If7%p>4qLvsBq5u{21)1g7nPZHrt-O{ZPj
53546 zv1Bfh+kg+$*IP0He7I-H6nY=;vQ3zV27J)hwUu@P!nzd_oU`?x?qYeKpuMUtNl4~R
53548 zcL}%wnq6nH6Fkr@-_Ruw+ShL4+{{sz1Xb7W9hF;#7p6R6w<rj_x$WKW_s0D0bd03Y
53549 z+LDbJrwE*zQRK$amJP(Wh`$9-f(R(KbA~`*D0KT2*#wEtk|iAA(19e=fhA1ZOW*3n
53551 z-vMDv6X8-cv1NU<k2XNkGoW?^9fo<jacwk;A#vY%s{YcuuZ@wqNgIu$!+SsE^$4P6
53552 z!y#&NDDNjdl7}DL9?GW?82@td3-C#z4KkQ2ZW|2ykU&cqeZWf?Tcrqy&Q!k_ov0a@
53554 zQH*?0j%nk?+EQlU==eai5KjlgeIRCEB#2p<eGwosmxocel6!s#ki{L*W~B?IZN9h-
53560 z2iq_ADsq=I`6^M)L%X%THJ=xaU%B{c@Hk@7G2B^2r-*K^J;o}q*iYW|i<5SER5z~o
53561 zsHa*K>A<dCK|!FQNHCtD*Q9Xs2SQa`F-vQXLe(p1q>@j&{e=uPstdDwhFN8B&&!W4
53562 z{HN*a-mt&qj1K*1^gJlH3n_%W)5uhZb`@f@#Wu8RPQ;M1OKt&M*V51vqBns_5fUkQ
53563 zEZJZcvsLqIk-V0eQe0u(sBeJPY#*6zXV~~NZ(q79AM>V5Y9LXV^9OLVqc0-re2;h^
53564 z?m_Xaa)q8bbnK$zh3p->_Q}%d2C3N!8veh4AWJqRq)0^!ibV1qO-a6RVGz6I5~<8e
53566 z+TeO1!1gT!ava97gqv_cZg$HMb-e<e$c6+Gx-j6SAtY9lq+qH#%{1l<NIy9qCL<??
53567 z(*>Pqw896629~$ynb?g>r_T(hO4{KQS9N-`e2v(Sl<kpc^`4)?W&0$sN?|)Hls-p=
53568 z-B1I8DWFe55KNJ*)$7C332s=^5*g0Onj@AMy$I60z`G^G_6|h+4b_MyBC#D4{-&A9
53569 z1rsq=i8cq1{qpEb9H8K71XL1{RE*m_GF741mRbk>^|AZf#%wO0-EAA=MxT-(84dfa
53573 zynV6x`1_A~_TF(Y-CU`c=VlQH*UeFLcK5FM?BO6Q-Ar(?`mj|9h_Pt)u2+ogI)M8i
53574 zUHn_(arhA0izTF<-?8Hv4b6)nAx4X^p>Z36&Ib~GSaEK9af&;V&{ypetOUJEGDK%P
53576 z`Q32Op5(zBy<sVxP7mkvR}Js;wL;P5+pCK;zu)p1{-PgJuWViy38dwW<*xamsYK3v
53579 zp1tkdkpV+>1wy`{B1NK!J070cyBClbzl8P@1;1vuCK(22+ky-!GK}^x(W#~$L^Fj{
53581 ztec^N&IGOLg;*k*iMI-&ZDZN%rnXth*+4Mvw+gKo$=qiyEYu?5q{<IQe5sPYd-~?7
53582 zX2?_YTTA=mW=d-OnppDr2i-z&{|c{W*+{;Oww4&dECpPAH#`bn2@G)8vuG-}J5n3&
53583 zhX#m~-TvuLB%xw2Ugr+z-iUQJ0OI=OdHVs-cfW1)ZsD_+IOCM3N4n#4v1BZb+nrcl
53585 z8&2(bri4IJZAX&Rsl4Z1@^&w-bulNMp4Dx|Yaz`f=8Ykl$b=@{)z^BK?oJ&&C(S2=
53586 zSL%^OaVI5v{bF!T;e~K>9_9+UN+ZHn<7bajqAQaL6yj<%TsknD-J6TVriG!o0B)0T
53588 zsEjT=j88S(!l?vGPA_Q9*>7uxTc?dge<D@y_XtTTN_f0@_cG&R^o->ymSb87$ueqe
53590 z>hW!>sg8K_QSfiTg~S`-%EcR(6XCQb-XJ0s&|wuC@*BS6!>OX4Y0xiy`Ok8o-@kYP
53593 zSRtpofn-<%*vfCkFjOpKd8<)ZC?0C)NUKbgy{V{gG80Lvg;Z44Qn7G)tXSDKFm-n!
53594 zp6#e2-vr-8TQu4ZX{xv>*vli~{YG|e0qeC8bW)rf*r_u#)<5{Ay$^l*wbhX~efuL`
53595 z%|lD9V~4N`6aL(Rs}g9ikqe9P-{1i7<ECTwmOx|Om9jl5WUty~PZsJd{SSIi{pvnF
53599 z&%SLMl=J@gTz~zJhYr5#_vSi&(_N2Ub?|+A-+e#9@X(|4Qp_wU6vazC8?DG^AAInB
53600 zCkV-Q1!I^0*KL=79yGDbKS0_pf8E}TwJUM?HwGgikSFq88_{M5RG-JcYxwB*_<wok
53604 z@;G<b(EDyBX<BQScJE00<9pgm2T1D9KY4FsnfRKS%xRhzM|n6-jvDwfh=N-jw~c^%
53606 zu0MpK;Nau0a%q+*x?K0Zq5WrXUUTC-b>aDPqh&OzQITQ&Vl*sC9dCzedjEstl)y?2
53607 z23icc2pp;5Amw%;I70|Ae1ZH)Aci!34I!3*iFJr|YV}?QH-X}5g1#hri2G13*2P~2
53610 zE~pd@2?{YY@_hGkyQws}>0vB>6mUcvg{zihPZ4?FWxs-ryz8IFRpeGK^&Q((yV6E7
53613 zV2KRV3*)ug4G-;VkDG39h#|Gl_{N~FBHfV&<8Ykm$F5VP!RGy4CsyY`>_!%`tkvuj
53614 z*s%SqG7+iA21W!%r?qgUrswu$a|h#+E+XCCO-qx9&eVqpC9W1HqP3#0jctO}u$l8W
53618 zLF3{V;75@HVuBkwnzYyz%F(o+-=H@KZ4PA1sEGF<Vex#&BJJqSp$)glbtY@vEi{=(
53622 z6sUruZP9N->(zT!XS4sXBl>{;p{HP_lu3t!-Q10VcsE+5TMEXJ(tAQWgR7);L{+w^
53624 z$96ojdTx25Xw+VEQ?l`t97r09@0Jd-A0YSG8px6(0dy4*jH}1aIfle)PyH}$3(zK~
53629 zPXiwqe@<7B?tO)O-3NRd_Il4>;!Gpn_kJ&hZHlgd&!8xR4qN6BW&){UrQi#f8yOrA
53630 zz4%aVaI6E+pMk#u0vLIgzfymb0EG4aCd(fGfvDld1KvS?6^-!s=)rHo`#=DUeH5Wg
53631 zUf~!45U|JS@Dsd@dw#-hiw{Ogc+`O+C-RnVkTd})ijAg5-Acd@p%l=AQ=vj3$hwNU
53632 zSunE8snMSoSR@<U5-cNcWOsGJg7fgZAO?0K4vi&&HOD2|@^F)rt#_FuZ7|oIY#5Um
53633 zh-Gq!&-vD^7@S78fk9(igp!i7M^lk3jOM~M0f%2S>U(!DdE}r!613WBk|FeL#Djw_
53636 ztI+K#Mq@cfH$<er$WfV<g|X~42n?@n1-lJ_Jl&pD1q5=4AxI+YME-ZoI#{~jD%l~G
53640 zVxSEy%Dl)hHzY-Ppr<b-xYmV(NJJaa&_KX&731E~NPIXMEwR}XDPIH+cJTsCz;A#!
53641 z5@$ReaVGL3i!*+&iftMlFMn6Uc0v=jG%FiHNs2YY%}LcmMGBDtHEd-QWvf+89U)j&
53642 zj}IqQpKkJ^kqt+aW5wb^;phX|c&yJ~8$pY(g-sjE<^8qFkL#~(4CXR8#ZTZsgp6F;
53643 zU%OVXuFqp@b)}!4ulCRl-msKQq=$2XL#@DY*f-#hE#E${So8U<sMnXjW$4s+LQi=E
53644 z>m0R(+2WAGifEhJuG+>>#U%uNzH7EK=~l#2#iN}Nv#-Nv5M{#c00%p{2A#EH$HYfq
53645 zgzO6{Ti@lm7urvF5)--6eVP=Dgu>p@ydF=h?yUb4BRGm|bTLv&D!N;5r<4Ayp_I!h
53648 z0yYVDWBxX!g7hyj!ZRH-NN+MaprM1N-q?q0h4GZfTb8ub`H_g5mGi-Hdc1ga@%ERq
53650 z&EK5K<YLimQMEYDLsId&TW4jTH-5wR)PXg({_<@{a?O=`H6EMO&48p7bBVD<OCr5~
53653 z??x=!5Bx-5u&+~UrGFJsVq~&hyZ^OwG+~&mnpAh)TTTsn<TAsG&G}?zX4v9|WJ+K}
53655 z3)aX~G(8Y_I~m@SsIRQlBU+y@?L{Y`?77kt&<nilPeAO<-XKXEmTOIrX1ap3)gFs>
53661 z6#PDo!np+$r>lXA$E}KnHd;y!)>Diykj{-NsZy@v(ItxTD%^2<jjr8BdA)G4&imcO
53664 z96yB(#A{EX-Lz~!+6yX5u04cR5OCkRH}+ClR@xRWSD4F0tFbB;ozeP6Cn(qRop<6X
53665 zYa9H8SO%#zTWj$}tZCk*C){qI5JOUz>eUP8)T1-$^u$1LDqcPv8oi@bN=36f%SKpa
53667 zTs#LfLhD(F`xPrUk>pi$w&zENNKR4JR0DG+D-x{0vy|WTPER5=>f&oIegzzbyFeJs
53669 zX~~_<t4Ky;q*Po?Ax$s8t&l&HP)!8nXVCunBJ|^G-)&Xw+dn$g@%~}g_NnfK@G?cW
53670 zzt{@;hr_fB>DWhhaC(Jf>WfR^V9t$CrZ^S4TZ-FTW*YtrOkl2T#|5oZ8&jEHEJS}G
53671 z#9Ac8yY`ok-8ijSdMRC4+&i3|)QeYNnD!t1#-j^&&3iolMk0UBf$;;r))}Yh20_Cw
53672 zfC`Scz-BbN=!l_1j6%kVr0!`$-3*i7Y3OhuH&KS(nOQTN*Eye&HpO5(BZ$z=NS2_4
53673 zLR!=<2Sh%cOnQWj<!LojmMfKY`;#G0H8-m99?g{8E{`W1cYA$`sEMwyt~Q3N5>D1+
53675 zKng1FNt@^Iy@z9H-DSHBT$TN;Xw*Xq@c|Fz*KZ#i>nw)n;Ahd<QEiv7;{=P!#3f}z
53676 zduhgCjOwhDR=-xYVQJ!J6ArC-NG%%~z^3ASvg!@iQVqAJR5+<Vcvg0^f;$_r548MD
53679 zi+IP|&<fuF_m9My=H!sa<35R&@VVb{Y?s8JQ@4OJS{f-oam5j1WmxWy7_()I{wS4B
53680 zb)~g<JJPY<j|6-!Psmi_nznCh>RMlmqx|t}ChJ$%5*9(SB&mc8p#eKKKYZK%>h{@8
53682 zlC>)K-XXk);V`qoPm%7BKjEy%p5W7?09K4GM{U6*2sh$`<xEK<pu+3CKP^OBho<5)
53683 zxN9cwQKft+fA5N_P9*{h!5y~4Dy&D-zLcgYUVmWcuqQRNcPug*^MpNQJEayv*>gK7
53684 zrVy<?v@?>tc=6(|Blv%vya}Y?fs24(=vx8)kFewK-%18S1~hR}L%=q5tYrt_L}iiy
53686 zpm`-=Vpj-9no8}=gqrdfR_2dYDkpYTqM>SKpiFV95sJ`8-q7Z1L$fCqCg&=wdTjBr
53687 z`f77_w>#=jUw>_?dIJ&4mo$%=Of9lF$MoM2tG)_ah{-(sQ5U4_V^OeeAtVJT5}d~Z
53688 zJw-xlwYw^IJmYu5q48<mc?fKH2B+Zm-Nu(60!XT}*AC7Tg*Z<XuN}YF)Ma!~Va~;L
53692 z8n1if+o~sbRnz+My@KkILq3-E5Bfq!#?IWW6|ZlwV;?rlzFV#yol7Pc?#+e^)-6IL
53693 zmDN=JE_Vnaj&)K$c{gHb<M=4SAxe(#Yik!51S3O{5N2Z3I@O@#-`W^s$Mz08Ctkf5
53694 zbB5CmixpLjo4m+T1WUPV29mvbQdOF#M+&j&`0AV-av!XCB+rwP+0@9SHy%hW$0B9P
53695 zU91)*?{wNT{ouLUj68NL4!C==e6lgKRJBelq}u_;#ir9PZ}^XtnCy%C-5zf?o9e^0
53696 z0w!J@uA{>U*9xp$5w2H`>{$H91vM^bCaf#O_UK%8Cd9fqHK}fa?$Z}9z?1MH-~%Nj
53697 z*HSjNj);9_9?f)8@!&k@p74-fV^(XJcb9ZeVK8*l754bUv7kN>%pE8dCu7>#>klm<
53701 zV<8=!MZ9_W)wh&SHKq>~!-eIjnRICd)1%S!ZJf+{B62JgFXAFC7r%J%6X0tQ_u@3$
53702 zn!n%16NJGv8_zoJ-8QlzY+9-DxG!^NoPjP`rV@i{&{QK)eM*gZcjTsyNB)2I-ULjR
53707 zI8#x0f+7@CjY)#~=!cNvb#2fhTEr*9ZBs@lm0*4hAE~lZTrD<T-}5so^=wwCIl1Lx
53708 z{5+bMId^j|oz-{4z$t6mmM<DCUvAqI4+DeASCP*nKJw(VSfo^jb%a1~yc5t3$78UP
53710 z=mVc01<OaXb6`X`Q*#<8G?L>o?W~x|DU`x;wsf{d=`De7tvZb|3a4^&rLw~iDfS|-
53712 z;Ee1-YE-ZWnI)1l=pSUM)I!ksrUxpXDu`xy;?>8F@64Z+$y$rdb){NasTJ*<E;DOq
53713 zP8jA=k7Oxodjdr%a!i;ZQ%r#<mFqExQf!6-%VHcz7=b9c`}->rC*n$jD>Yd*0aB9B
53714 z-mz=QoyDG>23L?oD_J?z5-cS?pPTr4XNo7MF`TN&*AxBJQTR>PvE!RH4Dei`t4)4y
53715 zy47D<GHJS;8{s!a-x*bR-hzG*hz8)DWaubV&#~Cc>&1lz88GI7a3QChn5gR9oN9W`
53716 zXBUHA5$o!yt%ldoy*w@EwMNcg2?v)RBrW|MhV_e0&6dJd9d<N-5j^inG>rtvXX7fk
53718 zxWGtNB%YmxG8q=6j0#E<Lp6!xdUb8BSdc7MqBuhoq=xG1D$8r4T-3z?*2}b-28k1N
53719 zMhx;i?-*`Z=ENk@eFnV<82QS8v*QE||1uk_;SMG%$wuluZUmk<R`BRB;yu4B5N#d9
53721 zJT-&k0|zU(@X(W92;_)0aJRXn^@YT*w{8#~y=1oiGCs>f4z`*{Y3MRqj?Xd<;0!Up
53722 z4j*XbjPW!<mQ8ODh^;hmHaVGLbwNniG*{PYR-1FZ1&$OMznHC3jA2<Rf}k>Dp#Tnc
53723 z*R<6CztM-4Y0kJ2eMkZ_{+K>kBpg1CeiYcUHRyw@Ksoww7SHJk_Y6bvYtzMu*7(my
53727 zxPZ*8b|cWI+0|II9#+<;5PZCR&>F4;e@Owe11D4X)x+<?Q}-Y#JT)xCuat^~tY>F5
53728 zMHB!J0mq6-cxV_CN;qgZumXC=Q0z>}PJ?5B^wh$JC)u>Z8oF1qnT%O?-P%L6!Za75
53729 zB!$)9o-9`s(E_qmESC&|<boE)U7>ysSVt##Ue1{{S=Qt7PweC5ZzCphI~1x{qb&P^
53731 znX?22FoMv_t(-Nb=YKMSz;GP~hdwGv8iLk!Pk!$S!Q>f~Vc3l1>@}87G;NyVa12Wk
53732 zY_neX>uT7{P-1tVxS96WFAoIO*2TPpYgx`&DXd*})UW*zjH|g$U%%<TSKnW0oiBDT
53733 z_!mERF`btPaW0=OXoU-N>lat%Z1dDg@%H83u3V2|l3rD5-n^6uIs<(GSS1%BAUL#y
53735 z&hi9p9=0I=$AjNP`@rn*k@rR-_ov`<IzPq7V1rNwiwVjgG0NVFk=YXUh(~`sgUl=_
53737 zdy8o4svxem>NUBbKm~mc2i8|ZZ!D&Gs<)7si}#`;Fyw#cMVntQ2qgy(wKziDL-BYq
53748 zNzf=5Pfm%c%rKM!vlTP1$9b-(=$OD@80E>KIv-^#f~l8DG!C;6Ghvn}U*X!ZJc6EJ
53752 z^bpTZriaF1>FGy~sV$oYM{Amm`?|Jm$YQ!=S(c`)T*^zHXeyyh?^L`Mt+EInKb-}S
53754 z1a>lm-E7dsthqv0%VnCU*=89W0!ydDmVr~vQWWJ8>+?=--I8FGXKU^WvB03fu;b}^
53758 zJ-=@VT{l-7bh>97um6L8y?HCFh6C=#Un8FfwrhXTdl4dLg56!zg@>{bWkd1)6tl-J
53759 zw<Oc9Z{kdvw+fCR)iuB3q-0$-C0=8~s*f>>VoE{Ylq&h8FR_SzCy*n+wax%x`SL?b
53760 zrXJa=K$46w`wrQw(KL9p)(^cBPGk&Vt8Rf`<~6p|Tkg&m3-vQCQZSkG7`oKyHN0b;
53761 zB>eRV_~tzF@dOQeEcW4W&U;cQNv6p$8uYB}pIPL_-t-X)U}_<Bq>o%fl95J_Rw8jw
53764 zAp(KCsc{@2iWeNQ7*el+47>ej-UNdNC_eL^LFa{+k8bN!4}U2P^1f%8sw|0sv+8Jl
53765 z)WbjQT1xDP;jl{>JSb1-tg@ip^@*oDE->UIK`vNc*<y9u%!^**T3Tx^7_P?9zR!Ny
53766 zWck{50VoQY(Ss(=Rh#7JQ1S%N8#eVG1dAv?kAEA|LpEV^Y%waF$vRQMz=|BaIH-o=
53768 zjtrJ!Xw}n!bpfN?hTM3t(#W-L-MRDWl{;^~4gHD2a^_uybnh;(eNhw(bor*Td}VL#
53769 zVm9BZTFYCMd3hsuy1xFJg~6bdtKNT4X(7wYEcv}chTrVV!rd`XV(-Hk2(9+4@UlCc
53771 z*^k<R_R8OO$L#^dBv1WG@bv-mBQFFo53h$4O<}rvG{F2A5HK3mG@ko43kW##^3f4j
53772 z&xO&lhzgV0g-IxI)0oaLh*()v`>$Vr%RRX!tNMars1PUE(RG%t=T7|4M@)`W<=}R|
53774 zt7({r3ek`nWpYP1C5a(UP$kMH=7Wr{-1Ng2V*!v#GmZ*d06jxxNGFgkoj;3l0vFUa
53775 zb$Ihhf`=h!fm0lQvyh))lklH1n<Nw&HbpO9k4+-!0XXH+x2`|Z0i2>`r#PjS4^LP2
53778 zwc4s-8_KCHNhrRkZ0WAv^tP6ZvI4|8e<k&E7<odGmspu*RGCuKYT~1O2>G{&|H?R1
53782 zGBRyHxXEqE3bdmXxi{zK^@%6;UYREz(b+@2;S(pO-%-z-Te+z<{kS{tXaP$-l-Y%2
53783 zd-mvQ`#szHr}(tT-qF(JLr=TBU=E)aE1)(~d}W?C4zU1kD5Av?569))S!^c4GIaVW
53784 zsa2?6d+m~)vn*MVtA=AqLRQ?nwy%jMN2NoW;ZIcN&d-UeXiB-F&d_XSDI*tEo=NHw
53785 z-iroE0V+lI<ts(^8>18x6%YfZPu3yaAS6=D*465KnvoefBkP5-0|QWAEho#iQQw6_
53786 zONuIIaGJ<*hFtUoJ`?P%COONi=-o&k0v16(i!GrvR!12+YMuta;PEes+tH*@B88=h
53788 zb#3NdFlDnadKX6GBy>(@-wnvmBKV;<!=A3SLvQ97l;O~c4?!62`kw*$VGE&BM2dPG
53789 zAxM&V&DZ%sbKryaUfKr%;-gn*KQ0=Mu|NJG;4eP$b$`;;_&)<5wgR*owF<;yvn}B6
53791 zo9(`*s~q5Dwc1@yGQz+tp>|Mb6~$@5-hK$&J7d7}uI~2>NiRzp`81HT51#sDF-~Mf
53795 zT3W0v-<DWACG>uzjqD5t5{hCr16<5-I5QMB2;%5dWRfx@rc#FS9Cl!(aIo%RLUly7
53796 z9pGVt@)!bd7DFVmh89b!K!L0{QeXprI%QmGyWPB=XC#hy>}-`?KcU-ddP}y<-CVvc
53799 z-lh#~VX-&H^n%wl!XazxB-me=htI^3hN|@TVU0lZ<ke>5min3R+oQCt))!v&L#rzf
53801 zTK%2nH*N@yKv!?Q^yZ*-rBdCoS2}THHS#^!J0XnVr+Ey!QD?P{+QZK3;p3R8sfWQh
53804 zV{|olTd#JpR=rfuZu;<P_TM-U9?0=|-T?=m1QbYo6*yJHDK-8};inPQ$9O);h*$~s
53805 z0+lL-;9CFgZSxse6cz${Q5Xp<I@SzJ_Z>fjv7+D}D{s$l|IF@tPr-+L)py^$>m92%
53807 zMuUPz^*j;n!(uko>pXg8`I0KoFiwgRVn)$;L2ftdFh$<Ykm{-S>UZOmz$$iNp6M5N
53808 zZ(h%IGRwD~ucuai>%%LzFD#duYGuXloV0U(%$V52#GS|-V9d;o8FLPun`O)+s*)yP
53809 z0HU8EvxZrDqn+E$t=?yd8G*smLgC)c%K6<ENzgc+!U#>5fR7ll@TH}X?mx2;-c-+S
53811 zHaI5Da$LNP{-UsS{AAV+2-sT)H*(J)+6cu^FrSbD{&2Dr&+*sGKMM9z-0Si4gKfvm
53812 z5uzLK=FY{!39y@VxVxU)@YY{7muzPe3AU3U!P>7_%jIJ4MIph?9PLE^?-UyB7z}om
53814 zUAfk|CmtPzeVqJ3WEZBPwxTLL?`5W;HrAFF0U>tL-HFjrUw66P%PXpTxs`K}JRc$N
53815 zLi&(Ay@)*a%Op>yU9ZL#_zZat-Fqs|FU0xLLo{(*h6HLukd#JI`@!!JGCYmRooC)&
53816 zQw*LUwMH3|q1eh$a&Hgr$#MJch5o%iv@&>A!~Dq)rgIXJ-MZ-q-@Rt7oO|ts#)Yj?
53817 zM69Z|aJie@{%iOjA@fM-r<@x?mdvB`@#Qb~5;>a)TylQ$jIk+o$3VjfWmw=3q+KJu
53818 z)#4V8o!BU&eFjU5K!Ppa-_Udx`ah_^^J<zZmbjFW_6egt=&fEl-z%Q2bM4K+Qm{e_
53819 zt$g*)#n!DY&9QZ1xlzB`Zfz7q=infjr~MdKLcRiSEk$0#-hc1~g!xGn{mj7^KDkgw
53820 z4i4g-65Ch_{cybI;OXZ-9Itu)!xL*BCO!k!{Ig`uGY4w&IqKA!p8;z=Fj}K0Yjn6K
53823 z+|10l4Ps$RPYrGPu4e)c#efD-8B5Yh2Dq6R&ZRm3UTD#KW*`mDogGLgP6hi#T6^@C
53824 z&iTUf#V!A~%Sm--2n>7s>l+sc4Ax0_z{Iehz_P%C{6e<T)}Ud(rxP?m>1ls$9U{QA
53826 z434G9RGOt#isI%4L1Omb9iFZ4{lHnKeEZtN?f&hh>~_{QlV-f{#Fvl~{7z-!J4<M3
53827 zXfuqGtdn-;L}M?Ob{dv;s;^rj@DsrI19KC@abTc(e!6T|R^`x2w*+=>C8I7B1+x_X
53832 zM<I5qFpQ7|n$-&#bEiZ*hEr;lzda$s+<Llyf49)!OkT~%w2*)n{~Zo7a@IaA@Gl+s
53834 zQh~-m7>RE6Wf}v8oNI%}te}-?V_<l;k;ihB`oB#fNerV1T*zp^Qz5iQWyb7z)ZMQ)
53835 z9@<>I<zg$f@=M>@xO}X7s43ua{C=>T%WyZaE?Ip!O#!e3r-D@Aj%Eg2-e@yW$ewix
53837 z?MOL38R$^z(<k$i{Ye<P0w+^O%M-A4QE@eKlq*?=O?siw*lqxCCY2&FLa?9<$+x;N
53838 z-q!1}!J{ym(Ye^ARxaIs*;~Htd@Z&5YtO7dxCyti?7wQLGCm%$7_bh4h{cqbXC0tO
53840 z%f%*SvF(Sq;8wB?Rasigz;N!D4nBwd1#Tk^$YbT`T#V7Vs0bQ8<pWdw7%y-v#X{Bv
53841 zLb!o8$OOJ_F_}hw!|ecpyz=%p-s{&|8c<z$<ll2}OOVl8^Cscl|CY@Mw}D_*{ECs?
53843 z?^tp91xd}8U&K3?CvO+vNS4(qrqxq<g-GEfm$9`>N^68Lrm@mz-CHqL^+T_2pIX@N
53846 zYMKvaetBR7bE=hHdbA(iv)4cWXU)sIk^Fo0J!-z>niY4LD7}K8M>@#<vlUap;r8s8
53849 z7jYH{%45$KWFgud%(f_#rT~t`d9@>$5N-`tHbSvTOjuOoff%#9O2GXJYo!K`5(JK>
53851 zv#5!`8u-_}L8lA|)QLu388<-2fwB*J+r$KpMpT#AyU|gMOtD5&uyu(}0mGR@alx7p
53856 zt$8V6lx;k?0kx!46y>H3;Rh}r978?qZ-Mf^Fc2Xvv53R9QA*;aYzgiLnwC)WPu$n3
53857 z$y&1}S)w&Ql1`~A?{~_+i%|+U+!D0Qw7CV5Fx&N7O`v{OqLgA@&*u&K<mNAYu>-fY
53860 zfwJ_Pr8yW=<#L)eC~u#WbT>`liH#J?H?^2n6#VyTckSjaqo_-M8q<8vS}k07@N2(K
53861 z)5|4$$*HW&Uk)!kc5}0GQ>az7!P_=Bad9rM)GhyH?f4zKw|UF%-Zve4czq-h^``Ah
53862 z2M5sj#R>8gSPA>rfQBjZT7^L9pG4755-@reVFF^G!vw%kE67`)TavL9I;?dLNB!?f
53863 z2@}{XEN)L)3g}@=LG1?XMr{Rj+*U9!T1^C5>@`<fE8sgDLA6v0*->-B(DZ_J6G@&u
53869 z5V~hR=jH9DOJ{)RtLVJoHx1F^c}vtht=rYpWr*ZsXmiDRQY?66)0367u~g#-lJbqM
53870 z6^>@XHG%a6UG(EffV7Ywj$IOnYz4e6*c%$d??5X6o+vf7@e-ZFa1wT~JURJ>XuQVc
53871 z>OuWR3yC4SP($a%Di(qD(kixUmAsdr83kxCF%NRSG-`X)H7csaf&B%rjXaeac2@uy
53873 zRx`{N!qM<C1o&?qIDE{SQ1mZ-_*lE?InXPc9zHgk=86H(qmw=~cZ`Yv3RyrJN+dB=
53874 z>fXP!V=r7<9*-Qmb2M_yzT--FN3NakQ2JB1w(jk1oY?bkz2_EhJZ)@i1ISV+D}SAQ
53879 zU!0WT!y!3w7>{x<Kb*;m<*>A5_o@p|ZLIR8J;%<WuF+cZaO!C-kh-gONv@bFAjtJ>
53882 zNI58$OCfcn)nH5_>XwErB9N4w^95R=C7)9{PGDs!Rn{wxnoBF3YMc3+p-HgR6Kug^
53884 z(@C;2M&14bl0o*7jpsJz1%!Ah0eIWWWvzXCACJvjeAc`jTDXfZ5|A6+ktn0G-CNud
53888 zfqJ&+$y6po39QPBEHGp!A!U@(@=~sO49dmEYNeqOV%|$-N`kC&#!?l<Ij)y)%>$Z1
53889 z59^;39|tt~cS$b&R}S!mCU`;<81(-#`fi}a-!P=fa85Yb9D)#FGX#+)#xy}Erlig+
53890 z0W_I?l^~)k9j!qkcx(ZICPNrhtuRH|;|#};9Oe+<b3_bEE=aGx;s!3H1<h-k$ST=_
53891 zB=VVZnynSOm(!Btys6aCaUt(f9b49Tsamo~jthfcFVW-gCx0Fg;)@X>9{Yz|5GwYH
53892 zsE7^+2gn-2k*_Acij=S)Pl_DA>)=8{tP2xN_Ez#=fY14S{5j8W9{f$R=5Lbw9wXB~
53893 zf=J-LUmI|RC|=)Vu~!nDUXiy4rD8N0d|%mzT&0$$3lUQIb<paMEFIEEy|`}{)AQ}S
53894 z+JeDTIOkkBe(BqxP_P%n*8C8@K5&Xx{mz9#Va;Y3iMHN#w_ej3m0sQL--|Wq>RjVW
53895 zowo!mV})l1H~qt}KzRTpirt9u>?`NO?iIIj-1paf+$~GNn=dM%Lg3g||I8C70g?ao
53897 zQowRUpM*Xtfux8-hS1T=V+;Jyn<Dx<%?6xW-dJufmx_g)sYf+yb+pb-k4G4~waLha
53898 z#H}6H|4%u!F{~y~SBfd;c-xx0=iY8{=+tg6>5QNWYGoeXZCoAsv=P=Ou%3)G5%_C&
53899 zECQeQ%<-jk*bW3w%l3l_mllxqO9!7L4DyYDtY1oa_un7<d_vZrkI0H2{My0u=ue_Q
53900 ziTHr9E6BsovJlEDLEeUtrNHfpe3U8Ib^?(xSrMa-;sl9b9WTaV^CV8jj&FaVQW7{i
53901 z1=PQfMq>pb&QTEK<t~m9mI28UV;>t06`U}cQYoHQ#pPSB1^H5`v?R-7%?mDH3P?B0
53903 z{ig|<OxJ3nsq(Ee6NK@AA-VjGBn&hq6T*0?cSFKN=HwWu{f2~5(p47{hVICW5s^j9
53904 ziF)~)uS1t5KhuinLS#~SLKQ`J?%bIqOQO90iufhKQ-6>sUE{z{c*;+%D$Fr_34Z|T
53905 zA=^lGP|8MN?it`E4kxB!PvLPr#O8XCM|x;)6qy{SNG2+=fOH$p@|m=5CZZ!E)(|-+
53910 z1x&_k!*I!UByeqZ-3>)=y9K33Yo)ycVKp*FS^%QAi8k3O(`qDpXJd-v7V=5)3z31n
53911 zD>YiC6iar~YDwLG>R3?m+jC0o@wLH<%8|URhVl-2a~;UvnmzxjEeTG^D^+QgwbFz=
53912 zXPmh&bb_0J{0-&;o|I&dYkn38U|lo!Zy{n|6g!6g91tN*U~Am_tQ57Kzmjg~a=#pc
53913 zkN1Kwq^6M75*kc9q7$P!W@QI-p5%t*Htt&}6v8s_L>H>vckSHLXdIt+9V2wpZkpu3
53917 z*zTsM1@fK$73@7|XkhOZ8{>3NZRW)^Fvo2rzh-bw#=QL&Acv${RkUQ`)(HX>ka=Va
53918 zIX2ja1PG$py)Tjoo9oSbLWHDu_J%|_iUu!|42z|pGeL#2EBh)&-uJ?UF!UKZgvRj>
53919 zB{-9$h+VTEMn3`^g9`)3Qx%p#(3d&F9QYVh*s9S@NWhS(^5QUfFg3Tcd(Ye%uIkP8
53920 z+<DdV_7}a|8@YBG({A4{uKH#Va(TVFgQq!F3F-b;!H{H(mu@)`F3N%cPV{#VzJ`_2
53921 zUx26vK;1nwU=?5}R8W$D0jJU{mN(c~Yt&!>j)@QvsNwj)#NwZyIr-Rvy3wJFSWRkB
53922 zbZ*fn8A1V8Lk>_0-1<uK!ns`GbU)a0OwTc0!zh45|5g}+TCqd9V$yzrOpz%qzg$E+
53924 zn}EDaVdJ1Afli0pOHpqt0W5YnOmbo|F${Q)g6-AoFGCK6+Vz;kL19c}`WsH<+_r5O
53925 z95ZJr*))-Q^2HJv%NypLLc5l_R%MjVG?AmpLFnV??;#~1WcLO;ROF6QBsL8H;xGi4
53929 zp_6r2EhGi3@YLf7j-vQ$Ud+27i!MyP3%tfa7zm01;`)eBz?gdw24f(4Y8kwF<ptl2
53931 z)G8%d=?PJdRYgwoEF7NA&jMRcHOA|Q8{<o3;|zkz82W-!ePGTvS%qH%rfjY$>bR)#
53933 zNo4FtNDDYFznMhFe&OJCiR1FRB-jJHOuj^3K}y*F9w&dk_NipWr{d(#a1HTm;B&qu
53935 zlqAn9mJ5{I9rbMwt(>dgeX@K4hS2I;N=d~vLq_qCS==h<Ih-%uRJ|uJt4RRiCUO_-
53938 z6aJ|t-hx6d>sT?6W*kkPNW8`V&JD&7MAN>%sizt;5XTU3Dq}V+ul5ilv#qX^(HKII
53939 zACKmK&+S+&8#FQQO6s#1j-3!VQhHV5>wkg#GB}d|D+$Xz15B(ah8iX@)F?h`k&l2i
53940 zzmcr@?Sp5NV|#Yg;PpjpmwXLa^E=5J^58Scn$JvJng4(;gQNZKXVr-Wlp8^24rA^J
53941 z{?rlqr(A-kaQ$@=&czW+Zj^lrXR}Y&Pd-s`L;m{xi<+T$Y?@+KK_O|Fd{XjhnP;<F
53942 zwR<-#W8Xby`xZq~GSMVp@=4$XRj)71Pf(x&D4_i}ra%R$yu|!lLV}HN>N5(fcpRXC
53944 zCCC?up96pYPl*Ki(*rYkubG59Axr-&^tS*TFCe?fYoC=P`7y-)k752{c9I0-fWCJ$
53947 zsY<yF{WUL3q8LgFblU!IX@0qrX6>}J*-~pd&XDOUjQnxgq#6iYN53tGaGemoRz{l?
53948 zzVWY<!gqS+%hAFY2xe+(LJV@$;u+yP{ifmEm+K1OndK-Ig8)svX)Jspf~#wrx}4_N
53953 zgw-<6-5)x^nd8f8zZdWV7q)p%`C}M|Q>?wK7#2-PKR~~Neig9p?E@xf8Ulev6!enh
53954 zCj>_yL5z<|t-awZL>$A%un40EmN4O1Ty70v%wpykb=52m0e(kAn98HL!w|-yRawin
53955 zch*aCwaE7O^guHL-d?*?TU!p+T$Ij*S*m;IZ7pj7%@>vnTv(PH6<oJzI<3=hl5EK(
53956 zd8SY)(94gV7b55qSgH3P0XLVCr-AN>MOvgg4iDZ!(5GexZ^gOW>#qaX_(n_KFgb85
53966 z;jvY)?Nnzy;}`V3hEUQjFKwM)s5{P9n3{Y3zuf=2-ip;Uy_07OMp+YdRtarJVX}Y2
53970 z_W-UxrpPP~M8N6m4Ty%AzAzFx7J_l?1siJj<nbqP7b@M_pn7XPy?H7qw6)CkqxSKW
53974 zxm+&$8){9pS9Q+GWNzCcS(+{QImd?SBJAML4}KFnhrS)SrVGeZ&-Kz68F|QD<PrdD
53975 z6?kI6wkP2XTo~|=VmCAjej~5KE*9h-oPw#;^Dz57UJhrqJxL`{zN0sh!?x<H1FKer
53976 zV4&57+5)VChDI-J3}X^=Z>R>ZWAjGT>QC6ak|ddoVvro4&e29qJ^7A}O5nB^?AB|#
53977 zt4+aX(x&=<w{JVqDCQR**pl1nv@B-@+b3uZ^LpmZmueaR<cUo!teBKi&OdDwYpQIY
53978 zx`e|iEeF4eYRCtGvw1$Ii#gG$0kzvZM<r*@OdH1Jt5FGK-q%!y0_+u{VJex64)+qw
53979 z?Ae%#2K<yCTC`*+V4LX-qnIR6?UF*WBu1clDpfb@f|)Mo!SzfwMe`7-2t|A3iaB3M
53981 z`*>}X_9+8T&jXe#bo5~F2|anVQ*Pc-rR|a=+H{ePHfm>Kn2j@qcuWVaFm+%GLW-#H
53982 zAf+7NV`zqxf+n6KtIgEsF#H6h$5dRR3-0-ApOwDhafyw!BrXvg9hWc<hb2U8A}nz@
53984 zJOrQObYU2gFf$LF9ET&kD-)UYFtX=fYAFGX%6M*+MIVi2xLy{0s+i#VaTzS__JT~`
53985 z&s}--D2v`dSGi*$w`h1ZfpY$S>r6>-4B&s3GAMR`Zpl29N5A@&Q69Y@(=;krqFT2l
53989 zD_()rUwDa)Fk=#3w-W}|FD9KZoWE)XP1h(`dZ3ZtInxQ_7Y}v9r1C~~OW|zSxM@)`
53991 zFl5Fkibln8i;V2U{of>5!U7=_JZe58n4-Q^BUnCk-C~O4!1=@BPaj183_Jm>#eDKv
53992 z4W&k*krL1m;99{5AdXNp9%p_@g1#0{3TB4JLgPjYp}jv^9~G-u(B|y4gF-$B2dgnO
53993 zML>&b6eJwBj4d8jvK7P;!pYj-2`y6=G)Cv=pZVY}pv=t=7xJZY#3_x}tto-rx~qNe
53995 zgBGM}RRk<!-7!JIFsfL4<FiT><Q^*KSGo=b+9PW#tw!F5Whn849C{Ws?Z`^E8&fTR
53996 z?a6Onou*m!p(UfC-*wm7kD~umM6%E^DtAwlj5CYY6v3=)3dhj0J|bA&xo>-tU@=PE
53997 z-BF3(+NTZuB_fZ-qoWSN#3ery2xKA#q2k{Dj>kf)Ou?31noj3*i29!rMB`Gc^p+1p
53998 zu(({?)4IM;w)MJEZ&6aA(A?@d&C40B<|b3=Iv9yGk;?-nuq`=>3xEAnz+eb8u1+0d
54000 z{2h}cQ|_Fvmz!Cws)`E5(M5W7J<xrE=lWg0VrzQ(dy>g-e~Nw$c;M^Ed!JiVCejAY
54002 zrMuwdFMRKtZ?i>-R(LT-^BMl)d-n61=`{Op>#=V2q{)&LBTByXIrNt!XDZjfe=7|b
54003 zA~)C5IgvFqOwNiAK9W{^|HR3G5tcJ*<b=`>{0Acd9+h+QGM@0q1?((Po!16j-NFbQ
54005 z6h$u6wEV_De@LoYVdvuI4KZhCsdOk7*Yf^6r!$$lS`l!8XUz8P=PElpmF}C~Ve%w-
54006 zZjbY1eyMcw>^VS|f`X>mT0XBCI4Sy4f#uvZZ-(28PQ9dCp_<UdL;nbA|6_L4L6CAl
54007 z0dhDFVScLlc=38obrE5(j4Wuo-*Ig1-jil`-KH}cijRBi8U|-_f+umImoK{7)_dPA
54008 zuq<z9^kb*IjX4S;1!PKsr1Qp7jV4Go>-c$HY<9JT3@ZAA;Bq}P?34x85($nQ8WZs#
54010 z845~XH8_ca=@+A72foTMG_8r{PM~eQFQSfPYR68xc1yK1mO&fjf-|2pMT%6#QqvP#
54014 z<kM^Cqe*}wD|Pl-T1{oslpuu6!ZuH*bW_22$_cdf`pRu~5N{JNp`QTO%n-Yv5QQ2%
54016 zPLu>*G0kiV;ul2ud|F|e3r<F(X}YjwWfsc&(UItbP0kQxhT-E$elXr6aFpGaBuDmv
54017 zhK7gnPV~2<UV!h23G<JmnHPGno1(Y1FsN5cMaPPWGmp-*)3<Jf>@WuEiA~M1Za$=)
54019 zt}2&R%q}PCX_6-hY_5FUJyo-Qx!Vnkm5fHwlq!fO>-`+m(`x4AWw5XK^8P8-1{OL{
54021 z%oOG;^+aWhfgG;Z#n51Z&aP=y9_VaZ&IjJr-PVaSy_+zckhyGewMYpRy%rYFRL-%c
54025 zWR90enNF3AvXjp%j9?k=s+$ldT@B@$V>dL5Wntk2*>mS}86ji1eFKmM2V^<GL-Y@k
54027 ztFc!e$^|HFXR~^>r3=QK?PPa$_Pzz(o;%sItxO5Jyk5ruJ}-<$vwf5mI72j8TBh8-
54028 z`<I<SE!NcilXf5xG=^fXEN4EbEUa|Xv>UkhZIX1<&}6E-eMelUg<eAcIg$fB_Wf~b
54031 zf^7-PBCJ2rbHSB-#y{5HTULY)xJs3>@F@rxm1ZnCUrvgXE}*v~7361PqNF7h!)*o-
54032 zw1|=@e%cwR(O-bXj{m@*1bXV~kb-f14TZ7_CUQ{np(BmzNFbpExPoM49)SBeS~#d2
54035 zGVb9aaRgQ=0o#q7Nd(nyu#T9`1nI>hl0b}suM8H7)sPv*DX-V^6L<Vfz>C3lgZ0~-
54038 z5nP>9LMKfcH@DsSyzS94<d3{n?3-2%f;^Z(ftiEsk*PU^BKW49uL~j@gE^w#ivBcG
54039 z0G`S_1{@6xYzW$(LQf631j=q8fn&9X#iyS-f=jNy?l6}G0fGeWpj|D)DIi-`Wr9oK
54040 zh9{XM3gHa<!lon&jB20SYy<_R<#am%o#L`wR-;7foj<T#EI5X!F2kU9A-7z*yP%r;
54044 zz`%yU$lT5Ef{jICt>DKTY}IT6?9C)`o?dE$&Hbx`uOeRn-bsjj=+q|_s1JB>fCi9P
54045 zXdya5XX-C-VCL0$p*gv69J!YuM>y(6Y_d+g3}<N)=`)k~lao{f3ihF4#Y1GP!uu?V
54047 zaG5_2Nb%$7{YVy=U)zICA{wtIL&=r``-WgZky8?1PT-=922lGxiuhH(8U~IfaB$o>
54049 z$CdP3az(3I%odADnE&6QzlPM1*ACJO(B3YP%w-NEiSZ2_i_=lf{iN9(9JS!6-e(A<
54050 zZfGKeeW;-|Y9dGq{D&8~h~R(P&ig;`%(7JVX78e7Yo7eXd%n-)2r9RBd7)IBnS#pk
54053 zj<el*Kf6@CwP3hF+^#D89IU>uSGu{s%N5gkQ_gDOyrWPBb^-lUaNd37wa@ZXU^p0(
54054 z!m-pfhJx6pV;YQN6vZP~9F9uV>nKw1*ZZAzsgTckj-kaT&QddD8%mRuNKKFeUdeD$
54055 z<3!Ox??id??RCp67L=ylT96fjV?92ru`09kz0aUe0Nvx+e0mu;OoA(LYTwmre)-<K
54056 zVr+K{o1V%?QwGq^>H6R20;{DkRytBbF-_hF@o~p@pftP#{*ia!p%=OX553?W0N&E1
54058 zwwcsST4)~Jfce3k2<tu>3_}7~XmvWSAOmL%_JQM3=_GzH+}8!5TIvL_6Q-sYUw3vf
54059 zmBI*4*X3G9E?QzLxv6<tg5uOKvq47`TVPe)GfQgTV<xVuZ)OA|beyF7-A125ioibV
54061 ziNJN^R(DOVHw5wN7+e=THs75W<*rk_S}@&X?fpJ*mf%A<VaEAYz*Ru57Q%$k-;BNv
54065 zqs+*(xwn_8$|*)b%RukhW?Joo-PJsE-sUtmznnjxcZ$c_Kqv}r5=T+7QdRt%K(S~6
54069 z9doL6xmnlh7G?T&+w+@-1$JAK7?lyJAm85?t$B0pUTCMj7u%{k8>@3dQP28{Y7})d
54070 zmrgNqUSbuN_2>QGuH<&i6*&0|B1t}s{wVN(?i%n}PXydcOqk^+G}N#d-8LHYHPK0y
54071 zyb^bk9RkBnqe#Y7B$kGdKBK~cB%B;&ev^I2c7Q43wf4^L#+qO97`x>5a-9lrqIT=5
54078 z|IBi6o)(ncYqt}IHp-4ys+G9&?>Lc&-mhQ;kR7XorHTQ$84h!R#hy2K#CX1ooF2{+
54079 z9*Nr)cD+;Cz-LDCV(CIr>xX>NxpZ+e4Ua`CipBMv4yQ3p+G<yYl)@33Jb!yVIKHlC
54080 zfo2)h%vP3g8t&+DB(_$_)o_BO(^-d;a#BiWvr8FuY29u7e|~p=ckpG*#{#fBz<*_P
54081 zyt`pv?#tl6XqJR@Bn1{<#I=j`s-R`;n+JU8)~n~YhBOG*wt9jkYfDWbB?*M8bnfjG
54084 zfiWwv0o%Z?*Vu;IT9-vp1(@FNJLlZ=-s_%(1Y5YOYo>4P`~AOv4!^&Y1tj>PJAa9m
54085 z&<`VZ<iQbJP_d~5x^I^Pun|q*#*JuHFnQ${@2Yji8W{fJfGx2S&edz-%`;gOsvAM4
54087 z3Y)SCESx$`oOmX780C9x;B~<XkC`syY4OAg<11JILGJ!8Cx}qTqaP?j5-54<Z6iM#
54088 z5ed7(PrZBG9ex}Fg%#kavjZzDY#hd?V-Gc&_#J~DO~ys$n+asosrD14#|CL#keF_j
54089 zWlb)V<&%vk9kbMTHN|LG>f32k@novEvtt*QWR}`Q8M@-(|C6?%$g+B_Uov66>CRWN
54094 zDcIy9^1z2IqQzN`yeC7#WrLZe3yq`wgbBE@S7BKTa3hy&JdrTVt-Pk_H!p6NIZuxF
54096 zG5B8$PFcp#%d0CWvU0Gx-|OTu({6#utfe1$5JNMZISU8P#}$<@>>I<L2X3X=fe#`4
54097 zKKuX(knGZ~nI?NZ53SPN_0FE*ixOXSwjYyQsZ>WR$r7rj?5-u}EuT&QD~Vkll3BoV
54099 zVG|2PG32&a&=OKb{`I-fsgT>!0e?AK$ZeBH0k^5I$8F9V;x^dm;Ef01g7-#~FOyG<
54100 zS?SI4oEI=1Z1Lw9h=6e-P7iw+BJ{U;whONe=)qKe+s!QKqQh`93pAl&O%&lErE7BK
54101 zR!&N>j3=`-*Y8QPK*gE(CaP9F{Aab1BHJdDF~=)Ak5CsWAzumQluHD}Gz~chX*=`q
54102 zZ@wr4+hS=-Aj&1QM9&JsETY~lO~=MXHcg|^ZZD-ZUgA0x&NLxGn@>1qxm{2gm8mz3
54103 zg2)4c`nhe_l^`{hsz*R!W~d}zG$B3&#PsT-e-5ZQL|%GrfQFN{PB4EN0Ope@`LXc|
54105 z44*R-p*lOilUA2<OAqX2@}+dGrL^9$X4e%f(R;XN*AyQ8&Ap2kD^BfPUd^x;)NQ-F
54106 zPK~>eU)^%@soc@-qFAmmyqrzTgQWhK<&v*iRbMYi@rXJZtQcTAe`Lfg!)kQowSA39
54108 zeaEI<S2>ft@O+nK2!=<0W%m-GR{b!qWmw0P>77z)K`RZo;!s%&2zG9FQSw?WN5{_{
54110 zL3eF2z!uQ;bZk6n5loqNA886{fy-;PhaH+!EzT4cb`M-rfuO(Tor4ham$!HfkI_2M
54111 z$n~5QBL$HIUIj${t*pQ-=WpKmdF%t|9|PBG4LKSetOio@#;>*ALXm|*YpuNook<ng
54112 z)$wAj5G4Wr^3xYu949u-sB2E0ztmy9pHLTe@>vyL>HUXU&xh>ac*m&YC#`d70yik0
54114 zt4-wq`zrdsA!TF%Xo=z1R!dYXa0<V&P+fplM^k{~T}I3EB5*f?-9=A0DR(Ws-Akz_
54119 z9-2l6YP$gt4c~|N-FOaI2Gw#3xAQ#uD7fun$~&xvW+60^@UmC8#$plJh4w)IWpLGs
54121 zFpNbR6l20VAvf1yf9gXlI{6fG)`#FK<v#on0Y5bE2^;^51pGJ=e->N>gT|O=PJ9@~
54122 ziz}x-%mNRLWoEtviL-bA4#?{p2u0!~^&)~31pdNX{Gtx{qTRRnMH4aN0x?RA_NHG%
54123 z;>62u`J1AB(Jr*komQh(E<z-UgbhKF101wvbeTV6RpN|e45P9$aFI`~O{7FgvVs4`
54124 z=<KqisJS|?qZqFVVgL$XvQu_*nADBa`x7CI-xlgDp%@usEisqljf63Z_9#xEihl^0
54126 zf_|d<HP7F$Xr5HBR-C3tlbXfpn0ocG3ac}yR?*awT0JhFhb5bYW^{lVBQTC31&UFC
54127 zc?JebCP5g<X+=%-wfd&&MG5|w(GD`i*szzB@qtiQ$3h7n#HwF^p@cuAF_Ej2!Uzcp
54128 zKlR_G@vTc^8^|J@ICWEwZ9ykV4pznt(cx4Yryb_zj4YaGi(-&qfOyLK(ACO@YDt=A
54129 ztU9umtqD3{4jss$rio(FaZM<PdYs^;<!)UT5)O(=n&2gEhS`K-7^8s{W&?ck4UVIP
54130 zo?}gh&;Af;A?Lp6t3qr#dL~bugy~Y<lm0<0@(*~3NEwa-;xip0!!>-^z>39joS++H
54133 z2#Mq53kZ;iILf>Nn^5UEM5K?SQ*lIqWX((B-982+3!Mn${Kw#rY2EE#gCdEJMG}1O
54134 znR#hkjXpQ#S2WJXQ5NtmWZRc#z6J@t1@bKtoBa|fj#~(XPJRKwDIi5J-sQXC;=(v}
54135 zudjjvdH6=Y3VeitnIM{p9iRT%81o3i#26ry=cZpq;lwL%>)WP+8OWs%i!-L7tBM=}
54137 zoB}fGdK9T8p-`qYDajgIgm%|OA3+w84~3k`RkAiPkrD_%gLd>R5Y&ndOdxzFHs)U|
54139 z)n`V_0{A?xedEw?)zU(OWx6|u8ImPwLYD+SE->4Vc9RZA$L!_3x=~i{d#DnplL3gH
54141 z#-a@##9F6KEcRAREcRCXUgFLBy~f1S5^u}WZiaRZf8}kP+P$~>O{Z+_{>(T1Rk^<X
54144 z6-)YZCLdMX{{%e*Hu!@f+wnOS*fNE~0&vJg_&7Fxd>p>X3JV(0Vx!nGbd)35$PhI-
54145 z*z1Z%xRS9sT*)Au2QG>w3(#Os3e~fXUqQQGWVBDhOa^^lN+F>vmrK_h+;jVk$<l-v
54146 zCv{#Sd~5sMmI;0mn%r;n?#op-9i_q3`KrRDR3$6m0?M$S#JM7Y1C2moIM!~<YEDqH
54147 z<#aSAegl0MvNDnDGLY-WSgyf?SmSS@T)TgZ<hlpMx(cmz!m(k&O$kEU6?BC^*^YgN
54152 z>yoM$yD3_f7?s!1s+_j+r9@G6K-kQ2>9V?12ZA1p3TA(Vt|EQ(2cZKVEz|m2vq-Cb
54154 z=t{Pua-PgA<g+`rZqDt{%4Y+aQslnAkkP{xx7d^D=Y!nu(deM}CJP?ZZ0@As5oL3!
54159 z#@aw)X<+CUp-ftW>+yOL%4D`G##I?s<)Tr%FQMm<8gltHV7TWt%>kD)b_%s<^7L5+
54161 zsmxYx`|-yhh*U=&mYY4`tqv<VOQJ#?caIuGrf*zwQeCs=*pse74jDoV<pI{L{H?N3
54164 zM{M)guK<HP53byUX}TE=IPaAVPinx|yYaC2nlyNcn-;JHm6uAUI#z!fP0_i8kXkmU
54167 zGaGxt`wVv*1fc(-nn+Eg8ZK~+q#AmjdEcf*Q=M6D5ND;S-x-LsF$!?;QQ(UGIvPhm
54169 z$|X#vl4PB?s>?aG=-@PtN0YPJ5YDBXNma`Za0_Xn6{p&}=L_ZR+(2E%NZFNs38!!#
54170 zx|P2L?KH-Nvn(R7d|@ce;IVpR)V48P&}47h{3Lbd<om#_0~>zo-QhfSy@n$FZf&u?
54173 zW}d$cH!=mS6km?W^x-cIMT|tJWWo>%#i(b-UN<~=3?ZY*LwY=USh>ghCbNfhG<#^&
54174 zYe+;U@NZW0KqNe74i4iUBnqqab0mT-W==KLQf)EMn00gQ<&if>BPmtN%31UZguRPM
54175 z1Y6FE#dS->-9>xv7|`fwe^D&70FBz)NuK>9xaVU+Az0V`KhfU{25dj|g$4O8z`o&j
54176 zzmtmq?+zb0_x^h_R<sCkv9aiT`K)CG<<-d|z?17j&)AC+l~iZx2Ft5jH)%9X)fO_m
54178 z`Bt7Iq@q>)5?lkQnR^f5GiwxKO6Ui^u=v-uMiI7i4*QMe=JI%>Oo#<HE0%Yq-7G}j
54181 zG&LJ&aJEqRBKp6~p-ERZbF85ejD~&elU^csX=GOwuV^qTi1oFHXON_)NS_cy{<~h&
54182 zP;ye>|N4-v+d+}##m;(ntyY16pFxb*M%(j%pL2wp27434&$DP3;(dPOlZlS0sbXB9
54183 zXw$Un`p!43P4GUQo~_y>#j+Q!+>d_wB-&?@aU?+z;~c|f7VL{xCupAx&nOh#OUz+?
54185 zv%Tp9t)IVJYdW06dFi#KuPteyB=)=Y<;JoXc^6O)-&j}r-J8<=lv0^Ar7t`%-;{18
54186 zc5Zudg*FxRpU?NC$M-AAo(g-?7v$Bg#H2G95NfH*C&ZFD-;zG<--d1cz_(m}lS#g5
54188 zTkCcOXz`a`Tlm`YNv(<^-F9`cwg~4Y13sysl{dgA_vqbDB;A!{Va*8p+#fi6qs`m7
54189 zmZU4Np?7v};mq#sX|J<~^Z=2%Ut1y-eVBOkd&S;F&v>YJMz8bP-oU+joiBZ${l;6J
54190 zhw|~}y*izzd-!~$i+t=0ov+&-KA2T+HHzI*w~%vFs?4+FtorFad}rAFyRG39a@5m5
54191 zcCnN%=9MC__T9C-Z4>uc!uRoSD_Pa+ZMz06y(S2AEBLTGUjdf)AH*&PC|MWaMsx^1
54192 z<d|A)yaq*t!?GY~eP-Is7lY4y%jqF*9z}YctP6z&pLmADpc5!IKdufBJUQ=lMH^KE
54193 zOuvm&1c;1@I7KH^jg~+#g<`5Se6+viBokK_+fQXnH!pW{iQyoZUCdSu>@lIZv#@)-
54195 z$l*8*jlgmB*fT-v0}lRu5e?GNlcy*9HgPm+j6mS9M;Q+HWYWZZ&*sES2?#Jgz7atL
54196 z7pJF(OO#weNbo$40}?P4nN&53Bj}hRcb-^NJg0iRce~kq=wdUID(34A3WQ-Pm(VME
54197 z@v-}!$&{*TXS+lxw+}zjduFhGNys?<(@%P>cVMYXT@?+(S*PtN8XLs=!G^742u2x0
54199 z2tZHB9-rRw<eVHMA&+5njPh)qkqIJIdvG(`E*7s{d*A!Mx%J4!map~OP9nw{qLi{J
54200 z%IVs2)zO;H6CYG-PxmSBCti8i!^=B`!qVnOt7Td5VqCAJDw?NeaWNZ32i@2=Ax&Uc
54203 z@x=>8`TpIl2i(dqzqmo=Kl^t+^vr1FXZ+js?p{M=WS0CM!`L3m{KI$d-1)b6{sQ}Q
54207 z+-LvJH$1trRZNfe{KJ$}6Bv$)eH$&&{)U@=I9kx{#6E~LkX58Ls;7dz<OYzUvsENq
54208 zE(G*r18v|l{`e_|n5c;9i6iX!vBkv1RIRD7o=U}mro=G{7dkq{6Y-cL4<28tX18-s
54209 zZ;u|%Fq-+}?zXqIZsii*`K;UEg<7k|TkB=9oGZL=UuR2Nc{iorKKxAMk^a_E%Y692
54211 z??FwJ<D7Mv-O3L4Oifl54rjNrn`Ko?b6h1E4>y$KO#I|xcEuDbDPduEZ%O<_HqJ<Y
54212 zp5MzKr_wXK*+q+{Mci1g3ch-7Vg1@tGZCz3|Ln)d>)D;%yirx-cGA&_jzKEv-{x&T
54214 z`$EgTy*50wlW7L03Gr8Q2f2fD^K05&-%Ihnc5Y$g+F~Qv(;l6FW>LGG5QK~#ENYi+
54217 zVX1#@pC$!SmLvj;r%}_FK9xs_gqAwzCmWJYRPz$2sC-H$NRE+G36}+$BZkE?lvFWu
54219 z_|-r`QY4plVz$8MNgQV2V;B*qQ?^C{9Sqb(_sQi_L13+|`v&hc<h<<fxvOiLb14_g
54221 z50N`a7Wq`T1X%_~0Je`$(SW0Br4d9H&_*C9UWFwphX~wj_-YV<KvM$!YcvLXRf)*=
54224 z%H%Nfgh+-1GSQom6YqiX+sw;Eh@phz0l&aBEs96$OR_G6`2oUEM2jZ?NyZEOraL<P
54225 z*>WdM$X#bCpWARjd_~1G1YI>tww980t#G;Mw1IJzNs-BpGK+>`F)S79;Y)TWOL1b_
54226 z)fe-6goXbxbO{8YH%5X0E=C0xW(UoSZ>Pb-O>s=PS#rjex@&7k*x6BCDEPaneATUZ
54228 zwY09WIBZghMP1S8Tvs%TK=@-A+Tjxn?oj?3v7&!+bz<<R27D3_++-fxjn_IQQj$8F
54229 zo!alEZq-L=4BWucyYi~sq(RgpRjl&O5-zKNntps?6zoh)G_=mc%dUjPg2pc&{WByN
54235 zSW3Y}{kSR%ojl;Yc;XfuDa~m1qPv!2bOu-<cNG(Jx}9hBu3K4?l{h_W|FYs5o}VZx
54236 z-JGqdg2fXoQTMp8g%150^m~ER+8wok!-f@gjl-dZz8izXRr6D?)%Pdaiv||NY{fy;
54237 z>OZ!tlO{5?kySI#-AWFU;_6}E(K42``Mk4#xFVv7DsV#|cuJsQ=kNxhsAh5FYLPQJ
54239 z-l{9I1=}jat(95Rr347|IqJm~Ixafx3NLzA^>*`8A{87>a*Xw))|S|A0q(3c)vPMA
54240 zRbWpr9H+%hlJjeV-EykgygWW*&<&2^=$#<pxdYdNOTn(0H?bCcYh%#MxS9ftL4-j+
54242 z?2c*)BX8Nor@G$Zswd|yYs1tzS56M4Z+hv2om{XNeD}bS6EsO<F+HtOvaFcuUr-V)
54244 z#;3M(3gvsoW~-S-$wakdm1}xJN&y{cmz}I88@W}3rlP(`dF%YPnvvNSzT|W=s^sT*
54245 zgBiC&&ffI`vi+9sdUMq8zMZ?C)#r0}EwX%?yZc?ooK-JbPZ%jPQGIgus>PCS*2Ry$
54247 z(xT6rf;fT39ig&K#~@|^x#8dg2n-fWStW1FWwRLoa;J<<6Uh5;Bba+wC}d4jH2QGX
54249 z>eS3MHG+O@5;2JL&%HkyqmEOvnT7C-k$#&2GnkpA4%vWjfN-{CEIhg><rJ-#X>KSq
54250 zsoI>5iJK*NJ;~~EtlAhooGY&^pjoG-NQzx#6B0&~aXB7W0<0mCCK=%2V_c~*y5VFB
54251 z<4Mal`c-hKb6?D>d~CX@`pu4r+a_@TqO(mmvd04am?*p(gEWN8g@Y-)r+@9TdvtNj
54253 zn;ZMtQa8&xz>x@AeRj~FL)-vG>CxAuz}*_-FHa;h#8V5PpU5#XRQB}C6MQH#!iSO&
54254 z;FFb$;OpJI2OJH1uBYdOOEyi7jJcIMxm*r*_Q*9SQF)@D%fYR3q5QTtAE+-}wOpX1
54255 z9p2(-`6GH!?kqVz@W;3gZ0#Y53om`7mr)B99g40UXNdYM^2jZjoRb!-DZQ1C(S%qj
54257 z$w}Mw#f+wEhG>;!ioz+rN%Nh|o}Q6-a@v}o%W+!JnorRMli^90ieS(F1o=y(gWd=O
54258 zR|Rf#@KF-2q6papSBf7cf+u71PacPF_hHi!f|Jh#6Oj}hcC^9!fzl9vgh9uxq>wFY
54259 zz{!SNa$g*O3U-FjG3wd7d?p$6tr9q}gD(b~J6?E$AB26YgR?(~Q1M{f)R`YgASVo`
54263 z_Oz_%tz;H(u;Y|cve=}Fb~?2riL%5|xdz-z{PSeqS7c6Wrg(6YufSzT_`5&=eBX#!
54264 zf)%-=6p9_rq#TelQVuX5b$s&0amr!XZ#RKGT}4-6sF2T{uI0^?v&O0F(0`a@SKxvV
54265 zv`UjgT^%J!Iz|vAW+={9Dfv?$5)*u!v~!P)q~U0#O30*;Hp^AFs(N*c5;}W}N|H4-
54268 zM$%3A-0HUmdtSTkW;vg%**HtY_?dYcBO7nP1wQ}!&i%-%$fpn+*?v_A!T3RVpXwNo
54270 ztgC|5-dL(i0t#+7wguJWoqvzM4;4WWat;omf`94=L>iM{7DHh8`Aif#hgD;1`s{pI
54272 z-g0ZK0kuHWt9hE!4M<EA>kwh;&hMlD2xSo;o*@6WPf+mZPH?vaL~MdS3Yeg-d#Uu$
54273 zYW86N?81#su9+?AGA0v#hJ*~DC6iSl2^(emOC>k$l!GK4Ni9W-S-*rXBUR+~h%tZ>
54274 zN(5EO@%{(sMWI0xN5IoF==0GlVPasi^C?OdLr%}S0jF2d>LkYq%LO5-<@5@uxq}9y
54275 z;hBN!?bOp=Mk{Dqa1AcFrUsvsq;6LCM5zRq&Z5~?Cc`>TEw~GcTD=)?yU6if-%7{h
54276 zbd*8<ZD2YI;BMlkB4Id!jXQYWT-_j@1d(6?E#POSfTssJBmX;cmk+=p%IP#k_Hwlc
54279 zBX`M1C0x%xPX<3yVA-s$$A~yxbL_V48Z95^;&|qKFpqN+`6?h|4gp7pKlscaR?d4<
54281 z2Dy&>Dw3JWa4>(R8II6e10OVlW@d&;0wIku9Mo)GU_7*(*5YJ}CaMX?lah>V<kvM-
54282 z8V@K-6y7A3iuoMP$dyc5ju`nLA-{%XVJSrTYbu4L5*D}vHa=JSnRwi%${^v)m!=J~
54283 zOY1o+PG=~xYLpUsLN-+QU_%EoKv!(1qqsVW_lRYyoufEWDP{EN>TaVif}rrdAw(CO
54284 zSHRC?(69^|Jc@;nq9xI97lkEhn=%gpc!_Z=5tNc)LYB-Iqf6C0g9!#pG#*qF7{=>m
54285 zmN%(|Yi-70X+qN}npOx#rLEm_TLvnY6I&O`yjs^-aK)y!xMnx=c$`8Rq3RKoK%zuk
54287 z<SV^|P)sE%HK|t9Di&p@!xdU)l8*}srzh}kX7M=R-?0_BNwc=KvE>j>HJw;pZVA&Z
54288 zTCPM;1Z(IOrrI+6QL=hiPAS1~{jZ}G`UglJX+c++nrw%InI{;&1Y4^CH@-}s#f^mm
54289 zIA^QSs+7`6D1JyD&C}G(MAunM`vRw*oXbNsIKyk&$#T-x2H9|HUz*8fnOm!r^kuk=
54290 z*c6n03#ho&&18Hfm%EyCvfI%vIKVd-p5)`G8>~5}6LO|FQ#|sJE;4%4#iO;ARwF7N
54293 zejx{QRI|f+uU8rh>7tGu)7eE3L6L|unyl%!?Q^CR*BP`HCp)F~x|p_-nqJIbZ)Y2-
54294 zl#*%bmt51zOLD==aM|CHSdQ=ew0jHiLSt<!Y3{h|Nk)fhRCg5(>qJH;Q(Bi5I-aZ<
54295 zY7N99XhuyNc2)*{a8f4XHqR-d><CMB4p0etU4MrD4)7U!fKUEGn3|E+R{@oBfU~e8
54296 zMZjW*iQp-G_Nn90F|)%qIq1F|lQ=fpE*5@QGI#@gDfDrsZwj!2!XjPh*~3yDhTvEj
54300 zedAt)p09<@(J-{EZ-mTKh@q0tP_Q*+vPM44H+KW351IcS<<K*T4F!j11YaguLN)D}
54302 zp#8$|mt@znGcq83TI3TvXG(&_CwnFrWp-usE5HwI17+~;k+!k~(e#1h%fjxIBUw1B
54303 zqKw_8q8vE8$EV&BR+PIP1nI1G*D59Gb-Jm!igHw-h&XkQcEd9k#zcG?%y5nd#Z+0T
54304 z(!$k8(kVNo8h+va-Zy?4xVw-?HLm!363g>_k9HgDFgmoHuD9Bf$?P)fmKv7X&Qw-q
54308 zsyl+80>3rAhK-e}TV9jZI31Tr=ED;fOUPWx1`cInu>tuDRzsf0(t)WthrBqFfT_WO
54309 zPl(~zk*!U5D>>#Z44*;UpU7zT^vjdH&A7)_-+(6R+{U?Kzg!FpCloc?g6tPhkZy)@
54313 zdHLxo_xZ)%A*k9(GL9E}&kHQ1qCZx4;im7*`SR)q$_uHA0?Bx#vu~(sN`sQy-~PT&
54314 zp)aNEHWc0jm;X0$g=K|S2B^Enda(Xl<kY_7Ec-x)Q6dmxt7s^d6y!!G-nmfyi!q#9
54318 z>>}Hvjh!tZ(q7>By^-Bt%P6wEySm%!<g;Uh1~WHtG6qv;<1DR2opkwT#S0S~{+iu#
54319 zjL_wn_4so4b;^gSf+hdQv=zvfnX~>lu4qCl2mFo(FYhk&RA&L0K&YXJ(_KME-Eo^4
54321 z<rF1ss5C_itmUm;Fi4)%gvOGl72M4AZl)t;V8-SMW^A-Hqt}uG7o%dZSk7^ZcCl1i
54323 zCk@`UBNtSzoGJ}+UByZ54N|wOn@P-g>cYx9V4K$VNXn@(o|APyKHSLZnHaA=er<FR
54324 zwK@E5>^*=14<WVPpnu*zt8;vB2ZR=r{&{~gH2|k(W=3je8^?oae|j5Xe|gk8KJ-?B
54325 z@+Fyifgv#h2cbHQ2=$<MUajwJdgX#SY^zI;U-Q!8Em7H`V=L!(^GR=exv?QRTC<uV
54326 zwZpzt6t*sI^R*k@<c3EXuyK5;v*I+2)Y17YpDZ}6p-!&xKXD=xCzBOTwhIfR(-cSt
54328 z|KKR;_0wn3Af2)(26p70O@whb-Y0<}8-w`zIxy@VjUR*f!pE`k<G&gZ-@Kc2R0&x`
54329 z7l}!C%owg4n+Nfoq>v^lmr3IjkX=<@Jzmu-I=OJY8)TE<rfOP^u_|rtoZB`~r(}(4
54335 z57R%#Vb4DB$ANB~R1D|i$Rr32W5DBjWv;3?<E5T@`J{6dq-Y_Qv?9f+v0LAUo%r)8
54337 zRi35=ll45-vLpNP%V-bDBHs~GK@LV=6X5^A+E1wfX@Hzuratl2QRpzdGOo>>TDX4l
54338 z<&z87!;R}%B%3dJ^ULQam5viIAc5JrIFh`4qvEt&6qN)vDe@-g$JlDFa~&F;o>1v*
54340 z>-cdw;j}WE#M(S>ik28p)V)-~%eYHkqT$tONzfUosqrdD$CXa2sHdX7GamhJr1bSX
54341 zXTZv0SSu%IU?`)3#%}k-tVyuLB!HjX{<fXvhtJvFEtjgSidI_UO%U-Y!@OiA^wFn2
54345 zERt$`D%JL6un2hc$KhB}K$y$X{@Dy1VMW2MPu_@6-Wbgvc`&mBBF9$%Q2>9uJU5Os
54346 zGlmq_-Qa3-X1=pHAV~LwkOw50=`5}|V!ds|IM!$YEvHM21q8u0oxH$Dy~WP`RlDcK
54347 zp^9s(yu``2WvWxCRT$-cJ8C2Tm>_CI5cRK<AeppnNdgxDBFxq1PLX7mPcX5NWD~r-
54348 zykx{!E})1e0@Xk%oCK8rf-5FerNJ{>C7>fyLoY7qtPHe+40wccJ*DNQqf%88`8D9}
54351 z`*nuytnpo*8oPV_Yo1=8EV4o2XLiagknq{Ty2<Uq;%cMd)mjf7$$-cd6%5y<;pSB-
54352 zm2W&&?<W{f7B>7+-fx*04sMPs`VKr_Ia}((1O6#+Tz&@mX2gl^4VccL0~(v#1V7mU
54354 z#VX*QIHf2h1<Oql6h)yJC)8BMW@(XwQ-Wid4eaAUFZGb~BQ_C+Ix6<oP&V34HwAUc
54358 zRYfumE=J|ui-||S`Mi+i<1vxXJ-RV`yzIppnou>fR83d3?G@C${m$XjY&^HWzI;DU
54362 zs>@mrZ1isJmF7AVfn$bW#D4@?K$btBnLv$j!SS&1+2tA60*lVfq99y@v-7dJ0e}<O
54363 z31R8koYb1ffT-XvMP6HYd28#%OA<UPMKMW9UT-vSHtOrrFgWd_>!r&(bzmsS7@kZe
54365 zj9TG;7{87*5q+dsC}8a{ivim;u$k8HaOgj}xU+sZY;Pdr-7Y7@2^1^1+1od7pZdi#
54368 zAz$K7?y=GE(W+_!wj{J#v6`-`y&jW)UX+r~g{96rdt3J()Gi%454<m6NqY-&<Z*x*
54370 z*m%#+nV%5v_6hxNpYYHA#9a+S2z(xZ1$0`-I=YU}B%=X~&5FrMl|YTv>_jWT=RoMJ
54373 zYnxd<fS_VRLl2cf44d_0&Y;~HWD6-XT3cFx2Idq1$*?ykgL66)rVmfCW+a-j=@@d=
54374 z?DvEmjsf|L5gKpQ%+%s%-UB<kL-F*F{G6}S1Vf-GsaHLyZFiP2&h0h5vIw`B)NQRO
54375 z6+GT8VXecfho--s9rP2){>PsR)oHHu;4r&g$P`oA#QOW(Z9liSQh*Hnjz@I2khaPW
54376 zbc`OjbA%it??-H?ZloD?W25%0x|us-aEu=Up_(E{389wOtavJJXilSC=g3z@M&`0s
54377 z!s3!Lo68Z+a|vIS@)j%+T)ne{y@dY?a)4YJ2^-KOMq$AyJ3+X3GrS8gXKiI+fE=I)
54378 z_|#7hQBkIbZ2aTz&Ar9R_559tQWY-UDcW!}2HX&*$?{62e5G{xvKSfuhc}8xp6@e&
54379 z-2odnIzW?Xn=a5QR;yI0@YFw(D5a3qvspuM{L#Wg#Ty^GRjXYr70>1O4un*AJrDOY
54380 z+Xb&I^J%mB>4(<<LxaodE0(#osH$0$i?VJ1E9xLQ<UgMKTpGH1(D`#w0>_R_;G-WV
54381 zPCPSdn@PpcnTatHBc27WDftM6lB7sNF-Ql<eh5w?$9H`zLc$O(1KwFeg2uHM!w<lY
54382 zH6nKQ`$uK?R-ocvdENIy)dLqm=8#;jkk6?eO(kcNSTnONgJ=X~cAh29!C97mi8Jg(
54385 znfvL)-Mmbo6;`u*Po(_aO!ZRHKg#F#ii_dYhqJviV7Z!K`_5-GyQ@Crwzd9)k*gVy
54386 zW{vnDavqZApp>9rk2Iq-SwPOC=R?wj1v^uVjvFPer_u+AWzM$qjfaSh$wEXxni#tJ
54388 z@A;1JW$U$L?=X+Y47%0^{->pBy(_D!Wq0SJ_4hy6d~s{IlB95<l8X_k@~ySfirMHG
54389 zg(tt~+3iRBSqqTl`Nt2RTup>{B-p<r4k3Q_=j}J?aE1uiv6CswQ;IaALkNyRkx<F!
54393 z>3jeC+9&t?3)R}yQn?>`o27>a-~?K_vcK+JzJFiJFX;7zQ4llDbf^-sAH)9)=^{&?
54397 z(2oH_?-ZStpzq5pv4yR7-@p8cBfxgwdN4lG&AOT@=B-P&Z{*hRD<0HSsW3u_q4<A6
54399 z81(-+o^fRV^6xHva{uu9&bJ&cPK7BiDtWo%*Y2-%-u-lOFbK;bF@%8IQ+xBu0YN`D
54400 zQ4Y-H;rqv0p@p_$^Shr1{Xy@nBTd;ahUK&UbiYLtkYu^s{AnHqoCFjnj+2VOm6r}P
54401 zxyAfWC$p2SUaPKs_W`)0Z#h^RpXF9fFDx%5t}oyC^g`o!zY0$B-|qY>b{l^;GK9Jz
54402 zJ=P6?{6l1j&EY%Grw9UclR1Yf@_8vzq}Ui4$0-_xIHbDBr7UCXvAw}&UZJ2#dt?N7
54405 zI};~Bv>j(<PF@KN{N>UD2)Tiz70-KFPX#YCq+au8lO;}`6FD@<mwe#nrKfj>ZWTC@
54407 zi{q0o25l|^c(jVF!tvHQkk&U#5~y`9CSx>ErmVt4-}-W?eBF!mPVpRwd=x;9c;M~;
54408 zljt=pk}Hj%_W3s91JCR|cCePMUMhj$u&`4McpK1RCl4Z>T%!5uN9tEbV>*-$T9Fot
54409 z5$BOD$R8U)o+9-&^Azi=i$fsJTj<uQJjFaM%##vwDr}B27WtvBCTNnwX-)<-DKGxm
54410 zvr#n27<~Gu<^v}20h17MpasH^W176kB&_v<^OfDl&#ghXum9Z-ML`DKqPJ7bZWXd1
54412 zjQl800by7<vw7`(S3<G5a9AwHNeYh=2^H0E+9a8-r>mL#V($6uZqaWsH$QNH1yCft
54416 zb3o5-?qz^ZNlInA{=S3U?n(isT520^edwed9tNiW_RfEceU%s?dys23XXuoDTOvi1
54417 z$R4^!OpwB65TNIUiaJfLQ<*5zE2PO@yLQ#vdD4h;B*CyEB-g^<f2Wub;-nqdS@)=U
54420 zj?Grq-@F7)xDJTmHo8rmtfUW4CBMyCZG9?Yg~VhStz<eN<_69P@SIppinR7MA7)lb
54423 zcd=bWaV+5}>rEKq0KXslF^{fSE^pOHhK=E5jNsYAp0bjD&u3uf-)*|ZXAl1A;>XYX
54424 zm#Z-A4>Re34^ueUXtC<@+PQa?mk-@%dwfRn6VVF#-y>Au^)7$jndHOXaJbn)JF%0?
54427 zFyLO-(e)EbbsS%xWqr?5slg3*|IRnQ;29a#jG?NPx?K91_e1>vqwdGoVZ8vBv1Sx0
54432 zQbl*j`g@xD9h4La)|Hx>%GF9{JtLTG9F51Bv|?|S-Hw*6STqGO&7eU6{(P<>NFt`L
54434 zRao%w>x!dWqfD;mn0dt?w{FBfPh^25-hFlLtx{}p*lk10d!okC@6B4>v86cEK{-Ju
54436 z``g(t@aa6+!R_tK&q+&LD~gm$0Vl3?-=+^KqlnglcNS�cF<Rw@4Wn2tw!W^(YgO
54437 z2EUsHy*FimDIEr+5j)F^wRoJKp-nN7aoz}N3I~P7fHqvMKWGSIHZemS)woidr46hy
54438 ze-8g0WE0tbb=k(obxUQ|zQnL_g7yquGpQJEqMP^`Rie;eJ01L-RKVjpH7#t`YB3P}
54439 zgcKQEKiI1T84fNfCwEJ*7zSNhh0v-+sBfABD<<aDf~Y7>8dp=#^?K_seSbQnMeo9B
54440 z-3!t;Vp>kE=Yt|xGM9Ytmugo={t{3*?Mux}Uavc@1hWTszJv|&0f=m^k-l7UFnpRH
54441 zT}4+X`O!042F^;?z&~LRo*A^K4j-c^2B-pz9XAf#2pov{tZod);aHx)Dh$g=q{y0E
54443 zdkJ`*J3*-}b&vfLFtDF$fpJ&=Owfjp-H3Y?fWxT?c=B4^Aaot)V`z*dgDP6tE;m*m
54444 z7{S5@jNft|!$4M#;<tR=CMmd6H6^R&R#Ge0;*B<6sIV_SapMCIR6(3#7R$qn3(%8-
54448 z&?jpLxgq22=7xGmuTd-cr*lKtSqWRnCa2OuM=p%RSXFc{mVWXhp^yabMv0Oc{pe&i
54450 zslSz9DY%7}V8=-CCZH%9ZtB9dqePp=Wc%UW;bGmO1%^;-#mL`^+rz$B7FpnL4M&!4
54451 z=S17vczJjI1I6M+FZaNM_oYX8dZYB-^Q%{vT2B4PJ~n27cRV7d%2~6N9NU4<;$KEq
54452 z5ObuZ1wJ;_eJkh+Hm$19*M^2`#Pmqu2-=+b0}37Ec($1l1QKJ3Y(`#d+`OI1tGtp;
54456 zlhT&l%s6|E)<doQQ=1`YLzQ2-J#0NtgCWK7#-Ma5WhSA@OZuXlV+Ebj6^bJmK2Um)
54458 zGjw-W3@-F`4z+aNC|xKOpIR%OFNUHH2r?5(40^W~AUWFS%Ym0uDCtq=<#+M-AVZjW
54459 z=?BW+`kH56T8&Bx#N!bv(Hvt<9EjNj)>&?JkZx)9d74ErT2YjKvGNliS%8xB_-OcW
54460 z&5z4L;FYdw$%-H;M3`YIpxAylv!C&9-7Xd{7mD8p=#<!mq3F#@!LEL5H)^R=CApOh
54461 z(kf8;e*!-bT%YY%2l`v`0=w;c6}m}tUf^Adba#our%vETUAKW7q!}~Xe;k721ct}P
54462 zQTV+7r>CFoS_AjV>QhTImf%4kFOWTGM|N*47xtF&r(8d11b={dWwt<){8|-ACMnDr
54464 z$zV$)0|H?%#^6AbL=s4_#%r(%_HV%0*x1;+{=s1E^{$PLZ9?~7b?<$zU-twJ0`u?x
54465 zFB;8s-*@ZQt2(#pobQA>XFSEpXv!4B%a*3KGJ9`2QXJ!<z#&;My|3x>oX8A>!H7Vd
54469 zzXj~V<md-nBk^NG#)Y}wBqGNyxNECJWUwekNih<_d&bHLJtA`njiDKm78FZO^@qd|
54471 zTOS~XZT=C5?jho!9kX~2|HySuXUe-OXm(LRoB7$P35G(n*?ES4<UC%*Gq(*wO=a0y
54472 zc<BqTP0rY&MAE!uYg#*P<c;am(;c*Tcr6y+-<~~C_qdVWgAIDA>woTnr8+j~nVFi~
54475 zyqLE9rE+=BDVIb{sW4PJ@QRQ$X&>+PelB#3#NzJGmOWFr?_H(UUG2-t0l&ed(rbQt
54483 z+kUnu4DcnaWr|nSSKj_B{p7;&rKP(=z9=QM;-#0Y#+&=Z+`d}<nyJq5l_0uwUoSwJ
54486 z(pD7<5+rHcIfOovT{~Tq&9a-jb~U}LI*_!JhG#9zTT%2khUYJ!OJD`;`tW>0AfE|7
54487 z4=npDaAj+Gx$REiGaVt@x84AxCq2F7<wb%fXxTOpG9AiSo)<Hg-!Cs8*6f5zky5jJ
54488 z22|%}O0ns9Wp?~{@#t-rG!cUg$r7w1qmG0|ZSNI!a`CdAyKmg}oP{$0I}T*Mg1QGx
54489 z1E+5`lEkL9Vj50wk7S*UQdgfHT@9v-qgdnC>ZBJ(TfofeNpJP!<%i=zXx6|`!3qpg
54492 z>!-J#;w)9Vo!}IwKjvGN#F3-%ozIzN?HAq9x^`m6zU^l?-Sp0%)_K)|Z~H>dtHx!4
54493 zAt(szJb&)<s_jO-7M@ovn|9M$=+CTK&UwzOrjrY3MZOQs^?l?tk_I>R1wDX#Wk_x2
54494 z;|sIt04k{eaYlNGGj5-eMoz~TM%xVX%OmE$B@4zNBO1#@3B}JE)q(!E!+IJ)7A?Fd
54495 zQ<J&zR=J7Zh|XJltYqz-h)u+DD+whg^Qz%BinkpWT+uLQvbr^wIEq=5ma;M>zi8^Z
54496 z7mFX7Nv(Fgj+dU#s411~7gLSG^?L+UpqQ-IO5Js+)QHsU&rw%`Hkkcj>_?6MZG-k%
54499 zNq2NXWfDQcfP6Z0<^G3{4g5y-+>WUNDToXSYm1o$Rf{EDO>l(nGFrY%uim-$lATd(
54500 zcIC>RF*Q3`q}0Zqxs$KCDKi(nnzvHdqYe5DrZWL1wuPE+_kf(kF&5f38Y-?M%&=x&
54501 z-_dU2a2j=b5Y2pj)37D1Wk4FeLd9;@@O!#Kxo9anpE!J=aM3WBCOqKQIuRUokatZd
54503 zIBP&3CrZRe(UT0l_Nm7J|2Tvn-FWP=$vPOe`9jd<V_}<rI<rj>22USAZJrF<<bOSC
54507 zw}Up%-q3&<_F@J^Lv4aHpY$AR^H|j8s*Sft{k%QuCyWAk32O7%U@Xu6-M@`m{OyqT
54508 zVVf7DHlGXI{La^-HeVmM2|VWX6l(MN@VnMOzVVi*)mx(P3eRqT0JV8vG_Ox=$Wa?P
54509 zY7+)SJ&D@<Ui7YR*s!BEcGM<tW6%<6^QEYthc<4E+T0km360x-gxY*LYV*U5TGXZ%
54510 zwFymGe~H@sS<vRTAHE6{LK+qZGz@JPpGR%J8n#*gxijb-D(as@ZT=!`^Megwgl&vL
54511 zn-Jw6MQ#2n`Yv+gk!U=RjI6IKsIQ?m|1DZyFWs1q+Du1nLeBI_)aGxad3|yt9<_-F
54513 zj?0yHyGZB+VdbBX>&#Rtr4lRB3dhmanYf-7($l!o3{)wGOsz(lbN+>(Ko93etvCpA
54514 za5xndv5HgLAenz3wkN-Qgumjk9|=!g6e?|;MlvcpITchi7*?1qpQFNT$Y=?cq7oM!
54516 z45$gUT&6}+G^eKGqL$GZT}VxP=IlbO5l!t8qK}B*=vS3M|2<df-<YSXIGfY<K&;7$
54518 zXjyZi(OoUK4rV5rnMS@8OQB`-ZyR4Fo`bg;DMZWY!L8dY%H#S@LPA?&3@qXj2I`Me
54519 z!eC*p)kq}`O%`!_GIq-px7RQju|}CgY`QhQAE7433tlgsIetqvSFDt#V-wZH&RXfz
54521 zl1i~T=8JLPJ#{H91iActT|POI#<qeM-3m@)yWB@hG#93^)ug9OV>>$y!Su@P%2+#-
54524 z=F0Zv&5=-`$`Pz;@+{7w#A=FW>1Ijf%<hrt>d`7fsnylu-b?DoDkC^GA847yoeP;A
54525 z$%SWiChM{iP6fP{cmTxERFv~iB?e<>PG!^-w>fAcpR*~3AX!@QN5)n=R@?bY2RU=O
54526 zwRF03`gk-1%q0GA_!!86R6ouIp0&-xa1bE2kb^mLG)OfnWim+rw7F*pHNRMyJ7&t6
54529 zJZb1t*U#3oz1*z_;$u#-qq8cby(PV~IJ@ZO;>Ckmw6&E+ry+aGC0gdvuXtH^MVr5!
54530 zHLuwJNb8!(mDP@Wd{=ExQm{oOsj-Hb`XfE7`I(radX-9XL<Y^{O6Scunx=eVGH4#m
54531 zmkODbV{PVl9Zdd5kwr93dkMXp;}rIS1k&CGGt(kTmL1Ex-54V>|JzF?(=HvILQ+XR
54532 zw^XX{&CGN%^?WIw8j(09fL&-ms>E4Y8f!-qCn{0$bP^}}-;CyW_CmkskUYhc(_T$4
54533 zPFS4v-Pokxs>hv_>y}+eUVlOIM=*J-l~*)KioThfbHupqT->KP@9a{jiI&}7u+s1E
54534 z*@cs-!wbu$zGDFi;=McePEF*q_{cr8m6<)Q96D1Hjn;2Ll4z<#FvMAf5tnw``B8C{
54535 zb^lQlRe8KP5J%Gqf`aFiNR+O`(_3XyQWq1lWNS(+5=sL$nms2Q&BE-t+34sZ*v>}F
54536 zG0_zfAHDMKjBzFxb$2C1lSXVbd)Z_vN)UJox`?0Ozoop~Ppcjqf-hn5IV3i=yyI=<
54537 z*ap?uf}o@Q#pA6jPjs>Zli`?}SB+<q@oM*mOVVCWmWz7)aAm=1I1D*X&-vY~p*uz2
54538 ztOViFINR-I@DY##SNA24!!C<eQ6L76ZWrKV5irc_3Py`XrUrMYvnQ~`t{lhG6qW`l
54540 zIqyb;zZNQp$$WI+lZujSBCd~f2NTp9Gki;OP$ZBh@GbO$aJzeP*5Yl=@U-*6Rz#c%
54541 z*W<=*(Yw4C=XXIbaM-k8J6kJsmqO$qX^K37^m_bmNh(MHV}|K(Ed=B?OD~;~=y$WQ
54545 zUgV*89}opz6z(1A1_ZsJ7bpO7v=jWUR{+L1rvb&%G<C;0`T{KKialRfxRm<-3+W0y
54549 z+oz%uKP0?=n1cxb`Wgn(v`V9mnjdL^?vJEuikbmBifOBWO0irri!2)-DK%9Jszpu>
54552 zNTpsoPrG4GbvDeY-nUC707{)wr%^*+TwID(%KR|3dT&r-tG8KlF{&n;&*gB9tq}Jk
54553 zNX*$1Z#oAS8<uG;RJvn%lA@H9n6g-fec+8Vg<N84#;_4m(sG%Z<nDB?wWqmrmSEg*
54554 zY<@reX<Tcukj@tn9Wa;rQ$oavh`_@inNe|;ndluOGNH9bF!$m4Fd@5TLZ-|jO>K>b
54559 zu|p60FlFV4%81EO-lRf9l%%N|jX)ZXDWy4vOPH3*^Q5cqT$`xIr%ugXGF!a-;;BNs
54561 zAK>Gl3U)q`HAL)ALhC0Pg!x2ez~KEuU#z<Iv*!g)Sl34Hx(chCI#U?V8I-pvmxDsr
54562 zc8b6lJ31FY$gRv&dg|(4wrWje+Dit<n7(8a#>LmwM4Kn-t^U=y>ijg!W@ids!7dU=
54563 zXzM(0G;<osnmU7!lT>N-PsTC@1=o?>_&!mFzk{G~7p#DH^aTUbWCic+)vyj^a<o1N
54564 zBpC$C;7A>hFnsAJU-Kg<`mwmssO59EsVO{%A$e5vBQ)UR!iL+_v(QU@Hmz(bR6o#1
54565 z3Q^M<EQg3l^OSMfT0Vn5pN>sd3P%rTa;v?}qMyvi-K=M(HIjZw@<6(jQ8-7axLi6%
54566 zGc;r2%Hd=GG?_B;b!*Rl--*ejpZP5!ZM$8QOT^5jI;*s4TertF3yC|)o1Y%3^iTpX
54567 z55rBo&C=*mC4{X-5Yodc2ir=h4`F_BdkZ>JbkCCAeOU7$%I<yvH6J1<I9l~VSEPh8
54569 z`V#SI-&|mkcw8fN38~H{@PQD~iY``ea*z(H1*tB=|KSCPl)M8G?2SdN4`MwWiB16N
54571 zHl+X~kF(>BAWR8|fX{V|VqA?-M=Z(dqNGWF)<4*`OEblW<>qsI2ZIi;7N-n3EAjds
54573 zToE4`X-=c&V6<_+cAj?RfZs3!e&cQyh0Z1eRWd3HJ+@h}b`+sF?f{nMnE^xzgDWwq
54574 zBqfu!I!Rm;8oe4N<(s_8FJAl>1W`Osv8FM({B-eD&W_=N&=4~27)ip}@<%X4k@<w4
54575 zD<Zo6DUyqy2+TNh;FTYlQAR*Y1+5os%errXE-+I?V(u*Hq%&xGRyZ>9+*x5sA)iUv
54576 zX0T+o!IIwjPzifBSW-*Yt@%Pu^Yx5mRjj3#uN2A{mDKN;%kGGqGR?7`oKTG#+}}8{
54577 z+N#HTH_r1KCRVHIs8oF1UA?-P$R9+gq}bL>8Fg=0G}HTg1WPQ-J$NL5C1Et!5l{ou
54581 ziQox|Upm4kX(AB5HCLD7a{JlW<-GkzcIq4<>9)YCsS~HNRl=W0)vmg0CR-Ib&K_?-
54582 zUNw1vOJ_ZnqXbK(Xt{K-G;v}wVyAC_%OLa9EEa@Iiv`d-12fwNWW*A;lza*p;>_-1
54583 zvZHvdv|qL*NA+|w<1-RFj~DDjx9n;*Z%)-jPKf6@L%cki+x<bIuakX6L14^8BGC`(
54585 zwequNN?-_uqtgf4SoR%JD`i&WDs==OF@K`qUxNhVPz&JZzMw%0Nq9&PBz$7Xa!JHx
54586 zNO~KK&YpQ2Y~##WYE4g-izWgeECUiS!43~UA+8)2IN4Iz{+tMKz?Ccqu^}emE$z)B
54587 z_?PR|Q@iF5-?!V%Ecn@4%+32|&LWr>`<E7zrF5!bsMD;P_KQvHqUBqcr;=(T<{mhf
54591 zvAw$>Kzz?;M+`;Z`;2=!v1v9N?_$GQxtL8S;xW&4OkKuts&jBo-k$g`vf<*SRH5x`
54593 zMT@qcgz-5@a-yTBi;@#_`jW&@mYMG5BG1b0@VQ8t+|%EwBS9J$kRYldra&O*L9K4u
54596 z9dWu@u-sqtFqCKT%t(p|qzeJ=jeIS*Viy<|XlfxS)tYV1PIL<y%fKLt-R4g_kMWBg
54597 zM0N~qU~b?+o5>M0;hTwsHJ)ir=1G#&l3G?~6-JWE(?-G5zY&<jL_QIC%@$nrBJ?po
54598 zcWKT`FLx2-q`ff;0V9qvD;jo~C9-+1RY)lw?}u-a7)LtIJWgC*&&Ls9HV|hZRxy7d
54599 z9vI=%059Lrznx9{&ek+1Lk~9@nKeU|-F6%|MY#61P*#E#WNGZ={`j=1q!cAC3gf%>
54601 zQ>3V%-f5O@j%l1@v$7{xIaO1(1S^e$C9tc%j9te?B#DR%bssM-v>M68g#|2)I1Wbw
54604 z?sBv~9-GbQ`sulS2#8cuDVCYY)i1BO1zj%cj4EXNnHk6NrYF&;+5Tm8W=yM>YI&<0
54605 zx3^T(d*FYg;(3E<k8iQBl**&k^D+}iP4ujy8dT5Anu-)tSVNLyN_x2{7?RPF`T2_q
54607 zC+8p;ND~B3C9pjbr&`&4cmL|ldBSjHQ=cs7PR^YXh%<S4dAaSkljn-U!GdOdi=e4L
54608 z6G1Z$$1hyalrB`#$YN4<d0u5Hjv8O8oKMuGBnheKB8ygAtkvBjYwAdY-P_;A;tU^1
54613 zQwfKy{YX>_LW1nAF`5@ZsMvG+Vp~F#+S7C@#*T|)7eXpkMv5t-RX3@y5@Y3*kXWN~
54614 zeF7~1$RT0<9Y4NIzd)g0@B3y-90>KSXBQnvU654Qk+jIVn^N6(jx11uw^giTv(Odr
54617 z=v@M(xNn=(z;-b3A)aN(;ala@F2e{~XUdb4Hc15I&UOe|6$Fzj+cC?_n}`u}o#o8<
54618 z0*!e6F&r?|Y%->VrZQ$YVS;7i7I+0nhSVp|r2da=>G6?{hNz!}$)Qs;au9EgbSk5%
54620 z#P+~A%fzAt2gaGW|6ZXNxYe-ZCA7j|q%e}D5wn25oS&XyBpAE(bW)G))BJ?Y=rql{
54622 z1|DOKIb)2z3mUKyjxi9{qoWKmC=Cp?L0sZslwRA(wdr7-`}4XZvM#NnwTmR`-jv}+
54624 zMB*p07NVV)hG}|BdGo1WR8PxwhRd2|vPCy-w67WK_b0;j+_2q}c=+H&qAccB(`#S0
54625 zhBx71lIWo&;kk1ev<H!p)ZyPEWuOUa{c_$2$}-bv$L#}W+iQhN9Ulwol?OqSXOC(g
54628 zL!<~^qOlC2Rf?^4RFM%fo-UHp97hwZQYs4gc%{>2Ny_kzx<yeOOK5cm!L>)>N5Ns@
54629 zMj!(p{6ZMQnZ_>;kay6SM-it3mU?pJ1;#^*UuH`)97D6c9rgl-rLE7|2D|oD1p?bt
54630 zeAVX|AVV2LS~4<{hTyf_-LxT4skT{8CmODs)AI$@$hq*N)x6!xG)mQ2tZO;CVwtiH
54631 zc<|kg@6f-;#K8hs1*gEX!AroKz`Mbd;B!byruQ!s98tCi0sg|>gebi6wzb3KBBP2g
54632 z;Rs!&S3^_deis_1rWkiP5Q%2(^uYZ@L4t=IB)Bz(CZG%j5#ks(5vaPT-VAhL8oGJ2
54634 zy#3AZe&pS+f8DDde9;T;y!~0%A3wHdSF=&8<g)2x%r|v>V%$UIr8DJ{j!^-QhAxMj
54635 z&kZvP1?<obIU@SB+Y4U-8<;(8jb$MAQx5{99S6s?gt0uBeImYuIn}^m?KpI#m9XIk
54637 zM=-4fp{2c4nM&7blI4(MXI6PWKG!2pz53|mA6WknigF#<Rnh;BJ7M@NrKy>;&rnYG
54639 z``-J#wcq`f@q_Pq_xHZ?@Ec$MOJDobH$D8uH+=OE9(wTAum1hdJ^0Xr56X|eAJVsc
54640 z{yp>NM3zE2cPvKJnw+ipz4ESZH6tO73;J<M(Wrda>i+5%p1=P6#~!Dj<yTm1yp-+6
54644 z9aoeIrdiTpRn-)V5G0Cex=1k;S;Vt6p4GCt$&+8DNR}iSMlR<Wl2#q9_CA?LyF{<#
54647 z9!?-rC~Ql(5alIv2L<dS`w5!-&f_mUz7Q`JMG7(O*L>*8cfk&%K0OnwsJhFtDLsEM
54648 zCP39TC@JH{iYYywH<Y-UQ=OcD_;>#J&%WqV*f#GbHAR;>US{=lJudmGZn3ewnWgK|
54649 z?Z$YS7V{O$QcTxY8jYkPqCbs(-4}y-|0DMh@gP{j^A;~?-ntByh^27e!5SFOJ51R0
54650 zw9{rNiddL?>5HeQGHBL?hrjUrTfg(&Z~fluOHV)RZ0ud@*R9tLLJ-BGuUG=dNsM6l
54653 z<*_jY;9yLg`QYBCc@hV4Uf@Gud%Qh@V|#b+Twa))?C!GiHpj+-qtPMy8G2&fpoV8*
54655 zgq)B$Z>-h2``}x?cI$Uu?j5>#m*yo*q*017E!`A~IVMs2d47Dq)1WEO^#z_{c}mN5
54657 zr0LYal^?dFvn<shfDkFz1X8dW?2iP*3H*}?obLpNH!i-Wut#Cr36;K`PC-!2r)ue%
54659 zdqX|G{?7I9qd#-^n3?fpZZ>&%s%<asPL}sfbUIw#k4+{JOH5XlVzKy5%tX&=WQ>^l
54660 zf6g@T*!T<nHiAK*?;>#bhhvZ)x&jJ-WDs*>2<Cpg+3)8d9R!-45$So(W=L1KbTrbl
54661 z?=S9vVDIi77cE{i)-L7|#|d)s@Bxp+YUZFSaAD|1aNI!z@F47HlS78v35HQe14}zX
54662 zMYnwSV;}n^=IF0nK7Z=yiP<l}9j8zKW^a0#5hcT<dDe6-W%r9_DtWI|HSAqi%<k?b
54666 zhW{VLXTTNU*2kIaclNKFM0}oykRw(*?HWn#2M7`{Ja-@9Aj83Xalj=@1-VvmB8VVl
54667 znco_+EJVedj~rUvKR-J?HPLO>%f(zq6~Ptol!)m2I0JUlxq%5HMIw|lIMg0dH*(~M
54670 zOeu!QG6GAb)3LsR<q6GE{z~5(7dX9AA;fxvx$YFR-_TR(q#;o(rMptO6gN!>q2oAX
54671 zF~6p18WI{2?UB&<dLTs3d;K%r^Jlu}&vefpL-+jI{`uMd`Pu$?=KBY3{8w-nm<Rua
54674 z0n}p-RQshw;1P4BAYUuox7`*W_bnqRH8b+1LB<Am1Y(4N&5I^BZL_SZi3ABLd7?Ou
54675 z=(V`RmI%n8;bhZt`Dm@yq`G-X3ba?qHK`N3DJ`Q<?`ol8-HC?vb~LOGxaGiOWqbmz
54676 zf^F5SxwxkUb-##x@iRUn_ninEn-~id-~{$i6W0XsWk_MNf=dz*Yxox&*bo$h5bM=)
54678 zv%Qi)(lSlz<wSD-E?dmdVzCZsN6#h42*+1gu3RB@ti)71;f?R<q3OSJ<A>lL_-;@I
54680 z6^_(RrdH0?Qq5+^YgjSH-b3cSLO*7veWR$A8!E*n6O5J=B}o+wr(E_D48qfpHL8Hv
54682 zj5jvbYLCSx@`d6;uac<QX-|@C;#7VAsVk}n#;<I5F3UUaY_08;)g(>@e%Hniz-jnq
54683 zP{fN|<pLKU;@u?NpNC-I_Q=C(jbJ^rvqBSM==uy`cC-Mjfk%>Ij>-&A6O`80>-hrB
54684 z@_MJL_DmgV<P=&H1_ky0F2A@tD+scZV2c`|TarVmRej+S-_Kc28x8JS^sXO9OT7qY
54685 zKBBV(UeV!emIICM{-HNo+`N7sdcy!GCoU%96dEiW@&161q)2x>)CI;<#4tycNAYwe
54688 zc-m}*5lIc|Ud$v7og<)bk^=9?V<triwxCsYk`fG?oyfiXdex#}eQ|k=t<-dyqKbJ+
54691 zv4weC6Xkp+cVIGmcu%XWOme9&Qq<9$Zi)Ex-!CBM_XhZTpa=H%_uy5Kgd{Y0f*{9m
54693 zjuteevf`8d3R#?p%aSIttY#S5jF~C32HjaqD=`rgn8_*mMB(6WXRI#U9CYGIHaC-J
54694 zctf;lh$OxfYniaq&rmGuT2s3x(Cc{~V37oR1o)s1-WM8ZWjBa9EGI>zi|&tyOdWj)
54695 zM?TzgP3}K&B7D>#>Cjq+f1+0j@#*ovIg0ymgS)u%wdg(-S<~WlknSD_(xVjt*G4%M
54697 zN@_|LrL?0o-BhcN*7C~TJ1E-qIk@xYjz2e<V`RZNW|%OQRWf`0Z2Pj*7+M|oq2>HS
54699 zl;RW((}{ItL1axa>C`NzMp5%O6@-o*A2&^hqIq3&D9Ew8<;aR7^0ZS`45i{FcA<g4
54701 zp^}Mcj)AFZw2E>b8^cGdejYLy4j;+PNC{cA*jT~fc!uFf%8(>SP$)ZVC-F*w6vH#n
54704 ztaPS2ia-%0$s0UdZs$q1F*ny_MUkdRMiEJ#kr;Q(_U0DnJg7RjDvB*~t?7;kS&n0%
54712 z48l|K;F1_zBBorxtUC-6-K<c9pEI`vkdjesia&@T9f=(!2Qeu!1jRx=J4gyRifcDR
54715 z-bcfOVP=H96Iz02w;=B*_HGOCMqE=bmbFC5$&AP2jd;aI0zuc3Of_vU?x^jVSjp#C
54718 zZ$q23gpju-M98~vLC6~ie<laWdsK%H*xdLIqBkCnl*M7oCdJWqTBLb`#PY?GkxV6}
54721 zB2-f+6_KYnfe{%&XGl%tILvX#1S7Moj9v&u#VHEbDs4L7EHR#=xSoPmNll`-ye9Yh
54724 zk(v?9xxLEN!c0R%5<yM9ha!@3PZY5z#M8P3$)Xu>puaaJ5FvOskzPl3e-!ZEY1M0$
54726 z*|TD-K^EG!sBwY#<+AF`RcX~oLE4uPC#1-1#gG(MqeY4pHQm=?w&kIZS=uO#m(Y8B
54727 z3qs7-!77699q{?6R&xm78&x@i@40OslAG{7y2kJwKdNE&8{l?&SdGgI!dY<$48;)J
54729 z;hlgljrs9HSr9ma9V;s-PeYj5VN{C|d0XLqmlhBhCXp=8rK-n!Bqu8z38!|I{n;vw
54732 zpzlQ3{xqBhW8jLus0DA<b%Ko6wJmu#0T%DX+OSG%ax)KSkmDFz?Qo-Oa0TcntKAqF
54734 z6X{G%usb<{^-NiiU5Q4_xx>nw6xY;hS{Krm-SV9V-so>a>;5X31UZoXNG2U;C_Gv3
54736 z&aNVziKa3f#hZM2hl2JCT67o%+yp)a3-EpfPTao5Q{<pVI2woo6pVzii(nGVrogQB
54737 zJ4z$1R`V2JZl3s*UhxE{nI-(1S6tfI0N>bHhkJ>)5e)d{z?1r1bp4OP^;?7M#f^0$
54739 zRZz<2qJW&LkA)U?dYk1fbGW69q^4NRF?^|V3_ejpG~u;cj`GS*eja^o9NrGEAf_M-
54742 z)W3j_ks=;0@ljG76gL6>Isq@=xHP=KaXh@gaeR1x41O6-5`T}T8wXSH55xQL4~O>?
54743 z>u&|0+c=EwE8xzJ%R+K&TsFKPTYm_i+Bk;ptKi9vW6}L%o8(#-z-KlNBSo(pkgM!U
54745 zBFWL=l;ZH?@Cu{=u|Nl(Sid{Gzkc`deq&vMos9yzkJiA(YV`bSG-U$h*DnKK+;}_c
54746 zJp;H8dkBN!aNBZkYGQJ-hw%fhNy4y$4;=gf%e;dnVOc=D?Hw!yO9DPMynYLHiJG^r
54748 zj<ib--G6KX--a94kPYw)R1IOg#r}M;;FDx<K8?WkllvH)un8ZskE&r06KVpic!tQZ
54751 zM^_JQml0TU*D-f6%UfkbU<4o5BE~}>N(DluDTKFu%aBEuL?S^T5YFR7Ul6pIN)s50
54754 zvk)9G$vVRWCY8zHe2HnvHqy@@Tfdw9C&mVE1W$p#0vk|*V?-~|)t9>9{a_~|0Rvd@
54755 z5%61R2OY!9A6<VN{4x4mLcc#7TmkYpc@Wz1{{g-Uz7GBd{3ZBv@Tce*0)2WrVrmAu
54756 zkJE3~p#x3u3h*)@pg!<veip38FW_tBAOCAkgysjFErz{+klWA-PN8ZvrJdj)EkXjV
54758 zF<bjXEoG8AalzeE<Ta>g3MWQb>S0?EcoTRyupSg(9%f-0CSe@15DRSy-Iu_xAWZVh
54760 zb%?_lhu&Ze-zF!+ND8b*mWJm45Q{qF<AK3H3d;+l@N9N#;Spz0i3Fc)jso?9^d*?V
54761 zTH!g%Qa+Ds-$uvi*`aohu3>kW+<GcX>>B(mM{FbT#<NklB@XMr3QTxfG0;@PCRPwc
54763 z?`kPsvK!TAMKDFhk@9ZaVJtr(@!b4@{H-sZxuvMWxKc|dcjR&tmY`CT6EQh$6lA&D
54764 zC~&qc=|ZhhuiK)UN;K;ZZ)dVnEGCx|TycELOHX@#PO#P)iRF-z#fuz8m|Di-W)j@q
54766 z*YzYi<#)ec=rqgOj_1Iy5wmwM-fNV)jFZmLNE_yP#bH^Ap(M_AIc2t8z5AZ^yDz)s
54768 zp>XYv9WR_o_dGU**t?YXIyU2GGQ3ml7_wSXq?*37nM$Nnj8v=@B~M~iR-)Rs-F{PT
54772 z;%GF$XMSXWb%$R8uLZ}^-lP$ilfi!jzaQ{R6)88T&|bwg40Q01;A`Nk;49#dz#o9m
54773 zfls1+i!*ZE18zke)j_`@^$c-_4CDibE+P(E#*!E9ZG@=7YREWO0nO0&0}<U2!F@L7
54775 z&d$uRGhh;$xrU7|kPykOo%WBNr9TG9BqOgq-B`DGPZHPgSk=Z{bO!t@_!sah@KC@-
54778 zn}g5r&r--&BUT&WBFue8*l5H=hlv$O`Dm161G7)e%UV>K#k~wT=6J+b>9cT7{KWw(
54779 z3mB(MqXv-{6Y|cjtTW=A1CKfk(|QKx)={<@+ADAn3HlYrwQ^}+aaV4qHaY2v8M7>_
54780 z6O)E73%XcG|7n_z*`F!+`7G~rW`xPT<#f*<*DbAd^W^o-leIldhymt(Nh(zfLQIz}
54781 z%yUIU6k~G1X*#T(Ot6MCH<i2X-nm=gZ%e9L6S{NC)S+kHdw_V+JwK<VdYn?%Oqx<y
54782 z4zsoOZ)rsbb3)861v=@ECs-biscbAwv+zH7mU7bqn{!z)*BN7Z%r9lB)%q%8m42qs
54785 zqjO^1oazX)l}wBA?heFp)v6-7ooq}=YFS#Sv`f4#@vct1=Iih3oS>#^)dk+5cD?17
54786 zU-SGjedwFte28*5bq>uCu}}X$l!Pqn2qs~^XR@5cl7z0NeYuINq{k&2X`rT>itz}Q
54788 z@y*wK^V|E7e)+#PzD@r<^$l<hVt03-&Gsg={oW5g41Ny*!@mRn3;Y{`vnH&<NjL`&
54789 z!Rz1);7j1c@NxJQ{1W^#_-*)4@ZaG&L33{l616P77d!_c9?Ufv#Qi!*MIi!y`|M!v
54790 zc0mPkS<E{>03Jts{T8r>`0gy2L0mKkvWQo*=<cK7H_=o0_wRx4fPY4V_@4-?{swp{
54793 z__y#2sD~^_!tcWWiE|*L(I=3O`vdq7@J7U$jv$WDp+7#z6Es|h-vc;53yrvwkH~yE
54794 z)`!sVCxg#oXiTf%-|?v7DfF)m4x@kb1h#zmXfy{9hr?#$C?aL)(f<?Zi>*G0x?ey)
54795 zv%vd_P}#X)Dz^}oAOERSS^H0+@+gg2MB~g)lg98X=-<p1O4B2hUi#3FOymKHc{EfG
54796 zksO;ASoHgaky`ox5vkoDh14fbL|L?6fDHtYVAe>8=f^^BO@OQ-5u(hBYZ{ahCR1f&
54797 z4H3q%RcEaPZ4lS(_*&5{ka`BDTs^f0l36!-qT-cF7i1G|cCC@FlL?Ub6Zy4fu1fk8
54798 z1Ti11)nF`!b5R8ag~Cv{7ycx^zYJZF^xWiH1$t-z-h~bT$A7%+yaNETX2>UihDV{D
54801 zKL$Sv-wA&W_3$|A=W+Nd_z>#pVbtHlsJ9oOK3{-(ybkqy9qRQE>iZBJgKgCNB>Ij?
54803 z2@fC@<wf8HNHe$sT!u8cDWn&)Km(LP5pA*--i~#;90t;sS*!^lm|c!S6U&2Gp0XR*
54804 zRC;dc!9+jDaV&E$w4S)bA9euj-LgXD5wK>%e#<860H2eY2!4cNfT1lTGHwLDl7UTQ
54807 z(1H^*LT$*%Z;h{WWrf7Yy^Gi-j1{w7jtv8xdpJ{s<3s^-h_q;kgM$&}p)cHV@Nifs
54808 zJR2QqN^TiZqKHpHF)UrijgZEK^`zi{lEo6ANt>P-pRUmRrRgR4(3GE!XXcNvRC229
54810 znx~godi`IeHp7Y(C48Hgc1+j0jwM(EUrZ#L_Zf0E(YrJ?Q=Cq$R4)2r>v-jGW7fG+
54812 z&2n>@SQf|d{_s;qL9m5o>WyQ|tSzS3<4tFQl4<^jf03w|v!&9-t<_@_ciu6!yxb>$
54813 z*x#A!ILV^9cXHzN9GScEdAF?}^x|pDN@t$kBd6z&CgbvSGtX-Ic)L0!`xPQ(TV~fk
54814 zG}WRZqtZNWO|PssN(&^R%1E=LSaR%HQ_rc@;F?Hr4AMKq<m@yjm?_ocWLC|l&D_-b
54815 zZ9-htMMYVF6seXHine^iY-0QndVm(`WNeHwi(@f+tRA09Ykp2s6n5#xUtXH@ld<)`
54820 z)U-4`w&PMK*2=}0O78Vtfo2R%ueMp)<d2qCYC>A1-fIc2DB4`XH8SSX<m@!HW4hk8
54821 zO~F%Dm*Yhxm$FterWa4RPO`y@yk-1lTAe5)bb?_7-VvQtGK1shnj#%DHIAfA9PzQx
54825 zzxL<Wj?U3MyyL3N_w8=yS&pL%3_-DbS_DZ^t0B&r14ypk4>+17xI3_86R@X){Kuyy
54826 zND_cNjo=*vX^sz0!~^0o>@K@n#9--gR9awudlxi|gQhOH4<{(LIp~At*!!MACpf9z
54829 zwe-I4v-UdEGt)hq(Tt?gzF4y4O_puRmTlP<#Mr{fU^|95zCavSv&Q@oVu&CHJH$AI
54830 z2(Cj+AjC-sIKlsoLwJI39^b?yEVBBZQ+2whXEY=10RNNce|}`9dinY+-}%n@-m|@5
54832 z6K~zPU-RoS@0I*|?yYZ4#COfftRSeb{64WUoSQ3LzN4}&I3A)BckI}GurQyEZe2+4
54834 zow#MomRnA=_Sm-9&#J_YTz;`p8?PK3+L1^lJbWTKfAC;syta5idF8iMPWK8@Do(tM
54836 z#i{8LtCcLy&lTqui!JVz6T~N}k%V0wPfzXJGn1(ltW24FWnX~!1epqt%+4M-Fxwdo
54838 zVz{X5HOorG48ibf1Ru{?$;{2WGdW!n!X8o-Ny0LQ4(vT*TRze($sT?vlenarDQSw&
54839 zH&KWcybO<%YW`p)9!p)fDW39y-%&z7NmF5SWXs~gV9;hMPbvyVo!zGkxttpvm57iZ
54840 z#p<BqBQf7=tT@MDb-Ye42WwkCl$Xh(sEz}b9;h{3tra|6Q7eumH6h^j<KAecWS_b!
54841 zoX~w@*h7dCq%{gmXSQAw2?ptMb97AL)kM6NjpulVCn#lT+fvECb*~-q`NRnAEu<ML
54842 zY#5FB?7?U-?j_ZQExVVtf-3$1R53uwV7d(2Hm<$)DmL-v$|@otwtgMKYj-W2@p5!p
54845 zQ1Bvs--df}1QArtqKyN$zUx$$WwMf1Jk^=MJHH_VCdL7hvE`w#-x`}t3c003gTqAu
54846 zRXE*-6=pVWc=LOH3;1(I@zpakmkrPPbdvN{K_kY@K)D+8rrL>SztZ(+uhP~XoA3DD
54848 z_H4;+&8D{}y&jg67!NLqI6fR`rQY0V!P-t-Jw1L4VM@VtV($3xtmX%`-SV6B$;D)%
54850 z+t)jlltgS6pY2uBt&Y1vl0nyu)-vOMHQ64W8R3n}Q$yLv&IG6&!H|3=Ek?^R-==!H
54855 zQ({ebDjN>h?P5KlGn7;?t*Vu4+p%CY9*;$#SL*&TktL5~+p%Ojw&>jQY2-kwFSjp_
54856 zX+CT_zMbqdxz`5zZ6@i`64VA`K`a|G>bovjV0woTTx?P=)(s&S4rh2@K-Iux9W*%M
54857 ziA8qhw`Vd-X@O%yu5k|;lj)S(nUkG@$IF?jFJ}x%v1quXgsixlP?P{8_!OJ>iiC&p
54858 z`uX%^V{2wH5uZ%}i+6`Kdeo}-M>IA%ni7&e$p$#z>z667s#v^dz*%j>c7A?yC8bk%
54860 z&y>jw6B5b!d6u{MWxp1-q?ECiXX{)RO(&V+##F8*M}m@E)XcD8OY;nF6{mfEFrD%8
54861 z%kHkcl-7&JS`M$VJCZC4q%s_eW*EVglX02Ryc1Mn`^M6M|C_@uX$x&9a^mQKr~fbN
54862 zZVsE9ZZ&G@W!<ge7#-VN%UdjK%^^dDSoK0Lnc18P@aBbHa`;Gjt_Ia*496#Lkd?LE
54863 zWnwnr_gZVXOKl-pg(@=az)H8d83P0928YpoJfV}n7>{>nX0i!Sq~n|E^*w4|M{8)v
54864 zSfQeT-gB>|H*J`EV-C4j-@C?|2|2rz<Uv2W(7Dd+*&B`;Kv8;hQyzC6t*WZ^bl=hb
54865 z_FK#2Q7PSydjvMThMP5KH}GDlt&udt)2lo#n2NTAj-#+4U{3^cyaAVUlf=mjf>REB
54867 z1xax<<{3G<WtFogcu%+%tPSVm$&KmCp89HEEeyrt8HS-P394-Vo@0>}ZhI>R{IP3d
54868 zqlv!v*5N7Ddwa1N2Ja7ok0}(QXpLyeu=@emz7^j}ujkq?;@1bw%UPL3?r)`+=hLG-
54869 z7hkk}-V0p($dSypacE&uSXc5Pk_+f&u@f<Us~mpmNVDhdGo~tB=<S8NT{D5!1koGP
54870 zh(K6U0`YQ69q{}6uv&Y3$+@~q;KWirW0KhBwc|s8SNpJi3-g^B>gS?@e%Sf7V8L2S
54871 zazO%3(`$o-+Z5F&(IR^xN=R<b<?C|Pgd>*{RegDjAU5sDbnJ>O50NChE@rq+QhYK<
54872 zat+X+7Gkk1?Q~I|_a*{FdnZ6lYCJj!ANFCbc5?xk-4eW!x>QLy5Mo{9az`(pitWSq
54876 zf@HpeWL)p_4Iq<uWw0-H3$9GJfMnbO_fa5IKr)-VERtc7j61}92gnprUiX}@qP(g|
54877 z#_37aULaFK>EP$jAel2r#<iKJflL{tv-x}y$s||Q{Tz@PLNYVwFF`Vwtf>2qKxP=p
54878 zOrC!l$vnNH?tcMfMo@X4?B-Fu@+<2886Y!?WVUn#BqOY-`#%7gF_hPR=bI?6=8C!>
54880 zvv653LKrKCpn?Bjpe5sqD~2y`6eih8abj~WG3+<h(Zvz}?83B)`-Y;vqLtg8i-7^e
54881 z6m#RUB2XyKQmUQN;yy_w{j@A-HXonLd3}b!CPq}=$BDMc`+3?+s{m^I*nUi^cj9+r
54885 zgh^tPbGw_wUH?shnP@Tr#H=vI7)2c2@UFu9-M!d3F8%+&<ttnyXqKZH(r5T-5A7jn
54886 z4@-F{Q!4qnc!Kj}(%C%jUASvz`)Eh<O4)3fGWO@II~I2VhZ+7)B`5J>HbI+d&6kg%
54889 z+P(Mkn5=qKJZI0%D4JzznS!-z>!C4G6gb1HMWo0O+|9J)m~58KgSXrr&MKVO8&7D%
54890 zIX>FZWevAdwqU3coD@?-cGSm*w9djJAIoT(s_`66v-|%$tH-o~<6lEP{)MU1?c3K^
54893 zu4-sI9_@m-yYq0PJAl)?f1+VlH&p|AxZuN!9<CWRa%y!XCuzydW%=mNtX1~s3YNi2
54896 z5*-@LigEVt8J8Hr2}b9v$n?+@QVg&Wtvc?{)=RUqeqIbK;ffv!<f3_lmkY)4?%C0L
54897 z*vkqu<zYnFR|?Zf*@y%Z#fYSd9w8SE=B7%qv8El_v?XB-#mtDtv$BWvQXC378p3~s
54899 z(V4h$x?pRsSW1Bn-al#q>KUk(V^?e!G(FqO4Ofz6K#%4)h2sk2W}xWP6LK`Av7CrM
54902 z-Kqp<O3|6H6gOa~5<8cUNs<v0LNf`zSn>#rCi%?B^d<9w`E9B6B$%Otn)2m|V5pVw
54908 zjyH~-s?|;%d;MD~pb%St8SNuJgh_DW+Cx(~wUQSA<UOte^*AI`D(v|GGSSx6(p@_h
54910 z{ooB_g4!83OX(8L1dB!%4LPp!$*y!*Jz|#LZR4YUI@BB<8Q0Z9E-@Lih7S!-E~O(&
54911 z^Ti>pI9txlhctL$q4jGw;&gudrM24jxujLgMpB__JhvfR*nV&-(@aUcNAeh|5;ILu
54912 zJ~)f{Iw*e$vOy+oOO`~E;Be=%v=fZ^!bLS0gW3$RG>imDLxm;W;0CT^V6*+Ooc-#s
54913 zkcw9#&fT%!$WNCWOKLtfDTNcwRHM|Mw5t1tO54Zo)5b?*+38KYBGLG!y}^kxC1-dc
54915 z&WYL#`j2ga9~xt-8D|;07_UMg;DAGQ%mAn`2~|$k#(@uz2z+Gj>ZN4k(j7a>k*#S#
54916 zAB*L4e?EH~V|M1wk}PBGearF7htJ<iZo%;@ie(Y!nKy4Aitf7-=&A}-_qW9Rfv?%!
54917 z-jTy;GLI9CPi27Nfo=})&Sn_m=3aR9l_9}A2tZt%S)p<ksk~IkB*S1#mqpM^#_@5^
54918 zReUDX*S%vvniK4()+4J!Cky*-th-^vD*5~)o6^%$_eF|!AQp_IQ=wowW%#|eQJ4#+
54919 z;sL2Vo!&g19=amn4Qr8<v1`LSy#j-8rFfnsInE4*V_<5}(C?S^@|IflPy?uR*oo%-
54926 zjI^4o->f_8YBx3}bXy%uY^_$V>|Aqr^W^jf>#q5XEGxNmqTn0NR>I*;Tjv5Jx!g>=
54928 zP)8V8c(Fa7mkEky9I&%AXgmZMV+VT)<MfhD8pno8=}M*&vNhG~fzgHCegan*-7sK8
54929 zy~kVICwv9n1QNs72S}Cw-YUqEm|;ajTCr2M2z_q2a^+NhZhQL1xeexIWkaSIiHQEO
54930 z@{p;i<18Z>VL_xvcV1q$GTGgo=AL?RY4gJ)x7?5&!}F$@-gM(sB(QmG`z8SI9_aoQ
54931 zJBbfrUMzs^bSZ)UOSE-uO%!kp^p$`J2V*bpg&5zDwto;|fIBYu^~q+ZGTxr4`u*%k
54932 z&|nVDE^Obvu(Zq0PQ~tQPl9Py_bE`U4k(t06(09+V1S|#VbPi-#v&#<o4nPYuXIKm
54933 z03`%{GAk-JbDmQ<gNqx?UxyQrb^5~~`71&48SFRRGiYEo37w?{Z)3vv+6sD4z)<GE
54936 zYF;l;z{5ZRR|5s4u>)-}W*U+xAV=%gMPK%}EBCh6bHmQQL&y&3pz+gqnsyq0*%L!Y
54937 zyt-a4z071@5uyP*qWK~opA`!Dtf=bGhccy#mTxjSo%bgafhfUQ3>Wbm0ZUiaR6G}C
54938 z)A2$T*zbd&BCi7#F#xi=yzP}Cw;04x#8SUe!1zc*7E_>Y>=^LEZUDH*#htRV2o-ev
54942 zv0d<hqyeL!MZ-ow_bD<D+zKSZ_c*HouCXBGP<Jf{t%W&0i$y(voXp7nh<~ikX{sXo
54944 zjQ?!g=LNO^&v^O(NJs;aKq0EbBnC;s>099_Pg0OBr3W2IXP6&QSqh4hG<Eu-vhDo(
54946 zy^5gvqA5C@&W(jfBD}<St$?W!ekPY&SSXad5}2JgE9y`-I1-NVoE(kBl}Rv1>3#rc
54947 z>Il%3j@{>4kyj-gzEA~+oU)P%r^OCCB>VtTeJjqgFX&0fRt}N<4Nb^>v`jS@ya<Q^
54949 zvisYhE;l%XMFJbbE`7Y<V;#t{?Du-eg<R$L)<ZPF@1>GBmK;hAMZ=;OGjPLQ+j2q8
54951 z*K&5g@P~rsGkm&|`n*>F-^;#Yz#K4a6IAgx+rA($W*&fH3U@|8oI-WY4wxYUO#Cjm
54952 z2oIX^bZ>y~8*F(!NygzkfQzG-VvxfCb0`ejhHc?kG;Ag8ga#>*7|g^?&Ry?A{-BPS
54957 zfHTY*c*db-aG1+(_EDuwK4vDgxaAK{q{^MK$v}iR3zm^r17PO8DN$vp;qArY>4Y()
54958 zT7j4~JY3v5uBB9tW;x!lOc};!cmvSGefUQJuDP)-2mAoOiGr7e)9@Z32*Jpmz=JxL
54959 zPW2ED-LsGQg<toP4vmnG3Jg4Ao4U`%I?Mpp=|P=UNXMP;?x_31nb1<i%nE^}XfTrr
54960 zL~7~r))qMzEle?WL-SuAFHn4h3pK)txNZ1HOOr|59!iv&km33|P`3|(Ha4&*cDOCW
54961 zH3kueP#~Q(hF=2Qu}v551XKif*s2S50%#S2b!-x@LokedWUe&dNn1ur<i&`lF|zn;
54962 z<vJM|XYOG9b64-k{0PVE;J=8*u=J<NrDQa{soy{!#){a>h$K4+d~OOS7*(Mu2iRyh
54965 zFQIaFa(dGeBT2TU>E+TsmZhJic$#LVKv<SZY9BW{F|hy)=X#*?cLAN-V7_xlTk8Rx
54975 zjM~PjG0V@2G)pC~p^d9I-B@ln+9gikzw^fS+dzvJFda<5ejn%|3V^QOR&z<6r)X>w
54977 zpnHP`#rcvp8HlT~ap#?q2-4tPw4%fnPELhLe?pCbSvxEr{!vsuUt0!cBVTRV)-TOP
54983 zn87iB;Bl+yY-ZO$2LtWt?0p*7Qn}wY6kH&S*3`HV5OH#kDCPV+MIX-ye9n~OL00rh
54984 zzwG3Q?x)GEAh}^IjODO#M?JZ?%6q`j4$ppEaFE-vl2W#ipa4R0I8o8=JUl1r#{3*y
54987 z<*Tj=LX6}CLx{{k#i-t2eu9M4SPxR~00|Z_?sL(A02!LewGw65XvM2wMiuWsM(PFa
54988 z`ox-9U%yss0}Z0`01bWy9$x4^K;DGCp8724erc?YZNYwTnRM5m44OWbCW(!}t8Aza
54989 z4}swmF2tEh@G->@LEwnMS1kI9T0&tG5<Nc)91VbjGzq3iz=_ibFq(!_B%0b8Y>!|J
54990 zn3yr-X^aIBf^{Nm5sZth*8ItVwzrhc=Cj#sf@34D<>@`k>&-H<HMI4_qERXfl-N5x
54991 zVlWQO9GuGPeew+=8`ITbFgPAaq&Sg|Sz^j3d$tN*!5b2o)4?$#kp!Pd-OqDTAUp=X
54992 zfZtQIp-Nb?>!zjU!ahG4PV<Uv#92w^M87D$&(iWC@Np;uJ~p{fB_!F64HEc<=S0{f
54997 zAGbjU7|2ayWOdXHfYo2G*dDtcwX)%&mIQWRk;WyP`3qZ9Gd?S$Xgc{8)no&qgk>bO
55003 z%38R<353CmI4)76l`F!&ct8pIe6+}T46l-nP_%FvrwSSlW(5i;GAa%jME(q3rR<&p
55004 zD!rEqVKJb}3U-%MK-1I+0v{jF#07vzU?gIaTw<KSz8)tc7hLc=;T*vooZcUHruVzt
55008 zcU2cnp+jtd^O_WuOz&kG%g*n~tF(tRjo&DN8M=?96q5=lKI{FA5mD`u31-dyxVU6F
55010 z*8j?^@a~7mH(=A$C14C={=krcGt&I<(p!WuScU~Napzbv6U)SzWX6_pRSG7PVZ2-m
55012 zB(f-%RLIGNe2}HBP=F!<;1obE{*a~jazUwrT>i?*<wIQqo9_N-ITz#A)+M%1Ren{8
55015 z-Jo=DMWvg<_{STgu!Q8RE@5`Chu`yBiu)kzXIN38Vu{yY@J*bLBE6F0mlWfFk4g~T
55019 z{{+7YAi@f^9s6e6=K%nyiW44c>-^j_#d><EJjXKxiP7*F&S{LKXp*|iVG+jZW0;4-
55020 zSr2<P=5D5LIWq?2hu4s2J)DQ-PA~rs<2+pNXYJ-1zo0xc<yqs0Ea$ld^LV%`U<%ve
55021 zhGH(ac~hs|n#@&lm29Sx%2vH>2%gy|At+mMm&Uzek#KHUz}86*9-=keb@U{>HI-am
55022 z=r?LLzh567A2&6hNc;1XnX$1HDS1Leti-9cNPc%ZS;Y4=WO#+&ZfxRm*&UulM4Isg
55025 z@M&^Cb`AMM92f|Ix6V`qcfZ8DH)B7;?#1_lcJa4;06+I{TX--JJav)HB5=z*NEQ#=
55027 zWIs{1|BAV*pZ@p2t2e<{!ku`opVu3~D-ph;MNp?h-G9bDi2szxfNU|G#eAU1Uj=m|
55028 z@H1cS)$K(vg}RdbHuw%L-fGSoeiB~lsJquT+Pvx&!eFZ46$z%CQ9R@!k|jxo5wl5#
55030 ztrywJ5dC?-H=Uq8#bkPjGS=JH__jZ#I?*J98C@QZ!BdoE8T)nWBLE<W+qT2QytEu)
55032 zAwj}9yE0;J4+H(YmD~feK8Z!K5|(KvGYNyG94e-jv|>0Wda)=Tg^Wz(iai78kc{(Q
55034 z{DGWJ(0(=9^v_Sd!{?>BASFtiV1uFmMsg8*18rbIYzEtmb=uRVG?-7$k4H$z0}*uh
55037 zz-5aO$s0)1hRLUuSzHcDYD`f?++#{|R7u6yFnfNKQ3y6Ej|W1)g8c$TC(^t(Vk<Ep
55039 z!e-T~I=#Nvf=0g`ogvq`_F5lbZuk`hBLSaEhbSt*0(Z?QN}QG?CfLkRa{)YGA2}2Y
55041 zdL0-}@21}C+;axiDo03o;%~{o@y*UrAb1_0aO@V{<Rq|KB@x3)M2T_@H{0iL>eCdV
55043 zKkp5SV`HN169h}5gpCtwTw%4W-)mF?UX5lwLj<qryoV1&X)yeC8{G-)&%kh5>g}xd
55044 z8^O7Gm~=U}lY{=R7bCt_dn1=fEV3|!SJdJ_-jYz~(n&57WjTL@Q!*?|GK6ffa!Ln&
55045 zEZLH5K}qQ%5R8{f(Pei=6BHrnyuS!W)ho|`3i~MNODra0*w0?)E^qzpb-ie&-OEW6
55046 z`!Mw>Fi<tIqiuf~3>@`*JO+=WEukIT&0Ee$PRwRFusQ8?32dh;phj_GJ3Qs(d_&-H
55047 z-}1DxDg-6SE8u=6x&1&}3WvkZaI-R=Nnfn<y1jP*9Q3!}9rdx-t=(DO4dF8Y5b((a
55048 z=P{EWZ^&jGq@czmWt#fb@>X$1gImQRwZBz-{)RwG@ksd;Ee9njYEceCP{Ts31hn@l
55049 zP_s{w4I%@)H-<6vO)g02J`4VQf_^_X2TAQA=@h)fuxmcNlBEk<gQW|e7df!{%ic`}
55050 z$e_g1*c?6wZ!#nicPlh`YMG^DMc<W3_k~Ml<HBR-zMDkgSvS(us=kgFqXn%T3VKM`
55052 zy_V>~X-XN5H8<(30C`_S!McCj)i)f;4ed;g?TYUHAG_taLP;ZWIiV+ZjZE#H7_p5l
55055 z(!U-cHV#Ofxfu$$t^Gmz3apOpfUR9|T6?}>|AMVOI$X?y)~@6ARjpmCt!izD2@5jw
55057 z*hIllJ+!NS_(K!zYfHvw-Y3TtD$?2Z{<pTQi5<7?D(&iIoVL&F)xBe+zE(qSGdKY#
55059 z_y)>3HPz$1sMiL3L#-dvewhc#xxhD|z@EC+)?!Htn`*{PdI=h6(eG1+V!ouWaiTE-
55060 z`-wNETkY)Z4#gjmDN-npL7flROj3ryz<fUZ=z1C*=C~%9$^>&0<9pM)Zr)eUZA-%d
55061 z(5Gf*NYGP!MJu|wuy~n2JhOjp<8|}LrzU`MM|TXzlK!$CRY-F^1p`Y4lT|Ro+eT!F
55064 z&-P{Bi)7y0V?qLD{yXYs&_nk)GS_3T!`|xV_10cqkm2b+sV{+aK8<AFf&HB;^LIU&
55067 zNF37+KL9jY*R1=d4_{o!BG)H@=yw2z^a6J#YRlFS9SS~GI=D1sMsa-d`i1<F>#j&A
55071 z73Y75D6@WujH&O`9e2(U|A<`0i{10Y@6$`*w||cs?Y-x}j(+>~9z|I9DJnqMfz02b
55073 z_n@5Dp>z&)e-EYednlb}dmV$g8>MqQ_Mn^2gS~WMnYU3t1TueuI`g-?Uqb1838e$;
55074 z{?9Z9Wd0Q8b#wPyNakD1^k~#}>R}-BDC!vhiaq7#_0-_ta+dlykog8G&tdGWD|6QM
55075 z)r6y;uhH+rrm;()J8e1qlS?y^Uy$N-qEQ)hiSJ#C(@c-9v+o>g4v<>u77!EQK(AQW
55079 z62=jWr9-$fsN5Q2UtC6}D-cVMWM>`qsz$Pvil#;+i)6rWLkgIkg}3cl3XTHY0+d_d
55080 z3^1w0(;7rB1#Nzk@L2U~Ixl<iudb)yv?|owrr%1)R=RW7#+hHsX1Avk`!C-YX#)rY
55082 zuh#s9yxuST>-{3L_AlCjwWrw!od3bLotmsy;mo7gw#yA#>&-v<%{9mbwHi}_&$P80
55085 zP_vmW`GP4)E!#F3T^~_7Ui$TP2@GhDIrEBJU1#BZK26^aKL4ES2(aw=e?yMo-v)Ro
55086 zzXs<O#0xG;ICiHy6yE91E8YS=eJA-NYzoXPj<vlb@CMk@;tWBdaWDk$41&q@X^g_)
55087 zCCCddja~5dT9?ME<GN20z{og-PcefbL3)fk?m_cG<c#=sKo@3>f%Qt*ur63IoJ(2Y
55089 z;bEkaNZOZz9d9HO$lJA;E*h~t2e#YQYsbcp52-N)r&ua5#@Tz0-_e;TcrLdgKlj$*
55091 zxiVDiu8iP!)oOp>J}D?6wZ@`T2Y-%MC0krLJpt8vY)t8^b?7S}Rg<c#)`?@ISK-|Y
55092 zwTj^PKhT?jA%7mBgKOZC5NOJwLC^m?)K7uT6G*1eMd+#f^??rYO-JSrk<8xiUm%&k
55095 zomaYFCoZFI0WwdbbpEkBk7VWt(A@LR^zDl%o$D{C7nJ#H>Q8{o?;(VB3-&!%=6eHE
55097 zd=1G=bzed<FAbpGGt_s0%%7vY#=DOqnMVg?-Ve!uiBGwM<;1OSiEnkMR1n2(a0b(_
55098 zBJ}w^fOQ>-+XttlN2yN(nQtN8u-G?TnQ!!DAkzIVbsLa*7Rj6f6Gcbn9X*5!?2CAY
55100 z1`=uUk}gNueSFGuY(x()%-6iBLV#mM62~EuDuIzEGi)(T1YlYGvh`eSEZIy9*%`PB
55102 zHJlCX+vLs$;{WB@0Ms?dV2k)7J$RXZa7adT<qPHmFw*4;jrZ5p*4BDD6=5o)vv-UZ
55104 zk`;NMZ3m6HA%8P<`eT`;`QiQ9-LJc};H(y@1uMF_RGhVkrV{4vd#@?%oCT^cYq<%V
55106 zZDqbszj1I|ydUD|wct(&IcM9g2^cP*zl_&w7l1~{6~6PrIos-vk^Onoix0}I=JPe0
55107 zA=yXLEJrbhPc4Pil-jrjuITY_{$`goJMEDIoEPHHUPH}Bd5$uM3x%S{;vZVCq5eo=
55109 zEp7<pJ1^2+(9>K-odWIkJQ}^uVefO>>V1Qr_yg1tAoG1BGl89UWlk?I%%LT3lJ70v
55110 zb;r?&JU+1Kb`#}wY3Bj-J&x8%dQopO^zk$ACK*ULkIp*3yT2TdV!R-#d6~Yx`wI3@
55111 zW0zZshtP=b20B4h^9x`^e-rjf<0Ey#m3n2+OXsMah;AOFg^SoXdTD*bO$$Y|=+n&~
55112 z@BT;kB&yHJLCSUVCx~ty<cFQb?yi5oewCZj-M#!!n1Vj#{PFG=x`$C(hgVR}f3#0I
55115 zr}u|&d~>>gAUq5QWQ@GkiPLk!@r9Qz-(L*2qwsq$zMpmkAPLb*i34rV$WS4d%2BLY
55116 zq<aHzpS8tsHUyWubs%7*^?-X!9)NEAfS6E~xNHXX@p`jhmMxz@v#}}~H6xO_tfZ7p
55118 zN6wrNk>mI%P{I^;XIp6u`QTwHNO-X{+E+n#Af^mt;RN$V3d1R&40@F^@+&35NOIZ{
55119 zg=(Q!sm0rxs8!NKsWhaz9lT@Ya-$l(bzgMAp&vH7ucZF%jQ=TRlvpPL6=V!qf+?1-
55120 zt}GtXM|N&XNmjBEFK05FMvD8ZTFx)Wy--_bB^axQtl;^OT2_5J(A9)$@F6*R^PZFU
55121 z+tclUsKzGKrgeDZ%$uuPQqo71+bvU+;z@W&<qWVL6TcH1$7Zk-ZDnFaCrOHQ_`ApZ
55122 zN=vxRU69y-x)netoIC*)u~J{Dz7S5qgKW@v?piH&pv}WQ)ZtVPQXm*>nb3e+ap|9X
55123 zTd1q;>3<3-S&m9(44PBUE?c^uU9c6)8?EJaoAyQ2L?LL(T3k{~%cf<89n(_sD(fX_
55127 zdP=YCgnh)gx-({1cfoZeL05#p^0jouSF16%FPg(v`Lg4)s-c%Nk!mQsq4;V$V`@uo
55128 z@%0O`Y*&-IVeM_N-5Vby_Tb;b+Sn3yOIul(TJDYQUx{sbw``i<kV(VtXkM&4qQ$3r
55129 z?@sY5I`&uJHv<t<@P-mu-iu3&Xh?xzKne=}gh26hHhf`6y>;!5njedJJ+c-MB|(-W
55130 z3BRRFoXm-Fn-6#|jjq{ip*5;bul+T**Y>P&<X35pu<s^^f1Wjxj#gizTL7kLO>Vxt
55131 zr5e}O%CW`a*I<bGy^Cd8x+-DrU%1c=aR4YbU_ZnE1hcV3JIXi_3P7DUttLFk<lqr-
55133 z_jkMfTp1WS1C`<@zi25wpm}7$Ln<k6as-xQf3Fm=t4~~;An4qRQlMOa3~~*^5Ski8
55135 zg>@&}TS2y~D@=4h-kriOb=Yz(>}_s8h$5T_8NpTpMRx*^wn}0v#8$vXBnQ`PT|~LA
55137 z9Bu?GO*VANga?-0nh^}WZ}5mX!BF3K-lMaC;QhZl@6k~_@cw1@PQm%##IEYbNEY5H
55138 z_*o4dDX*cUdH?5Z@vA&r{J-a!+4b#b?W3Hl?a__1ivI|o!Q$8_Twd7#&<k|yI0<8`
55139 z(pNEH$dGBcYbZLiH{{JBDcM>=aN#rVUg@R4+y(mm-a_Y~U^}yp3{5*1d>l!PcKGUG
55141 z9Zg_#Ly4pfv#@z-joTdPG&*?ylJg#&f(7q?<h*~~`P;F(yI&(1Y|>FBI*I{+)4n!8
55142 z<tzt>@Ly~(7#&w=<L!ade=82}46I?X%SdRA^<d|`-$5VAFcfV`!D7nTIg#E!E(e`M
55143 zI>BUp+ty=dl%qhmCn>#@bB=Qko3vWl*vu4l@&;|{+U-}*rza*7#->VqTiH2+GZc>}
55144 z>$9CBR$Lb%0eh)l-Zz(XmURnib?=z7bbF3?io6YLU>mS2+ENA>58Napmf|=Gbdz#;
55146 z&E)|FmQxUI(XvhOm(zvxt_@P46rgwjsu+-oDF=9o;}ZF!#i7WswY@TQa$$T!IfIu2
55149 z+l8by8XudMBwM7kkXSyl?GVt^cknL~6J*Z0Y3ts-S#_8T{rAJwN3mE<(prsE_!n27
55151 z>+!<W2q<#UCiN&^KGNK7aPR<%PWXt8<W7f4tC#TV1N{sh7r8(=SKinwu`(A^-$3{T
55152 zf2@$sZ|D^_Fc*}r25AD9NIXuq9Yw5@rn`Xu&I^-mwpErV@C#EOswpgtT>oeIC-H}f
55153 z`<)w3oU3JY?xkN`=5HlVv#t^hfyG%y%&CER0skbYN6iDGDH4JuX<1ndfq{|ybE-mh
55154 z=_dgGLtJ|UwqP*KikT1joXS;;>BY2SvmUtOPI?4B8;%xKEvi!$HnBL8-<9_zd6Jbm
55157 z`H|8kMW_eUN^fm%14?*_Wa%AXa@jZB)u#~Ae-yrs<&x~WmJ7yf9*bZnF>-F>(jNTZ
55158 zuDbQA!}xz3zv|>o_`hM&)mPtmf@nK`mz=-*oxew%zqM<R-E<WZaQ;T%U;O;Bn~t3%
55159 zsAIR?e4NNQe}|mE{EgQfIYubA9zS*+z^{Kw>>&0NR}x2w6U6PrY2tq3?ZkVC4-=mt
55161 zEpaB7;7VML+)uupYm--!N68c9?c{0le)8?)d&m!ypCHeWPmo_CpC-Raew%!r`~gtv
55164 zXXq#BFVRoa-=x1yKTrRFeu@4ugE1VVFeVdYa?A+RVA|YKW|7&!>}RfIjxr~}zuTG9
55165 z%>CSE=IzXTm=80bV9qd4FkfPxX1>XMn|Yr30rL{`V-{mMR$)yx#^%@&w!ya9MRo_f
55166 zpS_Yj%AR0vXHT>Dvu|hL1O9!O{RDdk{Ck4^l3K$sbqu3AyE-v-ZewRxOx?F-_hL*v
55171 zXJyuX)?)6nejepdxX-{j_i32!Q+^3O{}nw^KIT&xLqUB!>%LbOFL=_hzS?1oarE{S
55173 zq34MER8czwZbiR8>OOS^y?+kL9Y*P)r_P|yzl_R@$|wB;diH)-LC?>ka-iR<sGPp9
55174 zq4b_WpCi3XA4Ts`x~h&oe>-|Uh(6zj+7Gp(jq0nv8Oa?-&+F0iC}<BbxNC<%`+#TQ
55175 zZRq_=?o&s4H&OlyvTvz|o~S+&(xZg*C=H=!3Eo-&>7e$M5*Vb6#x-PL{wI-roI%ge
55178 zy04`3%ERc@%gX;iul@yCp!@21<qPQ5-zaC%t7m}SF(gdo1^GXm5)tAV@d?mpFpO26
55179 zQy*4-pq^1)R?n&!v=2I0dARaO<<ZJxl_x7_E6-G(tvpwGq4Hwo<;uA#RTZjwHB?Pi
55181 z)pIqfCe-v=sFtdgYL!~6HdkA!?WrBA9jP6!ovfXz-BWv@_E7EN+9S0`Yme2Qtever
55183 zN9vE(AFDrEKU;sM{%rlZ`U~|J>o3>OHK>Nr&>Nvfs!?iG8m-1$W2v#Haj0>malCP|
55184 zajJ1o<AKIQjfWeLG#+g{)_AgUw((5k*~W8?7aA`%UT&OgQca<$H$%--v(&6KTg|!V
55188 zOg=jK*yNLwXD6STe0K7=$rmPHoP2rmT#IT6Exi?LrCOy{rPXT9wU%0YT8COkTE|-_
55189 zTc=w0v>s?Z)Oxt}NbAwoW34A!XIsy-o^3tXdZG1V>*dzDDQZfX(x(7gpDImNrdm^T
55192 zOg}sQ-1H06FHXNaeQt)D5oYw6&`fHkG*g*r&CJa#&Fq;uG;?I;_{_<fQ#1F>JTUXn
55194 z+Q-``+o#(1v>#|c)PA`ANc++DW9=u~XWP%TpKU+aexdzh`{nkz4%HDldMDILbxNH|
55195 zr`4J3EOqvD4t0)nj(1LWPId0-JkWWl^Kj>p&ZC{jI!|`acAn`x+j*|@Lg&TK%bjzx
55196 z)T}V8&xU4Gv!&U}Y-@IIc4>Cc?4j8sv&U!uf9BpjE~@L?|KDrv0g0u?8bSymgcxd#
55197 zA;uVDtRdFoh=}7bz=(**b+`}rxiJjGZ9v4~KA>OAu^tb#)=-bfQezDz#t^diF16M}
55200 z+N{~E-K^Ve*=*Zv-|X1jv$=P3-{$_!1Dl67k8B>@Jhpj!^YrG~&2w^@+*|G=50D4T
55201 zL*$|IFu7c=kgMfMa*bRo*U2q%o7^sU$b00y@;-ULd_X=VACZsB$K>PkY5A;tZi{S-
55204 zqA#L9VjyBDVkBZTVk}}jVme|rVs5K!tM^u)tpQtuw}xyD-5R!4zE!bRy)|j8W~+9q
55205 zZmVUhZL58&V{6aW-mQIG`?n5k9ojmwb#&|4*72>=TW7b<Mam+*BYh$RB7-ACB10p?
55206 zBIS{aNOfdVq$W}usf)Bk+9K_dj>w+K-pIbl{>XvIp~#WQ(a5pL@yO}O*~qzVvTfem
55208 zW822JO>djsHWwv}@{aO}3Wy4h3W*Ah3X76QDWcR-Nl}_8ZImv`5@n0BM>(Q;qI#qH
55209 zqWYr-qK2YIqDG^}qQ;}9qh_P#w#&AAZ}-_AuswKt$oA0fVcX@~72DO@leTNNYq#sR
55210 zTejP_+qXNm_iXRo-nYGf`@r_0?IYVqw~uWf-#)#4cKe({rtntyC;}A0iV#JpB1|Dy
55211 zC=_Z%l0u`<Ds&2q!ltk*9Eu)AucA-UuNY7aDMl2diZR8wVp=h)nA;)S;l0CWN5GEY
55212 z9U(hHcZBVb?@;Ve??~FA*`eK`+hN&Z+hO0~*wM42cSqlj{v885hIWkX7~L_pV|>T-
55218 zjSY*H$0}mgu}QI-SZ%B>))H%rwZ}SQdt!TI`(pcJ2V#d}M`A}~$7080r(<Vh=i+2>
55219 z-f=#00dc``A#tH`VR7;}MVvY=DNYlojnl<h;%ssDI7eJhTyI=oTz}j^+)&&|+-Tfb
55220 z+<4q{+-%&OTBi0^`=|rd!Rioos5(q7S1Z(Nb&^`6)~a=Ci`u5Ps~zedb+5Wl-LD={
55222 z>Dbw`vv+6T&i<VPJBN0T>>S-WwsU;v^v>CxbMdlx?|7g1fcW6}koeH}uy}dAB3>Pz
55223 z6t9Wb#_QrO@wRw-yd%CRzBj%vzCV5-ekgt<el&h8ems6Uel~t?mu#2!E}vZiyMlLx
55225 zcg-cp61)?95&{x}6G9R~6T%YY35o=DLQ;YzL7SjUuq4<L><Ny9o`l|nzJ&gSfrO!i
55226 zk%ZBNv4ru2>4e#Yx!tne-n)Hv2kZ{s9kM%gci3+EZpCi(?xfwC-P+x{-Im?9-S*v%
55227 z-95W|clYh?-#xH<X!pqO(cNRa$9GTfp4~l{C`<HC^hpdz3{DJ53{4D6lqV_@)rm=o
55228 znnZ1)F42-`OSC6C5_=MR6Z;bT69*E95=Rn86UP$A6Q>hr6X*8G_IU5{*%PoQcu&Zl
55229 z&^=*$<a-o*)O(WlX!dCL==NCl*!I}>IQI1H>D|+}r+?4Do}oP>dq($+?HS)Qy=QjM
55230 zT#_uwJIN<0ASpO0Bq=m0EJ>cENKz*yC25khNxCFUk}b)e<VfmC>P_lP>Q5R-8cG^T
55231 z8ciBY8c&)|noXM9E8FY6*Jp3Q-r&6<dqekz?UnCU>{ahg+N;^C-K*Pc*=yTt-|N`h
55232 zv$uC|-`@Vc1AB+|j_e(U|C`B^lR*^x4Yu?6CZ=$(uYTl9DFk+0i@%gY|E?7Or4$lp
55233 z`r>n@mM_?zF|L~3CvhiPEhNtB{LO~ATIbh}#Wgr<j-y;4sJ~O4Ib-LX=}ez<Dme(}
55235 zYmM!9W7*y~j<xUntmY<%M^8L@<8c`t{qVSuKNydz@VEw!+#lH!I-~gMJ8<O3vfxPm
55236 zS>d|=@DN^?x~|__;wpb@wd?x3E8&{dU38^iakj^P9IId+_#*-yXCR%wIpDhgLxt<u
55240 zEY3s4&ipyb`|(e(Ge4H5BA%`mF6ZE}klmT%c=8xoM7-Gf19t99ULd*b{60G`Cm9}b
55241 z?ED_b^H1{rJgYA@kdu*3#7s;cJDD8@a59y^eA$B-W`(g!*wvuwzG^;(*-|XWuKJmm
55242 zqcLo^8grLjos8jPJY$%B#*DM8qs;#;j#<jCuClA{7_XQmG0e7O1a@U-o^cuLHHkUT
55243 zu4-eJ#`v=5A~AjJ%EWx8e@qa&I>N3BWBg(QW7yorw6QA<^QOyVR&q3fOTF#<TEm!F
55244 zmXqyKV}{rh2XfEQpV7m#%6W$)zdX%Kg*fjHC&Uf0xrP5&PIhnjGUpkibhZ<-f_dk7
55249 zgpxlq%h?otbNBINUngT!t5t<;9!oi@I>h3G%dyk&{(y7#QRV6%Kd?--O0|k}(arUw
55251 zZB#>@-XwiM<%sT%KFr#4{>dy7GvYK3*Ln2Zm(I_8>AV=usp=@Vn8?W%{#BwUr|D|?
55252 z9{H4i)x(FQtmHTNP?E)ehku3-;-BT0^Uv`s_+b9q9NoP^Ihd03i?z=8_IvJg_+NBt
55254 zTOP|;-<aJ+M=Cceue<uk{2inz?<rR)hcRt2ru8X(m1i*R5soTOaF6l=FY*%qD}IFk
55255 zHGhf!4S$*cEq{gocYc)r9sfI)$HwyfH#wYncBQK$QdaG~=k&ZRlD-mslg$wuN7Z7L
55256 zU$inhR5h$(3{y97%gFyBJV_*B<a6Snuh2u}5IIU;Ah&5Q-9{JDAJKiX2P~(JdyH%)
55257 zbF`SgM*fX%q^IdUVk93y&Sa`x$m<cp=3|8O;kIyFxd=|hZRf(-vwff2%*Y?d#d1-c
55260 zx3f{bNu8r^+nF5gshn50sn11I^-bs1!ap|33hpUN$!79BdVp-CgocqHk+<k(dXNs#
55263 z{|1|z@ADq~Bm81|nqS1`sDZ}uEBWVXD!-av#lOJ6$cK1raL&@MRjm9{63#zL{zek`
55264 zWz1E7mmDW&=o|bJ{#*1dD$+mG|0Io6$-l&}p?hgQ|1$pyEh6b2-|=8Hil5@1re$OY
55265 zi6Pf%6N#mzw3?hC{cMVwX&e15{S_Ife<dx{O5<q@jV8aRcG^mh^D>X69xt)-Cs}zT
55266 zNhT@u2h>DTsh-r6pOBx^P1Hbl&=LA;IzxuYJ{m*XsF|kF9{NwToc7ZH<*~x~rxN2&
55267 zaDn6oi6k<zhswwsWS)8u3+W<1qdX0z8_55n68UF(pIGQl`XUXX=`@dDOTFli>3-SY
55271 zTJN#k;{}e!C2~Rh6#p4N&Hs_V!~cn&;s4Cv<^RIZ^8dl#<NuSt|L`uP%hF{TGL0-#
55272 zmL<!U<;Zend9r*~iw~>iulxi4Z~PqpIX};TA!EUZjLLYKOy(i;lr37gi|Gln-Lgd4
55273 z9$AuXuPj-XB1@H}F{{4B1u3s6uPJY^eg84#3FRr}lyZiVuU~myc|kd>9C>)xl|C0u
55274 zqrIY+MEgYhM+Zf(hz^Nf%W7%lf})p4uZ&(D9jd&mysw;(-VnVhIwD#Yy*PSlv~P64
55278 z@;v+TBfH4^WJLBIl0*JL-X*^w1*Dx`CEp-@#G5Xbts`&C-k@t_t7#|uca9FyDRM#f
55279 z2FsO0<@8w^L=&inevdAuKcu!VT|2K9Q#mP+eMh#=;}MTAkIf!IvM-p1apY_iH?#M~
55280 z-toOtduR6E+dG#`lf9CcB>N=$CkG|3NDfI}o4h`GW3oIsDp{2rpPZDOo}80hn5;`S
55281 zCs!voB-@iak`E;xN$yQPnS46=Z1O<z#bhD*Qu1i>_2iq$6Uo!bca!fY&!@;z7N;yt
55282 z@l6RxS)Q^oWpzqu%7&CpDG@1(l-QJnl;jjmN?uBFiXp|4Qk&A4(vspxIh=Ad<#<Y8
55284 zGF6$XPEAZrP0dQxrk19fQmv`B)TY$7)b7-t)MKe9QctD!r=Cx}kUE??l6oceTI!9|
55285 z@zkl*nbdo!b7?fqD{V=dPnv&PP}+*LkhHaF>(e%-$<w0JRB7>PNonb6IcbGyx-@fI
55286 zby`E3J*^|{P}-5S-n5fxr_;`+4WwO66VfiFjiy~syO}nTHl21i?S9&Px-5Nh`qFgY
55287 z^nmo`=_}J$r-!C*NZ*tmk*-LOO;1QqPS>R8r5C3g(k<z=>5b_v>5lZn=||I#r}w3w
55292 z>6;mlxjb`a=IYGQ%ng~FG9xk-nX#D(naP=&%)HFvOhcw6vo^CavnA7!c{uZE=JCwF
55296 zIoXBTx@>cHb#_CxJ-Z|OQ1+4R-t3dvr?byy4`g4=7P2p8k7i%bzL`CdJ)M0w`+oL(
55297 zjx1+!&e9y;oPeC=IV*Ek=Y-~L$k~(=k)z0o%}K~f&e7!L<rL=_ax6KuIgL3jIgXse
55299 z>vF?#!*e5ZmAUHN#N5=}tXyqwX|5^Pnrq8#%5BT-&h5!PmU|-iRBnIn`P>V+!?`25
55300 zS8}iA-pC!#oywiby_Y+eNAtY$mgM>5`R4`Yt;h?>Tbs8&Z)2W3FDg%!7oV4um!6lC
55301 zSD2^EGv`(3HRRdzI`R(X9m(s>JDGPn?`+;c-o-p2?^51q-u1kjc@ufl965c6oB8_p
55302 zGw*KR{k-{nS^nburTM=30r|`GSLUzI56$0@zbQW=Uy&c1pOBxNugTBLFU~jQTk>o3
55304 z!P-^YHQIIBFm1RtQmfRewTaqPZI)K6E!CQ|R;^9jq;1o7YkRcEv?sKuwEf!i+6&rY
55305 z?TGe@_L}yFc3eB9ozdRY&K1xCuYx57J_Y^-K?N%cLJHOvtS{JDATNk2P!+@%Bo(9=
55307 zg|foMg-Z*43j+$57p^Q^T^L%pp>R`SM4_TEwlJYExlmJ>S6EzVD6|yT7B&{P6gmnI
55308 z7alD<&XH4RxS6kiKMVT`&lH|394s6vlnO5wUM(Ceyj?h1c&Bi-@Iet*<XPlhw5-Ul
55310 z=zP(IqT!;EqANw$if$B*7flt-6x}PDE2hO>#Y>8Piv5d&idPhe6t68_U%atcUK~}d
55312 z>EgS^_lxICWF?DBmX`RI1e7c<Sy{5WB(!8h$)=Ks5=BXDNkU0-iKZm4q`1UTVkxOD
55313 zX)I|eag-b`Ia+eOq_5;m$+?ojlA#i*<Z{W?lChH8C6gt0N@hzQlyaq>rQW5>O8rU$
55314 zOM^>Sm98mWR~l9tUK&}dELE2#mZox~Z-krq`uDRmt5jQBT52k_mfA|2O4~}iOM6O>
55316 z+gK(qiz-u<#g`?OrI+QD6_)AB%w^SO4Q2MSj<Q2#N6LE3PL`c6J6kqTcCkz-yHqw>
55318 zokdrxYt*&q9J<50qq^g|KHVAJIo+UcNGIto>#pj?bhmYrx;wgA-2*+R_tbmqm+AfV
55324 zQ<y2-6lqeL)TTsJswvB)HI<r7CacM2YBIH%x=lT%W2O_PQ>K2?dD8{cuxZ3}#dOVd
55325 z!!&N1GR>IondZuAxmWp;a-VYl@}Tk+<ss#3%h#80ESHx@m8;6*%ah8}%X7*L%XQ`E
55326 z^6K)2a(j74`JwV7<-O%6%TJe|EgvYqST2-bDj(&@PdIMo>)+4v>*Y7gC(5VG@0Q;$
55328 zH6J(kna`NdnFq~7X32cneAPT=zHOc~-!adcA5?G^o)z8|%PRaT0xN<mR#mL2SXU8N
55329 z5nd5lp{!6>BvzzWWL0P@N-Ini)(TriQ$<@vcSTRdv5FHFrz-j@&R1Nh7_JzpxKeSg
55330 z;zq@I#Z<*i#l4C-3$=JzmRNi&{+1xi3QLG(t!2GsqeX6svZyTamLyBMCC5@|(OJxv
55332 zTwb}da&={B<%Y^ll@XPS%Gk<;%H&E-WnN`*rJ>SNSzFmy*}{<@`*Sm2|9)0FDi2p4
55334 z)^Ka2RcTdQ6RoM%EUVU9YBgD{R-3iS+Gg#x_E?WuPgqY``>p4#7p%k95$hG}HR}!Q
55336 zs~W28RUK7_s*Y6kR-LRmU3Io<pz30kP<5$lwCZ}*&8ms2>8iU`_p9csWz~zTmsa~$
55338 z^||W7>Y-|>`f~Nv>aptE)sxkCs%NVo)NnPPHQqJLYW!*fYl3T5)vT#mR})qfUK7cY
55340 zuGCzsxluD-GgUKFbFXHumezXJE~)jY^{)-8T~QlSyS8?H?Z#SpZB(tQHoi8gHoZ2d
55344 zvxVCtZAzQkmS{`0W!bd0Qk%(Uwb^V<wl-V0t;crEcEWbb)^9s+yI>o(jo7Z(uGwzb
55345 z#%)u!8QVSETs`H;zbLtxuYW)5z3P|L`_%i_2i32r52;^UzrKEBy}UlEUR57opH!b-
55347 zH^>?mH!N-NZ3t*s-mtP^bwg;whK5ZI5e<rl*oK6L<OWScUPEz%p~2En+tAq1(%@(~
55348 z+;Ftvctc;qnTB%>gAGFsQp4qjs|{lfw;LuK?ljCcJlMzW^W5jXZ`nS-eS!Oe_pREu
55349 zX5YGfVf(`OMebAXQ}0XMm%1-&pLSpAKGQzyKHI*geQo=?_x0>Mw(rEgQ~Ub&o!@t1
55350 z-|)VXeOLBf+jnE%_`a!qGyCrCn`@+vUX4o{eH#56gBn*fhBU5iT;I5{QQjEUsA`OF
55352 zz42z_MB{Yh-NyTk^ZRA{7w=!X-*<n&{^k2u?q9t>bpM9^oAyWSSL~17pRhl9zh-~l
55353 z{^I?H{g(Z;`y2PS?04)xy#MI_<NN#epV@zI|KR?i{nGx+`>*aF+kboi<o-MRXZJs7
55355 zo~C0>Cz?(*^*5bwy3jP-G}3gX=~~l`rtzk!rkSRDO>+n60j~o~4)`4KKM-_a#et9m
55356 zYY(hHu<?NWK-2-%f%pSS2htDZ94I`XJ77LgeW2lh{XoZoLkEr==sj@q!07{L4-6c*
55357 zctALC>A>iL>j!Qgm^d(f;O>F@2j=ZE`(pc2yRSXKzTCdjzS<sY-(cTlkFYE3vGxRe
55359 zN&6l9to=bV*X-Hs-Mp;XuQ{+exOr9cn&x%QVa?&qk<H3xb#r2KYI9bzwz;&~)NF0G
55361 zf?8IzgtV+}S>Lj;McxwCqH2k6Noq-N$!RHU(Y2Ucs#_Xb>@6KFhgy!b^tPOAIo)!$
55363 zY->Vma;v5_ueG?<&}wO|ZEb9AX?3(7Zavz1ytS|OOzXMU!PcQxsr7Q})z-1r+pUwW
55365 zZKZ9dHfx)$t*Nc8t-GzK?O5B1wo`5WZRguAv<<h7v|VYt)^?+9yltv&rtMzaTsv*|
55366 zYG2as)9&9M)V`uUq<wAs`u2_O^7g29ReOAUQhR!PPJ3ayuHD>T-QLh{Z|`V7)PAJB
55374 zyRLSPb=~fo?7Gu6+x4KE>-OyS?q1gI*B#g$+`X!MP4~L)u<r2g$Zln~x;wEuwL7a@
55375 z+g;ji>b7><x|_P&y1To3x{r0A=swlm-+jLOLicd@NcWZQYuz`x$GfMxXS(lo&mE)(
55376 zy$&up=yTBjV9>!82SX07J-Ghh#)I;MQ3q8A;}0esOh1@&u<)Snp!s0+!G?qOgB=GC
55377 z9XxWd*Y&%OAFOj7hw%8nS73Um>-fiH*YVeP@Hp=}zF&y>mtuZ@%pc{JpFGln`Kasq
55378 z+ea|pM!Y`dR*r1Mzoq+#4%3xb-&ssIyRNT~V0o<nkKvep$#on)is=zpz6HxCV7?3P
55381 zUH#%l8t~ZdI=<)nomlSoQ<y&;^B;H1PrN2D-<az<80TyHFkatqD@Wc)!g3>+eiG|b
55382 zV)_-V5Az2PVm`F9-=9GHp2YNHSRTj2>on#&>|SmJ=fMl@^Y;#{AIE391Mm0Y{g$uX
55386 z%##=9)47+Euzz0I-nBxkAMN8a<eeA(4*9j5uiSU73-Wr8>$qs4UL2>-7W$9t?OM2d
55388 zuH%PjZx_9>9pr#`7LRB@?;y87#P#*=UCf{CmY*y_o_vVU^&HyMXR&y_(XAYL-4Dwl
55389 zpFTtGh&WD*aK1lG#PVpTpCRWzOv3({Fg+2=<N8>Xiusi8<wRVUi?IJ6M!K$-<NE##
55390 zIlKt#|1kV3_i;ULFk`-0tQW`kGt9pT{ndv7?&YvuvK%?FL5)YWgD70ri!gmTUT-MI
55392 z7x*%D-Yq}z#PxeM5Bq`Tr|`L#7rK=r-$ibCj$%6c0|EV^C-UoRD3-^5O`XAXjDz06
55394 z>FBS1ch9{Xwo9J9f%RZq@m-7;A~D^w5A$8c`wP!+aBKJBeSBW>EI!|NH{mso^LNpH
55395 zBGJDM;`%<n3HynDZLkO1K|T*-959T}@iwm0-{CqK#Oo<vxBSEt<Eh`tu^(t}Q;YHX
55396 zh+8?b9^)s^5KPB7br|i(6S?-gC0HKqati0=cNpIeqF<O=hUJl$o_POv)V<s=^2Zae
55397 zN0H0V;yRf^f98qY9KGj$|5J?j)}x>I#QKL9?jy%Nv0tN?-OG6{JP#h%FU6y4{K?jZ
55398 z^&rE1=wH_3IDLA>t=)(B@p;L!3*(D^{8@~r*1P;FiNJL>fb)C~{n;oU2gb1-j3XD~
55399 z&i8RXe}U<v*q;Fj^Ow5iCmuN8qu7riT<@P^JQH-utsHp`<0lUrrlbFTAGzw`ip#iv
55401 zU$6OKKJ-&V82^8Y{>lUW)xV!~FXyo^9=PvXhdg@?{r?u^tp~>2L1=fcEyj9QyS4l9
55402 zK0YrA!tq;&b{>TNc@6Dv3$B~D(Vw4{V?WWay^Zrcc^jV#*ZmOgN8ehQ7mUB&#`-2N
55404 zwA1&H$1?OISI)YZdk^^|Lwmh~arrZ7&y(oSWCM8r<X7%v{jc7|eCUVXLwlJ-JC~uq
55407 z>-Cw{Zso|UI36;5|1pX8FXHpaFi!a`#_`V}-zS%2I?m5I?AIjP??qf+GC$1M=3ee1
55408 zt{)lN{cmx61JS-G7wp>y@7um|-?bh{C~`xF>-Hk9mq}cQGW1u!O?EGb?UF!@GeXhc
55409 zLS6PvzK`}I^TvF*F9=0@{$#?f-G}$_c}XC~KcN^;1fm^=N?1So`?qj@&$!}g?lStd
55410 zw{RVNg8TG$(O%xg`15DD&$*28<69VyeA3{SpYRw@UB);l5bfg=jKc$y-O7<rjGuTr
55411 zrXz>m#qs19+C}>aM0@=N{n=%VZ{Nar@e_Q`3pidp#^aas+{;}+{_wb-FT4B#c^dik
55412 z3Hmc$i}#biav$yZ6<h~A?u#y<eSU)RG>`u3@_P4j*e-b*Ir&N>9x>kh9>y#DLcef-
55413 z@Cv?H{3P71-G}$_dCAl0|6V~mc^b##l@nM$&f{6M-_yv8-=JSRi~H;e<i$J4<#&+x
55414 z|Aza>-?-k}a6d=CJ#pJDKcP5Yzrp!_8pnSE`}cH<TRHLya)M&~GJ)~UJ80h&+xd+O
55416 z9rNM%zJvRn37j8_{^~c&+{<CRBmm>fwaELm_?~4W#s_o&^PzpLMSGt(;@0lN`}n-%
55418 z`3XgyT*7^D0Q#K?+)o7zx|JhqF@B=>K4b#p+d;ff@%j?lO#rUH2^{xJ829`P{qzL-
55419 zmqC1f8ie@*-OCLke<-G3Le2&tza|#!6yvK)%f50S<Mo%30~F``m*`I>aQ{ltU;TR8
55422 zy5m-ktU->Eh4!(X0ptn6`hSi4uBULkKSn?DYvkP-d=L0BKHmUxoS;7$x$j<X0Qp1E
55424 zWCN~$qQ!i;KUjn7@8fv4b|2oy=Os^}J*~n0<x|++8uT;xo{Bq-^K%mSXCvs>PGfxk
55428 zCFIrk8Mk&H-pA)9{unpBgzMBF=jSEl$9i06|BCVV3G@rULeBjwets~H_I)1h@H}$l
55431 z@@X7-&7r@N%<ko|UGgOEBVNS*zKHwuh4%y;z88HG_XjWHdKq8h*6zdm_`KvvwBHwz
55432 zYfs|yzKHS4I$R$=MgM;s-%pFUE`N$~^hapt=kUGCIgIaqjB%%k=|4p~_~?{-{x23j
55435 zyOmpL*Y(}Z&U!Fz48eJO758^vU_9uDel=v_IrH4wUAVvSyu=Ur8-nrcleoS@@N?%^
55436 zaXr6@^VN&%P(Z)-CcdZt2%q;Y9Iv-<yncl9F5vt4H*vf^TI`<x3-k{H&c7ed>ut14
55437 zzf*4INC?jF{4Azp`L{6co5%Gapda-^|NRlZ9~Q9PH*p<)g#PL+tY;p_Pe^qy_ZH@x
55438 zM>`hqJ)a-)<u>}kdHh^OP=Dn<#v3o-{$U>9gPq0kyp0^0M}H-(b}P5gF7d;-@&$~i
55443 z@AJW!51)S(^6>U@w{{oqFFY@K0^`e77*{-j<Gl)h&*EjA=Mz}&D864DUPwp(eGAu1
55444 zKR#zauIGQo{te^%{1doexpmP!|K~Vg!`L5Rw7*;E-=0|FR*tMfzxz49XSs!T-;Z|n
55445 zIr4uP;~-yLcegNZ7{+n=F>>n`w%?C&%jb=l&&R!7Kl0~u^drOQkA3lZZ{hKC+>Z}?
55446 zedRvBPkbKz$>%tZKSQqELVNri{nh)o-O4SrOMKC9Jdfk`JibqQ37_+GTvxuhKX@Mf
55447 z(k-i7y9@Uho|pJy{m<k6(ii>P^H|SIxW11gZ;#;T`tPG(JC5%MZ{d4|pW%4@4DIKK
55448 zIF9e*I3Hi=SD<_T&ygqZqn-NV`n!euWZ#W$<;Y6h2hJg%ZsGi%K|A^!`96gEZC`Bf
55449 z*23p2Snfwy&n>jCGicXyxc?Zs<6iCz@@Ectg}+}#9>?oj=m+O;-!*jmEBDbKuf%mV
55450 zhw<4N9N$~m?>Y2WLj!K*7TP6`V;r>-`Lq&wu^QvtIsE+hag29Y;=b_ab+>jG?k_wq
55453 zK^oyGc^-Pkj${Om{vO-mI7pv?<GawS@3Vi-XWh)X_9k1{Kd0?(<y?CbXPFrGPsveM
55454 z@AsL02zm|lDl6+u35S$$NZAZ2n;~U0q{tyf4k>a-*#aqBAY}`rL_kUeq(nf<R!G?j
55455 zDO({W3R0pVB??luL&|nY*$yc&kP-taF_5B!6eXlEE73b66`s3AI>?*OGx9hap&U3{
55456 zPM-5{`Zu2Lq8SwCn17$+^+)uV^kW>=N9orxRe&l%RZfL((UXx!AC{MKYW^ylhij~C
55458 zt`+(;7f9YEpSUcEUxKslv=UFf&9K&R*|5oQ(-_9d*imUnGURbG<2pm3!D3*MiNU$L
55459 zDCPKXv7;wFOMgi}rGN2w#^ZVCH5-8t@+M3B3tY>%>&(8tAdj)Sx(&UCGX@wj@*e*v
55464 zOpWEe<*BA%&a?b%d6;Qc`PK4R(?)hRS-#pNH+z-KO$n@AYQ+Y#f4RbxY#d?bLdut!
55465 zG-gHlN|T9QC6~)gR<pI--_*gb+D!LMhs>wTy-jQnZ)ASjz!+yd41If?tR^p!HLQ=!
55468 zwETUxHaYkv!9{F!DY?a*ii_jE;jzmjk$co5!y|)x4Dvk<-%uIEJq!JGMvvDy=ihC)
55469 z#eOLF1^aRK@SCi4E$j6U;3>f->8$KOJ)ZY)#!)`p67ErMDd*1xaLc)1?mOIz+-mN1
55472 zwt{wmz6m-2ItV)IRQe1k)W+6`Q+I)8fR=zl4fHJNFF`*A{fkpQpazfUoyu01^VukS
55474 z{t0vjbQbhKK<|P6C+L09DbUYAr$PS+`e)F)pnq|yEFClhR0Em`ngyB-ngf~(ng^N>
55475 zHGB>_5Bde9^PtdYnFpvR=pxATSI`Hbe*>L^yBsJ1rJxC*yFn8{_kbpW?gdQ-O#w{>
55476 zO>?dx#x1sP*a}(gd|&Q-W6sto^YPB_Q)RlGf6f(Uur=&toQoKFBp=Dv;bI#ZWpsP#
55480 zo!vdbYSkJH%r6d@!c8huvS|tQgSErzOE4y~yBpa3YF0wda-A?Z%GZ@gmM0n~oc%D)
55482 z6NDSPo#l+ZMwU;1)40;O&Ux2aLO-Ivsy}52Fv^Xw##CdWvmZu_(fL-v2j<Z=i_Wp$
55486 z2X=A5t|h>$M}b$)ok<XjKwc)hNDj2!NZLssd7E5d5z~9lZ+0Yqpo?h`eU`4F-=lK)
55487 zc19cRq(5|hm!s?p59eRLTLOggU_E-A`Ap|3qt1S@^GX)iyL>5i`BK)q3@3dl+bys@
55491 zPQv^{-5%Q^R{VRq{nyj}fA=o%AF%QNU-`c;?epK3|1UfJzqe7sJ@Y^6|9{tmXTLJD
55492 zTBzX%|Fb$+B<8ARInJ*8NVw+no&RxfHtMK8$Y3&tlzWv66^kosEp3%Sm3fteRv%rg
55493 z?t=c3p~tkme7(85BEllGT+{jLa@c-q#(2b}GAElaS6r|}>8|NF7%muN%X7*f=w|e4
55495 z+bd+2WtL->>B>!&_sT|f;d+%J(AaA_Z}u|_6%CfevO{H4tc6nM#jcd!G{;tiSB&Tq
55496 zbpvc4H)@(Hx9CcBR}EQ)2j%|dr*xc-QPt37;>!BUF0g)w=$Go(=+Ek}85Ks8X|;)Y
55497 zd+tf#%_8n&_T$A(vY&5p_c-TYmisF=$B5uXyqM2_lswAV<BaCLi4XB%`xk%W&nWd2
55498 zd5T*~UMH`!-GP%Pj{r?PfhON1cgbD0i*<73QDDb6Xg}>|DNce=APD7O<6q-s9{wKw
55500 zMXFI(tO9+az_ta7I{U}sS;}ho5>e@wh)TaiR0`jT?<6Y!HSeV#%n?sMA|J6F-=p7S
55502 zrUkTs-L0S&rdC?TQtZ^u&i{%26PwxRSR_dK@9^JYQQ<0n6+3^KUkiQu^2{!Be)sX0
55503 zqDtq;WfB%6v)yqvvoO~v7LWq;U9vBYAHgwmjh1Uv-lT83jm>}g#97u4U+7IJAIkRa
55504 z>-cqS-|;&CI<vfmF?0P*mgU@M?8lQ)(vR~Z!G!Iu882UE?d>AFSPycXZ)%`V-(Y^e
55506 z7jrVk+#qfd<L<MZH)HP_mi}LJ<-s`2B6h}N4a;exHnxU3X(!A7L;6E@evY1FPdG@O
55507 zzI)2~JAkq;WM8o72?AOZ?v1Z-Qq7{HFH?8H0}5<BC)jA#e8p$~Lw5eX-{wPQD`c-S
55508 zI?FtkxqP_C>ufYv07+cyggX1-d<zKlU_P0Rh;!yC%shqJ{zoy2E9yDy{QV`?+mjdp
55509 z5!UOo?y(Ew{yVsqD8?~P>!AOy(Tvk-Trm_yd%5L&=f-^gB-#$eSSQdU5Th#UihEq7
55510 z@`z;-fs8w5I$}Cw8a7=w-6^N#zU8aRH<rhiXO)}FTgs1>pDmZlZ<OCPdz$^ttIgr&
55511 zcypfFYVI%}H=j3OGT%1eV}2*FVr@l4MPfx^MQufQ#mS1niYpZp6%R};mL-<umUWgW
55513 zSyr>P#d^$o)+$+VSnpPOR{2-0t_rV;uga^kR&`VzuR33Ksp@vsz3Ro)fz@lPBdQat
55515 zz1C3MRC}cMOzm*(_1Zgiw9dC~Ro%wA*t)Dbb6rc_vAVN$Qr(TZyEadoziqWG+!k-k
55517 zT^``42>7YRU-DCrf~9=}82C*RK%REJUuElgC0WVxI6aq_Gg@b5i%1c(939bd-y#NL
55521 z&~VVrpmNYHpj$zsK(~V`KzD$uKx05-LDir;LE}MpfhK_N22BJ_0^JLm44ML(3YrI+
55523 z0eu(rJ<#_-1<(=DOQ55mAA(*3y$<@nLB~M<59l92Z-I`3egZlLIt@AlIt%(Ap!Y!k
55524 z6ZAglUqSx{ItThW=oe0<94G;$px*%fCg>8-M?t|F>9;_afj$Q60}573!AdDuDFrK~
55528 zDJWPG{R|XriT)Av4(Oji!Mf<5LGOY-a4HXW!UL&z4^U6gMW9}wKrntWC|DHl4GMO}
55531 z0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p
55533 zvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?
55534 zJ`2ES0r)Hcp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc
55536 z06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ
55538 zSpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?J`2ES0r)Hc
55539 zp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ
55541 z0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu
55542 z0`OS?J`2ES0r)Hcp9SEv0DKmJ&jRpS06q)AXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNo
55543 zECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS
55544 z&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q
55545 z_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^
55546 zfzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-
55547 z5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP
55548 z7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$v
55549 zXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gt
55550 zd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_d
55551 zz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa
55552 z2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>t
55553 zi@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_T
55554 zvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|I_$&dRCE&9Je3pRE67X39
55555 zK1;x73HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-
55557 z0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dR
55559 zSpq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x73HU4l
55560 zpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^
55562 z0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE
55563 z67X39K1;x73HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~g
55564 zECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x73HU4lpC#b41bmi&
55565 z&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd
55569 z_nhZ>&Z(+*6@~Yl`|z2A&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6
55570 znS;+9eCFUY2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-M
55572 zpE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9
55573 zeCFUY2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd
55575 z!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY
55576 z2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p
55578 zbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k
55579 z%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^B
55592 zd=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7
55594 zz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@xS%A+1d=}ud
55595 z0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*
55596 z0(=(WvjCq3_$<I@0X_@xS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI
55597 z3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@xS%A+1d=}ud0G|c;
55598 zEWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(W
55599 zvjCq3_$<I@0X_@xS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh
55601 zJ`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3
55613 z!e<dai||>3&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|
55614 z1fM1NEWu|9K1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-
55616 zOYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1N
55617 zEWu|9K1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326
55619 z&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9
55620 zK1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d
55622 z;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xf
55623 zg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^
55624 z2|i2kS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%
55625 zW%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5
55626 zmf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMK
55627 zS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^
55628 zXBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^Du
55629 zpJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lt
55630 ze3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r
55631 z@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g
55632 z!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}
55633 z44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>
55634 zGJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j
55635 z%kWu&&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5
55636 ztiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@J
55637 zvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?
55638 z&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdl
55639 zJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L
55640 z_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52
55641 z;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9
55642 zfzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ
55643 z1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs
55644 z75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwj
55645 zR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeA
55657 z&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifju
55658 zK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v
55659 z_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz
55660 z;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<
55661 zgU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa
55662 z4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;Ijsw
55663 zHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#
55664 z*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|
55665 zS%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-
55667 zpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%=R$
55679 z;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1a
55680 zfX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u
55681 z13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr
55682 z4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@be
55683 zHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@
55684 z*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%p
55685 zX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@X
55686 zpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xm
55687 zd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP
55688 z@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnI
55689 zz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13r_v<DXgAQ!&rh
55691 znv65CCgV)3$xI8=LaOHZSd(!k)?}Q6HJKS^hRL?S$^52c?(D$-8*`o9zroya%$|Lj
55695 z&Hq<bV9kHgIeUg;ob#LgTh_ex%gUscj-;fYPFjttv8*R^^X%J6Nt=>>p4{J>w9Ucb
55697 zm?hTPq<@-O#r!Pu^UP-E7wj`j{}QvE`8u<M`DJDo^Gzm$+0E=>zQcT%$z*<o*~k1U
55700 z$V@SR$~<EJ1M_Fhe`KC9f5}WUFPYcO-!N~Ozh&Msf5*II{+{{I%m?PbF#o`khn_(H
55702 zvfpBNv)^X-uzT6>vcJOqfIZBXvp&|(*0T+4BO73w*k(4&#@T*$kR4`^vm@*%dxHHJ
55704 zFWJ9hr`f+|U$Xx<`-=Tf>}&RK*coDvX^xXv^9eC#39;o<V#;UswNBELekyrm^3Nr2
55705 zO8)ue&B?!zye0V;lYcpRXYx0acO`!_IV1U7$-9%^CcjJm`{eh|Wan3$%bowoxyJcV
55706 zod49h&iOw&*E@g4xxx9f&W+BWb8d2ObMA6})0yG?mUFlB+s-}C?>P55zw0!w-S?V2
55709 zrA#Sl$Gi>zi*xQLQC9;<vd+sLVnXKUT_!@_4SJX!vTc-!lD>MGUUJ_&FaPZMx}A8h
55711 z9$Dx2ncpY9OfVB<t3P1=z_En6%3LK|{cGl5ldWdY1b&^o7k!E=0VG-Hs5j3}&zM(R
55712 zF|TCE{5vu?-<MLXs{;Hnd3XBMx;B8whz{$T5X=MSfg_E)YfX{%|CISt^Aj-hXJnmc
55713 z%rlbwCG(ef?|MN-^^$pMe)eTvo1c1_zcoMIGXI&3@E@3eaHN`-UT}QErm!jG9V3-Z
55715 zf64sx$$pcx`7QQar2TKR-zN9X>lP%DXZ>DB3VG&}$K878{8jSKIeT4+Wb$hG0jZkr
55716 znV*pN%)<^R-ZN9!Y&M%zf1UkxvX%MHIeX=UB=(0ad2X<|Y%Zzhv-xDJLbi~s?_ynK
55717 zP4l`4No)yQLe?o|OUXK3)=NfP$ySmztI0cU8e7ZOlKbS<N7`&)8_Z9)<h?hAZDYx2
55723 zp7eEc-@L*GgDY&zo~b^`$v7EDirJ9kQ)10>hm(BnAkR8e9P3IINkpCX<|k3-29j@d
55727 zQ>`VTH3l~arrFxuQp)VLcd=w%KbBrfww9Bz%-Y+1&1!G1)vsCWe}bi7v6fP-CC0JD
55728 z?(NqW^nDmVldv{RwUlhNJf9_5J+WAyHLq;EAWO!zIFqeylBrhaMo*7$-+~eDv-h1|
55729 zVi#HZ)dkzlEq!&t(rhdL9OFu|9sx6Nw2%AT_?&jj$=0@M_L2DknJ=}M%xlblW-sNF
55734 zDs{hRJ&)#kA-{JzYVZtnT9V9WwTrA*yU2RJMb`5zvfg5S)Ge}Y-6HGx7g^80$a?jQ
55736 zwLN=$Sn@LotvRh*3f7%F_OtbxAF+Mymu&C*lI?w8vV9G;{bKdHFKNH-OWOB;$@cy)
55738 zp1a4ax9_bW_m1G+Keq3Eh1~m|oz33+7Njwsng40Qw)0iovwSe`{k47XFYJ4NGq-K>
55742 z(FLs^U9hL~`(_@!?=LvA-(PTKzrWzf<}Nt0xeMC-Cbi$zlJ)$sT1ol_y@cMsx1jg$
55743 zE$IDw3wr<Fg2(lH3m#YVQ-^uHlBnKik6@B@Y#jKkV;<oo>-bQKb&RNldVVmta{TP)
55745 z+~)e5&spm;c9PvL<M7yf;argCENCZr(GjMg@7a{a@tfNtc0t8Mjo-PTGT+PWaY(jD
55748 zS_?-t`*@{%Vf1F7PK<7T-Py<GCtEk^OV|B`8pG`4@RP1RH|Edpo0I%ZS+wospSbP0
55749 zef-JVPWsZd7e4+eWa}R_4ksSv)CK!FcU*pw_Gh0LKdybx7amRLk6k}!kt3Oc-(eRY
55755 z-ASR9&5oJ=_G@m;OYJd#!yfZed(7Xk$Gp_;;~Vyv7iKAoWKJq`S=o|B)?=uw(8^}V
55756 z{E0p03_D9-kg?Qy?gd%;f-IR@uV_J*z99RATJQS{vh)R6>LTl<F0x+ABI~6rvYwM#
55758 zFiTk^b5fbh%9bp$-t732?D1vU<4dx~mt~JH$sS*pJ-#Hny)1it3$v6(GAEU}tZd05
55760 z?3m}j!{2L<`7?XWd+jlQW{-KVJ?78sKK9yUUYMmUk~yi&Wo1hiS&yNzLMxjcbE-Y&
55762 zF=yIiUS^Lu(;o9OyN^tJ%nP%WMKULqxvXr-BI_|!R%m6jW1jy@&3ElFFSp11U3<*S
55764 z$(&T?a?n06T#uo$g%;2MWo?f==C9ae-eZsXEB2W8*kk^R-Nzn#%nP%WMKULqxvXr-
55765 zBI_|!R%m6jW1jyD-M8&Ar`covwms%Fd(7Xq$DC&O@ojs|3$v6(GAEU}tZd05>oHVT
55771 z-%7?#<egZ1!u;mC*Gdv6vQ8`=eM6SQRuVa}YxMo-Q?k@)C4mzgM_-J}WU0kUyeC$S
55772 zJ{Y}4mO8AY-~>B*XY>+T3R+3_=<Csm(J`{rY9;$eACoc1$Woh?WQ_7;Ujk$)ZY5hs
55774 zl9^E#X)BE^^;yaD(L<xlN8XX8kd;i0?jHF#@|-O7Scy2gdF17YPL`q$^Dp4cNY?18
55775 zk*Se;Ba@`wY-PJglSl53TphVgvVJSuI`VpCV&v?|7|D9AY~9GCkuxI$BT<rttt_3i
55778 zxJt4vD?2f=;`oE(caGm8S+|u%Nn4Z0uN)sIS-X`rleR7&KYjcp$zoRKC2frzj~$PY
55781 zWB55q`>izl_`%_q$5#(O8op1ZyN@Ri-yOa>ylnU~m2Mn<HGE}weE7`pDJoq#{BU?|
55782 zI5PBfI6=~0D|HON89p&QIov($pHGLThc6A+4Cf798$L><`tZr&W5e0Q`-k^Z>7C*5
55783 zaOUvlq4@All7_AH^6=^5-NWADEyJs+^wjVXGLGb-f}xL88X4X*>==4K^lIn@mHLM_
55785 zL-NqbP%tqy6eVekm8K2792yw9G1NBXolg^QhRzR_4joBc9y&y&kB1UNhljF;_6+T!
55787 zP-)xHy2R7O{lw<P1Cj=<v~*~9;?YoAf=}F_(!+^2iED}TgC7%Ts5B$-IB_;HmPjOG
55788 zRJu8FFA-1p2h~J~q^(xEBJnKIotQ{8B;4~UY43ERAaQW;LSjFazDPt92NIcyor!H!
55790 zN~4KYgHwZ(gX;%HlE$snm)J3=C)mL|gA-JmGx&1w^5E%#w}U6Cbl>2E!Bc}HgVDh-
55792 z4sN2-r-S8#n+MYe{DW&r+GVBuVE5pL!R)~mgDjO^8{9qcap2{^{(<LIdUkN*z>9&W
55796 z(m&NN_TQt@v4Pb7`~4IB>HW7z+GnNR0~`A9^w0EP?LSAQHT{qJ&-4$(pZ7<p^jQDh
55797 z{#bvcKhW=^(gXch`u+Vm@f-c6Bn?^V_I|#<s(-9MuRn`Q*YtPy@9*CcPxNo4(iGC)
55798 zw*JliYx`Htr}4L>zt#P0+}*#7q&-&pq`#qmMSo_0a(sqL@Aq$szluMK?~Fg7(yRR|
55801 ziLa+}@*yL>J?@IHkFSX@r}AL@02y;~-@Cr-z8NZa$G7#(^u6rM=zG#PW#!~kc3)QC
55803 zI5riV>I=^2vDbameeu5QeZjtlzH%ym*mt(i-Iv#QI5yswMdi2qVq{GFVk3RK`nFp+
55806 znGzd|-HXLzetb@}$JzTP_O$m#?~T}%m_Ozs>xZrUQS4MKCw3r~*?TT_h|2H8!m-TQ
55808 z&R$RNOl)26)86~|>^eWr>{v!`dT)9xwfBDSb+Ue^m1p$6?w#m8+dCG0-+O_|*Y`f`
55809 z9qWxnpGKedMyNckccyow_jYfjx2@MVpGRkUFZOy#@5iDOz1dVg)jQmq-Fq-P*1NYi
55811 zWKW_Q<Tgd+<-J+a>E2b*si+>kN9Bim9ns0?&FGbAT6CPscST=B$D`+aW}>IaN8}Xi
55813 zG%LERXQXE&x}D1JlJ+yBzUcPomgqVvzZ^XlT^(H!P3>_<St>sn-5X_lKJ;YuyzZH{
55815 zc|x+`?&<F7o;a0n=y~5W)^o2X-qYRFOyx^^uJrhOs(M`AH+pjB^X@l2r+RXFj&z^v
55817 zQmA~aXBWv{bZ3&=Q!0=2WOvW>tm}T-{is`}a&J#+_x<iW-PgO*yC<kTyZd$bME9kx
55818 z_uXf^$E@5OXGZsU_rvb7?g)NAn;++<?wPLpUH7|hcSpL-=YN}(FYmtC?d?9+o!vFj
55819 zT`-?_z3Uz(eeCTT>l*9Mpz<fA{jBb0($9|WO;mob+tt0kdrkN9E^l`lm0#&T(4E$u
55824 zxf)?37bEAa+#KhT$VB8x<Xj|<->v7znHhQCsdlQ7dy#m=eExS?`R2%#h(F?r<aFMM
55825 zlu~(m<WwXla-j2E=ebDceBSw<w4WUbllFE;wo&=hNI7Y1Lu6H_Kax)6_alc%TT450
55828 z6Q1Zi)|qYP<~Wykx;uwEvpX~J9fUp3@W;;aFgXmJ&7B#Y=JUVZ%Aa?-I@gn}(!$=(
55829 zl~gWv9w6Dfa5lNkQ28~|KHIr1JQIEyenRDEI#-3K!g}~#czt-1%A=i*@MQRAI4yi7
55830 zJZ|M=oZ*`Ajqr=`cz6Wgi_DKRuaoVV>X-`4;gPWU{Eu1rzVP*MFkBvXcT9$BsC-NK
55833 zWEVSFayv)m{&0H7M8}hka~-EUhN(QK;~v?jyQ4XzcKE40v*SvKzoRO2qr=saW98;J
55835 za(hqZGHE}pV^`>X=uPMam0#~z7kV0c6p}-mL-(otY)5M7e&|jpJ#;-ZVdZ3;p;%}#
55836 z^g1*V8pC&5_Bca<j<oit?N37wLt`QH`QKyZ1)<xaNXQrRw%-p0sC<9uV#pgh);`fb
55837 z5z40Wt)zW-XgHJ|IvCnZ<tszYp^VUu(5CiCX#ITN{xReVtq-kf_lA~-(yW|}v;BE!
55838 zb?87St$haHv)SWp*F*01jP{Jsw)UBJ^Z9T6KGJ?Ow5olo{a*WI`}%f~%Fl-!B)ig{
55839 zMsDL&J`h^nexv<G`*{2L_ES{e&@Q)+v=6k0+osxsRG!y<y*=38&^Fm#-tM+?bDaCy
55840 z{q1Ml-R)WU?r(OSsSc*?25CK~J=UJpzN>AdeGh4)*{YmvuW8@bzP7EoeHEEDP?czV
55841 zw0$F{Bke2Oms6Fh_Nw-!?HO$!+TOP9Yn!Gj+3oAvp0+(|liTjMZEkx&Rd%(fwB2i)
55842 zY`fOBoZPNZm9=dz+b*|VY<=5ynoK9DN^+apcA_oO`l$6$TcoYcs-!sB*6Fr*+x50!
55843 zTX~xs-$pv;_O$f@>D$+Krp?uMsP$so5wcCcRk_*L-L}7NM{A;OE15E=%DJ}FZM!jf
55846 zG-&o6ZN1tWX!QhdwR*`my;kL6>sV`EYgX`l>pn6arYg5c&)Jy5t(mR6smgiM@2=L;
55847 z)=jPJgTB_4R3+Yeuyt8$YVbqwZSZI-OI3WW+k<a{uYym5yUFblRXN(aDmWF?gX@F$
55849 zgl8))Z-Q5X{-CSnMlgp=rBr2#^jwbVWbjxpo2uL<{T>Ro1@{DZwM2tksLF+)JGddZ
55853 zTx=<5S=X|<Wm$81b9qZDRY|n$Ye{KwG#_eyL#9_$rJ-eW^ULPv%{$0#s#&)xWKWxO
55854 znxD2TZ&sUcH{Zaw+V-9{?{C@Ee6RU!^Y!Kn&5maCwa{W!wlqI#KGQtV^t?GrrV*-=
55857 z8Q-(pd)nk~-a|&Qv`K8b*|f6Bd@XcXl><#PO;?-F1wJ&LCeuZ#vX%5aZca@Po5q?>
55858 zP?Z&=-{GcPP2r|s;9gVBd?oO{>3maZldI`S)1koSrW~sBq$%EXuxWo&M&Lx?MAHtc
55859 za<|FXw7qFdAlS5yOslENrKY1ztD4dSu7Im4rO9Dc$esp9nwB-~4txx}3_Qm-|Ms2+
55862 z;lNHZZKEpp0#$*nflZBp#z0_AV5L<dd)jz8upy8gSP@_wKj3c>_MSG5k-pOcyBgm&
55866 zR^@c#j)u1l&l>hLJSNjLRf&+EUt(I_@TlPdRVi=W-k>%*8YUZVHl#INp(=+Oo;O@<
55868 z)t_rP(2!|W$ez|eZ#di#YS`PbwP6$fUSscRy-NDt+2Co|*s!9$rontI#I4HphOCCA
55870 zU#L&1pP(v->z~%2uRl{i;(zIXSwBEkcGlmkkJoqm)%s>K`Kij9`pfmcdawVw|9X8v
55872 znO0Jj8}-fgt1#`aPpxOE%Gvq?|Ht|*{#X7N{+<3uR3%!U?$`aIf6{-`zs7%$s#N*k
55873 z`EU5I`Y-xfayv&=vi*<!XZ>S!FZ>BI#i+_I{~dqSAFdPYM1O<7#;TA#^{@4}`Nv6{
55874 zIsPN~o7ViErjfqg{$bMU-nucr`C90jt<=5t2S|$>>%#tZWZFVi9{3aft(fvi%d4o$
55875 zP15fQf2KdV?ql7-x*4i+&cCT{y6#!s!#cHYd);HI67w&slk4u+-KtwfZr7<wP2HQi
55876 zYjszAAM4JO=?qmlQa4q1y6&X!neSO$ysq1-kUg!-s2i!fT^FhI)p_w(HhWL&Hj=)Z
55877 z>n_xl*B$j;sWV>--Bx93-9X);y4}8$bvwzFIbZS3)Sa)}hsj^Jqi!ozc}V)*Tz9N)
55878 zb=?Y|yDpWg+^XAC=kUGvz4E>A9q_%OD(CAq_@4Wo_;lY^aucaaye`eh`|kQy_->Ht
55881 z^ey)#*M6)m@TF0e+rEt254CS=r)&3-+cT<i!MCpVY3-xh&9yR_?o*WkUrO!0+R57G
55883 zYbI;mWU8SmX3suMXKG!wIaI~$_h@Z*?f%-mHHq3C^Oc&nwcgq-wHs?!*RH5(s9i@@
55885 zy_T)HQ!`O>34a^4_p~NhySnB^&5N4xnp4#?HRfxf&#Jg;#G2unQ1!!_W-@hCmHnjW
55888 zJ&C{8+Iw1kvSwSgT>Y{7cJ<}z)N1p!5V9(5)z7LgRG+ANRh=Ny7*%nTo=;=CUp-JA
55890 z-jkj-RIjb7s!k`<QmXQV^psYeT$N33@2Y033fa@DyVZ{BtyQn99#=iY-;eD*t(vIb
55891 zU-i6tMb(3<J5_6|%-2GXRXJ7lzUpSxcvW)Mc`{w0Dk0MIggI3`sXAA6nyPq6zo)A1
55893 zq-qnH*3VZeKU5V|t*csHSzcLQwX7=Ds*pXcd`h<3SCvxvrt%g3qHXVKrC60mw%c6!
55899 zobzUq=@3=B>}~Vz@$RaKdbfBtlKFP3HsW=8*L&Agc)iOjykwq6)dJpq-W0E+;t;vL
55900 zA=4|X_KAb7$f<bmHK$D#(-r3Tzvka42CdqjipSoi6=KEBij@`DK37{`F<J4tVxr<w
55903 z0~Ki%$>rJP_KvD~Dz=orDt}S_sC;Mn12R3OY6mKom#gJ``Rel9<u}OuE>+u7{-*p|
55904 z`IWMd<>$*jlKB~`w!Hjd`B?dhvZrNF%VT7UST%CY%HEVGNPmg)o8_VMDu?-R8SLX(
55906 zy;dz=ez1I5*@v>D<o34gXgN#OYRcVZ8D$xyN49)h*-Y6>s+L{8zw9}g)|Ra;Us3j;
55909 z17&N-w9=}PV^*3dTTl91Uv{`Gz0CZ->wD*qXQ{s|rEEv(+tO#HdrBXFu6DF^x@=YH
55910 zRH<HiuXK{Cnf>i8+gh4JZXZf-m0lu0CrE!`tG1!^N$I)L;gac+>C!lvPExhh(zhjI
55912 zEcKOcFWpiSED4sbqiUy0kCd(~U0#}8Qc&`-q@Xm7s<oBwDtTY>rX;iEMafe#e?`??
55913 zrE5wampm-lSi+NOW652rwy)GtGFfu7B#qpzkZIhikz-b}spMMe%93j(&q^+ooN$=`
55915 z=YG;(r&YUE(onLqWP>N<36-oR(`Kr6t|abpd)%bQ%_YZ5R+p@xYEjbHvXUCle$W1r
55916 z-JXx0cT~+=lI@u(S?77`dE}8jn>`Px+M$x2o(Cn#p1Ypgo@L~Am8xy`yzq>B&U;Q3
55917 z&v-`2bcU*}^zfd9CszEx)8+|~d1Ss;{N8iL<M&h*-|)DKZ;*KoReS6?;W_F#TzsbZ
55920 z+TvTqFN-f1U!-d5NMGkXtb58mRV){e6c13fWYSNx_-b*W*jMav-zxUb*W52iZ{Ffl
55921 z#W}@C+~?fqiVsjVzPPP;Pw}qeE$(RXMlx-uYFCO~#p{dLxV^>8i_^$_B~?37ystQ=
55922 z*x^3penX~1?pIW;xp<R%+WpMEo!lOhNwsR^n7Q-ZkBj$^X{lRu-*lM&w#Po6?!E3w
55925 zb{}x3xs!|D6=fHFq-qg&LD5I|mZDchFN$`O+as!0>Rw)?7V$;5i&huiAk$r{mR0no
55926 z=vvVg*T<ssMQ6x-oT_atdRR18bi(ztDCT-f<`JrvUUai4RMhOc>$+Q1MW#}#Mvj^5
55928 zx>yu)9d#WoI#{&K^@02}-~WPEZJ=nIYsU4&l|gP(WO`23d`0_RYh7!}{CUv|*8`VK
55929 z)s7TxcHJkFc{=8It{bkaRBadO=d$aO>x}D^YoPGCYlNz;A-#>bZo49`w!-^`_gy}!
55930 z=5U>NmAYK6BZZe;hscyOUn_j(in+2}`wB-~yIkAJd=FK-=c;mTb!{pPxYiT~$b2PL
55931 zyW~3TN_Q<S%qh%qImrCIRU^l&aM+bX`b%-`D12M^%whf;EBkmBHWW^~RuxVa-YZ;R
55933 zVGWsrR4uJ=s$imEg7g?HyjbWh^vu@^UXi{E3U3vhEI3&>P<W{D098{-KbeKT!tI4y
55938 zY|>|T{^tD61?%#k=0BopRRufq9~30#-_5_Be>Hzu{tc>jxL|eujr<q+<N4?FX7Xn8
55939 zPf@iU`FwsNKbGH?_aHw&rU+GAm47AQpI?=CBj1&uL*}LPwY(4cC-RTxAI>|Izc23$
55940 zneU-$Px71dGxB%jMe-u~o5-}@s*z)scPD=<>2GU(UjEwrr4IAoy4lAw?_z#>{@#2x
55941 z?{!{Q-t^~c19@-rH{?Cfdy=Q;iB!$(FOZ*+m!6lNpPF|+?>f0>zW>FoT29`}yvuo~
55942 zbKmB^%{xh^b5w0lKASt0J4JdtmnY|q<PA`@^`x(8-t*jBxwrDJ<^}S6R4s+{<IOuo
55943 z+CGwZAopC}q4`?wH0kY7UR&Otyj{7`+-TkwswU>SNV{wDmgjo&(#W)us!inWBkekJ
55946 zITvzIlhzNCpXU2tWVV*`CO1sl-If#2iRW%6(@v`PF!!YSB_HW=XRe3zu#T$TBz>*U
55947 z4d!I$Wal2pP0LNDYG-o`az5s6$$6FYBIi-g&YY)Itvfd}=V|Wp95si}Sxs)Ysako?
55950 zFjf)!?JCyF4=Z*Z@<Z&e*4QDk%DRqKM65N|${54SSjVt-U99!@+{^iXxXtIh-tXsd
55951 z-_Jegc~0)R=N`D}hoQy$W_&%quFgB1cYIEO4QViDoo{^}=+EOD@mYN(81>HK$K%=g
55954 zgPr}}$DJ1#niP7w(0Qw~x3k;3;9cl+Gc=-etkc$M=`8n7b!q{|6AgOl>r{6ty%#zq
55955 zor%D5hW5DA*(vJedwrdl*9RrU&=xvNyl=dRUL%xUzzd|on0cqX`<*sGvN!0Z-hchl
55956 z$#{A%c%OLRd6&KOUXFJzO!Ik{yxZPc?+x#ycbuV7{aL(kI-Ybq@jmp9de4KU*1r*?
55958 z`cZh@-bAm^OLm;{@)+8E=#A$s?+A6g?l41n$<S_iB^@t1o^`BuC_2^vn+$Epi*>Aa
55962 zbda7k&k933*CF-<JTE<WJhwd8+mAdq8JY`vyXjf?T=9&xKW%^N8DwZW&!T6*)92}K
55965 zL!<h;=#jeLxZkuNv@f*Z086cZV@T_2-)Ns|A94rX!FE4jl%bj0_uR|wW$1CV{cih(
55966 z_I`$z1$~`uf9#%h&$eH0_qDqj8W;L;v=6o$+soTk?$LJbiRM0l-n8xA?ecbs`>gwH
55968 zbRW8x-1BXrwvc-UFpV@AGk3RpuASqab8oq?xv6V&>|{LM7WcUOzT59U)3)mF3DcDB
55970 zZ*#S|phvO0!Oe4%3~kwcs_i{M*QRr;+FrH2WN5Q)bK8zv*tXfW-nP;vZd+q$qi#jp
55976 zwT6H>3~k+2()y<Lu+`YQ3oy36U}%f3<kn#8R;wJ!Bfu)sV9Z*twmxyGTc5PPYh7-g
55979 zHL+F5(4Im+yw-AO$obm&(rI?SVrYR@hx1jd#QDPc%&CB~&d_eQV$N0P1LvZX=ez^B
55982 zxfW}S)oEyX-*NyoYW*8U+C!(TWv6AMB@fDDz*B~H+o@|2v<QHoI?0x`mKBCJ;S{$7
55984 zJT1-^i{oaC5ny9zl9r1t`j!&MaEr1<4y<NqSW8!nv?bZm+roGB0&`9@$8L+Mg>bxc
55985 z*q|H&_K^l-=6K|I)8YYSIrbb|81+v2$K&akcLZCwj>nGs4v}LiOq+BpI}RKRj@ynK
55988 zhYZ!>kTkz&e%7pjvQG0FQn?t>tZCkGXqvfD-Z!r_FJRO=?GflN$wafLd8v83dA51d
55990 zW(`AynC&yo)6IGsXPWbxv+M)SQi%DhNF8n-w8LVG*w)N%<}lRL&8O_|n^pE#_Lp{@
55991 z{W)NVp<0^-_6_@E`?5V5%6-5?hN`q5+L!F}O(FXXU>Y#TP<i%E`&Ijursqx1?Zfs#
55992 z;IR|6>A-&1e!<?~wA{38KTY!~q(Z(;PwZ#xkD6whX6)DOUOV;X*H=$QqiNA@vtP99
55997 z)3#z0LkWbb8r#FBEZaldk?pQ+!8RMFifnVXE!#EQq-~_}h3)c(YU69$nC+hJqHUmY
55998 z#nx-<W~dNz<8#|%+gTddZ9bd3an|O5n1_(MY@2T!X&gc9w;60YhB{-rVpH3?Y*Jft
56000 z2foixm5sZNbB!|%uNq!8UZwd8QmK4-jn^CBHf%I(G_Ey{HB#@t44sTd!$G6J@pj|c
56001 zMsLGX!&0LwOnuVW)%XA~-e_;MHtNIF#YSUeU!xlOmo!{xObk<}8fA@+Mqwkb!Q1e@
56002 z;Vnajm>c|!J&gnnO~X;cL4&?w4`TizQo9;04Uz^4Vo}3Z!xM&TY*aL?HN0-P*RWXs
56003 zzTp<&4nvhSJZ-q%Fx4<xzg@rGFa(%js6@m427kl(`qhRrfF8iP6SaP~VY;EK!Bc;$
56006 z*2DU1^^**hiaEJHR6kAQQT=%Rh;_66GQ|8_$Er0{|J-`ldKd8>h@+RGKCfS{KUF^g
56007 z{Wn;z)f)h2hPqsT4*Jfkms&4cFV-gmvKZ=2y|Z3a&$s&OF{{rS0?T2j!}VJ0YwIhk
56009 zZ5^xIsoSv*hp9a4g!KRrunt-;SkHc_)*V>SS#MZRS-n<!-JI1LrarMct(UDPtG;f`
56010 zs<tW_D#ToO&pKt*(&)Czt&+O4)<lT;3rM|gJzr<9vm-WJ$-4Ip)o=CGy|HH1?bU79
56014 zmNm-?Lxq?v?z%k7V+xkHmVo81g|I9@%zmWm>iD(0wY$e`30iJgt})bP%PY$j%LB`0
56016 zYWplA3m-U{q0U$=7LEn0bwGJd^DCr6zO}=(Z!O+hO|8bFsC`*Wedob{G8(m~Yl9YU
56017 z?c>_}wIV1>VXC$EfkjgLpmx7@zILv5I!sm8-mG1(y;3_?J7|7ddm&8a)ehAz)b`h&
56018 zHQ%p2RqJJ_5VQHHcD1&L#$>Il)^47zwL;9FN9tDXE%Tsx5b;25Nv)cp-m4w0Rn)p`
56021 z9<#INPR$*&?L)O@*X%am1q_=l(2F)qT{G*<r_BoJA-?9ESrDe)HYb~{X0Dm2an`)4
56022 zIb^61bIqjLR}-S4tl6*Gt<l!JfS3o7I$$=`#Mi_l=GCm%tT9x#Sz5DPb5OHTbKCT$
56023 z<_2Jvq3UX$)J)cl*IYI|Gd-)h2pD0g$u)~L12ui7KutHm2k1RfO`)2p8h4Gubi;I`
56024 z#$00nZeXa-YtBRK8q;Od<(e#-rAUQ*P0KaPnlV$isk_Dly-@#Ol);nHFwNBPYRXL^
56027 zhPq|yH7QMUQ(|?0b-zgnkTBGHrUnzwL{_`1-vW*R?-}ZKQ(pB!^<H%elwkE1@HRvB
56030 zHm+BXSLf02R*S3SjXl-W{&yIu3)Ou_xaA|(8{Zk<Fx1Ivhw)Xl#Q4Ja%&0J~12!4z
56031 zfbqR?#TYOy7`aex1MV_Zw{hDzYrIjlZ=3{-1FkVtopIGTV!T|nUbPPG^Z{RFsL94#
56032 z#$IE0)k4*R(M_`hsgQ3~$mliRubQlyG>#e@jMSU|!zZIr_1vg8o-yVbldA@*28^OG
56033 zb=fE}4gzdOzL8TE3R7pQ-Wyd_uc}^FJ+IPLJq=TbtG11Ts*S40RmoM$RreVx#9VdO
56035 zp$e<6Re7siRaV1{VW!Fiu%D=gqpFKl`l=GcaFr4u2dEk9R+X<xQk7^pZ8%-Ut0IAg
56036 z4E0`>!SLSjmU`$j9MHUnRLIwG-EdgtG$;+qDyd=HKz$47ODCgY@EbO(FvF^0(ZGXp
56037 zCrs@!+^vc?+%@bNZW(SGrovRC;hN#0Vbm~WIA8h1a4t-h87>;;3}*~Im5T<C!O2jm
56042 z5VL-+(xpG5A=B^ZpX>AV)c*GpQpYMw^n5)ZF`<8`UuLLhD--qi^t<{w{Y=Fx{Z+s;
56045 zf??|Qie0@0Agb7^cv7(%rur+^DqdIIt5~eKRsO!>W|-Plal7Ivv@lh^T`^iQ#89c2
56047 z;#7sKLR=vzKU03Df(wXesOuG`3Znd7xvl&Vun%~{P!}rX<-6rC%2iM{%h!RQG1SQl
56048 zvV5(4rCb2zF3k%_g?!5g%I{YsmmQWJmhY9{E~ozGgRzs*D0i1nmp>{WFTYr}S+-d|
56050 z=CYmg;c__*XSt}HU*;>P_P-w?^<nwxGDDdGv9|1W*(-)RS8graD~~UGTDDOpEqe%f
56051 z%uvV5-jv-hTPm9?!=TIn<{9eQvS($}Wmk1OWn+M0z!ipSFAJ0nmR-<2)I9{x)4=@<
56053 zwu~31Zk5HCod=l9NZotgQJ8v9_oggMx2N0IZRymyCt>P!-Lo=|?vZX)Cj`$$h6*w3
56054 zhRVdc00rGk-5uSn(jy(U|GkXV9^Jdrt<o*Tk98BeQHE;Kz0h6O&FjwT&XnHMbpd)9
56057 zhN%Ok^E!U%d}*-sM(MTE@i5h0dZqM1>E+UkrF|u9rM+RQuC%}OW@&e+ujF>AqqKpc
56059 z2r<-$rHYc5B|9ZgOEge60M8lfTq(EYamm9HQOSM45@4C3j+N|}%$Lj+zb<}VGF@^N
56060 zc!r^#Em<$QQZiQjwD@VsAk7z$3i+1UONL6ei|-fTFIgz*FFA!#-`D$iG)mMZJtdPR
56061 zt`bx6bn$eFK1>ysSW0dI21-i6Q~se^d{m++ahD{57g>C&_<fkVRl+UN6~8S$DmE4G
56065 zwA6o_Vd{eRd9eY&1HUzGAWWUqE^80K=eG7n(HrfxFm*sXqkRHC<3-Q3m$ereY7~YS
56068 zTlhu5*N`rU2mwWhMN38Vno!Y9m`)VU7Ht$w6-^WkX@Z(yk^e(ovr{x&v{*Dy)Tap)
56070 z8lT2j<SY^u@xgK!`Wa}SDAH(-GzS_zlx@HsLvJV&YBn|N8nI>tAl3u`YYbhfIn*p^
56071 z<_klGA<Yb68Zd`+Dt@kJwum@}W<xWjq2B-f>PdcuFEzuO9l)YyK+{(k&~%6Ck2F1+
56073 zP+zErUI>k*@Tl+rexmaK3ep`KbKwp^TqxEE3pWebp|-}*)f#!>YT;qwQsKNhqz)C%
56076 zZ9p(gcc^y?h3ZZ9x>^inMIB)1RQx4{@`6x7s8Ft6RUfLC)bj-)HI@Gm(&GyW^=u(g
56077 z5G)9)H`G(=39zFldckY;j(S+Vs2))F6$A<b>TW<UL*G(Qs$FV(!L-^`Fb%8+SQ+|V
56078 zb-!AxRu%XQ{Aw9M3{W5);xD+WmP7l;aH>UWK1O|C@8kRm&Z`M^4?t6JRB%wBFW3&#
56079 z-32>pVZmm>dcjJ87)l^aFDY0pI4oEym{)}gW&qP+dVIlb!A8MU!GtQP3Kk3%_!&CH
56081 zU*#{50Tc{<y1-c=D&VVp1(?bQB?L7NL-!YGR7a`<l^)7AAPCq)I>ZlW>=c+0gsM#y
56083 zbpw21dQjD)npC+|_WbGmX_ZN(XXp@r{)%cg-=FV?Ud*a~l~$#KI+g!#A$<ngm#c>J
56084 zefd6>QzcUI!EzY-5VTLIH2FvQ2l;v^+kicW-mMbmZ|1M(i}P0i;`{($jiH<J5A&Du
56085 z=kr2&q5K)ZG+++tRQ$61Sru`N{Ehsn{NwNco#cn*59jXy7V`)4`|<+$-5=_C+xb2D
56087 z@5zHrKJ-H5Yx0ir4&Wy$|1TiDH{YDM0}$tl^M!evdFxPHW9Zg=dERQ?Vct^Sd~PT=
56088 zls5yIW9W*!jl8M6iQHh`P;L;|4;W?WoV>-nfxN!lKyDzf8{h-<A|2w--OKBN_Kz`{
56089 z=gOn*e_uGsFLy1^oHq;T&(r3qa{YO-Fnumhp6ARH<?-{dTpyHBm_C|E<Y{t`au0I#
56094 zFH-L01abn(9p$icQ8}ROgF2P}=a2QABWS-zxtcSbGp(Fdx|DXXR))R_?VFYTO080r
56097 z6oH&>fbT<Hag@`OGYP%e71N6898->-p+o$NXF0P9zrqi_m~;A}Hx<;W{0EVKAKI7a
56098 z3@dyJUyc)c<Adce^y|<*k)u%@DGn5RDBFNNhJG<esMu7jE5wQwfLIX#tTA-2;!v@q
56099 zn9mMnhZHk_X}}!PsrbtkvpK{u6dQ^u1$F-$WaO8u7*^~678L`EzU+Xa`$IkZt)fRU
56101 z)@SRX7eb-QKFU6TpQ!xDk$zcW&fWotv&9Nw_Gb1v)YcgKDTO?HHTy7oDSJLEloiUJ
56104 zKrl?doVAlJ%-YOa&k{pf$qF!Zh(GIewmdVG8OoMtt!5o&EoIGThO(&qhmmf{CbDL;
56106 z&)m)G&(db8GX0tUEEzxyP#_)R&wQ9AhxU)*%o1f$_rKwj{4#H45m`L|P3BSNL8d-)
56108 zp;PhaW$wrW@<8TJ=5Xd>=0Ij2)T#WxgmfOX-;=p2pO#N&PG-6??O?4Zx_lqnH)r-|
56110 z89^xDlvDS=FP-EkKPz9&l*?D;hw>%)d`3t<6Q<kbv+@o3lzc)ylo8Ab%Kc$_o_tuo
56111 zC?AmbWd!8i0AHBSllRCc<u18BV>)A6Zj$R6I>euGD4)&nXZWEPv%Fufm8+mm<v)V-
56113 z-k))pv6L|{3&}zmGk|Hp9MU2F3}?oyoH$0tM#fYIb^jYV$uC2bF`TgjSj-s6=#vF9
56114 zy2Er~Mo-3MhAYFKVUkVDrZe;(>axQOGsK|HP|5rmGJrTt-^h?d45AFa%qR0@V6qTH
56116 zJ(M1j%>d>Yx<|Glo03hW2W3O)L0~^%l%eZni?RV(UwR-tAnOMB0KG`3;!l+IK>Np-
56119 zMo5FwVERV-RQd$iQHE|v-$@@%UrZlJ?~?|kf%I-bFGH84Po}%l?b7LVlXMzb53ru-
56120 z(s$|o>DqLa)Gzg?%K&140_hOH^m)1*+CPRfU6fAU|He-8lRii%(t7|J>5=q6s+Vqu
56121 z={KZ1=|btIbX~e46+;Px>4VZ$>7jH<I-eGj&H$#v^e*YFbVE8Nok$C&1*Jn$KSQVD
56122 zH%oWY0%-y1j&xYMC>@aYL7mF~Bc#ir{T}IR+H~5qbW-Y)+QC{GIsxsQrTtQ^RF&pW
56126 zi7(BWCQ9Rj<uLR|&_0o-ksL`5Bzh>@fIWtOJ54Crl&nj{k`;hh5&*0*^fAeyWJxlg
56127 z8cGdGW&qQGIiy4Uk~5OoG~yVN4at;*y8m51$xqTC8J6q-79|6czSMxEJ4{zfdL)w)
56128 zm&7hHrB0_#OY~tnS7Mg*OSBSIs$U`lh(FX*UrOW>r$i*-r}|QT5-c^u&>{ZRCz762
56132 z7^W|XcT$DoP4T*z`fo)XVCWFP_-d*=C6p3Mm5W!!hvFsid`d`6<v)t_^QnY*HkC*T
56134 zTCpm{pW+wG0Ahdw=@5U)Yq1>KKZa8*5>xlT(UbgAw#0<E2cStgN;yc;r)-DmcT;x6
56137 z>q}9mC^72$N|ETVSw!++iX??bvOC$GVoTwtaKb!%5IY5B@_zDevKGp-Fpu)&XDOWI
56140 zP)O=c>P_xSmL?~Mc?=};lluVrq<2Ygk}Od6!#tcx`^m{k!KAGudD0_*JZUw|Lk-8@
56141 zB;8M1O2VMb0cIE;R4$@qPU4Hi7sm`OT}zq-I}W*g<=7+f5Y9fIbT08h;)A3fn!5mJ
56145 z6REd=hEC#0c$nx)T%wRLo-m#`lxR*ggn7&+Y7!>_rxIm};)F8^XA%Wr9z%(OL_@;+
56146 zgtrOSgad#zVK2<%RKfwA`#j-kLKc+AfQJkZ$R)v?n3q5#5XTHH1rqLpU4UG^h&*I)
56148 zzmYJN;7)Lac?1&73A2Fy1Z{#U-XHHzkcD|%he#X=!USHtH~u}q8~--U;{rsYihmXV
56149 zGF}JeIp8V719FM?B^cu2Kg7KF_4qZYtUxZmg*?jP>^t$d;*R2u;;+*@1-OYks9qA|
56153 zlQ{TsV{tDjh*m@^(ALGcfe$@I`*FQ-Yk;e9o;auIrs!szCCuYdoF#4`t|U$^8jO>R
56155 zdO-6%z$)^fda;Tg#7Sab$G(n}fXBXQUPQeG>u1D~C7Kq6D8z2YZbDn*qLDBULUd8|
56161 zctiLO@K`t@9F5tE*%JE0JcL5O@V4-*@N~?Q&>OP^?E26n=9SPZ92GVQ%`uZPlR_Op
56162 z!|;GyVm5`>V$Q{!Lws7O5X!)cA(wIFu_!bP$(Z*sb|^<Q9{}DW52}|dF-JmIOkPYL
56164 zF@rG|1P^1*3LXNV4)fr|oQ=62<BM?%W(Bh`4FEI419B1U$J`bS35F0~h$)ZJf>l8-
56165 z!^q=Nj5{VVMkqKXI2A)uEO-w!9`b-*1amQD%xQr^V2C*lHLc*afO`LN_#_U&h+rqi
56167 z3<~ZD`UJhvccbqLd;mAYgUW>v1fr*+rx1?`Yyt~dBjoa>V~^-<L9ak5kVp4N_X`qf
56171 z(aF)&x1dK(;^5zn=0x{W;2ZfyXzLCCFwA3$zZ-1<i1=IlCwvK%)i95K{wn{Fzr>%9
56172 z3h`&6Lcr5u9uEEtoIA-Mk9rpMjDHz$k>Nq*qUFDcx)*g1@jU+={|wk3$mJ695c0?Q
56173 zcD^<0YSdM}p5_vO33)&-QLp%V{&dtp)Bt}PYG?R)eCk`Umrmk{TIVP8FH(qdMmhOb
56174 zK9^5~dEAM5!}kEPqV}S;qtsBg!aT;Jw)jNU!>Hvbe$*0xA2lE5(F@17qh_OS@b-E8
56176 zdEN+bBx)XN{wPBf^%m&ZNgTZ0sJy6g3cMa(Pn0)G92Fntu^PpVIs?%0-tvxkCMbJh
56177 z9y7eXsCeE}-Ud&~dkB#7mcu+Q!|@~DUEV_EyU2IES-=g32jl{M6OqBl;4wo>Q@jbV
56178 zqmau-$iu{2;Pvy)M&6IS&pSo47jPPRP`yZbr+CYe*CMa+mZ3JmbMUBd!F_ZR2lQ*;
56179 z-JlS8KJq;8EKkK#gn0ycVxAw+z~k}ANEej1VIKD*-|`fZFC%v%HIYvNn#heXk86=n
56181 z52_bkWPjua_cr%-<ObAkMs`Q~FzT)3lQ`ld9gzzZxTD<B$iYZsWci04+@nZU<OIMM
56182 zDTz$vp5~s8<b`=`MDilbxgqXru9^E1VCL?Gc`R^W!nx15n_L-`HNXnP19IU`MJgiR
56185 z9T5V!BVLDjtVM+2-2I5%2rZOnfK7%6<Pvd*TOJ{d5F+M8Jc?L_+5^aC6nTun*>e#y
56189 zAUk->oDI$tX9A<%5B=DOz00}GndhA2oMGQ%-{W-A><RN(<M=oM_7r;x@fbvC!Kn8n
56190 zPkd%MI?ic`O2$6NKF5itSrFzk!Vz%>*fzEev57;l-(l4If+s%R>{lEK`vv<MTLERA
56193 zBHO~|urbmB<u%Q(!h8nFBesjoBl8f;$Q|-IM!ipT;^QTsknhN4@;=FdGEehdn2(;k
56194 z!{)JeSUbl|J|m~es~GiO&52JUIZECoFOdDLW!5rzn&wj<`mo-TJ>)8Dnl+7hl5~-F
56196 zL)oJFNtn-h)+VWC@mM^>7;BaF0HfYFIPr0^7Ff?&H(A$-Jz|eFLGx&skCrvg+9y_t
56200 zzssHYa0n}Lp3o5*{4#!-$f8;Lp%4C&kQ2kW5BDK<5+Z_+QGcI0@p*{9Csg<={3Wh~
56202 z3Y<k<r=tuX6MhcAfuF*?*c>*8+iA9b?1N)0)>GC$v7TWBR)e{L%{152Y@xZ1W-HD0
56206 z^6|1e**-dhBzzG6bNqYw-xFLyMHCS2L=Rl09}#~-JR%+w|3JKDX~|;J%#L73vDNGb
56210 z{2$@EZ^r)_|7WZP-^RBwC%%LK5NpMMgzsT(FhBkSYsY_#{}}7Qe}exM^TG^_z<!B{
56211 zBzV{-2tLfKPZAO$AL}N{iE^x;`UecK&r<)S2R1-h2s`#U!a=lPgG4LL<jZgm`V=-y
56212 ze46+b><aO##IIt%OMHg-b?hqfS>m(U?-9R6d;yy#zDSH={|_-iOkm%Dd&X~LcZlC3
56213 zeh-@`ZV+?WpAxr;+t_{Lo5VM<zl8hOA{HQ)h$ZY>#J7lVW6N-#`VRKD#CM7BV&5UY
56214 zM|=-^M0}svz`jdt5}Vlfi7n#auqVV1h#z7>;wAAC`&Z&WiJxOHh+h!Dz<x;lHw(vh
56216 z;A!kwc04YF^)?01g69A!u4L!33-DZaA-fP)vy0eecp<xo-Gl33PcV=D9Dj|!BS;v-
56217 zco@MfxVlOR12txZo9H4=!(H_}F-VNSNL+>7ZxQow_kBP-B-SC1=fo~?K)fd2LA-p3
56218 zR>I0+saPc}1Iq$;eK)I%b(+-&>((G^gf#){$qm*m);#Mj>jCQ_YaLd(=d4}U0qZsE
56219 z9Z8aWGM<!>S)__AAq}L3w3BYKi#!dh>v?!G7$GOftK<#x7OeSq$p_>^a-G~FpOd@f
56220 z0X$8-W0R13JX^xfVyoCCYy&)N*x7D&7yC53kA0p!$R2^Gn5*m?>|5-4_FeV^_Ct8K
56227 zSsSuV$l8%@M%IaJE3z(R-N?2h>p`{ySue7k$oi1&LiQ8Lo<jDM$aW)p7TM1r`vqi&
56228 zko_XEUq<$Kkex#Icagn{>@{SsBl`!)-bD5fk)1*IkC45E>>ndLhwPsqdmGtrAbSVd
56230 zWDk%%MD}OMqIrV<7qV}V{W-F4k^Kd-|BdWBWd8@*|2?(@hAfUOfov4A(Z~vrjX@U8
56231 zM<Nzk5wdZ}#v_a7D}m-Kf#xfL<|~nctQgr;WYPR2(EKFO{3Ou)B+&dM(EKFOyd-qU
56235 zBa7w*@e^cUA^THg(R?A$d?AjI4INt+y1rRxePOYY<sch@EEid{{=gph*rIs>PZ-A*
56236 z%?}ouA1pLKSZIE*(EMPb`N2Z-gGBR|MDvwI^OZz#vPoo7du-Gm8_g%S1lcrX(~*@S
56237 zn}Mtx*-T`!kVWexTY+p2vPxvpd}E_^j*aFK`*@whv7ck#!CqtUaaf^oA)bII;z@Wi
56238 zo{i_?d3Zjq!qs>ouEC3NEnbY5;H7vuUV-az18&5t@fzHW*Wwnu4zI^;coS~Nn{g-J
56239 zio0+(-i~|l4%~}(!Y;K7{{-y*K8bhZXYtSAU%-d(FXCUue+PDszl&eRui@A6KfrI|
56241 z{%`mXV2Aqeuroiv5AmPDQ|Eu-Z}6YvZ}DH?|Bb)H{|EnH*d*ZuK|~SJu)B{TghVXt
56242 znB(BNG=WGYl89s?g%A^|gqkQMG(-`hC5nks*n^i56+|UGvsMvC!bH>%wL~-Qwa*a!
56243 z!~pR*czXQ};sWuT#6@C=7$?3;e2thSeutPMeixo+{||AE_&V(Gr-|Puz5!3Re@grr
56244 z@#n-n;xCB%#9tBt;;-l@-M@ur-M=Tc;aT@b#2)eQ#D5U`#E;>*_b0?F;-|zR@iXEG
56249 z^?+D~UFZ{Hi?v7uS@+?7v%-1=BXt1d@|JiHdjlSf!3HZ4_6Ks-GuAds$x_2ELC-R=
56250 ztgugTvAnEPuv0k8>StYGy<{E2eqk80Hvm3|5v*D)jphvCQ#99Na^O$W^-o~};7?$D
56251 zx_->jz>W0pv6^UZrn!Ya-iE~ix6?=ZXzroUs>Ng!lTy0gOtnKE(X9!ocIbNZG1Kkz
56253 zPjd{-v`U}bO#3v`=eDA#Qt2M4<G+rW>iyU09(}aWDf;*)F&)ifI=ee`b`*b><`&e>
56254 zpVIB8(40XZPocS*K0<LLJtno-2+gB(?jtmh(jzcJ^C*2*3l#(Tk{;Xtr1>??J2ZcT
56255 z<~^DZ=`lGT4LWz)r->fJPI^q5>2}(%MEVn?j&zbgrupCLUjBn-Dz;yuv;GwMUvyNz
56257 z%%ZQ!=;QOCEy_kg%hY*MFuE-I>Z5e(8WJ4)ldsVEuP_43#<rngEF;SdbHKu?$2cq-
56263 zihTy_!_Hy9&hEv&ik-zii#1}Gv9Dl$><iczu`gj?#wM`e#(oVOBX5&GAb&*8lMCb`
56266 z+!b=MJS-nmVFj2PE5wR0Emn+`U}ac2R)OiUO3VoJ$%Hk)y{85HJT`<4!`vCgzJ^Vb
56267 zQc_0#3Hc534*5;;Ps#t6{4?^;$^Vc13-T|?zaqay{x$hG<hRMcCBH*{m;4_2ee&<f
56268 zzbF5J{73Si$bTmPh5T3Y-^e}kC*&*gr{p2|GxCW1Px3YSUu+M23O6x3tp0yM{18_3
56269 zNSsG}1OGAcjtJp<#D5e2gKrSuA@1OASo!woweOq6-w_MM8nFc{<v&3AM>unn_#&*D
56271 zG3*3T%h`F<@3PntP`KnTsNbf-v(0sU8lE-o;P>F!Vg-K)tJjaH-v#1Fu=3nxtkmBk
56273 z|FUsdlVjO&?0B{q)@A9(D{~gTD(ABE*(!DcTg@({R%Xr-Rt>$*5-YHF&cQk;CFC$N
56275 zSo`qI5YIYdg-C)WCV4CwvBXlaR4gqiA{@{z_17dhnFlePqhsI@EBF(FM+o2(cuK6n
56276 z^VSRe2;af?SmpRWA;Lq%GdzU9BG&O&aQqF_-_tQHz|3C$IEFP+@No=JSWoE~Ua<C9
56278 zF@6PFe8&nvo&>bK4B79%6YXO-x=C`Oop{JdMk+`Z{Tn?kSxy>B3uz;rq=)PxcgY^|
56282 zfxQR#52z;qgc#0Fho9k2kADqp2jJ5HIEH@{@Y_)TEZAkR-vaz6)Gq-Zz<IeaOMU=&
56283 z2|tSgnQ*KLK>fuc2>5pZ^n<}UY#X2z9<URrnGaFIiivO0fAcv@t*Uq-+<8EyRzNs%
56286 z-=WrIh=`ADG_q0DS`T&v{X9zBv&U;XZH2U@*LtvgY7M9Ji>CcE{%<?S7M>s|dkOV-
56288 zf%;DYZ=fCz_J?pS-G%xQpb`)Zfb%fw&igZ{%i(%~YYO`jhLb;pQA@={z-iP7!ZE5I
56289 zLtiDSSUgpyo*Ll@pXO-#cp}Y7G$&JMQJ){2J4DxiLLWEKTt%NXLh~ry8g(V5lIb+>
56291 z7y**1?}FXMSX6e@CqidQjVP6QG;QPQPdpW}6oHLFBOilCK87B70%C#Dfk>#4+NDP-
56292 z8Xc$Nj;2Q{njWcWYNX(JBF#xOQzNxYkJK(bQoGbh!Epo4RrFaSG>_7)$^L)#-UhCz
56293 zYt0wl9|-~?#t11QLOymr2q7RwNRc8SVhCRW5fS++A|ghLh=_<3F~=gtNHIi2N-3q3
56296 zYSUV;Hm&t))2cind%=2bAFjYd!OA28kHVwDy6qr-2&@qj@S}Jlo&?qvDR?UWE}n*G
56298 zt%z1ayF$~@%4p@Z>ogs(;8nnK-=Q^<&vX9`92EXL@K8f>5d^q+=YKmN81Q>{(cEah
56300 zdH{VNJ%k=g-%sB|_oKf<_owd#2p32XrXQdyKnMVR-Ua-ydf<Nz01xarwdN=NuAViY
56301 zYk;~(LV8`K&qaD#v#;-rtod25y(|RySz9UJiu?MG$1Bgu7xXFv@x)fpKf(S5N6^2=
56302 zQM3X5GxSf<e?)7s32X#-E8n4av2pBw0Ke-0#-3n*femASiTycRi>g7+zXKl5Z_s;m
56303 z8QqG$o9<2DM)v_8f-QX$eLL-UAoUjAfxeOU&!9h^)Ljv>H$&*JUwf2aVqb&4bpXF|
56305 zU_JK&wL!V49F0WN(L#j!pcQD-TB;XB7&CR-L$G3a{XuKDh&T1x)FS`_z~wG{1n4;U
56310 zuvn-Q)(P8$eTX$@LfFlDE*$0}!pB?(;d8Dh*AGyKgp-_6;R0ty1e|iNE!UBJD+i}t
56311 z_>$8rvf+$zo^fV5OI#Y40jM=13r>@W#p&Zb;EZ!7Idhz4K-GvCoC;1Yr<v2q>E}G;
56313 zNy09gM7_&VYQ4)-+`B78QoJisQn4#n>a?p&+ULfSH0-LAbnfbuN_Rbwj<_XDCnZCY
56315 z_d*YYG~J`wZO)^|UF-4Cz0TvQG+$)xG4F}Fw|m;T4|ocsWg-Vpxk%ut^h|Ug^UQXi
56318 zaC4Fg+@vx;S3(x!s*q*61;~osVq|*BylaJPgRI3ZUDofGFB^BqTxZ-HU0=GD$!6VZ
56319 zc4O{#VlVeDaj^TaTdP~&ZU?uK-BR}_;zIXXw@LREw?&D??qGL;xK7HDI7qn?u~a7U
56320 zbC-+Tr6J-0X}ly-nk7k<7P%{>I`NpaUXm;AkZ7cX?umkV>A3W{#2{UkG<(>%XA4$5
56323 zTkLk)?X_F6J9&4W7~5Sgw%c95yKDEu-IKeQ!~$<yvD}+*8~670R(WT57kO8T6TO?=
56325 zOh{h%EVx^`G29*9xDsc%rMpD#?C$R-b62^AxTi@x-Sgx!_p5THd$n7Zdy6E9KknY^
56327 zf)MEg>4c;}5G$P%q<J8M91o_T*n<#gJ-h`q9tuITpi3|)7!^Dd%pqF-q)(#2!Y5ZC
56328 z_9+u}_|%C8fn~_`=@b}z9*D+$o{63d9*UL)PX+TnFNAh-8&?~l+|^mA6!!`fh1qhh
56330 z*M8SgQM`CTl;t+zI^{O!`a*(;E!}9MA_-HZlMrG@iMLoHQ2^~s5Y<c6Vt+}oSS6`&
56331 z6A`_V21%zlO)@0TlRS3wB_2p-h{uwb?zZBq?rd>2G41X}EV>8tG50w4OmT~Qp<6hg
56333 znDxo$GkmndYM%ySi%&N{-scg&$Y)B}>$5C;BxeYp@dx?iashu??k8N3$B1YGPuB)P
56334 zkRVo`DPqZsMIu4DYp0-A94BZK`O5X8aCwXCkYGxjDR?0+6eWvt<o%*jp`%zUl!)s@
56335 zdU3m`Nz^U$cYQ2Wi3dav#ABif@w8~pbw-#bUJ~ZHS-T=`POeNhDbUUU;Z?U7SHdmb
56338 zug#~IH|jIWd*Sn3P)s-qDhLVT@3TUr$?XIU#8p8jQ7srET8Lh`n0O`+5IpA71T%b=
56339 zsEjY-`^w`4FZszrTYiqHhF|LH$JYzl{3f9nzgyJGf8ZL)pKwhT1`Ff(bHYpk;+iX9
56342 z`EDVu4%`X1c<zi_7I(?5$W7-e=2^Ja^X%L@cwDzZo~PS5&)@AiFWhaJm%z*9<pVsg
56345 zi6v2%AXQW($Q5Y#*1|@<lSn5pi0TE+q7Ffiu!}Dh4e|p-<3NL-3!aLWfp*&PV_cmD
56346 z^RAvk3~22WPPS_-&{jLw0-?aQTsX@qa;@c*ySBOZ11%pFDmm4zQ=BH(7o1M9rPxuJ
56347 zD3%CUI0IsT&WKpWc`8m5=K+MC6<_5ni>tYo;ubDT+{-1zkGNjqXWRg8BsY<p#Vz1o
56348 zMYNnk?<P*2cQ0pvGe#&m(?lY`erxYhu9O=<WOHMP5^g$C$<61Macj7(+&-d_J3@4E
56351 zEdFz#wf*c^k*_G6zbr}?*obljqwF+MDLY4`7c~i-Mco2VcCqLITPvDi*8uHA1VOG$
56352 z!4$jMm0)+ddb0;z6|M<_7wl12HT#)sF?-Ing8kC9fn)93$#HNU;s`i0P7p`MN#>{#
56353 zEjxAhBesTZU^laSc%JNsydd^d_B;pU*l`5BSdN^R!BO%GIEkEWP6?-y)5t65bn$9A
56354 z!+c-P6W~Fu@Y=WxUO$)159iAGbKDT#C^w!r#m(X;bBhEBS0`ZdUJ#btdcu+0At1Pe
56355 z0&hYhP!RrviaXBF;XW565NQH6kq0#SD!-JwEU4hw04=TtTHGQS;_C&EdCr0vqF3;e
56359 z-A1t4{p?Zp6j#rF!ENGL5?&lfVvHl<c60o>4>&3!n3G0KbMlBKQcpQoc?hSPZ_R1p
56360 zJMox&De%<2IlV+2=Mg`Er{Kr%5`ZSFiA>Hjem-XbXmK&n;tGB%QONJ((t!3h@F#hl
56361 zKx?(mY=MQqfj1-&^Bw~&t#g(NBAxw6Jmt*@G`yG2N`b*SUeN5EA?Oi2By0swiFW5a
56363 z8rn6nYe8lybC$_uN?EEbU#68c$hu{ZWK*)`-HhD=PVjEO-7&i}cNg#0?{3-M&&k|9
56365 z&HEG(n2(OI^J(Nd`SkGod`1X?&om+Tc}Xa_F}z4QlSq_{h-|q((Bgce5@=_mJeKH^
56366 zXA#5P8lbhgJ1mG<VntrUXUGjeOEo*}__7^beh5Ea-pbG7PVVsJ7wz!p>vn|m>-inr
56367 zMgAbqup@y#z9W<Wd`CWiSzyC!-k}jV@2C`b?x+_8?PwFk?&uX{?06t3*ztJB^o~Vm
56369 z-d3`G-%e$Rzn#ySd0YE-!`t2L<hLKObKaifynK6^Tj$GQm--6WdS5@Tt#1ss-8Yjv
56372 zvLjNRxJ0g#C!rw>oX12nx6sL-=y3`s9y%ouPl<W1)+v*ZIpy>1oHTraQzc*SRL@sB
56374 z_LT3b-_y0{;hxDoOMbR~grBdU$}hvO$gk3`*{{!U%x~r$<Q>*Kl6QjMiGL^i9nCv6
56375 z@3g-&^v=XP3;ve=&i*ogrGF}?!9U+$>)+tt?f=Ms%72+Nw3oqoyjQT-Z*R=r%)P~&
56376 znZ0_>%e^gJ+r9mJ$M?<#U;z$XuK+1GI3SoC7myH;6L6JV7*NaA26S-i0)`zQ1U%&q
56378 z?Y>}bJrdZnT@g64J&w1yJ)N-Fo=Z4vFCoO+b%fvc+U+gdySEQ*AKN||xDv$jwe=MQ
56380 z_sRAt_occt?aSY%-Pf?Md*7pdQ~Q=(x`P?)gkV9iUvNxtW^l2~gJ3;d9o)h$4(<;g
56381 z51!qR?RQ{T?3c0|_6M^&_b2Sn*?-k#Vt*}rXnzO$@%~}<%>Jh?bNd(BFGH+3wjpc|
56385 zgggs*alqyP_kjFB<bm`9g$F7QG#%(YFnZwmffa?FLaYc-#3|H@Qbo0*O);o=qL>f0
56386 z2z3he3RSpxh9-yRg_eibhjxWN44rfd3SDxERoW^ErLR(@%y7w27P%BCD_zQ!&B{LI
56387 zm~tizaj6YsxwM5zT>8U;!s5fST}Hz+E>mGOE-%8`*_L5LY{#$(wj^wU?H_K*R)sq|
56388 z6tUCTdEqkl)o>-dIy}{(oZaG3&F*DC3eRUh3)ea{u@@XVIW&g>4vQlSZ{YZbcRP%5
56389 z!X2J+k{xC_Ih@k)M-Iyz{WeQZ(>4~TdmF)du+57zu`Pfzw=Hs8;<l`91>3G})9-DU
56391 zhWss<<zFLo>K8|wkrfbdFy}Zz&bt*t19Q(HpFX1G6PmZsw-9R}1r8uh{x-=L$O9jt
56393 zEB>fIvH{4@UO*2-13@|nC7*TfL-zqnFd7VM+mG%C`46B6z*QxxL@a=eg@LQ#XgIhU
56394 zfkuE<RHzEE1Tq&5(lKZZ$RCTwg7^@62vFis@~P%w^f0;K9*sw=NO=VH0Eq;3CZow9
56395 zPYRj>YD+~^L8&Y>i`-F<o&tG_&?1Bhr1gDd3y|0ngaM@XGHB~p=&t~uAEF<EvXy8h
56396 zD0K_H1!~iydeD{uHGs0!Xf;TGgnk5KAlV@P6#W$BY(yJD&d<=#sNe53k-Oy4&q1Bd
56397 zXfvqo3-k-XNekKna(;_`i);cKa39$SwBQHO;*aQ$<nDO%C(w(Z(Vqe37xWi$UpzVt
56398 z@;^i$0?H%w5&4Xne1Z!!<$sX7;nByS#V6<!K>u^}&jEb`od7lb1^O4D-M>WtlH380
56399 z{uSVP3Y`Kx{1*K!$T@?~fUC3UEXX;J&I8IKx(HhNC-k2H{RR30<o_M|J5U?YHgFZ_
56401 zR)qYmksT;&kJ%#|frhdG<t^+jPzq=&pg3ZVh$Yb1?SL-9+z~sVxl+UeXs-vd0cbG!
56403 zaCINH55y5z1gJrUsQ~>Db_nz(4NF6|0$Y#?u4Z9b2oqR^9FQj$%LOf-#m<7Z@~}LR
56404 zA6N-;w>fqmPztaDaJ2+00XeT>*FX*BSUKS5I(D7hX^!0>_nBiA<Suh^Hvq6Dw?HX9
56409 zgtUQHhy`f}0mTNl0eLpzn*hZYw*~3V_-1OaHv{C{f^PwICe8%(t@u{N3iraj5GJsf
56411 z&<T)}Pv;{R<S+3NYhY)E<c@8+2-Ga4OOZ{$>Ux4wa=M({u}yy)q<twHj3U3Lk-t9v
56412 zkN-HX1q9gu{+I}kFsT%orXCOhUfz7@uTvHvYz2SJ*OYB*f&5^AcYEsER_c%Zwt>n|
56414 zN&ZTfM*WI*1Nn{%(63brjY`{7V{G-BcV|FDksXK=Xkk03VI$xI19{0DR^%QKKv^wM
56415 zw!g}$4WN<#SyU?)Yh!|d^lFX`6t`Qc5k#rq@NTBsWFQWp9-QKX<O-vnv(rIp1E6i8
56419 zf$I#w3pqm$RBPDUxNbxk6sK0;n+up-dxUz6EvN|xb4$(}i`pka&MLWkVhiZg28tJq
56420 zng<3oFILnTlWmftwMuaTd~N_`H&E?uphk$~-3io9*04%rg0S6)o7LGRD5*!NIk2Y2
56422 zEJ{;W+aT-Q3Ua(^>y;#0Q#(4)wb8~Yu1IMkbJ|kcXF>IuPD!*4B_T9woK`uor^bt{
56425 z8PPWx(Ko%OW3SsnsNRv^ZP&irQQx<|zHYnr{nhoY)OWkr*KO9mzq-DK`p$a&ok4xy
56428 z{B1Si&%uO0rU`#<nefLj;m_WLzs)B6*_rTXYr@}F6aH*X_}gm2-zF3Om?r#~%9E-5
56431 z$8^3;_0e=bP3Ond-k8dVX?|1tZ8{&O@@`t*hC);l3(4K_H`n}NV%<06YumxP$@m+w
56432 z?wfJW&FgY*UYB$8x}0pVrZN7;S@(@t_szH*7kKW*-(1#x<CuKgX7r6%ca2zgZG8(4
56433 zudk7_=1kp}xCtm9zNTz5p}3gkaWTuoG0Vd-%R`t^984(oX8hQj@ndhskG&Z`_GYcy
56435 znpw>>vzk$}dQh`^P_ue4vr?E@DJ!!)R%Uq^5LqS6<j}!PT1;it-mH|pSt+JjDW+K|
56437 zGq};L)ONEx+s*Q9hUls34B}?<MKhZn%xqMx%tp-0Y%~~Vecx!-)6Hf)vmx4T$}<hZ
56439 zXjbz^vzj+TX3(_e?PfJ^H>-KO*}QKzt9iRw&6~|?-fUL$W{5<Y*1XxQX0}<)Y=|71
56440 z*334mnQc}x*Gzi3CN<+m-UUM4%XmZGwnp7*M0I(cchfrRtGrAjD(5woVMHZfQ#Tt?
56441 z9bQx4@L+Gm*`{?=^VaN*II~$teU*2M5tRes!QO~7V;<gc_J#+h5ob2*sOGIPjd)-f
56442 zQ8|#-m_|GpxAumIH?84Dtuc(KE|9+AMy+i!q7smLX-4&KHln&f_@x=u`=$oes0Ldj
56446 z9H0^f!xknKTbNL6VM4Km3B?vB6kC{3Y{8*c1BY4-9BMUisMWxsRs)Ax4IFAUXi%#`
56447 zgIWz5)N0V6R)Yq$8Z@ZYK%rIxg<1_1YBf-()xe-u1A|%(3~Dv3pjN{QYBd;8tHFR;
56451 zZiZm1uQ&5%y!s-bzQ!A=Hug0fpc?x|v$m`o2XlUnN5_8MT);dKm~Uhc^^NSIzL7oD
56452 zH?oKNM)pwO$k^A|43!eQb@B`IOJKec6Y3i=p}r9l>KiekzLBv9vfeK-=K+WMMmW?r
56456 zgz6y^s)tOd9x|bN$b{-46RL+eR1a~e9^z0v#G!hKL-i1c>LCrPhcu`j(x7@sgX$p)
56457 z)k74jhbUAJF{mD5P(8GQ>Y)`>4;fHBM3ME+B(c|Y^!L*LHN7>~&^K*vgX-=2yTh;Y
56458 zIzaUnes|5-b0VOg)0=rR_M9A`cIJ(&7<(el5Ppqy+`)+Yrf=)-FTcwB7SzLm-?cOL
56459 zoCv7rL_qm<fZC)teKYn?oFV)gTZy-fs4kGXFt!pbBPs{#PjMjpGL8BMzng8$uLIPo
56460 zz3H2=F9Y+sjqMD}hzj$%aj4ggL%nVs>UHB#uN#MY-8j_i#-U!fv6sbIM>Xe{2KBmW
56461 zP_LT?^}1<LubT$-x@l0an+El|Q7GD@P_##(XpchC9)+Sk3PpPqiuNcJ?J+3YV^Flm
56462 zplFXl(H?`MJqAU442t$vP_(y#qP-Oq?X93_Zv{nrD=6AqLD8N8MSBJm?HN$CXF$=O
56463 z0Y!TT6zw-c(S9Qo?KeWvej^m^w?ol>I~47=L(zUS6zw-d(Vh)Od$t+c)2X>&Lh;*J
56464 zvft2Ge{o{U2@Knf?-9T-f(6A078D~`P>f(fF@gof2o@A0SWt{$K{3J}iV^lujIf7d
56465 zggq1^?4cN855)+3C`Q;rF~S~-5%y4wU_vp13B?E|6eE~Wj9@}Bf(gY4CKMx>P>f(g
56470 zp@?V?MMQfjA~K<f$b=#y6N-pTC?YbUh{%K@A`^;;Oei8Up@_(YA|eh&L>!8UI1~|a
56472 zBBD@4M4^a?LJ<*#A|eJwL=1|E7!(mPC?aA|M8u$oh(Qt23W|tUP(-wXBBB)(5v`zz
56473 zXaz+?1{4t)P()-v5s?8!#Enoy+z3U)jZj3~4n@T6P(<7eMa0ceL}dRSL}dIP<b&TM
56475 zVAhx&f>~Lx>KP^IB;W!ePjN@5K`vzbQ}=ZAk@2sJv8M=zKDY9J%M0yVd$-9dJsfjH
56476 zFq+Cq@4bl5ue<V)@d#Y;-tFl91RXcNf-Xr7;7a2bk;^pNOTLQ)fAQ+tMsM5_Tq|Q%
56480 zP;S?<(H}3v8xV|cy>BLfMSo1a-{loY9r!FWWaBiW(?UV(**Z;+vtrS(t&!VWy%IqQ
56481 z1-Fyvwa`*;{8;-itDPM2RHucv#Eh516<+85A>UrxRCWh{*eBdCi=24`Q#2^D5W1pQ
56483 zt{|s0G&eLL^eXww0W=%UMo{!DdKTof43#ShWm#yWQXZ-Z?NWvV%CIsmG&}SO_!b#j
56484 z5;}*V3TFfjS0h;Ha|H|87-|u^po|O6Raz+3VGd!Vp{!7i(h;#%&W9PoUW7G=TPvT1
56488 zd7j^ZF|wfE1BHPRBu|YZ-`s>@|45!5MZN6^qq|b4N7;t1C>z6QQKQPPFo&q=&^cv^
56494 zViVneF!tb7j6OE!;ER~XSj&U`F`Wl9VjaPiu7k-3A4Crw%sE&ZJ$_Jsuqk@_V0SFA
56496 z?ZM9IWtB8`EV4UxAhzz{K#Zd*Cc-<iI%*)c9kGrbKBPHReJJrzPVAFIt%v##*&Jd6
56497 z>iD6)L!+^ShYW{W4mlt4ietnPh(p}i;qt?EaZ87v9G;7tKHPD5D6ZqM|KXTJBXL1-
56498 zF^8VUrN!kQnvE-stBf6u<HmUbS+l0zC5V#mkp%HhR0d-5O@JuiHW<X@8~jk}Eqo~T
56500 z_`0~3!}Ex391=Hpcq!f{)+Y98>;m9nJXROmaBw-cEA|265I=OpaK!h>$l;)PfvPiR
56501 zC@MiU9G4xB9brb)Mb4=v4#!3Z#oHYb93GBeIouUbo|9%vjkA~<W4X~79{}8bgV-m<
56502 zB^4f-I<k^fmo$*zkl>Xxt&k;KhY6CUVF5?`LSM$)#S`(e_~7_hWXqxSIMLz6!#M|Y
56504 zcBuKVUwnA@<4BQ;6{k}b9gd7oJ)$`B_(<ZBxx-kzJZ?Uod=Hfc@&W`J>V%S~rtLs?
56505 zAUL`}p7Vuuk|%!A9jSA@ct_e37)Py-Iwx?CdL0cp(w`tZns78bA>?T3QNxjug!rQ^
56507 zNSa8}CSpnHNvcG<nD&^#r23@Jq~WB3`26_tn8z`*2Ok`Kim;PjCdZ|yl5LZ-QZkcz
56508 zliA6WNe`2~l9!T@q>1F>B-^Cf<jUk=rKMs(>8O;Xl%!Orw5Qmn5GlUNP02mUkElBW
56511 zB;Vn={@tBIx(G2nkLVAdM)cp-&Lett8qx2}&LdiX8j<_zc|^b;u%-M}Cbi;WQ7dT&
56512 z>OKe;1hPK_h=m}ah&u=<q5uI!B0wNd6MO>d_$v@F<X=F*(5>iJ;J2`8Y!b1-ih#_4
56513 zQ#o+tx5#tg(f!TZ*@OSMRtBfa;Hcy3S%oMM)Di-G78DIdLqQygMuGSsdJx3NsF^H4
56515 zDXdiAlt(F3DdOaS{Rt@<q0f?^rW7Wt_75D8r1&TI1P|<=4r$&$b|4^mK1G-OFePSx
56516 z-2n$gl+u%$^{)Kg@FVd@Z4>%Z9;6n%%XpVKB1<qNl%~|Air!6qH!s!q-S&3}Q^VhV
56520 zo)eFvY0(wYjp^N))|t-7YL72x*rp|<H=UR~@ggNv#Z~E5jVe!7r)n^z?O5B1tP{m5
56523 zyicZ{%*#-mEIU~nQXLc%)E3ellpZt?(t9i~BjIHG$-xZu$;T&WL3{b{4ucUW%(TnO
56524 zRI87xGeud&nSNP%wdQznrYfr?Gd-(cU3<JDvmk3cQ>*UGntgZtnEsgE@rKO$%+BMT
56527 zkEJahpFV}0tUkp$C3#nQjCQj1_|nP#lVi%UP@Dbp%Bk><5YqZE(KIv-NH}SOR{dBU
56529 za8D5L!gm2p*+Aa_;xu|1XiXZv5b-2pPVJbSnOqd_e|RoAAUQTJokaC`ES{A$881Hk
56531 zDTxd~R^O9BT9wVz8x~h>iyieg#8nIP7ImuOs+}R<QHfD+AH;sI&5?qDQD-4z>+BC{
56533 z{tPJp4Fh8ftm*$no~#PIV+`2T{}(}ND|D~|CN1e2daU}(7_g`wfCJxC8g;?xC#Ur4
56534 z^3!vt8c$bdW2ZV#H)gX^JX2?nO`c3U<)^ManR9AT-FCA0)R?+IM{}k&r~ORld*eA1
56535 z*~>XK@7d-IWsBdN&B1aOv;A`%_9rC7CoBf~1vQ<T3QP^+21W+;1WX5c2a4b0X2;}6
56536 z108}Y5zo^B?-AMkz}q&2wVaN5PySxG%1)iA&Q^`8rn1MfpP!!3re(i;kCE+=Ey)^J
56539 z+<kWYM1h)pe*0AKX>*Fsl$_D$=*~2s=?(A<H0(>?R}k2|PrI-Fz1p1mGb3lFayrf|
56541 zpWm4`osZ<(oz<L+IoEz}FmEYel<#*o_MCOTDnI?4Q+`3dHn-(0Esve&mAiQMWu9$r
56543 zYqAw`!s4VTcRX?Iq&#=}q~e6#$@ml8gwn*x<oZ+I=bg^W@{-SopHDxTna>1$_dj2B
56544 zUY{*`FW`Kux-Q#4KlYU3{NVYCyqxok1vV!O^0V?w@(l$<fnRp)d+`Oa>W=KJ{MK^=
56545 z@f!c$0Pmoc!!P5j{U51^4rlv63sCwm1SFp<+e<q)er_h-Hoo=T3K*fc{ugOD=_lZn
56551 z!nVQzFjCv7S-_}Sz^Pfls9C^~)wiO)MZK5FfjT{woCTbk1)Q1%jG6_EngxuS1&o>n
56553 zt0GGhl6^pYz(3wH-sy1o`!7ovDpB;)XkA`n{&@b(5%v+;VLe#CB<3gQEA!;hUC|Bi
56555 z5_my*F{h}%X!K%9(Nxik3-K2#E?Hi3yjXupa>@TfTT#sW0q@5Y1-<X|zVt%I#r8|8
56557 zWbv}~h0=@j#iC;0BBVIHIQc?F5u-S#xU`5}tS@dt!b(G~wqG4CO}zT->QYH>X>Ms*
56558 zY262m4@9M%9|U|5Uoukqp!8YEROyQkay}?4S-N8LLH!5aCAF7ru5ho&uS9+@^1<^f
56560 zS!&eR*w^Hj6E&rpYE9cU)wN8`;I)!#)t7TLPc-vLc**RqCN$Y4D_3d18otcXl>Tb|
56561 zGFM~Jv>d95%Zw{3PAtxeECYVuTyF0<?{iAhYtr;-MoGU(Gp$)Z6dzX+*BI9w_wZ0w
56564 ztJf9j4CN|qt9GzFLpz~eEUPRpDz7YSDsL|DD<8XIbAu?Kx#4#swyftma-CK7=(^;3
56566 zH#%=Tygqbe>c-1!hU*j87p}EvEw#?SvcA@LZS+@8*QT#6lTTQvQwA_pjjDnC-$iQ?
56569 zH_|tPcoQ91W;&D31oXG)VAV<?2}YOEeJDT4<v-kZhk}5wS@2vCaO5nK2iAV)5MaBJ
56572 zouQ(wVz6>p*HZDMV!ra3uJ1#O51lHPfLtx>MnClWP;rZ)oBlBQ!@OG}-SUU!AJ*Rr
56573 zxM}-g*M|>p#eX<?lY1-Y!=*~wo8Gs|Dv7fXb+Vf?HyUp$D}8VH-srkH9^7<e_-67A
56574 z>l;sQ=H8gSdG*H1&6*J8fVYluvkf_-e_r*tYEJ*sKr=X=tvy$GPItE8ocNr7R*gFS
56579 zuCCs9xr|jB-FsO*=NfhghCJ)~H`H0z<T)<u?#7U(UE_ARJ<h_n;ZFDt+!^QK1kT3=
56582 zwCD-_L;W+ow|=q8GO97!F<Pp!j;^e7it36EijGq`MfXHMidu@!iY``3qbH+ZBuP^m
56583 zQ@ZsDRqCqvq=1xXDG&9ED$lCmTl0Z2LC!&5fdPRpf~*76gF=E50-Xa}0{isERU=hX
56585 zMff0)<pdxtLdd5UVh}LI4UvGf2Le{U$WCMzpvVyN-kcBO3*x;9xju~o0Yxr?fFUIy
56586 zU`QzlD53!YMXrK?A~!%lkqYF)wfkJJ?qV6;v!ZM=O4($L=1g-2Hu(!$3yA-Y_IH3X
56587 zPn!qn1sYf-(Ef?`Pt;vT;eYCW{vL1pkL~B0Uw$gPHK#78Ji9E%Hz%@6d4_cctI9s(
56591 zYaZ218D7*Z-(}pI(EC+&RXxy0Rz0m+@Gh1+RaASc<(?I-$f+u6HM3e&6;$nC9jnjH
56594 z^+5IGTO(CHcS7zY-f+61)5Yu5da)tFkbP^iYVuCqozAKkcOKk%cB`f;t~#r_q$;c0
56595 zP~Cb%a-&1ntn0los2kBu-ID1o3|@v1{lnYJ+sV>r9#=i4Wt|??9?P=f|4(Qk?cYTU
56596 z-TuSZO(dq#)>cm>rqL)&qf?khqcDw5VH%ynG#Z6zGz!z`6sFPEJRsKE6ErbMyRAJ(
56598 zLv(Ep4<Tnj43@DVejoV&#MeMT5iK=ue+_~q^0y$+k-rCFBlV2N3bjLl7ePI#p;1q2
56599 zEYLmZ9>f}r0;@`ldTN7HPi;0B%`m!dhX0E8S0Mgt+Fyfs7R)wkG}|aO+bBJX4r-&G
56600 z^5FDz`f-v^t?GK}?M6erw&;4^?H)sCmffiZwZ+N#Q(dPT48ylaZciH~ZojN%8s@7-
56603 zuhnKHswdSiva(NGpLV`E`(a-dR^@QJ;!fF}x(ddJ%T-saYAbE4I;w^%xRqRBkrpex
56604 z4b}!=4J(xfZ$o%xvLVe-a7}$}q5OII%W~Rv#&yDTYUlJWjTYHCwyRo8`fHN^W28O^
56605 z*+4!OU6XxFO7^Y(DA^bPFS>t4+AIsoW?3M=1;G+|4uTbRM`gn*-cq*Ag0f{6)IAp3
56607 zUPb0Bw*zk1-^r^DzTI)BtTz6(>h|EB+B@yH$L|c@d2Hyv{rt{s4PqF%y<B5gBdWHk
56608 z@vBi8It<UMovS^8P6SoQ-bSi3YSL>8ZZoP2YP2==)#WvvHN%;erv%wZHuIEsHj(Xp
56609 zJGHvDW};^PcFrADZF8;uj(@GXwj?PosXn<mxhJVT`C;<Y+a-6>YI|!(s@v|;?gDu)
56610 znJaCqovQA?E4dqxl%CX|JfDIkjilJ62yU~hNAJeo&8(ifTXeUg`o-PGkJul1-|hY=
56611 z{G+tno_8$oKD_(vj^o|MTFa!|q-QDe6lKzUN@7a3HusL?Bb(Z#8^N_swVonp(YUKz
56615 z(YevPPSY6Km{Dt6SJPPBXsBy%Y-=34n_kPU8>*YA^{!j^*s@mnv2)|o#uv58AIm<o
56616 z{Y>z&@-zR>;yzCOEc>&oALoBo_gUA++Rq++HvMtKXDdytkGq?sO(C_pA3thJZp#07
56617 zs!7+>RD1Q~<)*%-@p?wn+~*c|^J{DB1@(TlZS^trnY9D;#h*KW?p?3{Jo595+VT39
56619 zFj7$;(xz_Hv`n|vwsqF}w!Hk3`FZ)5qA&exu6|zkc}IQx=R==A`7*ZcVcXP~S#2-B
56620 zw)=eU%aSh*&DfW%Uk=n~HM5$<^+llOn0j4v#@CWBAAcSEbz-fuzW&R(=E7E5t7DD6
56621 zHlbNp-_hLA+|}y&b>7$7){w6ozwT{*(3;qq+x)b(thKIwuzBGNi~8{|9KVp(KmU5{
56623 ze$n(*`d5W}3%}_3;?XD0Urc`S;uFsn>vsKD745C<gSF+K1bx-i;`~+bSEDuUwKXkX
56624 zpTxF=v?P4>ynUj5@vD_@Y`!5{vfJ$1#4V+50c~-gWV9GsT0SXg>1!E9Dz156&%a)N
56629 zs(e6~p(`pIFCW)c>YB@EbbY$9vghS1x|y5Eb>>ahO-U)cwCPIimG;u^D}z@amn~lx
56630 zT=%`!ul3i)xK@j6ByvrsxJ(kR8Ae*Z>F@CWHWBn<;+xKIW;(*ZtLc8!J#|0)ySDD-
56631 zdyM<(-woUo-1EC%^xgQqn0uM`_213hE54_{-}>Fky_S3Z_XodO>PYOc=umgqbrf}Q
56632 zJG33O->SbY?qYVdep~TvLzkeV_uI~Ihq`<_9)A1y-uV5Aj)`w)zJ1vh*)iK`dvEss
56634 zW=}`2rmLf8xaVnaZP!rG;(hDh&aNl-+4sGBAAUHtv&Ku+S=crAtzW11d#tnWdzMD|
56636 zJL~SI?w;?QzVG_}foI1~#m@Neq~AaNej)gUXTRszcLCiN-HzYIbW6K~zANjF>(1J5
56638 z`$qHvdI3=W@Ke5VbR6L9n`eD=%mTAOXqY8tg;-$Lm^Db-U^XD$i|s`)Y(KUi#GzOy
56640 zSDzo^Y@Cf)Q@fF@Z~`ZQzs$$^h$Sw-1qcn_iF+X!wFiJ^_N0+cJ!zz`J!8axPyc59
56641 zhg0hU+-O~ZQ|mw6Z2gCut^aVd^&f7w{=;9d9mpL#aYzEdprc3<NGF3pLsAehTSyuR
56645 zSob*nAn%^(k@f`q5Pq(!d%58GPxAv7gU^0Q9dH`(8eF<(-4oN3{zKk9$DaJ2vLDLM
56646 z4c-&~P&=R)NdATKL;FD9K>07C{D7XCp4J}*^Ht{+J$*ksJ~w*L_lMbm`hl)r0{W1F
56647 zhXa$p#NSi)jPy+Q+1*P3`fkxDx|em|;l8-f?_S}+(tW>Qa_*JikG!ASr|L`p+4g7R
56650 zh6?V_|CIBSCNwu}C7gM0rWgBB@?$`+-A}Tg*!Px8w3o{-*Yyg1j1AR<3wq^0X7(z7
56652 z{qgQ9_X+p;9S%F%`_%yp!P4NM-r@d|etqwg{^tJP-r4?<{wW{}!T+Tje^@uD^^FC!
56654 z(Rz?3pBQeU_U7ACXEa+;XEa+-XEf8X9;^qT#{JhPHCs|AHE+azi~Sa{p?2}xQs*yQ
56656 z$QIQ3$aFfF&IM~s-s@A6H&Q1fTTv$?TOuRB9{Tk}%IHsX1IURCSFW<~M4`fPLicl_
56657 zt4vg))F~Sj%|EpbFn`wl+%Q1=-1YN=pZW&8e}4M&!hmAXV$jitC>kl6^49oxr%b0T
56661 zmmFDp<o%y_9A0x||B>clHN*E0Zyq*z_?6-J4sSVf<;cCmdp_`fP%v!v)83~GhAnw|
56662 z@YB^F4E~_{@X-$@e=z6pxeu0pu>SCk54L}B@YtP3_XlSh3mS(s?QUvntZll|^q_HC
56663 z<ATOjA6z>TJW<xT<;2JnlN<LnHaA}V;K7M`Csv-=a$^6{^u`Cr11HX$xN(x7%sF0i
56664 zyz*$#@%rO4j}AS)<oLRywa2#~KXknH_|2nJn|M?7=)9%@O{0!3Kf2-Y!vm26Wxq&2
56665 zP<5a_T61(~^h)WPzSVsvmu~4hr|;6zJ$={r-9DvdTKcr2eR&6F99Z;=!lQ?ewpJEB
56667 z+&xxutl}4=j*UAu{TB_#793moi<v*&_|siGmK@u3Y`5^_+TUlnugP-pm7DlFjU8X1
56668 zam80??Dz_e9bchw#aC#47r9QZ=-BZU9anrs$BwV)xZ*21FcbdXe*c*cF0sOBD=Un4
56669 ze1*|g*46F!+M*p_RkY))CU$&P(T=a3P}YsDFxvlDJ>c1&gnqK?C&L$&EpA-g{*#iQ
56671 zZCo_&?Fny>c<I5|(Ad&ra~l^n-8^A5t~?PsQF`p1#*HT`PmFKedE)gG3v1u4n^AY9
56674 z{N&=3YmQf)+<J0f{i9cRH54`sslWB=;f9)qDX-3aZQyI8UOn3|w_(}rDS3P5+&_8p
56677 zw3IYYX{l_fKYpiqZp+M;CC$rP*0pSJ3^ZBI?>6sfiZmZ;KAT&YcjJv2xfOYj-dNOF
56680 zb<=}W<3C(-cFEawr>1|n_U!hvhdzA&Z0p&ZAMXE%e-y1*IHr8eh?+BF7LQr;#-j0g
56684 z^{x9`Ti#f?VA;aXg?AUMf6M(=-l^u6?H9{0j%+#Ddad<g^Q|*SFB%skEoVLseq4I0
56685 zv*p^yRUc1idGPV9kKZ|Ur&n>W{U5JCo&NETj}O1Rq-S|i;H`l@t8&ZV8r5u_F8cV~
56686 z$G1)oJ!hTEX^xz(JvZ=N_35eSrktDCTzY!mxfSO&onC%!&$*`NinFuMb)LI-dc*nD
56692 zVz6dT&C*kOr>(XJ7XqgSTqwCv`JE$k=6<*3yH`)`I5Ydqr0<-av-G?7=cdkCH@9%^
56694 zOU;+AogQ)F(4|M6k<$|{v~~{YtUf*S!p+X9oeNIYpI+R~+oPw~v=8W9-TD6Mt?i>a
56695 z4|cYm-q$|4^VVh8>67hqFBe=Mdg}Glo$brpH=bH>`fmH~_Qv*(%i}K3Xuo@T$>sGI
56697 z{GDV-=V_;!C*A+0dGhzw?muVCVBD4&@uzg|_)|Jp{3%^Z{P|qMqMrEkIe+~5TzdTZ
56698 zoG<=-E;asqE-h}+K-`wz-|-3~Hzu+G3&fu&M#M3;ifP8)g%rowx`f&F>$7jOZ;Q{d
56701 zmH(?i4t1@TA2&Q)++>T-C-@1&#l;P|;ft@Ir|{GKv_N8OCeCWfZGO9Jog_8By6)|I
56705 z-^cXV-0R2Q-tffV-tfd%H@)%IO<#O<(-nVj!xMjR!_&1M5L@qb#a9K~XjQ<SSQTJ@
56706 z%>G!!M(ph-SA0!0<#!O}a)rRHtPr@nRtR3P>xI={wO<t;7JCoMWxr;>CO#{<fqiG~
56707 zh93=GH2B=^wyL)JwL5-PyQum|RpZ&l>uobSZe90YFKSzK$+})~z5Y_p^;y@KUK)6P
56710 z&y72udck!e=fZ%_ai6dJe9MKAov(ks|MN4Qi$1?`gLkgEk#l44g@(@eZ`9tH-g)50
56711 zq8n>3%<4RIWBZN6o!4))-MDkU;KGv5N0&nv)?O~VJmUPo3-4cUxIFv9{>w`*zk7b<
56712 zkCw07yYA%q2|wDf?#jCRl?Bh<oOA2D{M*;Q8~JY8>+gQE_FJKEm7bq*q4~m<3->PX
56714 z)ZCnWbKd!d?bTPNUYXxM`O3;Go6oOopL1pJm6PpDuUxru|BZ3yH@2^D-+p9#<HO^D
56717 zvG(f7tCQZC^XB+P+ZP=?GW~e*@!@YQnc6;W?V>a1&s>~(ao)w{SLfXF-YUAf>{i9C
56719 z{j}iIAs26aTKnm=^Y<=3`gFmkt2%<8ZuxXyN6DwnU#<LVOGm}0SHIf-)tNST$GA@)
56720 zTnltezgBXsvMr}$!L|BpGdosZTXJpPwe4TsxXrH}x}9@-@U_<4wYR5VyLo%j?X?}7
56721 zKI6By-#+|V^mg0rI~}_}8}Li-FN;1K^~;K1*0+^+9Q|zaXLCE+K3o3T#^ZIL?f$Is
56722 z__WVDKD+zv`-`qEdf;nGJ(Cjjb-IrD?xw_YRcv1@BmUp!`2Q#V8OD3vpVaSo*LSgf
56723 zB-JZp=PEUepBu48%=nr3Z<jc;x{;rX|8{osk0Jjc{@c;bKZg9h_;0($=kLUS+v1-S
56724 zlJG7m-|NO0fyE><j8O!wj`OZLnO$?}*^OA;2<yTU=Y6`)o$pKIvO+ErvlPyj$dQQ|
56725 z#E_zH#8MD_w9;<Gq3PRwm8o21#^2$Se9XA!_0c3I=^V>j-4;&BZFXC=Z<mdAsU&7;
56728 zq5DeDF5S8mO-O$;;x>tShZ(=3Lj3n*@!h7bk<{qX<EdAd4lST_3+UYHvavkpUFT3=
56729 zJ-ZP+DyCscB`Y#yrgAjG49a$xhngF7n@AcH(O3Xcc^476s8<&S&RI|+60<Z6YQ^Y^
56730 zEf=sN@3M$K2lg2Ll)Odp>vWy+E;`-Yp`J~ENZynTRQ@)RT<X=*3q5g3D&n4%;ARu~
56731 z!%#e)16|2)Jm8zeh?X*{+3o96VqMq0y5*HL`YcNcFX-FF2V+d(RMbtSj)raI=t{@1
56732 z<;<>H0O_DTB|lv@Y-JN+x@Y%M<_^b%*(|a9r=I<FJvxZAxXRl=aoPvjO4nvAgV+i`
56733 zNMD5F6xys0nn@ot-#&!rtJOfx26|gB1KPhBWDf()7)N>^Fpe`e9EYKCbY1Z-ZRvA|
56734 zh^|q`_brXHK2|RzkK^~2f#;3oksTrfw!zt@56~Z^<A!cmwRh^-jWG>lT|3}%pcjgt
56737 z(INB+9Hp>c!Q9uUYX&$zAm-?mswfmK#ewDv^E}i~5t>^O(tP56(4)*uB5HonX%a|E
56738 z7h)KRyE(T;k*I_ai|HZ-(P1ocKZEHY#*p-hc!C&1bCPuIG5mTG{1W*xrRz$gTNln5
56739 z1DY|38DmVPGXRaDXpVJ%ub(qb3VA&P*PGz_#5p4@uHT(Q-N&e1;2Ne~Bf02&VYgxd
56741 z5pXAgBZJbUdSz+1{IDCuHIAMYo`Z8=n7AuX-0ypg#5#w1?orND!1pQ2_lc~fW;&;W
56746 zyCh<cwv0-{9!ulI;n&kVo{zI;`}H*ZKSAS3LgVzc30a)pIC19WPF%Sm=Jc#M@51hY
56750 ztpRA9Y9QC;bQ!ramcxrHGA6jOuB^cnDdf70lta}5){Oq-70So8QB1?h8XTd$wCkbd
56751 za(<5NK43YYW;q7(6eDsdB?BioIrl>`Bn5o7;-5K^C&mFH9LbzwsB7mqv*J2Rk7A-x
56752 z@KyT#ucgV6u%=JpDkXEiW!-*^D-WezI3Gy|y~sz<LCm3p<3fxfy(g+5<_E2j@G(pW
56754 zmd8-Dy2ntf0n@%qjBXL~;(4l-Q=dD&7HfnfOsxzO!@5%|zDfr%XGKZP-6ruCOp2yu
56755 zC-T&{a@2h4Jl}J=?XqrN>fc-7dxyTCrb~~Z_h+i5^zTjZy|kYCeZrb>ebAYur6Eug
56756 zCh#}CgMn73ycc?d-gD{pqi8XzcSX>9l0^`ff$}xV1C#qDe8b5kFoyg~uI5>QPPd1Q
56757 zUFdhxuJS3SgGgU<5cz~y`XlUW<TGRGqp+(f>!wltmM8IK>6^MAB)pY(`!;1$-NV(Z
56760 z#WZmI;J&*|;iuEVxH1hKYm%Q%hcVrE)QIC+^r+nc^dp^4$BGQ-KWcp9F>uu4NQTiJ
56761 zyO+?{IpjT_>Mi<Ro$f=>vs6t>-*RYm?~->&s(-1rSG|sF`lc!!)-co)M2iePwy;hy
56766 zQ^%C6aID*NxWY@t)M#{8*YMg4#$tJedOAQoMS$K2JujhG^=@62)REmJ=3^-s?syz;
56768 zOd<ickn~GPOIhymvrut36J{`NeCJuU-gPqrcRKovo$f-vZ-iPf0V3t3H3PNaWJ0yJ
56769 z<9L_PzTv!Zcjw5c&lcZLIP;a5NoWB-IWFtAFQmg5));=$+fU)A(?QI6ngH*<a1~OY
56770 zf|~>_?3pO7IkdQsO0GHFy**yKWRk#9o!|L5c2CjHZ0*ca&N#R-#vPug0D5?C1A2H4
56772 zG&Z8Kk-U%wA`EEOM7oxD!}?gdJvh*~gXq8S@c<fVH-|?5)dS=Vt?BU5X-p+Ms(q4f
56775 zY6$MSb(yJ}&ywha#@S=__c)v$7j|6mt_0K5azdOv)*g?;)p6w-0DPl9F(ZsYTj*Am
56776 z>)g=uQ-B>!0)tt{xf8%^57567Gs8Xy*EjH*he`+E!H2$QlKzM_=-gXSJfUVKt&U1s
56777 zim!??!&3Cqx9i-=M$UQ^Ug<GORL+NzkpUSg&6xxW-?Y}(M4YZgokgP7>Ij^fL!%=u
56778 zZKOn9hhsq+J%i&KEq`an5Te&{9dSAYbskQS05LdUrvrf)wlCI<<fr=q)|b`wE?2_-
56780 zXmwo6sh&jbg&;o{k`H6f+~7Pg9rQS-lcnik|A9Rbdne_wre<5YLZoL*=_h>+z1Q#C
56781 zrA7UFc&_@A-ouv}dM{pP=>2<{q4(HMuF%hQ57a%<SqGDIO!RvC75cgU`yKh-215u{
56783 zUpHa_gd-ZR(7^jOnTz4vAq_;FRSi9oppQYX!+r?g;C3oM?y4~6(82zI>Z)+Y^&nXx
56784 z4UPc418~;LahHTKhT<n7EB<{N6*0J@pgR@0s;i@%@F0m<2;&4D<wrV4lN?8-wMbfu
56788 zlo$JFf-mj0j%F~*00->jYAwJVpdK8Qff?gCQSXdl^x(KP(P++$VXP&nC=|w^w1i$c
56789 z=%|Ajd;*%75ys#XP-o^;C8FL@p!NfR9iQ_?lhy70TtnpkA2On4Y&kLSbP7&?r)FcT
56790 z+df=FinZv``$nj3M~kpd<DCbnTqA2R#3emTLJzYOm2+g>hPb*8Les-6MdcnSKlDr-
56792 z%86E54^;LtNnEbCIB{5H$aNGoHaWnYev)<nznTjq=IjciX9#)6q0_-kBJVmNKRv%V
56793 znL?FW-f5_qd=jhDCCf!}9!1(1G9Ss##nFK}u0A)I%V2)%t=L1(q^Mgnx}DV3GRk_i
56795 z8_>dP)x-XQ=Z5_Yd!6bf>g;qs(fx<^D`{uw{hYvce@W&s$$Tc6*HHe5eT4ET)gLf@
56797 z%C{U)$GE_&O~VA|7T~V$<e~GkNNM!-9hD-Xc`TDIHAjdA5V%8G-|o3u2r&^Nf79k@
56799 z*O~+!o`-6uGQ}rMO;^w|(o<}tQ~3M?+DBSm$|A?Gh;gAGNejuVRo{m^sacyzIOw!I
56801 z$^4q4#s2Q-f%f=hK1Jb=^PptjlFT!bc|kIZC$nxcOD3}##;v55OJ)yB_xdwz=Ujc0
56802 zFa>;{0=~Dwxko#f^<Gv0IA-EWhJF>4L)LQ@NkN=x1Yd>UuEYCts+{n%efj1fq{A3P
56804 zY)RV}&)6jOpwi-Z5p)zjF~fUP>icLEbtCv~IffAR7Y_O_iV}CM_%}u=Xsi^(2R@Ng
56806 z4P(ygp{i-Q)~KWEN~5kZjH;`c6s<({90K1Uhi{BKdxA4SuU?;`ox?2UyweV8;3)bY
56808 zLiAbSs-adP_zo1NqpaitHo)1=snNRi65Jq$ZHloz-Pgh@1Z^$pC|RTjNLf^j@(U=l
56811 z6e{`R{uJv0N2$t})|re{Rc9(Hb*9r&D7J;p7w+sq(PA`l_XaZ;?w>j84-@{6Gn^aI
56812 zae|H$bnxA86@$Mz!u&8DJvR!YybfzYMe$p^l!sze(&Be~F<-1Xlhmh5i{A;R<b@hE
56813 zN&Ty|`1eYbycAywWrW2{(vD6)Ov#H;Mp)RX5nrDz^r)7o`o3!7Oz+OrZW6v*T-s$_
56814 z^?DDu-ec%7srE4ChJFVgdv{LX8y~($u6Op%s)ru)`uBL9)1^rWyE{pf{C5sz2CRmC
56815 zyAi#g(zWOKGPH?~FrZT>hE%O{pl7&7QD(rqY3Ds~c$G~euv1iR20PY-6;;nJ@4iY}
56819 zdl0(cl-9)hr>sKR%83!@jWzj8d=;@Y#JL+yXi?o!l^g1=sVUl7VodplmetMO=|&(1
56821 zfz^1IZOm>dbvvr`QXc(WUT<pGV{5BjEk-#>%K<GX`ErskC;9Tn@TI&7qnz|c%170T
56824 zA3cjWc|l&q5oa&r>{U3MNJ3MQ5Ym_$jY-nzc}kVgL=u`vLLJfX=B0g|XvH|4`&4>P
56825 z((@$zAx`H@l^*h^GO3f9DEX-ztJ2f_vHUbn=Vg^X8GkCXVw}$9P(Ltl<9x%C;K}ko
56830 zp?4u>H%HZOatxCgL${HN6>DRd#2C7b^xj4tSGSSg->75gHc~O!JwY2mOr4vw8|<QV
56833 zF-Xk<M;*4Cj>7vE7<)RZ&ke^Pwi`tYQCtOZ#9@o#xK*PLXHy(`MTkF+Cl&97_)B`7
56836 z%ZPFD+$E;dQS*ngBq-q3COJQq7QQ=!QAW(%B=w=vLcX+~C>bbJ(n1SUbHf@lNj<8x
56837 zkT3Q^m%+M`ge}!GQ#-S|&N#R(MY}HX6iYobwKJ8A^Tf*;!MV=yH<hc|btca_I5)w$
56838 z)qU=aCC@oHH^I3D&h>dY*K=?^2lOVOH^KK-x4imaH`D*RRWBp)#vGJK)rgau;T$0i
56840 zdMlohKzb^^AQ4kTin^~-<#9YhUS**j^mvz-Kt2|dS^p&jyh@E<9g|k=sb~#jriPgW
56841 zKNDOl-}9$@kn%aopLKt+6d!|Qs2*Y}J|wkkBaACisN2p0*QS8^CS=yVPF6{2XGteL
56842 zPh#-57`pdKI_ZBg40>Q<7ZHd#vCcI*j4|Y!lAk^g=&_O?+~HC8W62NxWmw%$CBMi0
56843 z{YK~aEtn3*h8)*2bbIL0Dfw{&+Y(2OzK^s-nS%CIIN%sF0jhcqrZtn$;+TYzsU8Gl
56844 zRhL1fh4H1<LhM~SY9iFBA9yr6nmG}>rWWCFG#uv?EsTGeJ7BbPt-fG?)ip`eCd(p}
56845 zh3M=;d78v&UrXj!wC<AoOEPOw<8owOsR0U4<_-KYHcn<w9apOXZ9RIvG(BZ4=iRHs
56849 zdjtK=VYPQv$Ab3{9Q`VpgS#|%w;)GX?<n*Rv1j)zq`mrd&qHFR-F`+zhi+}Se}sB1
56850 zjtF>f1@{+`wvm|R#|eHM@v{_Jq>U)~aLiCKLPdbC1IutBopM9(n)-CpL0u*De0^@*
56852 zT088zF&&INIWD{#!Fy^`n7)&#DzmNwjKRCFUW&|=uGBj>lf+=YlJ<pnH`u-u26IVb
56853 z4Ez_*VFs3WJdBV<j~czpk@1f+R3fr<TGfY5jaKi5AYVz_x0|n-gfA!f@+5q9S~CeP
56855 z)?rRmV^!tA(Y;HlGB=!Qby`(2-ELMAzK@H6Wd2TR4*RjXvk|WM*gsYNv@hzo{OuJb
56856 z|Kq%j@}0-|6oo&|gOYg*Jzv^}kMjcx$M%K4iR{^RF7t6>mlO4Sukw9@J~5_Tt=FHk
56857 zBsx`fltj-75je6#qpwGM5g#wOiXj??XcBwI=xf$KZC<g@kcKCrQ4zhK^)z5_FV~cH
56859 zeFo--F^A3~=-{fX59uCb4xL5NSsEQD_+gA8uT1n>m=5}?<Yy85EP@~Q^8~&0S?4bR
56860 zFo3})3T|{QCouUJ5FjS$<UKANSMSE0Sg?^^Fb4a7ef1mnmb(66<l-J#MzcB(*_XmS
56862 zWP*zJQ|j+wCQzEMMe?OlIAaPm4URlMp-GH7w2&`_nkbT-J4=k3M1)CN6VSr@7&W4>
56864 zbsb>&p-1YP#PUP`bH;=oh;d0zc`Suv%SvluT+*{7^eWD}A~lh(oP9)`9P9i#Tm9Yx
56865 zzE^Xjv(Jb6y}Hhn`1P>tXPk4c@V69xWnJg$^`<r+>=@-fA^LvHE{zLZvvuA@gM1*O
56867 z>p3*KJrh0%5p^dMXmy8=t{><L93Z$?arRw+7+m*L_i=#xaqE5~`I*|d(7z-<6UgT#
56870 zp*-Qdmk#M*_K^Hk%;BfgLCl%2nrWQ*>KK)OIKrfS(03u`$Or9)>0kzP-aE&>i|HsV
56874 zO#d|orsD)1_AQCwUw1%$m=614VqVEGd@URUW7v-+oz4$>cS57dFnlexMlwvl7RCq8
56875 zRQmockWR;NEJ->YgApb%eOwr24jmj9#-60p`N4>EdP5z<aq7_N7>-`2mxKIZOgnUt
56877 zoux26Tgfh0#c&Rj9jzYI$^2CHXXlQ^M59osq@{jArK8Sj3YMPYi!-T8OZ|ch%ZpJ-
56878 zOZ_qn%S-X4P)SSu>J0OR+1jx-L?tcci&1Bl3F`r)>YKorFV-2%{3>5+ZdeaAEvyud
56879 zH&c3m*+iv<dVp2Lxp$-VK+)1D?$cBblw{abVU42tadjsZNK2s(U$wSKzB=mgg|rkZ
56880 z`9jNMRPu#-plGSQlPnwIn(N#}QJD+oIF&EdFGWkC4qvQaj5>U=ekod9|5d(}ypT3o
56881 zw*c#`lRF`*?o)<oRn*D$dXL~_dx)w}hFqGw6fN#sBwr3>!2OKmi@O|34-~5Iw}ok8
56887 z&R=w1ON^!7$IITx?xK-hjjhn=Jty@ybo9S@;5_%&IeQRi58~`0IK#g*l7cv=0M5Ld
56889 zt{G@^weNN0bLgOcAf|S=avls}YJE^W0?)%k%)>*@1A3U+U#jzfey8?}`aGz=i-Ell
56891 z5BRqz7{b&#phl!VHwWVcogU3<PpZxXV>lByba-5*WCQ)LDR96~$2h?BRb`2BfW`D;
56898 z5alGQuD|KEB^h7!o>TILsCq9>(K0}byCb-+2YU#Z>)<+_K1bY9!F52`VZdGhuIs^G
56900 zn;e(YKh?wWq<FHPFL^JBJ0_>Ap!JV?DU}}UpXN{Fk{)-QG=Hj#lk!mdr*M`Or#e5C
56902 z68B+F<;HlTN>lVSF8Nbk55^^bs`H`fsV-3R$2ip=%5gDHb&e{3T28v3OV(?`?hWb(
56903 z_F1^EdtASVyCS`FfITYim-Oxd_P;cL8rRqTDSF&9<DN{)gK?^dljCBX>h4tjRCkuF
56904 zmqT5me{;rBBP>1-VdMBrbE&n_-s@^fx#6+A1-{`%{C}zSv18h7!$@B)KCJ3_w&#r^
56907 z-Mg`OM{Z;9ySX<@ym^6=!jhpSb$OFYrspj#S(vxEWOd$=lC62yOZMldmbBy#EV-6H
56908 zq2yuy!u*x_8~X(F5A`X{zuKp&z+I42P+m|~Fuu=(g86-B6}(%pz2HDWb3tdpogP-7
56909 zcY2ieS>L0s$J8Ekdo1m-uE+a5_VwA(qrJziLZdKPSX?-?u%>Ww;q1aCg=-486z(ZJ
56910 zT6nJTM&ZMr={*a34(>UsXG71KJs0&{)pJwNT|EyQt4g+&94t9oa-)yYC(@_9&&WQL
56912 zGP}BOefF%rGqYFsUD9`5-|c-5^=-|5(D!CeK^e~(Sr#oDP&O)OW!dDMon>=#&Xg_B
56913 zxmUI^H>YfOZdF-h?)0*b+~s9=bGPRn$ZhWD&ArpFFfY<?XkJBLUEb8Zxp_<b)#bh4
56914 zZ+c!+UVGlHd?P=YUz|U*-@^RK{Z{8M$zPMdC4W!;(fo7yH~MWYNG~WX7+f%_prK%9
56915 z!J>jy1)B<X6&x-&TX3!5eh+VtydDF3jObC{<Mkd3daUTNp~sFM2Ya;ixYFZpp{p=j
56916 zSXNkBIIeJ7;k?3Sh3gBq8LP@Rm+dV(S$3uDe!uj7#r-P!jqf+3-{O92`)%uYu;1B!
56917 zH_DCjNO^hr$nr_$bIO;MZz$hYezd&3{7!#&|APKQ`q%cK)_+0&RsFa0-`Bsn|JD8v
56920 zg1PqxmFDFQs>&NNXhPoWgJ$Ke81zowj=Y0;ErZtQ-5s<eKRW1eer5i+{Au~~@|O)d
56922 z)MHkU#XVLVs|G~|l@A&@XwslLgO&~2Flg7Hql4N9-5Km2TrhaZ;M&2{1}_-AYVel9
56923 z`vx};zB>59lYu8oo~(Sb{>hn7E_rg@liQy>^knOkH;3>c(IEqdjLMokWb%-?LzWNO
56924 zIAr&b#vvV9H-_Aera$F<s_?0yPt`p&J-X<rh0#q<t&SdkYU@+`pK5vP+EWj+2Mi5n
56926 zhYidv8CIQJJ8VksoZNSE*XC}`-8*bvZriXGxsUP!c}00c@~ZPD<;@zlDR1?#J$bwH
56927 zj^wrGUC(=vpPFAVtSNtF{)GG)iCE3wnSUt%O#apUdoorFrWedNRt-Hmw0-EEVeVlC
56928 z!-fp29X2gAbl8GntA=eEwr^PTu&cu!g!T*%gw72w8D2TOe)!DcOTwduuM5u{zCFBZ
56929 z_@Uvg!*4##pN@v_KRqCl_w=a9h^Hq%J@@J5krhvGjO=)NcckU%#>m~LJF=or-_5G5
56932 zlXEraUamVgC$~JeDtCPD^xXNm%X8mN#A<G5?wvd<FOpX(V>NGG-urp`^jOWW$)9Yj
56936 zbtvmh*43<gQFk;aS{|*6j*m`{&W|pSz8l>hJrHe<c1G`HTiKE9((H=ty6mahbF-Ib
56937 zugiWvdtY`_c6;`%93v-~Q=Bt2rzU4|&g`5eIcsvZ<m|~gnsYAaM$W_B^xVSS!MUSy
56938 z8**pnF3Me%yD4{9?%~|Cxz}><=Xvw;@&@FMFjhUY;+ahu+n(8zvHzK-jE-kIgZ!C$
56939 z!IH|<;PA?#;FQYY!FMXh1-AzG1{*7158kX?lo_a8lQ|@_I&)Iytjxug?`LkVJdk-L
56940 zvo-U2=7Ugbs30`3@=Rz#<@M0Q(8|!p(9Y1I(3#NH%12>$I44{lt_qJ2PY=%zFAu*P
56941 z-X1;>ZVq>b??kLfBvKlwh}1=<M&?GAM%G2%kL-&yMcN~`vW%=?R&mzQteULJS+ld2
56943 z`s~-U7i6!<-jKZ``(SoU_Lc0rIj)>&PFYT6&bXXuIrDOs<*d)yma{+SWFl5`L%AhF
56944 zGY={Ql_iyxmGzY~14k;C1g=-EtK43BsIs;4X2!^8dB%)qqZuoo9q{a^XD2^9_u1tc
56945 z_nzGt%z1Wqu<F^yXFHy~8(d!H4Q{V03^rE{4c@7$%ZyY_&#b6gm^rm-b>`Blt(os<
56947 zcvW~)cvtvv_-y#va}y%oNM2+>WJIJs@_J-JWJP2{WJly+q$P4CayQGB70oKks>~Xf
56948 zH7#pi*0QYiiCE3*$hsZn(NMHR#%gqJbZd049;?~a*^{zo>9LyqAScyWRW-h9M%Ch~
56949 zwN=}y4pyD5y78RxT;#d(=SDs^>A5-2EqiXmbGx29`ds^ScSg8J6pR=$qISfz5er7F
56951 zksC+u9@#juW8~czye|~KFf?<-3w19{e_`PZt6$jq!u}UpGFx7_mU;Juhogd{N=H?V
56953 ziUdaQi3}Ot6qz)-GqQN}y~yV3)X0%YYvg)$QC4d8@T`H=<6^OzwJ;W|)vsqAs$TSU
56955 z@{4m{T>j$57k9td_+rP4cWb;gg*8KK>T0IfEUZ~wv$bY_O-s$SnulY8V@k(VjhQfJ
56957 z{iQ`Ot$FGFmkzviCUe$H*E3hY^r$XWS5`Not|9Y5-Rw|7-O|v=x_9e#)*Y#9tGgZA
56963 z6E<X86Lw{mPB=QDeZrmB+^-d6u6u1r=DyczGuvOA_S%BiR=u|6wSA$Q*P27KU%MJw
56964 z^V)-kKtoCBTtj8(VMBemuwiC+RKt?+%!YO0RSnz2yBZFK&o;D%@5f@b;bvsSM6SlF
56967 z%0J#eec~1W@`?BT+x-Xp&HhgRoq!dHOiB+_1nL4)19JmQ1M33s2lfS;0_}lY8Ae7h
56968 zqc~$|Moq@#jM*7WGS*~l$=H)|G~-;xjf{uE^k89daBx(xAviO*D7Y%PDYz?mICwUA
56972 zo3=D<-Nc7!`_h`y+S6{O8|lIH;`E{EHR+SnXQwYoUz5HieNXz)^mFMq(jWTM{e}L)
56974 zL^H}VDl^7qOv{*;u`FYK#<q<887DJ3GHwTXFcd5a4iDA_rv&E&-wCcw)YV{H@MiE)
56975 zW+1aj*450_nVU0r>vc6WGBhDHBUV?9Ri4g<`<^=!)4i5A;w|-7c<a1Vy>llPdzX6G
56977 zby4c7)J>_oQV*w|O}&<SKh2w#mo^}6L|T2?>uC$pR-|o6+mUuKttIVB+TC<ldNjQ(
56980 zWL(X-7jy@6g5|-g;P~M5;QZk7;Jd-?!2`kOU}x}7rj;4VEX}OQtjnC5Ial1Pe}fr}
56983 z*+JuZc8DD^MzX`~u<-&r!j2fD*im-O7|o8eCgVkRik&jXun*aXMlCzT{*Unz`-rs~
56984 zW7&Cj-gudHvQA?>yTU#(USXfIYsRbWI{VysjeWtsFeb7u*;mFS?&2xNH@Js;jX&V2
56986 zGX9eP3I7vgE&n$EuJI%OJ^nr8UH%sTZ^mEqKjkZo&3qMKWo+ZC`Cl1-$N!rDwek0S
56987 zBY)r6!ME{k#y|1D=YMbP<2(5-<DdC%zS}s!|Aqg;_!oYZA2W{d<NUaBl%L=yjAQ&1
56988 zZ!sGA8Ggn%$<Ojj#wmW8e`1{H*ZFm$o&OvEwQ-UEhX2O6!vEc5#wVs_TE-1CWDYXE
56989 zFrPGsGLQL;`3y_5Ub0?d>DI5UUo*e;&^B4Xwrv-S+HTv!a_m$)o#ojXc8K+`BX&0H
56990 zWf#~5tdHH-?$1i?C+sI!e|wNUj191-+tb-o24^|OZ;XdVdi>Fuhl&3QU*W=UJaNDA
56993 zo5C+`wwNt80>V4r7BowQk22w-OASB!GvTQ&;i=07{SVm>1-BK#Yi;4RE5-3I*k2fK
56994 zwu-G1-~J{0OF_Astrj$Y#r{fgSR*{!ihH(8c=iUv$Non6H;el>6aKwJ9RGps6xaTg
56995 z{Zz!vF1AY`KVv@=oOcWFceDS^{<nynJ#3HQ^N;Kwg=~A-UP1FuY@hi2&+MNCzF$NL
56997 z6^|KDJZ89vnJePkPekOT#3P4^$hj^)e=g#O#p8#G`1w*$-eR`||F1+WnekY1bMene
57000 zd<-8W@LFDLg!oG$l1&lG;{^YgMLb&~o?j7?*YkQI=d1ixaqR>V;V%9fe@)D#fj0=6
57001 ziF~r)_6`0Gan%$)MSS}Q{13!cQ~6Xe(?8^YC}f+)r-{#hB=Q31)A@8GLu7~74KM#D
57003 zLGuIt198=2zF3U=Hh)`iTf&!!&;L#28e8O=KNU1f`BEX<pYcBvl*{-saqWNS%f+`p
57005 z|DS^MR=!nm{$KomiLu@nS<K{r%m3C0$8(uCp39iXWx~(-Px(*9x4T4Mv*UTq6nX8S
57007 zkq7N~9yCQBJS&io_(y`KmA8t|AM<m9|9O61aBJgjg8v2HE+{YZi{jf3-XT6;64}!d
57008 z+4G8!`4f>teeoRX6FKy*p!pU5mEdrX-xH(!T4Yr>zt8UrNn*Lx;{VS7U2uNL9|}JI
57009 z!T&?hKjM!B{crhi4VNiG&oJYe*AkgGB#vP-Y%nuoM#Q&SW|sIIHM0$F=9oE#*UU9@
57019 zjbyfw%r=tQMl#z-W*f=uMl!pR%x)yJ8_DcOGP{w?ZX~lC$?QflyOGQ;B(n?2>_RfT
57022 z%poLm2+15mGKY}NAtZAM$s9s5hmg!6AhW4-Xoi@Pil%j;SqhrbO`D;i4sAq1GrMX1
57024 zUS)2oymD@-8k&Y?;Zf!m&`>O|N12;nL$NJ9%G}a46wB*T=9a3Vl)Q2lQeIP;g<nIl
57026 zvNR3FqcKIYR1L-2VTxpa1r3ujNXeuOT#+nQL-A-_ks+X<nZ#&ZkwG0z${<IxmC*tU
57028 zM)Z*x(MM)PADIz-WJdIn8PP{(L?4+Ey<|r8k{QuUW<)QU5xrza^pY9TOJ+nbnGwBY
57029 zM)Z&w(L-iL51A1?WJdIm8PP*#L=Tw}J!D2S$&6@{8POy&qDf{%lgx-FnGsDgBU)re
57032 zM1D{+qMEq^guH4-j4G&{TTnyseSn$~0~$(Y+Ax`E!=${aL@rVDq?*sD`xZ4%W+^Cj
57033 z-=gNph=Nl0Eoz=r^DlMZ;vw%_JO*{&qUKaJ_fb{aB&)PZR%w&0(k5A@O|nXxWR*6_
57034 zDs7Tg+9a#AMOJBxtkM=)r7f~bTV$2C$SQ4-RoWt}v_)2FMpkJ?R%u37X+~CQMpkJ?
57035 zR%u37X+~CQPF877R%uRFX--yYPF877R%uRFX`8IlHd&=@vP#=zmA1($ZIe~nCabiY
57039 ztXU>mvrMvPnPkl}$(m)7HOnMxmPytui>z4|S+gv%W?5v-vdEfcku}RAYnDaUEJoHW
57042 ztl=ZGhL6k|J~C_g$gJTbvxbk%8eTGMc*(5cC9{T?%o<)YYk0}5;U%+%m&_U-GHZCq
57043 ztl=TEhKI}=9x`iq$gJTZvxZ4#4U^0oCYd!%GHaM*)-cJeVUk(HBD01?W(|wX8Wx!~
57044 zEHZ0YWY%D0)?j4TU}V-{WY*wh*5G8;;AGaY$*f_MS;I|c4L6xJTwj|t(lr$OuaER!
57049 z+-H*UW|Hw{lJRDe@n(|oW|Hw{k@04c@n(_nW|8s6$arI9yfHG~I2mu8j5nK%H=B$%
57050 z_t(Z-SVJA!95UYYD0FDm=T0)-=!&kcbIFdMjzaahlUxI#V^e*OLp>)`V>4Spspn*B
57051 zY^u+lsOMyA#H#CD)N?X5j#YW7=VWShtIu($HAgkNqY6r`IjYgEK6j$l9Mzat*SV-Q
57052 zM>P|u@=|M#YJO0k<4|jkYJSL4P-@Ll%^K=+Cu+@6%_ZtO7q#Z7W*AjoYRys2JL+>B
57055 zVHs?)1F^{t#3nlso9sYrvI9|{M$z}1K?S8c5I5O@xXBL0O?Dt|vIB7$R0pEo-DW5#
57057 zt|R*geI1eNHDt8tT|BODYX6|GBT~IaDv^KH{z0wXRBxpA4><}-^+sy{p!OP6Z{#I=
57058 zBQMz-dCA_$OZG-yvNuxu2feGn@~ZuVz7k3G8dPuOA$uba*&BJt-pE7tMjo;^Qu_zJ
57059 ztHAQA{e!-iN%b03Z)B3akxBMOCfOUAWN&1Wy^-2K=v@VtSM49@)ljw9pn4;V?2Rn4
57060 zH?qjy$Rc|qi|mcm{z305u)J#jK(D>3y$01AF|s#eWN*aC-iVRC5hHsewX4v34J@zP
57061 zRnY6dY6n8~Mx5-8IN2L<vNz&nZ>07bdIy3fQ+o}14O;C>sNTpXdn23djcl?vQacd6
57062 zFTpaX9SFS+u68R_Z{#L>BRAO_sT~OYZfH<JsoqHKOVn<K>Wy4vZ{#9-BfmlQMryZ`
57067 zcox~=S!9Q2ksY4e1?jyJmRIe9=-*$c9TU~zF|xyBWQWJd4v&!?9wR$EwF}aFBP_4l
57068 z1<}9uP&+27!{cO!$H@+llN}x>J3LNycxrE?cT8AbwKt-FaiaE7REKAi9iB~gcsAML
57069 z*<^>Oc1(I7g(XuvCi+(|YIj9-cy6-8bCVsOo9yt^K1%PduncM+MgQ_f?YXE9&qa24
57074 z8@r8Z;?peSfHA|EZL}FjjqAodW1*nG%U^d*^NmZ;8{?SE*vtxz34-FRvB;P#sAr37
57075 z7saoeZSeHP{sH2+!e1$ljsBD3cs~#{cpx?Xj`-Z>zZ0h!Y;gaGK#};oH%_zIUn7p4
57077 z{zk(UIGGX67?`mlV@uFwxYFnPR|M(;OVg+N=Nqn!@{G+H`-84vQE-O%Zlr%wU}RuX
57078 zU_xNE;ZCpiPfefXpBHG(sLa?GEHd1IcQYdX8-eZV)qw;4X&GfkYGx>NbLRfg#?11}
57079 zvzfO-`!Yv`+@Ye-StB)A7F?R~FjyIE$s8FR7hIoS?ym_>3vM^kf|G(<gC_;ufly(n
57081 zNNuDgJR-a|+!UD>SrEA%?ue|4Y{`oKt;7Dtb(X=xEW)C!FDqwHuz~DpR?WW2X0Vy;
57082 zJ8Ta7F8e;4&)#4Q*qdxITf&yIKV!?;57`R#=WHeW3$}`_=0e$~-wc=;W?^jaL35D#
57083 zq+KVt4`uFd-Z9RD*pqCC;9sHfpZnMmR<jMUJyh9FwwE1ZzhJ-QUj9;SKS}<t{5t<P
57085 z$BZiRj~O+_7;zjc{xRbZ#6Kqd_bqXJ+gKuwE5tu$tTg_@V6mAAzkY%}A&#-VYPp!v
57089 z!;A`Xe9jmljxURU%y`ZCo;WTt7K`J5Gkz$Je=hzpW0kR{TQ5--HB4dmzDA1ht8$?c
57090 z;Q@rE>@H2sWpl-6N?*(3`dTTDu^o65d+%~~iCr>GK9CPIJPF<LpYfj=ZsCEkJv84o
57091 z-!_=}59U7z?G#uA;`n#gPI3I1wMQKP$vPm8zp##q<8iB598X(k#qqp#SsXvLJ{8BC
57094 zF8>uO5qeKIGYm7X{nYsWqh@^nQFnajQS*0fk2;ZEQh-%n`W?r9lBhSn68|!d-->@h
57096 zZ4!G{n{nHiaod=2+oZ)ZrQwd-!;J4i?TYU^%|+IX?K>UYO`6B|i{>JO{zCZ2FWE0e
57099 zo2A5UmKwL2J04pp>@D_|xGHA3l(^+m;+9K^?=zkf-)Gzx-(fr@Zn>2B9^wi6dE<MC
57100 z^Y|X(T-Y+P5BUCWE5>&H=J8#>d3@Jz9^d1ev(xOfIL7w)=J7qg6FYia>{Irs_#E2>
57101 zpU3yV=j;v>9Td;wd4?6=n>(>9w-w)m+u|j>k2sdaci%4OB74VkY+{#fSA2i%#Ln8T
57102 zxc9i?yJ_2e5}z)P-{Id8NNnF~i~oQx7N2ALO}o1GoBlEXvH1K`zDtZA+Z&qmJ$#Qi
57106 z+og#6;ix#qvK^0SJ08z=Jf7`%JlpYjw&U?^$N#_5t_4hr>R4CR>C-*4>??p8QIVIZ
57108 zF-Gy37!i$8R6r&7Kh-@mJ+o&q$)&&jnNxH6Jge%QI$hI6wR9r#JDn%0^F(!?sLm7B
57109 zd7?T`ROgAxNxTwO(A&7I%1l;ehE--bdDDLtSAnMw;)4<mSEkYusD=wt@9!^DnTa)A
57110 z8KmVZe0FjYsGI~UCjsQ-`@r~J`|d6KMkRzbenjc}^&f)Ntxn#W|7(0+2WjEdJMvkj
57112 zrVsU<^fr+e_fC47$c%d@y-g&?y_4Q1@-tZ`<Fk7+z14TpTbV9r1Kk_wO-iCnB2f!d
57115 zN+QAbU^~ij>q-6%<reL+Vudo+K*rcwefxMfNEf^475bKOtQ@u%q${h^#gHzn6E1oM
57118 zJ{Rsuk3p{F!YJhKD(+3N&)yWbGCejqTIuL?-N$r~a&dNZJ&2=u`)lpotI|G1oklwJ
57120 z#L<7twA@%~((O#wpQEMgv-xsMOSY-8&V6H&w&Y4Gt<|-%v^}O|R$^*gdzh-Dv=*C`
57123 zYtk+EwKI25MVI$<?nCaLY?t?>zll>hxhcIP{avxHFYS3L-4xOH-TQs@($^d5veh}d
57124 zNm|^wKgC)iH#=S3m1{w_ypBwdVkyOTqLg*wfI>;qMOlR&ccxj-z1EYjxZcifu_d(h
57125 zXct;o$~Eb_OIuk?wcZk}H*aYhe6988-B&NtZ7ZdhwyvwvOX)6eK=E21>#JqDa+rLd
57126 zy870A7uTBp))Z;*&nx@$@9#Q?a8Id}mAr_)fbWLVJX%1*=|;MfYUmzXOB-klEVegj
57129 z7mbW2nQhUW=!)njq!*iQ=G|y{v?i*LUO;+V^nNDH^vVp)jLXcRC^I|r^~`r%p3D-n
57131 z@gP2ihwD>>QG5cA<#9ZoC-7-p$4hxRui!?E-Y?}*`L(Q*-^hA-OdgjF@}|5c+vRQ9
57132 zA@9h$@;7-u*cI%tfjz_?iV^E;``P|>fIZwEff+o2{)8*5)^4cQZbr}is_1XHV#}B5
57135 zhQGwH@OcVP0iMZcf-;?_<MUj!hWQ%42DMJIutn|Z_H<Z5t_8-PVUgdSX_4PfwNvr=
57137 z<9Hm#W;~ClEaq<lM(#8|4Wn4cbtq>kF9j~=<-irZ0@%on7_CaFq{{f5A9MUTC>sPe
57138 zJ?8gK;9K%85VMOB-4*Nt?g{pwZ-IrRV6G1V9%=^w-Ap?P3@En`S(T*XJrvQsl-qx0
57141 zbyRrjsPNQL;i;p-Q-|@?VLWvhPaVcnhw;==<)K+mz1CB&_0(ZK@?br6WIc6cJ#}O~
57143 z9-4S)?4iYVh^KGj>6>`kBA&L0r!C@Xi+I{n=4nfrr!8fkI?6odm3#7)d)iX&xi|E*
57145 z(LyrO9nk~P(-dYT>WCIcD>J>K?UapnM)RWUqC2ApGXpYp(TkZ{s)$~RE{+yOOEa@F
57146 zV=|XTyD~RtR%F&?Hf8>T`a9S?eHg$Os8`8FE><wl&-<2K&R6i2>Rs|JUZ{R0>a)VP
57149 zD{_%sB43mF@(sCM{zI;Hr~9%{zAZP%jq+U=H(GuyKa&-5x7;K5$}0JVtd{?gHHrVr
57150 zlkz)hk{0*8OxmSGw#aj`)kQ&daZlwX*(NW$xTf-<d@Q@=Q~6Bxx+tZ_#V6g*9N?mn
57151 znuA;fQg^Oz`kDbQ#;7~dH-lVMQ8UC0&H3|~<IITQ^x)&*)8MmUZ}4~PPT*Z6(2UL6
57152 z3K!?o_O$!k1MGn=hNm5DhuC3uxIGs3$Vhv<y%4;yLt{mE(}g=q#fpwJR&<n#6&-1;
57155 zj^Z50Z!Sb`4mD<TxkhWw7Da1z5t_q&Mrf|wXKdz*PO+IY|3GZ!Fcq6QEQ-zSkIEdT
57159 za@@YO!b6uX$}wG(W3iv`*Bg4vx3JEA<w%$PvR$;(Pj`1zdFfr{FYkgLz-I7`gY(xe
57160 z&d-oLp`)FTlf4h$PNMmA3q4F7w3GMeQ9K)K*mA51uZi>AnTY%opjS_YPWlcs%q?=K
57161 zER)GH4SSC{G7tLgGPw%c;%4MM7rO9b`MNBCE;~wwLl>VU6J(N1g)Xgz_6wv&#-OD5
57164 zZHimUcVeww!K<*kR=YM~{avE_x%+r^+&-z{Yp|l<h*i7VwGlgm1$-?pa(*Rod!<&!
57166 z_vBvOhX+a>_Il@IjhQc3$Te6Ms^js-Ug&+=MSD5WkzXV?LHpk!OQGYdb8|+UXe+%)
57167 zuVL<1K+8V}Exr!Bz75E6A9Va$Sr1LVme$jgQZKF0(9c8nz9HMijp-J7L0*wR%MN*;
57168 zmeO))*}c%BWv1Hf4^7#Rs!eFhO?PO}-q4MM=sN83Mw(hP&P+5@Or4o+YN07>O#`sO
57171 z{B4W&pkA>-u~D%}u~{+B)2h9!S8PyhRBTdgR%}s>b8gh}s8?)IY*cJgY*uVhY*mc&
57173 zCdGIr8x@-rn-yCWTNO7dwkfvjoYyNhC~i{RtQd1dqhga{vto;4tKvq*HpO=3oqELv
57176 zqa`(HNdjqUP;69eQfyXiQEXM*sMx01uDD5Yvtozhvx-|3oh*KUmBetCyK!~$i;cth
57179 z{6~I~U*easX1s}2V+X&-f5STSA%DW3@!zr9bdw6KE>&2cz98MD2iBSWuu>g>wdp|V
57181 z$r9-0W%3ibA3FFU`K3J4>G{$#(7&6ZZ{LtVLFX1fZThRc=blN(9wWvW3%whejLAY5
57183 z*=oC=J-Fl<)?s#_d%9tdwxjF`w#JUOwf01Nl0Dguv19ExaMK)c(g*na5SI5&4zOB@
57184 zv%ERta;`$^3s}3#`2bwiu*C-;J&=#!LwE?TK3MsV=e}ISqq#qyh*j}0K7~&Or%dG2
57186 zY~}T^=-s)?HO|K6Z#v&i>~3J`!a{fFFbkd6CU^-pF5jRhGB@&bux!8Q>{{67+i-m!
57187 zdx_Wi2YO0#yYt!v$HA^eo$tV!UBd742dMQU-UB=RQ(P-}FRr_VrHof%-%`#GVn;EQ
57188 zAHs@%96u??W4G}Xb}}{mJM0*0c?0$ZC-XC~Rwr|VOp!CW1NP`eyag8I<@`3R!|Qn`
57189 zEWhvZC-Prd*#kYv3FUTN8Tk>eth4Q~pZagC<=x}~SZ-g$n*K0&6}Fljg4O+3*s=UC
57194 z19HFV?B#yb9zb&jw*@zm36=zlgGI{ub-0|t0-dU7PJx~|Sv_+K^|UDhw;xU!$L&-G
57195 z?!Az@@mKf~ssImPP2JrYBK6kaB=rF&-%R~^G2cc5)h~I7`Xvw5Q=enN$!lmhujTbr
57196 zqbE0G_2g!pp4^OAkK_q@eshYR-<%4rZl;NPax+O!ZcfK8`B|Fmc$=o^naxx^vpI`j
57197 z<JW1Lp4rr?NAe6kvzetH$>-=f&AH&OGMeK!na&3%52g$Bl;v_gWw}C6S+2y+b}}t+
57198 z+)LjA_tw$%*vnr)H^^MMh;G%hkUQmT@(sF6&pehnuBM-Wt8b>2dRFm(<7)bao>Dvn
57200 z&kVMKw?C$r^=#k`^+NuWo&@XwhaW@lz%C!j-JC7XRc@{2YV!y42kztSa_;N+oclQ+
57208 z4O**?XG3ej7N$|)+^gwi@a)adGmH67n&WnBbP4$Mr!?Q~*yu8F>l(TOeA-MmV5inj
57209 z%fNRp(Q@q3-lGSwH``5*yWJT*js2O>Gs<60;IF~d0^9spdKWvf6KE%PVs*6JaS-<a
57210 z2VKI4f_H9)<-Ax{@dWV2{d@uV;t`&UT~`CocU-^=!37<BJ!bx6{;upc(6*`#-cW7u
57211 z7u5i7VXyQtZ+E*T-hufH`CZijyD^go@+a6i4H0)*RwD<w858##nejB1PQ(9`uoD-W
57214 zik-|ZP9*exmC#3kj~2;eEQ2a>rSg@?)JG~)yPY?Vn~9W6IXOBwksyqZooQ#2#1drZ
57216 zbv|;rvlHfWq-G%3I(kB9IKbRLN{<utEWL-+ICsKA^+>&j)F|ZIKp1J-g49stYNR$|
57217 z^*NlbyClZ_Y-i!`9Q@68eR6$)RBv@&lIHh{&ns?qyamd1rA$}KRHaN+%2cIHR?1|h
57218 zINXZTK~a2OaVzR_lyj7Fj#6eTWwuggD`loqW-4W-QsydUu2Saej;qdWHNQtau|GqZ
57225 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57230 zc%1Eg36xw{b>Mq{t$qKsch#@1t-H3~_m)(>OWkd&)mq#odFfWSBx{!~%Loj%z?Lxr
57231 z+u#^th;1eTo3Ra(-;y_+<UlguA)FcDFot269F`<Q5)OfrfFU?z_1ydZuj*>4W$fSt
57234 z_7b#H`%fG=`e?WN%Y-zf2yrL}7EYdkeiw{Kp)?&h^7j2tf92y>5i+=gkjCj7_bn_n
57235 zK6l|&82>bkci#vdfv22yXy1eL-FWnt(=&(u-`5Gr4+0UvBgYpPK6CgJPXTT-Fx`De
57240 zkccq#Ic^TxQ+i3SC+!q8gtLmAAPO8O0Ats@Ik9!?1TDiFV>-R^2@a%9h8UVb?#n0%
57241 z;Q7?^<V&-2%aq<%(dcJQfal_gWg-us2Rw3ExnL8hMX$LyRx=I10E$bA73${U7l>Z}
57245 z>4T6zP9KN-3HlV|%M`drpP|n}{wjTyP!1J?a>Lv(<XgBckRRucLw<@o1^FY~BanZR
57247 zE~74xPVyH<T_m3-twvpf8X;Gc<K!0jTum0h{%(Q%2sub@B0I^=WQm+2MKVkFkpoaW
57249 zRH$R^X2`qXeXLKg`C5(EX~^3EcdU;>j;k+_y{x?-@?#8xeXP9z`AvY;O{_Hsc_XAM
57252 zvT(~W=DE<<t}shOOX3$#-3&7wUAXx$2_HRt^f18aBbZZTJ{~;LICv2WER(|QFhYMw
57254 zNdAfZBl!{7@%O;4Um{;2Um|}-{+K*VH1Z_*BzcrPL>?d?fOI$PCGP-E90Pvr1?am0
57256 zOGL;I2|J<wH37ZEP5dv>p9lw_{%&y*>eD>zDD-UtdZ%~uBar`8*bVtRDSDwFbDxF$
57257 z8SZ(2xsF5l-=lvC`PbMyf6Dz0<Qo4z_Ad6EVfoj<Cs4YBKMDB@LK^Zv7F5U|<6nW%
57260 z%$tLMt^3g2+IFo!1)msvg7ER^?b?_PJ`#MY@UOt<XYl!P-FQxiVdH;`KAoh2D>_F^
57261 zzcx20?W3SKG)Y4+^RpB+d<T6SY5?dcNP<p7zDOU2`~@-t{jb1Y23o!HGUQpXTij`e
57262 z4F8Tg0UAdBoZJBUPq2qR%WZ(2V1}N-UF!9QKELwW4(XF`rC&3B{SBmF)F+H9jP&?x
57263 zC602paPPb%eeRNUk-ui$^bY>3^-0+Cy3_AoA${x3Nn(7R^no`m{S1?|3DUb?NBS}*
57265 zIkrIh;%ai{ogckYauwc6Z>3+E9&u-CXNiX(TG!7Kr|ZrVry=SVhGvK06f!<EtCI56
57268 ze-!XxD?lXdCLYFv2+PAP53xMRaxY%GK<+n6#V7+t=_3uMADHej9Ws?o8Iw)^C;990
57269 z^YWwe33-?FsI-g!8XxBFfynd_9f#PLCGtZ!={x|O9c0w%@wUh?qw?2bRtt;H@!pJs
57270 zSeF<wlB*{x7Q<utL4f(sfSCvHRoK18Q+QXg4&;7-9IZmKdy|*hJ<8>fg8&(>&53s?
57272 z;o$U@sDlv<7*Dkgrz#FlR(R_|WLkxj7#v6bg1iXv-mI=^M8D-LfgYIf+{>`wj1p}D
57273 zC3|Vl+BOH;lQ1w(8uwBh(ED@9@kWY+vk9yV=a8o$$6F<i-70bH4vA;?Mm(HD;Kar5
57275 zne-D=gm2K#O#G&*g!vcQt(K#9`dU4E;fd=M?-54Vk*NxNdz5^H+z03Q+sUnPs^3qp
57276 z2dliAjFXKpZol$;zz2_hqXsR#Bzj3-HOeQA@(H7S+$bM3$_I?{kWtPX<)BfvvQh%y
57278 z+kwvAKw&#r3N@0z-r$UPb!#U~A30<6(msBjKDq{%>RfycMySoTwvS(@kFKGlIu}=i
57279 z;cIiP?c>+!TTKMKIj!MZg|XJ=THD88*2lpfq2K!cocR+IyXp0Te-YSCFUM|ld1h&F
57280 z+Qyq(c3X@1m~<OqH@{rn%`XR9^`v2)_3z-iUgPE%?~FO)&RD-K#(QGWE&2p|U%xG0
57281 z1}x5lb@N~|&p^LE7qeP+Pt3D>VvgB62e$M{@KPS8%d7XqNHb!p-(cX~1y~>0u+6X?
57282 z8$e{hBl~q*N85k}RJPBee<e(guDZ6&YCcx0X)|czAAr@(GHq^U+U%-nvwnZU88?QM
57284 z7#<w>Zi}HUHfZCm73IjKJ$MUWKaX)2&oO_wc7+BWcPh{lrU%s#7ZJf9y-FVhZ}=E`
57285 zR-OM0k17;$E5_FS{@OV~md~;|*V0n}&dhVCK$D(9|5`WVArkKa_C8L}^KJMo1CjLg
57287 ztAFDHt9&2FHBwMDvU6^%qN-ER6UVkGP1?SDPV0<lO_llm>baeB8kb(szoc4B?u{f8
57288 z8mVYxBsq%TR*lRL7d2YY)cO5IjVmM*$wX1(3+mDZ-lve^5zRZI&d(1obH0(`<upH{
57289 zaU(lUtC}qdm63%dO_(`-p5r)}Moa9ACb0LsL!rY_6{^YM^IqzOv7|<3=Jr+2`zgm3
57290 z6bc%j*OZYtTu<|lj2HkBbxGAeKcfkm-RGOAePnELOq0gu5*nYb%<h>3;K;c-RhyZC
57291 zt};Mty;$q5RMcf18Zc^tE~BMttvKF_ke{EKQ-K@j7F5kLGdB-CDvnvO){V99`N({w
57296 ztW_kNJ`2qQ3L`-JygGI+xqw1t%q9^Oh^9sW$tsp0+T_BhzJ&b>uWKoIi$qpQtAEK+
57297 zU<6&TgK><(Dv@NOk^?1n7M3|~Oj}wQEo!a;fU2tI9GS!kpaK%oT-ch0mW#>D4HLN-
57298 zQ&ix=BCM>rN9NUY^Qz_swiPu`VQR<RvamE-Non?d$<sy6TbSB5H?>{wj3l7n%ldtV
57299 zW#SpxIk)WbfCv|cHFq9O4peJ+*@>A8GL8B{7JPbUZW-AJ^bVf`3B$6kTp|gtRqGLb
57300 z9A5!T#-0jLG6DEcK<`>%T|tD)gm{y{uMv%GJWnZQ(oza!nQ&t}<}^=oSRK<Gpni5(
57301 zcpg;I2R-wE!*jtPg@c-x3=a<@Cwzbij4k_2dF}oANF(sg55y|@q82DDQ!InPcq~JO
57305 zHZh@IL9EGz-XwbX*Mx{5_3c$zFFT|$R6VUNw=7a+Y!195QrS_*o-4t07St|=c^Ay4
57307 z`#?m*pH@ri1o{SG?Ur-rCXy52Oy*z*1osPDQ!k~84>;TpPRy?b089YCnr2|jHZrVP
57308 zNAmm5m6EDDcn;<qSPQ0>^!YRitiga*wRv<d<!y5p1XWZc7le!$t_-8gwSf0dvNw|B
57310 zx6UF--MLC^e26i&QsR+tfyNFx$F<c3RKT?-Upu*wS+dc};vi{v1%X+v#Dv#{~;
57312 zam{0-b1BJH5tqS#l#q+#T3}>uCIXwQI#?+!w^AS2?a-Rh*~rYA(cyL9eXTb}3R-{u
57313 zwH6#LXao6kfE(%<5OqaR5NJtjg*V0+$*7+ho%0J2sSWF-qk<;Ed`e(>`uyXCWeaRN
57316 z3dPE{!g<PiW}(7*wj<00RCXW?R(2u`R(2r_R<0>r0ADx)wYdWRqz-G9!Ud}L?S`7(
57317 zw+G=U)~-c3R=W=2SnYa*W3?M_%`vFV<C<7mz%{Y57uUqfBEoEj$`Zn0Wgo&|Wk14T
57320 zz&rIS0=x@gH`eC6owXSF9eNeP&*)VIe>c2o0K7-9BEX$`6#?!7*iE(h&axH*zgw>&
57322 z;w~~le&f%|oksc5-z*+)J^#@k%8}f^%Dj_g-xbG9<n5RC@dxnRyMNikZzoZHhD5ms
57325 z>-eLU?_3G?tp{x2;3{wH>;Ivj#n-T}mwr2WMBh`V^Y#6I_r`qUzxlJ{HSl{D>^$|`
57326 z$?vzGD?hJmUwwGxyI9bjdU@FcHdw!>yzb{;XrB<1y=J@mKrHraKM<1<h{xV~-g@48
57329 z$L_Yt7LUDAQ9U-l$L_Mr7PsBxF{SyLgfC+kY<8!&BObE*ycvh!usOW;u)Pnk{3zc>
57330 z&I-*WOLFC`s&E{o(*otVErg@o-T3z{qylu&1^oTPwp6yr%b`4<?FLLT*-TgGM$SMd
57331 ziP$JQk^u(?c+JbEl$DBRb10Md*n$>ObogAU#;C7oH=BYj#aJibCWlipZ!(#DzI-NV
57332 zb6K36L-Bb64R$dYkNE6yf`29DBi|zbjW|fU+$iuI;4#hcx(4yO0T3p1E5TnvID)(s
57333 z$oFJ2*{+RTPlq4ylHa8?E7o+QXwEdv`jnL0?8-F?!Av04kH2=<2kGzleZ)<q3l>7#
57335 z-h3Ykl7S0WN++kZ=*(Q%#zYG!6DPSkQg+wLn`82>l&zHbJS0eiJcv8d$XMFbjq5AE
57336 z7%&%jD^b(rm~63$wxD9QiGhw{K9;}f*!D-yF8JFAq|uk|&urgZ?8_9qh)ML~Q~WIV
57339 zy{>!eu3hhaaV(xWaOPtdpW6C?Yd`ae-@l6&1<si<mHJ(ZRkYYma=gVI9m;f^Iy1WU
57342 z7@liaI$C;<-!^gktGD;hj!u+Jk)7v`?ET{2_|k3f9hp2?u44UZz`CFGmAl)4^(G40
57343 zv`V>2{3RCU_=D>>fYwrT7D(x*{o?whFlqF7by{>epan|F#!ME7T92-LK@?>{;mt0;
57344 zOA)QIx2H4cjpcl5!NyZhYs<Ri75Au-9kcY8<;qw&YYNTXd*j63b~OZQ=CjSJcRsNj
57345 z$Xr<=(N~}3?%+-liRyoIik5(XR~aImYb}A$vo%Yw)S9<46HvS)L_;XMjz--A43hl;
57349 zD&TL@rhOD+M2_4|z{4`Ja|`Haw<QzNu!~;@H^zc`0bhouz}b0=GvHEWx4)-7=#A&R
57351 zaX1qVirFf<WV7hMe#<YLheqbgCg0-Li+}kZ)ObS|iX>Q8a9R*CrMCj>i=^mrp?tll
57352 z&Y;1D8tZ-qsgtX&r6vtI&I@jLY(wGnRgz8eWdpWCDdBAZ;yj7L@U<uU?6O@HO}rrU
57356 zzon<=_!qfk*TxMYtKhUK9=|odZTq;Fx^m%9-FPFo+V_27ES^1Z=A+Ej?s{VOu{$`)
57357 zOr1WnJ>k#01;K1L%W8}3(4BYQp?lhe$8N*_$$_1oK0)z!k;A&-x=}&TG7rU9t=Dh#
57358 z)qEFkY-V;!tQJuqF6t71v^I=fI@)`BjF?5r_a!0Yq)<4&rLVn%pQou%&+blG_opjg
57359 zr+-B?5+|{8#DssDKE3K9m~W5MIO<QJ(a;}*YcMlRZD@@wan9t%=7H^Adm`Qt3l8Lb
57360 zjTw)lDg3#9SIKT2n2Z-wZlA+f&ZNRkin~-wn`M`I<ZuirU-=x3(}zh4F_16Az-cEb
57362 z>+=o89e#@~+Y<KJ1X=I|U>E1`Hi<q>{{Xybj_fL1ybw3WVZ-32b*bPVU%*xl8wkg-
57363 ztwR?~Xtf(AsZ<9!l#P>;Oez|7*wE98Rp}TzV@Eq89$-XdLDP`E*^Cij=DY!k0=}`0
57366 zr4)6gWJVVXC|<i&7D<#wr5f$}ZfZyn-K$P8L|5LviBv<YBUp-uvWg=d^97nR8~V}(
57368 zLJ=g+D*C;i&It_oij$RMVJ?5wgX6MqsPyIiA0O!7w-N357c1W;AA$frOtMegKn(z`
57369 z(9GPk)IjKIs&Bn!D8e+%8HR-mR~N7Q$63uGKNY!TBQDR0yyS7&-BvN2v6{SXv%Q}h
57370 z{hg~!-r-V5rFr61S3Yl(FcM`peU9%X8KRUu9!e&uZb~FWGhCf1GaalhTelnQ_8cjM
57371 zd{aG2$U$W;nN$Rs<9HrWXox$r;idt1I^-<bEv@}QZ&%75$fUnIaX%n4RBE5-?M@6H
57372 zD=2A)Kjlo6(8ga{`4h5_yAGm)K-m{}aQrGxaNw%pRF6;fA2V%Glb%Hx;t+|7e51|{
57373 zjuYUdWl<V~fsu?U;*VrX*}FFX&NK?7b%V2KslBma4cNRvx5-}hu&?k*I4KN1ZMSi6
57374 zSYeE#LRDdKC)F9JyFk>INk0VqV~kaRoi)?YgJIEp;`<-?UF1x<y)FH==gPMuHZMVT
57376 zx-3Mji1r?jC~_PG-S(i*XR`~wLQ_7T_oj<M+0o9_{aAD&UpTa>dv1G4>i@#I!p^Z~
57378 zuCB06EfJ4|NS@|}HCnq$kh`9qtRV?^AT^lm-Q@Cdyvz#@2wa0eQWhy48{n*JcQM`U
57380 zhm<(=zuDjpu5Qp(I@X4njFxmV-ay)DTa^~$Xrz-;6;CzjX5!H;kx|suuz4yz(Fv}I
57381 zq8||K0hE-j)Q*B`?F#VTO#|Kiu_l{6?Fnp5^yKaFMt`u$ljtiKt5O?1vat_>&$g?Y
57382 z8w=q;(v$IFsJQZ-l|P{Y{xF<dJIifZP{cMCGyB1%u1^gmsm53o-u8fqh6T}rs
57386 zXS?CWxjwpx|F==OB>@Np11_*6ZW;q&*kM-v6voxt2>$I+YePiw)}*qkTP2R&C*Y-#
57387 z5!~W=6+J#2yY0@=p7_kwVKH5FS$n5*YO6o!Zrj`%7}-4Nr2Y-fmcF6Twi`+=-W(}O
57388 zvfUTx3po-onX@@1!D;t~Er|_HR<GYC7utQIPccUesv@}@|4wMoBf@3UOs;t@5%KUG
57389 zPmN&E4>2Eqb~R3~sZ^wX;F605rc?pH-DZ|aGi|N~ge)NH#;c!fb|a5*yAtE#Ty-1F
57390 z*({E%yXEj=V{mfYsN2NZ+=@kZ#wyn)nz>MCEU`J4-Q5>RTHQ{iqd?70ui0XXCxWs`
57391 zu=t#UXwO`gY2FeEMGdKR&;`;*-magmY`H`TY`_JEfJZQA0t_b?0tsPH?F1GSuyr?H
57392 z`~gXLz%<0h&R^`$#Lnm-Sgn^U&<vvOBYi3GfdQXb6Rs}VZsWo$X`I1;bO;RtAZ5ka
57393 zU0IG|wzch^%(NC_j)>LLF*d16R>>qPE{EOhu#E2Qh=y$@J~S{<^f!BU-H<bzqD<J{
57396 z%?_<rGrO6V>bJp;j@lV4*;qR>$db#S8OpYtEK3%XzeRNf<1VM-3x(Tf)p)^XNxQ9s
57397 zQ}J}K=u|AWOg3z@N+F-GEu<JHu|K2_k`n1Cx8e<ER`J;c5au*HXCkJQ9d7Venxn80
57398 z1pRP8EYXr-u7<s$JOL*eZ!isGt%h^@#S)y;yrqO!J#uZdJL=ppnGE~XU~u?Yc=IG!
57400 z!M&hrr>8U<Mj#mltgzi@=Lx%AU~RtIuINBPW|?<`PeS^5S|bn@8;*5g@n-~s1N<5e
57402 znY_H!YYL7{jrwW0DOfJFO@_Ti#u}T=6UY|IU177w%v)q?are4RW`{%tum-t3;cfIO
57404 zpil!e)H@9v5;!WH0mX)s;_Yj+y-v$f$)n+*-(j<uahsKDK?N|;P;&i1fNIXPyvDR*
57405 zS1#-<w)uIR)n8I6Ra};!-5!Vs!bykS6L)xqlxX;xe5f;R27ULmdF?KnI}{9f&0e?c
57407 z5}(r=vdbQuD`*e*#+?zb2TpAxP3}flLr>c5P^|72pWQ9WW;verw8mp~cS4CP-U)#(
57408 zy7HY+{SlUPCO0+VwUDaDqrrh(Hf#-89ZliuZ&N+>7ehm7yci0MMXg>@c9|1%T``o+
57409 zcUM;EkJ#Qj`dq?eMGJ+!x1sKO4A81Y-_Estx3aJs_7D*_+SMZjyM55_S+Xpg2*6IO
57410 zU&H8ojlHCH$Ghiy63xC&wPna-lDr|C!g+Qq=B$dD%a_XYjm?9-G?C~_1yf3zGf8H*
57413 z&5>f-)!^{v)p&n8Qc4$0E{9@q<-9Jx&1Ckpw<>X~!&VnLW#9bB$q2`PMdak*asjt3
57414 zV!v|Ol)K?nU!vJ+GF>rf>a28;y4y4L-}3e>95imvRH|P2_N>nS*$vuwx^{zR^E-oX
57418 zYtAzIzjY2X>-|IW0yo^ya(!=ZKpwF7Pc}8SDC}IL3{PxyQ%@=G$%mS@HmQAKd(ht0
57420 zCgJB&QH4kEA1Pa-paLm{!<&ION&G#eCk~sO&$IS8AfVv0YlI%CenllzFDHR7*6hrr
57421 zcY4px0nszMb+g}OjXUt`NzcTNZBfc67dl%;lje@0;ZBRmB%16t#uRs|&>%-*4L;6f
57422 hm3VWeRgtWMWb-;q;)Y(g({JZJ!Dz@L+aQXP{y&^G*c|`>
57427 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57432 zc%1Eh33Ob=m1r&R^}g?|?v}dMYHi(W$yzPh*lq2$ge}X)ksM<rTVAn^F?-lNY;hbQ
57433 z!0<_iPY6SnNr230*#sCSe|{#1#o#4gMCSiY&M-huKAF!UnIywc7*PLv>%DHh)?y%#
57434 znVdPia@VV>cdPDFw{G407MV~&h!Zl2IQqJKdYArcX(J)Lfe;$*8(OpOAHMqa-x6Z$
57435 zCq)12zI7LM{@*p18whDUMo9FTHS6jd|NJkv-%ALqhEc}0?j7H6`H3R}eSZe^?yXl}
57438 z1?c_jz2n#J*YEQFJHS@}e01OV-fi`{-WV`D2sE$Sf7umR=DtRNU)qh=_aE4{e`48p
57440 z+}rp=9Qyt51D`JQ^zHv{cOJzS?ZLN-7QkgX`NED%>`VWR==qy?<&}Yhm3aOq-@mS!
57441 zzWv<?ok#T`Q=$XP@&{9T5)b55oF&qLGKU1$bk({#T{rMbbX7{}{V*h-h6ahH=siS+
57442 zp$@YVs1GP-x|uZ6PG~jDOp+zWBoJgVqifdm(F}~+t?;Mc&tQhg3PDzYy^N9v84o-|
57447 zq&p$sO?N}Sm+pmpKiv=cjr2yy57EPr-%0O;{9bw=<lmy-g8VU9Wt1MFAaVK>eG2kd
57448 z>8pey$&fE+%OUS%fQ83-9P&kc5#-Ih8S>}(D?$=_vJo{*GD3MLtWu>+Nd;H{r3~_+
57452 zBaoLv%JUYT!(Ft%Uvw6KT7LS-8c2Om`lwPWu6-Cfy5RbLavjumLC>8+YK?-9HW(dC
57453 zjgX>1&1H~wK!4<XB}iZ^P#lF-zeh-QxX}L!mA5Ozj9m@+1VDb!5&tiedjE^1ON&yL
57454 zyhDdY`u_P6^TS@ENjwH=VpjS(e-D$?Cw;pp9hZ*FL~bdhzduiUN0<DFY3nDH-qF3I
57456 zraMLYw@=fbda|##|6(RN24|%s3nyofNZ<H0eL(ub2PHy;$7_O}dxY@r-of?6Gk#!v
57457 z3-Rn3zjB|5HsFBxf)mAq=3B2ia0MyfJAU9&QnL5by_W(EUU3V**-2dDj8Tk7$K+qj
57459 zO-~nj=b|n5J3$#G=wJU3d{oL^(5DV|tU=mKGqi&?(=@H7<upuv)B(vvB`T3=@;mZt
57462 z&U4^-liNgDC-PrRuY>%W>7(f7Pu~SsU(79q{98Gc#y?KK2kqUt%}{<f*ADqP#7O@s
57463 z*9dX$o73NgmYZ`R7rJj6TFA=j-$8!q^v@vg&w;N`hI1&p6}b(NpFqmlvT2M@*1!Mv
57464 zkdM6oKe6xoKY;cNu$^UcDBCY1B-xRB9`ZVn)@$T-h<1K1;+*$M4x<~4Z6LCNs0Lyh
57465 zh-V<0*$z?6Zirs?L)3DJet{l_hy|h*h*ch=kJBe0PI-#H3bDy@)(P>*B8);H*);RH
57467 z|8%pcj{u$@kTB%$O#cJqzZd!Q(`x`LdH?f}%kSg-nR1iRelm9h<Zt7A(0_UFFF-mE
57468 zzPAbI?EL|Z@TNZlSO3rSpqL?;74oK-r>lkR{#E2}PJa{fjnk_jzhL^$A-{6^O30I+
57470 zR4uo{uK|9w@T<`LN@w5;{Q~fF!Ox<U3++1i5#>kTh2L-CM@f~4sTFA`viP{#l_NOr
57472 zCikK~uv0ku5M?TNS}1vmTmtzou`E48lVFjCDBhuX6f6!xDwbBv0-GQb|8q@!J=8a7
57473 z>fKNeYU<5IVn5Z?E1>>0O&#ns+oGvUP*2R%>2HZd-_+E92KC1^^(m<D)6}1X`XWvJ
57476 zl8JKfjY3YKh9%@d5+wt{J8@VtiaicX4s}-ysP}cWcXX7yIK}sA9xJ{#!(Zet5(huV
57479 z&7o}d=-Bq?;fqGHEHSR!%-b5@5{kvLWHd{<;@x;xuWPKcE=yC{=-BqUEK9{>@mO7!
57480 zr=k-_xyMU7yRz=C=-622B=dB2P9}I)mUXSaHk!4>q0luxk(Gw7J;E4+VY0Dp;TX0a
57482 z)zsS6v$ZFy>luk<d17?<vm*c;Iy@514h=z52B5Qxv9x$}G&-q314Y%)q}HO@2E5*Y
57483 zkUtn2iGnl^k4Lknp^-6YiQ+XAmRhmYIu;rm9UTpUw6d12tywZWk|hHO9D{mjAX|#1
57486 z@!`>t_-Jf2n$4^mfoma@i%LpeR-eimyOKvhKZVo{P>pxSL0#gV<5{+4dzNkm1X+D;
57487 zUDlY2BDFSPOCnpMI6^ivHi{r)-GW+E>WI-sx_UZmV+F-Ar-~KHqKrb5KtdO=J{Ijc
57488 z93RI?6~ZPVoRDlZ1VrYkgsF{>cPl8Y3v|y`Kra%SVNKh~mJ$pdwOR=80W6_-Y_t}X
57489 z*q)kXtS37$-d&e<qyRJ;&Dy(G;Q&y88Ol1aHVid~m@g*`<PbuMf(*6-=B%@8EP8k>
57491 zW}Qh~a-dqBlXlD;kY%Y4=7J}NMkY~wz;EYam|;NcsEx&;TfQ7pu45Ni$=EUqob&<x
57493 z0u(|4H|gx`L`isn5V$t!F(k8JOoqxqZa!evo2<+FQ<D_W0T4W%gQ-c5=aST<gy&Fd
57498 zIAQ(HOAEFW-;=^Q=w23IJlRaW$ZIRe0~nZ}epof*i|ev&skDD-U3T#Yfr5r_1@Ly5
57500 z<hH}<cr?27FpRmR7%ZAr#>?tpHK@?h>=+uC%-WHoQdEwHj!Kns$!I5<ToYLDxabk@
57504 zbmgaO3_YFMEa#^<1NI}0QtZw8yGDjWu(?K;j;1FYs0Y^VilVE-p`oIyo%8lRUyrU-
57507 zdwhoK^|;g7R#@e$7HA)U;i$)*ZG-Y)D%%dH3sH(aAns@{?7(?xtxlmrXD@`}n$!_O
57508 zdZ91`1&W2WsUuXh3`0S*tV5VSD6B^qEL?;zSlECtSolopDA>X-D2=4>RRb)IrjAmj
57510 zupMErutU(*4W*reE-dX5bYW??pbJZv3c9egN6>|(y@D<*?Gtoi=`xV<(!vDp7qx5#
57512 z;CiKq05>Q_1h^4kmlejlNz?@R%}No$4=P0j|1;>R0^Fh$5#Uy(hyb?%?DE2Rw~Lwp
57515 z_&O5iLkstp9#Qf9l3aJ*fllV?$xHCd)7hGPgBo&gECfz#$X-!+EBA`{%|6~Hkq@GM
57516 z-s2&_`Ow06KZ%2_%l+n$IsQjIs5$pzajsSPrf(~Car})&7H|9kayd57+$==LS99;?
57518 zuw8#zdjB7KtkKAS>s-D5^!W7n^!SL!ySZ0sMefykuRXLtd;a)C*Wi@KhUNb7bqqcl
57520 zlMTD}?Yfc-?YiQ!J!IA1Z4<jl_klgTb`bos!b%!o>=F_J|2INPNsPovf>e_l@g$m(
57524 z-}9dbayvkF=OM}K1iw_kZx-f4E(OSv!kAw8;nVBgaOEfSK;t_*m82ZxT7newF20g)
57527 ze@W!WL_Q_*b0R-0@-reoE%Fyd{sQ3EV3yvLUY~<|O5mOnxTgf}DS>-R;GPn=rv&aP
57533 z5l@K`Pl*vvi4jkU5l@K`Pl*vvsUreqteY)ki&-N}u}aN&jJ`+T;U~pdC&gGN#aJiB
57536 zq)TZlZJ@QZg1;<!zASpaEPB4I_5@6HF>RzNT1lg{1p3*ifim(Q*sx!bf8j5QJ}-$r
57538 zw~?F3wd4TV16F(tU=VJOtqeRM>UPcBsvF1<Sp`;q8CgskVOOgpQK3yg5*lzy%-u;L
57540 z?||GR-bkeCJ7NUr(blSPXP^5H74D2PZ!r-)C&gG;2XoP%d8V+AZ!y9#L;_H&AU1j*
57541 z=+18Ci#74S7Z*FKf={Qu16JH-rFd8BCoqRkl80elZU9+sAf4btgvBUKz;hMeAo>=!
57542 z%s^=|&2Gt4R6N$~mg2fz!v`;nWi0TaZJXU<&|qY9FtS+~XXw;{-fadgY6iWu%|o?*
57544 z<Tc3gi%c%Q!bHrv8NGs@b2N)w%kCzdT%Qx386G}JGHC@#Sm?LGIw{mM^^HKSOlP-I
57545 z!H<?BNlT;3Q4Ot8v<K=nbJr7#f=1o~HUQ}vhE-ild}94mO(LN8+BP;%8=t35QrnQS
57546 zcM9LIN<v~xe5;BaNgCO6kXwG0GSM&pHSB97|Lv>z-gT~I=?2<NEnqwKs${3Y*7br1
57547 z$>66e$aO}7I#sIL7W8Ku!0$9^;ET1bxMl9B`Z=Q_R4ve8C_vAqV5UC%YFI-#Cv;BF
57549 z6D{N*@LB;9WKjMcjIauHdq%3Hz>V_mD+RqLDlaoFT-BbuEU=BuX)%z`f!+?mK2!;D
57552 zUF~QwWOdCO#P{xKG4$e#b}qhX=i*y-o%nv8i|^MtzN=sS&ARwbT@qiYOX3T4)FPW^
57558 zZuQ)$o@>=}je7Q}XRkQx)Loi^NB?cG5t|F%LUqyZtk`}03m(<rof-%!SUGGD6za-a
57561 zZF-D;1vGUC;wc|QM$ZYo<_jdnCgIl^h!wxput41ma<hOW&4L;|oDFa`!r268Gb9Tn
57562 zE1a!x4oG)PS4u-tEq@mxmOJ@su4CV4JAsxX5JeuOn;`zvfsgTb5O3WEy5Feo^jaF2
57566 zZ{H81Kri~vUX}d3I&Yb?GWmIR-ZE>I@_BXMQnXU}ygF~utXf{A^A?i-E{tndGXn`I
57568 zLo^Bf?xT;RcQ9k$S%yACZ==h^+H3~DPPs#)-FYl(O^FzBWxWHw$tm(ISkn8zo7pYy
57570 z*I(#M3w`~XojTvwFJ^mYM%9>E<NI>;Z#U)tYSYZ@DxNO>Ehgl{pn9G-uS|u;8D-*2
57572 zkAo|JH42hZ_>Q{)$9>|<+oym&S=BD($xtWkwd#{0fE7AOl&}1C5PKqmH`JMMiZ-8+
57573 zw9<xuK|n-pAWh}VPOe@d#4CCfG#U2x)8wzo9b(s=0PoKOZGnO=OB#L2>+?*DR_hgS
57575 zcs+z_YHCaibDM7y7K%61?ZUU?N<^UTLBA||+*mY<;0Sa{7FMkhBxg}qK@?its-^R=
57579 zp-Zg5h0qgd(TOo`5uO0f&Ychy?Neh5S-m<@xVn!FK~k<t>eb%D)gkfM!17Prm8;c-
57580 ztBs(G9`&l&?;sj_g(!cgP|;I$eQ^BC5et8ZtesCu9p?-o8Yyljc6?@oPml2V7CxE7
57582 z0k`&yg;TN;;I9r)y+5h1tgLET#@d>EKCeeFd22n!c-&yDs#^EAzJ$YItx3qiDo@1{
57583 z@=1+Cwn6#@--ed)sEN?VWLs5hYg^kg-saco^jxRA-Y1*5k;#r&*lRG$PARrc_D}Tx
57585 zlC`55Gt9k<1ZaTkeaTpPWlJ;A-ir9Wo>JD-==JDy)Uc{YZ?edifY)r1{Y`br(&Xj)
57587 z@BuE5*W>g1d`*pj8~!2lHi?d|xn*^*lvbxJcJ+7Nd-sj?txIE8kENk3cKMgS_J}ib
57590 z-{NTV{ZAatQ|vS>3HfXVf_<@oy}Ue8*)|-mTT$yly2I0t^I>+HG?B%bmN2EP-svz%
57591 zK=7bYbVhgKvgM<&VF>CuSxZT(HsG_FNfT{C;;BM>Yg?Mf%XNCxtJc=0#!}`-=_1(-
57593 z?l}11^y6#p-1ObA|K)95mYBWLknV7J&9cdA(3jOa!z(JAt~%JgX8)4A?>3Ho^ZK4V
57595 zCs*ED*OD|b*(5Wgy~OR6je3cL3Ytsm;#HS^e){qLtGX}#+x_P5E1Eh-8of>Ri!Zyr
57596 z@22-}>KN|sOB+HL9p1C$`7LD=*MGii)fJgM)lUG`9i%<e+6baIP{;<ORI5S-HYAme
57598 zYN(%=y}HjvL+gj>?=z!4nJPnY<gT54TN<N5SgIb&aP-#iY(zGdb@ET(y*7~t2D0X%
57599 zk*D-JCc#n(iGoZAM@4hS2Mo(pqD)d2j!v~K16eCvjSv}n$<jf9B6EQ<<=~Zawx7sc
57601 z>$&fX*VHCgc??d2E9i;)ZT1>(S-H*RaSm>7xnpJDed^jYI`ozGHoL(Qsr34ml$d?y
57604 zBaV#KBjLj!z~!Ji*n-lms!cIgii&YXB=GOE_J)*M4y{=eHko8<W;%N~;FCaRoVlEq
57605 znBU#Hgt`JIH+R-n+DejD)Z5VCy|!KNY+8H6XZ!zKXTxx5Nu7e7mH_rzlFlR(lz~!!
57607 zI4z|fZ}Ti#eVL8jnJRsG_N#-NYGZ-QI#(#3>?sMQP+k~`yvkORFzGnzp`<Wta1G24
57608 zrFJTINYuvBd?TT-L*iqnFbO9(Z0?J2g9MEOyIO3EbOvv=ufrdJfv9XW8EsZCXgQP0
57609 zN?KgrXuK>ou&kujS5*^^$Mnu<YtzMlvE&++DmnpFRgeuCb2)m)gDw-x>lAur3|7-F
57612 zeX@~*Nw&u#UZYud=#8>(^UB}Xtmqoa7(83oOuv2$$N@dK?~!-GXIpaA^b!3RJ%q5-
57616 zO<tGJT()*yubVn*Oa5x-PH+Xj@LW$>)sBOIAzXnC-x>bq%}i&cc8}2-^Cg{<WV9Of
57617 z(R#=3TW`Ht@dU=dd3|?&CEiN@JI=t9CL{ZZOVL6sMN3i4fWcekFD<uv-F+@^Sw$cy
57618 zt@{tg^qbsSrl&m+341dx3z!#*mLCQwAtelEz%Ry77NBY|lz&Vzmn}~>-h5Y&%)CCm
57621 z8-*P~9tWpDUOTF6?BSAt&*iX~U>(J2T(4P2ZDJqy`wClmm9m%PzuHLBv$Uez5i~jU
57622 zW}nUKNV&sax5?tMIV-%jIIg*Loe#VUL%<e~Su7!6xY230sn&HTHIgdwgd(K?M=9No
57625 z=nDpQlB5sV%F97Q-Tt7PFrh_H(nrCQsfGQ=<ffdKflJE<XSN>*Ho(PYtPmyP_ETtv
57626 zjc7D~k)e^aQ&L$GF0onA+mQ<stoZItjlhPmH#SxU%z-(o1WuKSu66r$)L!Z>U6yQJ
57627 z8E>?5v)9~y)g4L0lKmHlttFO7vp1A<1jFrR2@kU^?yqP}hOBnU;)prc-`w|bsI6Ky
57628 zNJf*(;qOvs-bc5=#=S0M3W|NzLO;f~YEhhkifY(YgQ`Uk-Y3`uuSfCUa5J?rG!UV<
57632 zTj&zURWa)#Rdvblbvbkr3DFShQoLMcAn!Z-)fEBZQf*rzQpu%&&&&7<s5E&@mCfyq
57633 zO%>(I3)8aIZ(Pgh;ziA=NY5gq_1)Y*(w~y|NGVxAkSziF@Sy>0sM4-HDRQ2~QW*p6
57635 zM^&)I@Aj^^zAogpB%H?jviRz7%IWeuN)s+;b3-KN)leMyWGD{!JT9BXWFQe5$y2P_
57637 zJAmg2bS)no=qd^yQ}%%3V0TtTT)6<u{2N6nY@Z&N!v?!&IW5;0d7<j<ojKCb)q-zY
57638 z(_}X~jn076TV55y?K4svbvjFY$!-iLE8Gy~dTeI1&skAswFKh5OY*+cF<uU<dC8Mr
57640 zE7HH{-#V1)&*W_k=a+*mUUJm+(Y^OD4QsvkWvr#Oxj>cJmy!@(ChNU2FqnuTQD)ia
57641 zb~X3m?ajJXqjjl~<c0V5>OCvcFK_?al8$Z5RPT=-=J>88cz>?E_Xod9TFLU}ARmC`
57642 z@oA!R)LLc_rGlP;HgC{I^(-FuN_toW;6mskW%jC)>Lt!Z(4MxM8ae{*mI|xCGV!Cn
57645 z0G-vey0A0k)odor&ELSr<$#+6lKokiEHkE;xHaJMSgevKRh@)AE>RcI+Zx3*?+f=O
57646 zQ@fY9j;u@TI-Wb6x~QiHn<F)@x($of9s2;E0B$ZqZg9hPe;nTeL-uM?jU3Gi+0Vxe
57648 zD0Z5ChOZ@yNZ<FW{VtAdpt-gy&sx|no}UjeiSymq8O>NJNyN({WD#8?sk+`)xI0(4
57650 zTFc6PfofN*JyVyTqwYP++QAiBbYV?-s>C06ReHQLdRGDdKj>YB&^y=1)Vo+&C<uB7
57652 z_|Wd!wOv&>QQ;a-%SDa(J4KJshe?7AXN(cI%Os)V&9H(`Q0FLJp_$L;8zxAi$f3oJ
57653 zB=3^r69Xmg$UiVpEOz5~!-eLWNJDeD$sLUJwMI6jqV;y>+0<9Dq|D!pI+v{J;&!v!
57655 zA+KA?htV^7m1g4E#xhp8k%9Nl(XKMtWVLs<l?|;fkrQ<e^WwqUXoD}{T-4v-@9JM_
57656 zr@jknOzkUzYcEMVxG@C5w$<Zr587g-dS<cfB)ipJVv1c*ZFc)C`c$Jw_IQoqRMe|;
57657 z*a~xT7pz(kWDwM<+->1_|5KR`A1o5#n8V&)G$A4Fg?Xn0?0|2!yPl7essy86Zz=cZ
57660 z+>};)ECuXv^j5s3tc>MVtkz<(RXOV~-C7=4wYJ-7U>2v>q_>xjZi>~gU~_4#zqV>)
57662 z|KO1_3}X-GmwJJ(()<-k^-L)jVQ#@A1=f5X;fR61uZeQ!iwA+JSfsV0$I2SLx)rGi
57663 zM1C;?a|cY}716SG*bJAi-zf*Z!|fGyo)U+ts>T}k6P5Zc)CNAqGavd6kIeAWL2>U;
57664 z5_foJfg#`Vywgd!0t^23P3U_PJ_DMmoexTfw;1mr;H-*gkJ30e>r&o5EsLOgYO{h=
57665 z!0nmqo(gL+^W=2q{!Xm4wW7Q>ARA?uU+*%z{Z>bn-x@Ug3_7DZn6Q>LMI#+mkusfC
57666 zUn1#DL0ehEAe;5hM7<^ALP_Ov^ev&e-A~6{W{&ebkc|MV&b)5Y+Y9@cy}0dav4Q!$
57670 zZ-fd6OLzyy5x@+_80sb<?s|(Cm<}o+Sk&$kz%3Zh4$@JXh?NC>a$&2Oc}%E236HBc
57672 z_%BI<7piU_?)s*H(IrbpNj6E6$*7}7S1RB&7$t+<W!B5dMGj-oXNUzHA&b~WaK<mD
57673 z*Fe+>-bq+^C$^92o!|;o!b7>pdvDFZ(lKM1lo=PdRt+wLCFW&3lfwH|X<3HdyQWdx
57680 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57685 zc%1E8d2C$Ad7pX5?s9o^57OK<{g#iHxNnyfMUj-m$g4fL5-D3eBxP6fvCB)Mql1!Y
57687 z-#71(A|=X^-~>I)8STt(=KE&8Yv!9JDaILNwP-X}lTBxaDnG1zg)zmz>;u`+Lld9x
57689 z_1J>pewY0K<7tdrX6H|w{%T+CdyLhCUKKb|yfBaX8qmY&Jts~*G5gsjW-?YLAmfiu
57690 z&J?Gc-&(#3`WvA4oy0`_<totmi?rX#(+d|HuC6@ESnGdbzoAoSr;1%u+xKJ3!;HCK
57691 zIbFOs?>-jzIrv+^Z=5Nfp6OZ{iojUNQ-<fyURYT98tVZ)P4xNmGxO7X|NJ%Bwt(@U
57692 zGS2wQ3aduX)W25VX9l|fKPl{4_V?^1?C@ai-^sDcWLbHQ_PWiIMO|jg>deZI=|eKy
57693 z^H*VKUHP?3Kd-J`rkV9ceL&7Y);C`M!Pg(I9{iBG)qf$%`y<b`QU4FYpA28S^s_&x
57694 zU3SB#%mvL>i(;>2ezaWn8tafe8pevN-Ia!=%<iv-uLjqogUXs6T!oQpN6h(fxpx`+
57695 zAu4AdpmO#h`-pMw<{q>@?nC=3e--WP{4&}%`J0TZ@2c-&Crz>VD@?~0i%JeVjo3YZ
57697 zc)mEv{HKZwXQT%xW-F45Pd$460`o|F>7zlrGW4(k*1Oq3%nsp`km7gCPp|Xgpnt$V
57698 z;vU!u8_7Q2&ZZm>a`s*JFf1PB&yrW<+{hL7H{-by=f9N~{M#N#nVK&#cXA2bodlLE
57699 zH14%gjUtgJ`L>z>xg5AG`8Kohw<#RyQVV}^EGH5#=4d>fE_KlOiig<~ES(RP+G*--
57701 z6+h}=l@0M42W#-nj~uMCH(0lWT|kW8&(5+1eC}sO+^Ge$r`Q}j$BwY`Y??jFVr-nv
57707 zV}HV)M=bZVFjje-TTYVED^EhY7nRG*uHa@fM|-!kAD7vb`jbEl#EZ;!Gj$lqk~@94
57711 zbxrJ%;*20yYNkldl=Yg)6Detq^wrtb_k!dlq{eT;K94gKXHCv`gDU9<-I3$eb$cm}
57714 zC{oSt4<%|zC7xfM<ZLXTDCf*y#~OHp>JCOD&22k-_bUB;BtPJ9Qg-wN{4N*w3}@Wl
57716 z-z1f@+G^ItyGSH&ZiCEq0{i+&fj;SkD#Z;yRH<&fYYj){`#X1r!{Lt9;pl<qVmqT=
57717 zMfd7TS#_f?pqIHd)ur<C#+cduxfiZo-v4O&!M~U<PhZ%P%=H9zbPb$+D*MdUXLgUL
57718 zvvE)8$l|HVcP8(de(HtP@P)*x)^9-T-E3E)uZOFOhod=YaAjDYR7IUzXNKmO(H-B`
57719 z4pVmX-TLOH^vQod+m?Vo7~IhlB#)ZSZS62>GrOXeuDi8>T2>RR3Fzf+Uw?0duc^~-
57720 zSQRR->+agryx4Igba<TqG?C9F+C6vWUOJhb>@n^_Nc<J!#&dsmjLhUKT`TXfm(?K_
57723 z3WpmN<)9zOl`hj4k+K!(V5Nu~q>P!7aAS?SiEiZI4X(UNO--p(z18(K0e5Y%zo)@>
57724 zPp8k^S6k8K5A@!kYcO#vooIJAi$6U0Kxd?(EmjvYqnXB#MW^C4UY?(*Wym?3-_PfQ
57725 zdYOu2SRJ`LP*$$jxXbk5LkE7kZC@&v@c5?=UHiu`!0z|4m8zb@8?|S-?hfy!TW4V&
57726 zri-$@8E30+N6%hmXJ0R!DpEmS4<!ooqFn)<bKV*WXfAx)4*KePvveh6!}*w%i{AI!
57728 zR^E1Z|E_kct`Pa)H-FFL+ZS)`+1~p2TZv~#oA0A}UVR4N^NuFGtvCYwpbvM?*2yoE
57731 z!rIB27HLi0C$uJVPv|aK)6U!1S!1WkzP?-A5*zR+n&#H@yXymGUfplClPN9n26t`m
57732 z(5|+qU)kAT-LY?a<i6AWuAbK(=^RV7lPTeC{+&l||3~1h^1rIIZm5skW_^bb{KEP;
57737 zm_v&>LyV4MDgkaWKxiPJH%c})H0r>VGcrUs(YuNBJEJ)R-dHRe!aJHPV8$Stmrx&}
57740 zfS58CjYY^Rb?dG0&{(c88Y+(Gb7nr0H$-A02U>{y;;0f6ZcCJ<qD%M!DZTE&&`g>*
57744 zs7)1&#eyMf;kKBlvqlc*O4@Wf-y$k!%!@JMvqr{pBNO&yD1v#PocCKLR+l=GE7jE@
57748 za#4S`RdQ3`WR*PB-(!`^sE=CaY9NHG0GFFaT<{0!+Qfvlju>1cp0kOub;Pzc;(42B
57749 zSWHw$Z)Gsq`Yqd5GIYIt5!h!yuV&asy$SoMZ-IT(x57T^+h8B{?XZvf4%kQiHrPjf
57751 zXEoNPDp!V%p4i@5(s>}0Lv|!9cdT>It$2DZW2e-7Cw8-WGB?Y_{oPa-nrFdp${$D4
57753 zi)50+3yAcKr)hxmfFB;-jU*Nn^<dMGS6d}pse&a%c`7=y7&i@La1nd%*~n(Z?frxc
57756 zos@cA77oJTsxJ)8>TQlM%t5&6GixN_mGmJqOF}7%d)Hh@#@L<~>~Jn_4B}-c?VU-3
57757 z^m0NWT&)-#SpOx)4&r8~-HDb-NB-V*nxt04RiJM=H=4W};so+XoV++B>QlMV5FS@!
57758 zFdr{<b3g9wz75pz(C7wga?`aRw<2YU-O-N|n6|{8=puBZGX|q>$%=r+MK@Mtq{(zX
57759 z+icGl@l7phn@$JR#Px~e=GprXStTzXoz*3Gc%-wxtW!)jQ63vKk*e06mq^~xGm8Yg
57763 zh-W{*H1QCaAszy=#6#eO)GG~iQtCx$PU=PI5vdoU&q=)qosxPHIxY1gbVlk$=q!9Z
57765 ze-isR3{TmR7@oEvG5i{M_pa^tj2ub!&)bmLpS2;e|2kGW3}3JzF+68OVt5|B_pa@C
57766 zNsc7@7i~!FFW8XSU&Km>;WunZ42w1-hA&x5<?<`8aD|pMMa|%+C#1oAGAcYXLTwqn
57767 zxcXSf5IyyImi-_2J>yo{Dxa#thuO?6X&(A3{4cMl6D+KbvhXL~=x<lL*mv={&BC{_
57774 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
57780 z0cnI7qXSuB4%xgX*$*V)rFurlfH8)(je%wTc6r8&!8Q-e&krxV3#<*;9P0f)GON1!
57784 zM;DK@{NBZ1!1Is8^Zw(|5PZ?y3iprVc*k$M`~Lfue)f4n@@+8Q_EUEpUVO_B-nAQs
57785 zf;Rcd+ZOLXEg#T-2Jp~_7`HFpcC=%8Dn*ENH{d*T`i{HqUj7K_hUXLb{PdZlr;lv?
57786 z-Dlw02jKprgc7>EOgwNU{GW1PCkD9-=){q;<QwEMfVxrrAMBnd>{xyV$GXB}8qSO4
57787 zB7b!G|KJbjkWc>t*6DM+dhTZ)^&+-3AN-B11?JisS$ODX&*+bc%zqc3e0}z87O#I3
57791 zrNjYs``BlQS^qRHd}67UKDv9pR(W(D?~hC@wc-7zY{YCJ6V>Qa4x2t>J4>igdGzqU
57792 z`U5;Jx;g63e~K=js|k-Sab)76ctj!-AT|`}*J3Tr4R^dL(bkVL+ULnP;iTj{a8mL=
57797 zC_Lkd9j-th@<q}~zX*+>+w?Q=dkKF334R}=&(de$_kJ7)u1~@bpPi@A;{9en`Y`++
57798 zybR3!@H+#)Q}h^6{aJdzY->E<*Hpg_e%s+U2ES4G^~0|detB~qoDWvf2{Q0K@?+pW
57799 z@E$pje5V?4yc2rO!7R4|PtO4_pFkc02cHAZJx^btFVc?#-<FVHz^$*+SAatUz?m7~
57800 z$VY$^zy;s|P@kr07-o8zO2C_sF*&$_4ng??^1Hy5caWb$`w-YL%6*W07a%`FP^vz#
57805 z^=UR<r*(HflwE*3)+eCE*%!$nc7F`Y+ZhH&+5IAvcLG*-vb%XGTi~p(%~-cOqp?0?
57807 z016xij1AZgPBE(PY4pF#TH9TWWA{RN1R&oy{(T;qRp-fd=U?H@weI{rcZfT==KNjm
57808 z2P-Gv$=|_$2~WW<+`a1j4dH)X{uDblIB#t_|77KquJpL!GUsn?bjmkh*=dV4oe!-(
57812 z3+(z3&XXuWJBbS-EI-jnfc1{BGR(>lD}yBFXi@%HsVUDWhm?vEu>aitUHez;FWaB7
57814 z#w9Yl+Sm#hEctDK`7Ge&!x)goUoT=jwgIFU#?OOKmj#b5fwMuZG|unh5AX-!?k6lV
57815 z#269cz72Yh!aR}2JQy9KcMowO#Fy)#-2iRQ6Twxi%!4r|#2}PKqTgxiDOf#y^?Qim
57816 zIQUVF=9=J48u2g_1wYSCFrz?82f-}EH(^AKaevel<;W1{I5D<`IH#Y*HqWh!XI@zs
57818 zcapb&H+d5L@B`po!n!vc{ki7xAs*(r0W-GceCCyY)w+Jcy1rmtpSP|bwXV-u*Qc%P
57820 z7@s)CW0Ybq;}*~Eky4oFQVC%(x7ljuGAKOZ*b|XGF`o&I9vobG_FS@_n-Jov-aK3d
57821 z1|>J3OgL%XNCI3%xJnS8{Vf>-3I2eEJ7%wF16yAMTeDqgw3{Psv_jt|>+m&Zmq02`
57823 z-#^Z>KA7X-S&oNeJ$aVJ;jCN>%8>Tz-!|PzuYMNSf^%4HXc0Nk4+-a>Us(0TM<mdb
57826 z6AWjy(N#Fs$L1U3NR6>qxAANGaZNCs)kasXxIQ-57)NM~y}FHG(~oO{;jFfmlMqK^
57832 zmnP-w&xp0sr`Uay4FP(!A_VU9%@&6~j#!`!G@zZh-_fTr$83(Zx(D;3D3icu8}))I
57833 zFKcE-8?^wE@;v<{@bkCXjEoQT#Z{Pa=sR%(AS17^c~R2VLPUrHvhoFxI0wj;6Kx!v
57834 zXb}}_OveAZC$kD?A6w;nSFQZrtnD%2x3!y-DOj8NZpqDbR%BePpOU2srVgxVSu+o~
57836 zESfK54yO-AQ>hxM*2s8z0^iJxFN~FHv{*A1j+JU$F`Y`MN;SS{9J$DAIvE?U`Nxfg
57840 z&|=^-1#A6S>tBd2RIAk}P^;z~KU^bw=4)gYfm3iFovkIXmY7}ql$RVvh);>+P_=qw
57842 zV+KCN<wi~Pu>`ou!!<FVf`{YAdE-3HwbUtQfI_?H7v`did#dy4YN~3~DtqVQSrqAF
57844 zf-FohY?a~#yPJ$pj^$Gg!EqE<3zE|ug%$vXaaj6-F?l|{h)iX~CQ)Qa&4>b$bu59k
57847 zG<|=m<}c3fo}b-oHbzs>?q}^<af$fG_s=i+e89rRv6@;yl>^ZlTk>Gxg`!3SzzaSz
57848 zH@}4BgY}M`2M)uu-h3(z-RkwI`5e1|CSyw#Rx%CvPebc!W^Ka4B|`jZpx1bfY`s7!
57849 zW!%z>WQlN-`{rxD^q4VObA$M~VB!T3MGaaO0EgcTh0xLWld-Weq=W{Dz_TUIR;c}2
57850 zA=(0T3&3LaLa7!kE>XOOfbe(?7ngXvMv6-UUZce&5wEf0l7!cIaY@E&qPS$kYqGdx
57852 zX!H6~us#FuYJv6PH4W>-Yb&e|uNhb$UbC=1yyjqicx{9A;k6yshu1u;53l8-G0G&j
57856 z{KD2WNU5#?g@?h21!_S66Tq%!7}%1NjMW_Dg`?-oX~P&j4`Yt31~ba$cr^*M!Gbnw
57860 zfp}T0s7V>P+tKXAm`vPA+AVISQRJ^_!eqS8t_AdT)-Jiu;tJT0GE#A>795|Si^Aq=
57861 zj8@A_om2z8-L~rKp6J}Fr(+xTy;P6!Vr{r^sR<{FwUNSkzzt;#7PToTFtl9jgdUS@
57862 z$ta&$lk$t;sg0RSM*&TP`jkQQ%<-p+OA2f{^)6Q_($l{zDaJLS9UD!9scMp!RMo<B
57863 z8VvAop-z?Ua5qv&r7gNxt7(v62arHF)&2s05uy3ZwSLg@nN8YfVK}P!YXeZ<S*#7g
57865 z3|6j37_8h-ya={%9BT7L{Co^+)#62JwjF?)*>(`&DAwMDaIAJC!m-*-2*+wS<D8RF
57866 zS-?55vWRnH<q*z^mBR?L9V$l<1}jGq1}n!91}nEPye6P_oZ*GF6AUk`on&}n?N){t
57867 z)=n|Juyz~63v0JCys&l$(0H`Lz|-umR)OlBW_24>&mhs+-5A{61$(UpbGKPVn0puu
57868 zwP5ar&RZIz-pB4(kNeFk_IR^dMew)4I2OPIW)%V6YE}{8Z2-HqG2Vmhj)A}3tRnbX
57869 zvx?yFfSwk>JIyKrJY-f8;9-EhrZL_*cE`XUF{=pvF0+c@k3vri;N4~w0nVFM1o*Y$
57871 zpV`QpFV|nFl9-^9*p<x1?<FyQj>Nd9F9ZL5nD?E_U)%86o1y)`E_aYGFLyNX>|cI`
57874 z>9OUn(;Qp_D=^&q%;)rj%RgN;(C;t*4Z>dOyxfDE%k(-}{mNml_TWCWW*z^I4*tH4
57877 z*WW)du$3PON|MY=(gOie;q9F0O~rJZLsW&-Q89RA`}a!|<JVtf(~j<b_3ta^ailln
57878 zzbxd3NQjJFbWl1oTZ_%jSMXm^kwuQ;S2Nc|D=NP7q}6&OCA+H?2PK-1glLGD1BFye
57883 z^gC|qxOaPYUs;mG8+d1bk96mPG~?U*u@AqqRLIxYxQiPjBjk@}Ybp>rSf(-`q@3JC
57884 zZJdo#yRb7vWjY&WPlOGgRLzbBiHbz#MEL|zgV^l6?F4>DLOFXgWfVr4Xr-S>A}>m3
57885 z2rmfyX=3#x0(2B?CpYa_twbs5@9XL)6>^z$ODdU&N5eqh5jx`7h`#*;AOj{{dl-p>
57886 zPzFE}ki_YhYz~O+=47PvnJp%r_Z1F2c9Y-fl&Ck}($TBgwP2S!z{_EmH?R5Ct}exI
57890 zhmuDgc-Q#MU6nf49|x?5$xx-goASthp4(|qZU(<Vp&Z}LD#2PtXSqEGOBtra;>Jrc
57892 zFO}+KC1(rIKX!cjP`42VHP@VbjE9~-0LxrnCb3_<z`dQjhe+&;9Mcl*<fllO^scr<
57893 zgq~|yBBgPAFEc^9pM+@`dDqioS|Dr5fgr9Am-qd9Wjk2HkWX{DWUnI=D<%uy-t+zk
57894 z_IcWO7R6oPd{4*G)^L0%SM&h_%U@gmE_a;#9f^}%r4{JT(Vc{&+&M;S-b90vfaX+4
57895 zoW=#1IEc2dZdHK9jLwX-K+)6V2c0hJbI#3n+%dF$n<wFRD2hEW^*b+wQW1AH#fyrj
57897 z!#RfoFj#n~^45^*t>X~xFl-*t?cdWK4#E5#%YQ<i0A8esx8l+Sj^K8Eua`=}f?Vcu
57898 zs1@*MiV_-5^Y5Uiv*-|`yLQDCMWhZ+^29;`0Z`yMpXy8n{rw}<7gGGZn$Nl;g&fs8
57899 zw@>UIlGUEwZ#}sEePf+_5|NTQJB`5Xc~Y(vGO&0MagN)mQS=%(@(7_E$Aq6-M5^pg
57900 zr(zK=zX5Jc5Sqn&9hw5?;uTNOtIKL&pgZJG=KbkysxzVKy=!m{R1Qp3a&k-UH+Q}%
57903 zaO6G<D|!U5Y9-fK94+`|)J~tm)iq0F-;Po41fal!72$ag4_JnQ#5`cR<{{w$Tl|!_
57905 z<lYm#d$$8|i~d35NkHK?VkbZ3?f4zuhJMaN0nyHb>Gh=Iy4@jqWxE)-X~(~`ZyTSl
57906 z*tEmDUj5s5qCK@NO^JjmI+~hu$dh|vF(p#+dC_|KP35T@$$nT=g2P2v!fi2v{Uv!p
57907 zRTEo^_g^bHB`p_p7RxDr9E8S~8jZZ^^pHz-iK2}cWd0W~Y=7rnOOJ0owSUXaDK+jY
57908 z7VT=t<LMg;cvV4i+afy-ZOh%hb?p3>sS}yH-iOJzOzWd;ruVwv?QF6>xwZC((H}8B
57909 z-8P}eEzR#-EWWA7=2GnCod-&LLN3LtS-S7@rph*tY%h-v_)>@kMg`AN{Q7as6cu$H
57911 zmHs^^kRr)faxE$-Io&CMuJ6F99%<4Z+yr*Fw&lT1FeL)_IyM2Cyj(V$ZZYN1<Yv(1
57912 z8~nDr)nX=_-M9A|cPf~WU9D<nbiC||WDPZ~x+I@N^m`AF->)itQwjHIeEaS>C8)Ld
57913 zsM}dIQtgtaJAw{}*YL_-Wwh-u(&`_VzeZo7HIgKWO4P=5Y-NjLzD1HIdB!M9!pwcy
57914 zLe`QiS>inDt?eUw{jO9po(PTPwU(^U-4^-7VQ<;x7@0|yT2;-hRkE#-HeD^3Gj`c)
57917 z7ip!feA8CiOd(7CbPYE2AlwhM4Y!W8mSV|xGBjLBBwYEZG1MB6U9z!Fi-+c}H#`Y_
57919 z+W{acLPbfW(pmh1lnUYrFpV;m2q&GeSrj(M$`T6XvH)cOBr-r&0i3LXM!m|dgXS3g
57920 z2?%l|!mof=%5_K^e){?d0cW1CuJ6T5i$vn3-PLNf5~QRp+uD+dM?#v<?Xt`0<=UA>
57921 zniiwsCIp$`K(+(NW!xsgUq>A>4PL-uj~6s8Q;d5fHlGsE<JpKk6fDGI`I9!Ez0@Dm
57922 z{R*0sxT?1K+~G`7bLX-FL3E_coZ|-hvk=Pda5_~Zm{(ODIPjOSr@V*0ObX<uvo$Aj
57923 zz_2(FFgajY90;s%Ac2dO8kDC%OD4-J1jT_eL<T;|D+FbP-vAh?UnHEs3mkuTZ6~BY
57924 z<=6D7bX^|2p<y;t!%Qw@GigxjaL})M-I72Gv|wMci!1w0g9-hN3oKwlCIAa^F74*$
57930 zK^wiuMx79mGIkQ1XA-fSXg`SpiM>v&>E(uAeT`lmMC&MNYkLE06vD6TtV8F~b)6k{
57931 zYIo44K?t}=n~s4Rv5m-*AjxNlAd152*Emoo3^a9h0|D`Ab?tC0aWTCz5GenHuX&`Z
57932 zc~p{=ba$4E`L;|t8IOcRAd(nG$s!q`1FpJSHk-zJstAhaY=)K6FwLZ!%Uc#w4J$sI
57934 zoiRN*&|-OG^nG*;!i2ZX*6cuB9n_RsSpYNp)x^RW0TTs=>g-CUpa}*xvUQKwq|ty#
57936 zd))b<gI28cCB6k>+mV-amAlGdDN3Sif+fpqM_<Ks(`|Y#Sau0^o~rh!s)P0_l3P<_
57937 zTYY-6^~Ugr-Z8a3du`U{-&X#I?T6=z+beY{^ZcDa<&lfNtIUI%Wa691w3X}Y?`>ek
57938 z9GC)xmW2*ogau|&h?GMN_<g<8nEouyR7=JA!nIFN$=bH^SB`yTWccV-#Of!@-z4t^
57941 zgJs?EAgBU3{hZ$(_UfV?lfS&f<47Jt#>InaZ)I**#k*rRJ>6>4ZlCYk-7>UyTk;@g
57943 z@!x>GS4|dUnd5sdZ2$G0$jH-A9UP7%hr{Ku0*0N-f4=+&<S2(Y1}j?94Po{SHC<qw
57945 z9YLo*q}p8d*zTu%nuH))a5=fF7IZ7&Ul(-LJ(EagAcImq6R-*Vq%Oz|J4ZG?fXTIm
57948 zH&fHwW7CD=$!q%O_m-vMKR#dFKiQ7W@pfP7`avt-a)v(wtJ#mM!8pfHUuU|djkMv4
57949 z)}&i5wHVZ;T`_RvI6Kcf!+y=-67@nBmzXJsBxhR%)#*`nYq{ghWd9BO%JT4+pD69A
57950 zWURHc?dU{(TK*jOLp}nrIIJZ{dEiW-!5MJA7{!l*YsfE>#!@y*PBX?pC=vrrE7Bq|
57952 z7~4NwI@CLSU@k9?eEIP$$15m%rEQ6xsgegIXZfeg-=aU_y%2j;UrPI#{41~`mnrHz
57954 z8n4FjvbnMlh+Pg>HaWsMjQ&!l-Q&!t&Y?;m-RTb}25%o2I=DM8-Sg`IF72OS(s%2k
57955 zKb4II+hQ15{mt?p&>(*+=^?$9t{kXS7t5RmKnm-4uTGtsY{3_1&8cien`P5C<O*Wm
57961 zYqCwY2f|@RkTV6|S#Fm;$8!++Mkj({zh#~OJADG==`E(t2SG%*bLdL*=Qi-9qp*7J
57963 zWGNuKq(IiA4jQFNTySxut*8m^R9p&WU8?Q~47O9=;pk13drV8meS@ALgY=n-yOqjZ
57965 zQSGW;@XU^h2HDP4HyVMnFA_Uv-wmB}(0TZ>orw+l9)KZ;VyDXL5ik@TS@r6B!x01+
57968 zu8eByZE2YdX9rc;0YT?56(nZ>-<xC5X;akdtm2jYPRpa_<Mg{=vwns8l5I5-x@Ou8
57970 zjD+;b+4$B@+1(NsL4&-yGccI938IpSCR4h*)U6Rqk3LS%;r~E9Tl2v}J#mU*3K6-T
57974 zjq9lA@8E{-xJ>>|S;^ngE6?94jr`pPoi3k=Q>^3{z4A<)Vs|JTCeSt*<C2-Us~M>K
57975 zQkl5R4Ajuh%V*-QZlsk&Tz@a7;@Wdy7h};dT1MtAjL;F+2HwKzRNO|!ah>NNd%WH-
57977 z%Qk+VzLius-ICk_NN#6ca^Z&WTrauYYmr>;wMedb^^zNCNUr$0BzMe|6XERZ7TxLB
57978 zI?_7X-QG0PFH3m)db&DF`L-3|^?4z>t<Z|A>E%w-=LErq^!BVs?|SjIHg|}64}Nr_
57981 z?y{l7hHnVW5C*v9Q@tLSVq0<8%-7Rv-L=i$4m7{}O2l%zQ?Y=@<=hfcnL*+>Cm5t$
57983 zd4jzq_@vHqHc`0ZTfXYA?$tpu9trupc6lY_F+VJ5r~|$~2)a2WPu+QwBq#V?Ea-9T
57984 z_Fy^?=`bh_WrL28E8=#B!_G{rE7I!_-F66jhJA4*u6cCD*I#hiZ0?{VlW~N?mR)v1
57986 zda2=XV0<RIt&=9)u532qbVyw-US0Q;yZ!ZVE20#LO+IY$U4`W$-&G14R_A+I#Q&e_
57989 z$PI;XZ^n-7@AA96P8F=LzeyADi=21UFv->_;<qT`|F@)wkqC#pZl{A}X;x|u`_|E9
57990 zB@KXI1+~T;QCE0mIKVrcj3k=J5q8Nwrx!G1FzJc<ePx$2-ln#A;{zGHTX(1(noAXB
57994 ziqpd0d}r}}LNK8FVP69s1-k_so6Guw+Iq*^?5;E?BC_k9ZG5qqHu_Vk-lRVaev1E^
57995 zu&SkCXX9OLV^e%K*xB&aH@ez3heLG)UD0mC7|H|-VMQ53KU<K&%}!=yNs9%xIpGL<
57996 zV~&7k$}as3oda!t*i_sQrg(Wu&NeLjYNMWPSnUQJSp^1ay9NTEJdC-{^=g}lg@Ya!
57997 z(8yBT=J(*uU#QiMyG4;yqCcG<PDQeIH5%zORJSwcb_G2lk3Cw-c;jw=!AK5gqUB7{
57999 z5tf|tXw%z&e}CR#Q=(~`&vCHnyPc87cROuhk4klW1UG!?jqi5e_-<$QcRM}o!<}3v
58002 rot|)c-M7u|u+I@uCtZ^2tbf~_jdf+$f7~qEMb%MqcvGJG$Ibr_>=9vC
58007 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
58014 z^x;>;e&3!05Fja8cGB8yb&j$7?e6z|`@Qzt-D3(E0Qj+x!8bcKJ(K+7p&|gkguTBx
58016 z?a9T*FBsZO@G7>Ku-$!P<>Z;qj{Cm_(7F%66FONwzk>Zf9FJk`IC=WRCw?-wd=6mT
58018 zMOIk=?f1@<FRo~3LT@2{H{u&-%V&-ct<S^(lz%{(=T;s&e_{Q<!zhkV(fG>h@s*{$
58021 zbJw1E^V9yT8rl?8l&t!2ixPrZGEvLWFK}dRb9GF81vLe${z>fZ->J<m^A!6OD9B=s
58022 z7qC5V)$Ab{WjXA1DO^@$&Sf-Uqk;zy&ay0VwDi(e_+jk6Q;5^TzeN@ow&gG>2vXp|
58023 zmL;W#3jC22*eAUzeOLM(Vshyl(l@YtReDWW-UojJKSGSx;cZ}y&>2&iisb@Z!17V{
58025 zpDdc}D-LkL;z|Xy+!dT`kbtXhnduhf;{tNzzA9yL*oCk&_f@dquaIg}m2P(Vo`RXZ
58033 zunarkPi<I%FT$`5s|W$g{1{xo-`!BgTzLV@)36NZ;0Ub35_|~Ka0rgWNrX=0*ecwI
58036 z`qk?*3kUI?Md;mHsj+o4a^!J*1><ZL`%j|fF4(phfeGYJ&?vqJO7j@LCy|~s-;Wkp
58037 zM2QW|(x-)057p?;+q#_>9(x?iCB(e-{KtG&+2D2G=eUFWa0fT+cd_n$?gRM#!+Uw9
58038 zFW=lNuU`LE{_5Z6RX_K^c(ug)`8qCbyw1Pg?$uwt^}fHad&jN!U-4bI*%zw!g;99=
58040 zffi^LJlaJW6J=DCZP4NPRmW+^0qslLf732$C)6LSKTyA=zMx)KE-Po1pHue9Q_|l^
58041 z2l(gNKd~3sujAgs;hXSTJe42C({S}<Y@LFwlf7u;J#XvS-E^Wwjp?q)@J_N7gMJ=y
58042 z2RTS5>1{A{gu-~Ep*zJv=_6RbfxjQsVahgUm%t=^6(;Efj`vD}hpEONad-*)w^BA&
58043 z+k)z4A<s7i9*4t1enntPbgI`*i`zg5dt0#HdeeHgdK;0#Br)A@t-CbdZ5ugt;cbqg
58045 z$e>IPJfn7rTTb<M3c@-PbmJ@z@!diZBh*VJYiRLWizD_Mcn6ck_W>@x4{+;iK;0Jr
58047 z3CR>8nRSzs#7&Nio1CNW%Y|Ggu~SH_+7fU0q-xcRxJGE^akQ5Y+jM)DgohmVy-^a<
58051 z+S1l<QzD{&gfF+hVF`?yR+e?uYrjwY#YpwLK@2Gt$cwceog#}k6EDP7ZSQdSA-n`8
58054 ztg|g<*dv>4`=aF;%zNPt->{FcU%{EG(fTypXIt3^*7qF6)|p<4YY8)I3*v6{OQK)4
58056 zGUk|5LW@C>nH?Ax!<%A)WEvEDfbCgs_roU7bK4HAp^ponzftF1-k=>5I~jUZ0$T^F
58057 z2f^A&t=MG(v#Jw$vc=lPh4+y&@*r=$R)^(5NmA$m`tDf&^$fjB*$(%%mjw-#3)0Ib
58058 zqzn^|6sC)YG5-R1?wL2$dyf{(9Z|EtSUO>>9VwW+r)+&dUQ8T|#^WXwO~@yv=u2|G
58059 zluMf|Wg4XuX_KcC@kBgrN-1OMsuT=CE^h|%MyZsm@L)by>5=j#&mX>MnC=7u`SOw}
58060 zFI>FBIY%~T{CF%*y;nRTmWvq(CURE-EP!JP6BY``i&w&oiwWhFDJ9KNzCiPt;e6gk
58063 z?dZJOK~Tqh`2`;=62=P(94i)=%0-hUi$z<5qOpYfByz>HsiX{)K<+7{PFjAUU}}k+
58066 zDTAc-pjt8<Gl+wkEfoo+G$o|fQ&*fG$WP}6<F&wXr5XdtZE;~q6d{kQmyGGPM46l_
58067 zj15t8h-pMo$f}g++C+KEnxg4C<YqTgL3Bg4dLmCsD0H>S4bn8u5>3R5gBZl#RE6_t
58071 z?UgrS?-j<F@Kz`V72wl{3ubd7XH1(O48JCvxP+k?#GVq$@O(=P6IZHSE=QIKq98a{
58078 zesOEs#aJka7QPLWSlEmpnv8k1N1#>QkTYHR<ngsk!Z0S+kmsI8G$Uj2GgVv-Hnw4w
58079 zD7j?sDO{Be#fV;&dzH3gj#93U**hU95;G-J&2L_}B}#kN_9W*^O9@lK-4%!Bd^w76
58081 z%!Pq4S+#|My-Kfbi^L?F>Gs-?sf+QM#4JrpUff$VAt_^7+JwV}j4_EjJ4tVM8YGwP
58084 z`7)l=a+c~8pb1<)8C-c5|Cv-p$4#e7@-9Pq_GcBvq!Z<_$pogVx_F5fZ8>K#0pFIa
58085 zT4f)$_9Wv8+b*^?H52Sd6NIc~kH->R;em`fj;nm`I{ov=js*ke1i}YW=5DO+A}da#
58086 zxs4gzfveWKJ4FF)-i6@7)D?gk1Qrlr1l*Il!bHy@1Vqohgfol4VZtHc2;mTLAK?&i
58087 zf9fjc!aPES6#dx^LB-TnX7wFK$m)B5@EAcqM|c8yknjZb5a9{vVVZLqffCJ0K$+$w
58090 z6c;U!C_Zd~g#HoaV<Y^61rov&7Dx!ch`4)e{GJpof&NhoB=k!bNa#-?rH$}03nYY(
58091 zTOc7kjktHz_&p<90{xdPkkEhG0tx*xQrZZ=Vu6IPW`Tt8iPROBIO3XW^oq=-X}mpQ
58092 z8Z73LrsKFNbuV13Zq{k~l=L*r!ma1lbL;s)KXMUbvcL8n|E3@1DTuPA#$N-%$JSrj
58094 z!~6B{-P^~4^wiC-750b!dF^-Wx%JS)$JW39e#`K${otAG-_3*Pzz^uN{`^g&GKgLK
58095 zf;`DrVGL%oQ>`tWODP9uGC$DM-6=_Pz$IDY@+JB|(M*z;>Hn~@BK^yovO@o(^&SQT
58096 zeO*R-)aQXQHl}LfB<t$!-MM3YBBF+Z9eiwbd}3VuHxUkxjbceX5mile^{JXi(o~hT
58100 zmWgJ^K~*G0T?I*&r4_I#K}JH^@yK-vi`giH@tq?>>11C|qAT9n(H?C@`|e?TT-(`q
58103 z<+dZ@ul?3vQ3lxGLmC$6P3J=4%LDyBiOof`-hRe7J21c)oA)t3R}{n90B6DmSfLRl
58104 z+j?Q(j6YLn9m%#%6NA2l5rs5M%V-Y;HOz3bhzK(bEzQG2!El7)4J|W1j@F1!x6B6j
58105 z+}DvDa5pt2|KF~ChQDul=fcsRiEQVARL{N#o-W_{sfF2}A7&4{{@H7PkkK`FSAQUs
58107 zj|_MbIEQ00{XN4W2FboeC%SZmjVM9|TLGcN*k~w-%R>Ao^guPFMl~Khv(q<{>DU{8
58108 z*wf_o_XN^yw;%AdPh|HNJI3}Lx_Ez8k$)yd!rjTx-lK^~DlqQ%HTg$c6HOg`dMMZ$
58109 z)tyXIomx$m_4TSIoc>-0-l+|2{gw3}@>B2wXotRRw?nws_M7D~@WR~;!a=tV?W~>r
58110 z73rezwex}Pv~dxz=(m;p1MVi)>|U53dTjT;JG~tqm##a*Gr#@$mUx?|H!dl9(C-Vy
58112 zxm+kg>EqcaTKvAM46Q?k!>f1#helgl#Qd-G&#<SU117%|(m9)(H%BqB-C}-j%^%JB
58113 z>w=lv!R%syLUphX$rh?ARdr!U>`2hmnW46*kK{`A9{OLub$g;Wq)U3U)7u-q^ozgX
58115 zab3C)B@PTjgQ=J3Z<Uy=EK8Ue>2E33WrwYk#j6(>3TPv0hzJ^D77-mbVaE`=ZwodT
58116 z_{+G-s32{iXERky2mJxpF99Y~skoI&Qp=!9>OI9`F&kmf-`m~Q(cab)Z1yxcH5g(;
58117 zPPFZa?eLnjBO?6B&}d_g(j?}~-b9yWZZ+(3wkLzZo>aT9&C#rfL+!n7&X!0r78`uT
58119 z_aF&x&YN!XfMI(eY<a-2JrLgTKnE$S)-2D^mLhsK3`&f8fR?bfVNhZCZIH?ODd4gs
58121 z7sQ4|PCys*H3c93AD<YBWr7||TV1W~eXV+^EfV*%r<T3J^v-ZB=yY^;>VFo|-GjNV
58122 zU^?P=h7xJXHIP=m#uPMuxJ~=7cI+2f2`2b{D_-?p+})GR>EH*Vq9Iug+v;hJ$tqXn
58124 zAl1$q702@h`DQaUI!6a-3vmdEC$|v0oXqKBbxgqNx;_tzp*ulSWmQ`RSyAMb_sD1%
58125 z8O^*qMreEtwN32AVPSTI5iXY}-!rG8^<+C4j1Ff~gZ({;&i1y}7Tg+W_s|rWU=vN%
58126 zK(0?F)x#|o_2)195N0J74<EF1ioaEFcId&TJyCx!p7Mk+vO-P1K3pxHzP8TD&_sJE
58127 z;Bo~$fq~K8c4ko}S<AEN9ws?lVSi^2Mt3;tcE>`U6J3<y{}Q8oiv22P_-cMhi2Tyg
58128 z-eTpKgvc*e^WT4d8N@Un?~JyF0zMDArIzJ;tpr0`C)Sa0LxM?cq<OK^>w&&V`wV6q
58129 zuiqbYMO-0QM^CFBX=#Z!wWm%w{dx-1d<Y#i9BbbhYVPdr?AM&()>d8CdXkbmGoXG=
58130 z;+SZnQ<2sH`rz-@zs<f4Z@~aOLHS%p^GDl)c#pCUx?OlC#G@g<q|u+n<9?>%u1dEm
58131 z&XqDKidR943{;T-9fM1?h77XWh+E8t@F<LVwmsGo_Iq7A46p$QS|NnNSvySDHoEO>
58137 zH(ZNc<)@0=oE0bXrJp)<XWuKQEwQ_=j?>R7cz2GC45bJAH-fj>hX>Xy%Qn>=SSL1)
58140 z)q9x6G4E>pfE5u*+)Wic0j%PU(}~-O0-8g7$HJ&}I2nD9;?6QSon9xotshB-Yu~RJ
58141 zlU8nyE`xL<8+3T$c=F~5={Pvi_`wYKPZ{^YMtYEmTy7-K?%JTl4fV;JClyi9&VatQ
58142 z4fNr~F@_<4hrMQ>+eKeA-Syk)#(rAOUe`@tKA$h*Y>p_nvw8#3c5*qL^CVBe?Wbd&
58143 zw-=9jnOzCoU%e5rzxq3x+B#+0VDXf98!lgW*k_;e>|OTzxXYen`(YQ4+4q=k%vA%`
58144 zT!js3pgva(;R!-k(T=z_n2zU&>X*mO*O|s_bv?2z7n;Vq%<%PQ+j6C8++=UJ>8dLk
58146 zx3ZP=GU$?y`D%WH86Ijc{Z!mGQkJ-x^mZAswn#V>XvQ11TgUx&7u!WCYpi-TnP^B>
58147 z^}*V^b*shyc)}Qu$9HrFS}{un?r6oU32w9!?X!ImystF%i>nE3v<{cck0-_GsA25x
58148 zi6mQfJx9B&tl=ix*`uk!SolsiKCQl(D;&hweSZCU*pIIZ)T=VE(WKTl(Kiv9h-eY5
58154 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
58159 zc%1Eg36xw{b>MsN|JwJxy0-qc_EOcWTD?eZsnnaSy|vOUymV``Bula^3q^n}6hMw5
58161 ze)s!txo^4ayZ2T7&p2bu1&Pd@i-(3s7A{(_gfXd|G2Xp+bk$nV*FXGcjM=v^W{xag
58163 z&r;j=-nRQw-L6xN1rNiRzS}16+6(ngXpg|%c-yXbZnOUIfWp{@&oh?Uw0-O3mc*A&
58164 zT!Hp4KzsLgs0ci6Z-Vks9B=#X{Rda<{>3K%_Tw<#-d%TWp7dIb6O8FkGG_SF?#Y9D
58165 z4Lf|l1o#xdD|;q)Z*41%!~xmuu;!(E@3?D!@h?~>v=3qX-hEs5ZdvffhoKF}{~Y6t
58166 z7mLgRcP70oUSbNn3+N=+VfOdzg8+52>wi&MV)Q9KjAOmY&tkYvuoKeO;*anj=P>NO
58170 z{|c^a^WG_D7&s1VXvWM5tIW-6&M7Eo9C%8~L$d|)rh%uJn*RzSIy9ByM^}#(@<+$8
58172 zOgPYM9U<1q>`;=Jig1u58CxA7C3v^6^+Z1bRI|Xvp~V64>#6=OxFqQt(l?-8urxtP
58173 zRS=R2!Ttp<&VIyx%s97k8>9{n63Kns2Wg0hAZ_AJkj~*<koNE%Nc(snq<Ib`;e&h-
58174 z(h)ua=@PyK(ye?uq`UcUNblf#A>GgSLwbN8fb<@I2-5rbeUM(}ml+pP5rwo~)I%B<
58177 z4%Wifu&wMi$nAo*eQX1i_5tJ$=(7iS*U4I8oOag1=0j;eT-yNd9W>^4fZ78&g*CDR
58178 z0MW{NSre36U@QglnA->GT<DMa#WY^KRyqi22do|QLy+R^lWY@}w?VpxR<M=IlaSsC
58180 zdSG<Sb;6~<YVLsRHt3I-F98Z{h7~Jd5q1$(*OdF;rQvoLaqIx3TLALfpM-WD{7-Z}
58181 z^jlm%`Te=LyL^3s|LbpliAlKrw(5GVbV*Iuy>6N1dQAE`Uh+n`K3sGC5-(kru5EPv
58185 zi}o@fMKLbsW*(}+D93MXGzN`E!|R4u4S#QV&hVt+^M;Qbjv5Xcwj0I_HyV0%_e-aQ
58186 zfZY^*2R-@dX6VcL*THA!;9*#yq=ySudG%*i9z0X)idW0MARd%9%<Lui)%g2RSNx^4
58187 zknrLV$8f$;d=1id&?n0Wct2d-yq!1m6p!&BTyAdVdgywYy#}8CtLzo<c3)=a*eUjP
58189 zt}5OGX{-poK6|P7D5NK@?16M+(E#=HiVs36ii@G<T=DIYey@nJ#Np!KL8>pVr<x&1
58194 ze-B1tY(B<d?E3<#@!$Cs8WX8^j-Q1w?P3xn@H^taL7t1bQ2!+e@i|Wt#a<CdA>9hG
58195 zJZGQdAA|Ix0=2=7kdQ(Y$6l4@Ve}}yiV`A@Kus2+P>4Yx0(C&-8G?utqD_c3`yj>~
58196 zgxGQk#FX3kZG1aKl@L)vJb3`)NQfdYL-be=QDZ_RA!=+B?V<xB#%?hMQDPVJk$;W&
58197 zXsP1kNj}B|{}k{s4pk%5-F%pH9^JcmD{q8*LaUE(e-)IIQZtv?RrWgjDf=N+f1iDu
58200 zm$3eotGA)9in{@Rh_vWwDS=u_^^YKT*|+$oA^l+y<ee3-grSuc{{-@9g%?*<yagqO
58204 zgWU?LpMkCAtJ!BDZDpvJ&qB=0c?Ke6&c=(EQ4ZJyYAyQ^<e!A-nDZuf4DBmK(wtk^
58206 z4$2#<%0p1Dt15RfS$wmqoPzRSRFz>z7n`ceGL+MmGJlQ9{MD-RccJ`vRrwN>_f(a?
58207 z4&{!j@=351uT_;Ff%2ED$`3;MT~+1xL-__~(8_}E2Md7bq0QGhNx+W-c7xA=Ew~@}
58209 zNIA5D2FmG}dV<R#Wl+K#;viGbNS+YpOymibv=T=RYG;Ghr-JHvAe{tW^VIHH=~?EK
58211 zOBbXI%qCrwE;6fhNxH-=(o51yWGSq$CRM}w_+Yip6j)9vu=QiZ<BGEENoHTYte{`J
58212 zajei4E;No$Y*UV{A1jFTq<SE{Ik_nuj~Cc@fej{y@ML&!VxXnKa|LB$TT4OYlJR7`
58213 zr6A>$Ehi+ej|~hKJcG)_#K4sB4h~GErNM$2Tz60@Sd)+$oZM27M-LtsLclPE_|`}q
58215 zc)XF@28TBf7xcqp@q&~dU-R}c01h7;QwpP_P?ZPhLNDfe$H$c^6&hC52vu51DYRpI
58217 zx!AJFC!K6FLOiKso5shtOpX_Lc6?mJU|iV(_#_9$TMD|I0xOWylYo<9aCEF-NDdT?
58220 zb4$ULQ*gC*Kuczu6da+DpBP7wi6L68Id|M-XM@87&GE9}SaP+3WK~DuSy;j#pgy4t
58221 zA4^UmQ;FCtj0`C#VOV5omB8BM<d8ar?Hb(+Dd@$*71XLb*>i-@37eHk!!S!Y86R&3
58225 zVyLZU)-_l-#h51v^cpO%1;@dwC2sk0Y>J8Dbz=p0azGg_*g^bkF!2P4q8Dl=U=3dm
58226 z1~~+b9yTyAfRymULZEHRYs?ltkPRn*Zhk=4mu)Eoa#I}dK_EQd>vB^P-b1-58SmlT
58228 z)tD(a?o%6;94k1o*FqR^{c9ChM6?>eIN+zix)OjN-jjeI-cx`d-qU~|-ZOw7-Wvcv
58230 zO-}YE(ZXLBB8=E~mUum7*AJuU6*`)yblf*Q2G$X=oKr=fYr%Bol)1F>xiFdvGdy!n
58231 z(BE0tg7wUQl3atK1<Bs2F788IyMZ2n!0hV>t(oj?DfHx81N|+9-ZugT3EvFheZV5-
58234 zADphY6KM9-?MWV-*pe*hV0VRPd2lie`3W?6)B8-q(qJP<jsTC7FvAFLUFJcW1;(3Y
58235 zlB8-}^`OMS3>^rZZpNrEA}%70i;y7IOloB=5QP2`EflELWi(nO`+-b1l$#1>Y9C21
58238 z-h@NB!u;$pSR2Y1AazYpU}$Th9eNBC$|#>1mGYC|sST*8qktwseOf{D)bU4hQ)bw7
58239 zN?m?UkzV{(NipJtcC0@Mrm9L_;^W#n7lQ$wmn~7{MkvkC#*-RdG;GQwSOO&QscL^5
58240 z&%L~!)<QRE`O<6DFN5K@*Hh?${PJ9(4{j@vio-x|WdwHM617(5P@oGdAiFAeoUswe
58242 zIkoQX2*)vZ6T(sMW`v{MEeJ=sTXD`|$V}jzn3=>mF|!Hh#LQ-dxe+p35C$__5e75c
58243 z5C${1(Yl5px1H97xgE4F%<ZIgVeWQX7v^@+x-hq!)`ht}v@Xou0W|I}GjK1J3VF!h
58244 zsb&{Jb{`U*N&`^33-($KX1|(6n0F8i*I*7n=NrnS{t=a^$3ZoVJ>IEi5&T^+jt1~<
58247 zFgo2`{08xP)u;GZ)5;TXzVGkTXF8q!!{(j%-OT%k&%ft~f2??ZdY!bLMfeUD`dzF?
58249 z>Ee}g{e#5|rMzIj#oB+9&*kDjaZB-K_7lLTc^2HiqSo;g;Pstp?Hg5Gd8T;zn&UrL
58250 ze2KSK==AG+_-a_!A3p!zeZ;nF>%f2XhX*tn)v0!ZcNf3IH-S8UsQ8sxJAAA7vsuS^
58251 zwD__B{Sez#Sr)AoI2i8}Z~4Oi@cGaA`Dk(McfEu^e6$blT`5h!yRW}*m-PQF{S^QG
58253 z$u{iRvtvIS-Er3)yV%m*Tes|BL;H5^xQ*eHIW}fzah707mSSnv$eLM}wXzP@$>z{_
58254 zy_EJ)+D++PO1oH}@>As*<ss$0%1&iX{jci3UH`TEN9ymb-(J78J{S8|>}2dCv72H8
58255 zu~f_%{Z;gp=-KGW=tI%N(M{2n(R?%)4Mr|U?vDiPHUx71XZ*dsPy4LiAGlt1_F4xl
58256 zA2Hu#>NVVFVER3LfXCPm*jL#@Y=8Nia`hW(yuTOl{TOrOciH?Nd>%^F&jNK5K=o@-
58258 zo{-ivOBIZ)!o;3oPWd(YwEQV~r`#_6M0!lRMY4*MVgvsvKgxsbGr%)v)$hK>*c#m}
58260 z_000C@+&juzC?3hqPZ{8+?QzXOEmW-n)?#XeTnA2M6+I^SufG7muS{YH0vd8*2<g*
58261 z<$dz58M9ubSufJ87irduH0wp0^&-uBk!HO}vtFe6F4BA#X}*gz-$iY{(rk9wC=2OV
58262 zGv>QM^If3%F3@}zXub<H-vyfQ0?l`U=DR>MU7(pR&`cM!nP?v1^CQxyq>oD<nK9FO
58264 zbDX0&&e0s_XpVC<$2pqg9F2ZX8+{F1E`B6l6|abIikHQ?+Ofr_>6aL1DLq5!X-Z$9
58265 z^c1DfQ~DgG&r*ux!Yakb!~^1(c)vI#4%UpiQrsw=r4i54h-YcUvozva8u2WRc$P*y
58267 zxA{MmM&eKNCwPHBCY`2HPSYr-X_V76%4r(qv^EN?fFI{y;E(c8^N09@+8B591AH&v
58269 z&+!abz+NS|og2AezhXaUKVd(Ro~J&~Q=jLxJ~(>i7mL-uR;1r5O3xAWa~gEw`oCb6
58270 zo-M<jWM5*R2ix{ASn>zhG4_6Th#h46*e<q>O#lqS&9Ieq$EoaqU11N~&NhLK-@r!M
58273 z%Bp81@z+*0zge1M28q?KMHKkE_=s-}{Z>o$z5L7s*83Kq&^+LzmpuX8c#wXnB{aW5
58274 z^)#%r)bMHLN-t6NPiEHeX=M{||9<u^pwk#|sT=s?Esw-CDC3MWuPM!3uX&alKCL`+
58276 z1O6Lus~bEsdfJp^qOv{%<!fss!lAlOul;tfx<-YPrj0edrnamnYN*c&<1@fw1~sHA
58280 zqSfhWbuz0wPp-nv#%URPU&CriFH0w-dz}x{Z%EN>o)zo(dm$!?FuiCLe%Pmf3Le4T
58283 zQg4GDH4nZ*XcpR-X3)koqg?7GF+Ob_)9Yrdk!Bf7p0NUX+6rpRdTqDq0zbn(3l^3c
58285 zPlK0h;A>kAOpRo5*Hd-fK=!EG!s|)nb>;nzlU0&Q<5g=Wk;c=n#9@r<_$vG`Kz|cF
58286 zK9gpp_J9YMf-44>fT-d*h_QR66j=q;r!q11tONEQfH8}w#pf9-)3)SyHK7TaRwGMZ
58288 ziQYmX==~Fd-ajGeJrgKJuIf3+;+v{=P6O?ndZ0}g%#GAF(h4M6fuI!#T7g6>5D*va
58291 z*KR3|C$2eKMbB!-nqFUxlYRzHwKXK2>@Y+!Y#Juj(pjm|0|hpL&Fu$D+NW8(>J`jZ
58292 z%WAA!?F^Ng=@zgw-t-z%)jrN^WOBMR%9=Em<j_&mvm)z8l5Z2)23^&N`dQ?&BHspe
58294 zgCGP%t!Ab^9izr6+!CaxYcf#VLblaGy(&+-g?JD6e{cGUF0frbDS*#%(V620X+ru2
58297 z-REfc4(;Bq-P_bVAJp!B+PzD=YyEhWcK6X;uSFUHC^5h?dPO}?XZRkf>IlAMEo71~
58299 zi=AR8$#Wl}-(ncZnyHtpSsnZ_y`ZSjg>Od#{=4W&a5cKCg=Nr&PhjC*B*9&VyN+OW
58304 z+}B<1t1I_)m;1`)zMgVlx!l)N?kku3ddhu8xv#6-SCsp@SnWxGQ>&|v;Qi%(Qn{a>
58306 z#;&w+k~H!?t4<mv@-$VCkdt(ZD*smNukMdz)g;()5|B@V)XS>ulAQy)D>^j)R(p?{
58310 z4SG$x@jZCuRhY@A*-Pu&hO$%B(t{^SNGm+CtZotA^sWYhmZxUbZ8U$V3i`XSsyX~N
58314 z>u{;9vex=kx%KPpQMlArNo#$$-1;ax%8qKSLTf!#ZaoTq-%hQSYpoOI)}7!BF4tO_
58317 zNqP1*>1WKwoOzoh1X}{t2Ljv>$V!=pxeG+k9KYY^HOS3PrexA+YE{-s`E0$()|A#o
58319 zcP(I}xK)CjST&xv&|slRP&Nd!hD>=Kf$nZ?Imt|e-mt>o<fTQ`B~0#|$=KL1YD&cH
58320 z3!m|)owz{R5wiQ+baf5hOkX0XwERBed%pOOe3E|__6q$8i19kJhK2=F4-6mB>kWE+
58321 zR#sN6$~&Ejq$8HOITyYo9dOMbyusrcT$|N>^6N=E?*5Uhk4tOCKf{i=D8C@-6_V)H
58322 z3t1A&VNaEXBp*i90GA!;@yX*%mf0p98k{wp&7BjA1pQ7s>*xJ?gFnj?natd-9!$D>
58323 zy1VCeB6ba#WJ2%r`sZ|Fow_twoWU-jl4=8XiLcps-{=eJ&gR~x8yjPph$+z2Ixv!R
58325 z$z+4UX-S4HCdKYIcpJPOw;fzIvVGpMkD4Yw`)+(MQwT8LAofA*JDeZzSPYWjF)oQF
58326 zE=$sKu=IeegjfUTr7El^3G3CIWm3^_z-PCz7T!|9x*O1LXi#y6TECh}CK~kmYCPB9
58330 zEjN!0-?6ee-Pz-bH~Vvwtu4BClQ9sS*PR%Ng`@o~H~jh4$MbhB?f%eXZ+EQOzai5-
58331 z-qkuh<nzY7{`vl)(N&3|v53L8M;PN>eSvJ)5?2}zym#KJ^-RT2JjOo^yLm3(Wa3<K
58333 zZYm+sHav((1oKTBJA7_yI9eBR+3J<#{v!+4tO4!Bz2>jkW$-cPpD=R{_9FuJ!%B+=
58334 zy8-dY%5dIQg^3_cz+!M_0C$yJB|xPkfrya!fJVo%o@j5#S9eQaI_GVet9$3&Xb0w9
58335 zT?!sU2bdXG-i~BDg0Ch{Hw&;hQbRZC-2$OXB#0!bpI-l^;HF2`dYirNtCytgb;;g%
58336 ztUVB4lwJDZ)urJL-#x1IhZf}hHkUF#?Qw_SzToz!@f}%!)BD(;BTgsHCc(-`!K|=;
58338 zVb=fGUYAq)HKz)*Fin-Dsn8~Ns{*0dus7(r-j#H?J90*gDd6=<I>BYxprq&9UEvVt
58339 zwy-y{D4NYi4Az|2pY=7aNYDSBtxGb*XI+=C+1I#=*2RKk$M=EHK9FDNHp9*o)q^o_
58340 zRIM5)&JnZ;vXEvo<mqI%&gZdNSdQn)Ce2xE(Mkp_GtHu{x%q>m-*k4>fkErOA*y&s
58341 z?T%(|Hedht)i?g}+K;@jOfzUJJ~YX#&-h!(phcPj)}SMih}92#c+=>e^Y8nxYMg<-
58342 z_<Q3E?Eivx%tZ;SQX9sPl-0&uE*>c93xr9iFLSE(1?VY~%3LMd5%yVgiQxSDL|;m2
58343 zF*M$quB)%um-`_uYsojKV7luVm}DFbOfT=9-N2xdk%_?_P_r?bkqHn1YYa_GhX)MJ
58344 z;yn!wO<?YF?tszbkmN*{-D_~x1rxU~Nw2Tin-%*uHi5lqPsE44{;<uJYfAPn4cMe$
58346 zPP579b9s79k-GYfS#O);GzaD_QZgOkPfD@X$*%G7u6hrSe*wIXDgJI2XJ-77@PStJ
58347 zugLRIEseTqzy>dsBwF7rhXx0Goz6N-eRq>Lq;uCh6V2hE!xOjLGQQ>wX}_zrv&HF5
58348 z`{wmJjmEk_TyOP9bE#~<%iu8Be5#ETIgZb(Rn00j&?ePW-m293z_%#)2k*QiA8PYv
58349 z-ae)nY&u1;W>+TntsK7VHZX6!fBcu*ng#;7rE`oB7kQ#OPcF3fUArIHtVtjr;}5}1
58350 zAa+3`$%F+IN|Qt{1vs>~s=KNxk>CPKC^6F-$)JPx==VD9Afyo<(N!7s9+XntS5?D|
58351 zs%6l}W8KLiyXf@k7v-WkUo>vC$GthFeqK7iZo96|H!4I=s>K^}rsw-0LdRdp^Q92!
58352 zCfWa3R<OVd>+ls~U^Nbd3!vi=g2+4c+A>ui79xM03@wK-Zj{*}bX9c#TLp%gX21p1
58354 z*@eoK_pIh<*4v*-IP1(#gT-&RIdh(f&ttZF?XHy1p2S_TwZ*TKWMj~tj9aZ?f27l8
58357 zsKPZXv`3KZV8DPAN7yVdh^_+I0EncMt_7D*&kj<yih7j{Dl-!b1_ExU$-o+TgUU>@
58358 zgk*?OJ7;o~q5!K=)-?p8BMH6U;c^8nE|b}3v%v-u@%fBqZ+j#<*P^qV>Qk{MgUMf4
58359 zr-v;%Xip@7vqOP8k47Iq-wN8gHgB%OGaq0pFSE52yg=9woRcJnL~Mmx*qo;|G6~pf
58361 z%{wQp*_BP)&J_04o7Pj<{Gkc-3gJjkr-31sDL_LKdznt+k_s#VFntFi$vev&&CUv@
58362 zM;G8;;Ik}^Gf9#+F$j6rXnYL@&~Di*Amj>HDoR>nY1t<zD`-4AHx*7L1FoP~3E7+t
58365 zAM14clw@<GC148<=bgHsr>WJQ^k-V!zDQz_V)B0~{*t}OKE*t2)3QPa77s3x5Nr}S
58366 zSmIeLN+$A>iSbIKV5`IV5Li+~;V>p-HOr0TWOD3Qi%BP#hkJDDP7b73&1MOQjpoLb
58368 z1NSmK5E!pO32746iNtkr7VvpoHVbHen1}VWrgHROkq;CQ5D!-%;LmLC4}|?ryR)IL
58370 zyUM|YX0pLP*#&RzNk=o19Q1>|UIc|XUUR0auX9c+kzLWMvjt461@G<X%0-7ew77up
58373 zzKF+c@^+0moRK=tLn)`VAtCF%0cR|2wFDOqGtDD;fG1gkeUaX$nD?s|4$R$-S$3=_
58374 zm^oSK$PTjEfK*!0egs=Pn5x5Q+_*Fi5NI(w%<P+13|tVeo7}PlPZ(-q?e1A67#$FZ
58375 zz?<ecOfHiv=<+2R!svoTn-!NU<j)TEHRRkWkHv5C+AS8pD^+i^29qQ6HLp_S#AddT
58376 zz4M9IC}7K%tB9pxdlj-y9LAqq3;G5H<dw`fAhM&%e9sD}`dE^zneRz7->V6~#!S3E
58378 z-4Kp6E=aVx!-<&Rp7Gjci@_XrHs!k`Eprr4{ScZS+1;3mbSj~_9T{^f?p4e&qo+*?
58381 z30<Q#syHR%(XiKTM{+mv##(Vg=}8zGRFSHQrW?T2fWw~-HhG+>sBDn*{<pP7I^%Uw
58386 z23f<;mjDT{)kW))x~|S8csAD4q-X-*X;vh!1q4894yH=G&nNkEn0sg55;TEZn+D{>
58389 zO*8twvSWp=;!4zz4V`JNZJazGlx3&gY+z}gM$gBPP`?J4uIp8-whN_UUZW`yMLzpB
58393 zxM-<Gro9b3WZJ&PB=SRxyaR5h*@*jg={TiFJ=rgR<5d322@ffo+Xjag^w(#ircfr*
58396 zdeB(<g3nOip~-%XELIxVtzKl02Vw?C(wXjWa5Mxg9<w9c=CK<*7Gu0|OOrEf%{KdN
58397 z^=MCWj;_SwHKXQ$C*gKjn&WA&(JbkVp?a&?r8upgz`}^xV~j*BI;&=5L@U3_x`-A*
58399 zCZ`g8`}!hn-p&zlVM8I0*Kh4j-?$pc;7z!>-I|RnSxI&_hOPD+{OP4>cgz|KmNf4*
58400 zA+sJfKi}KvM_B;PQ@<&_wz%RKQ{g(7gZ1zpT~&D0(<-io(gLXpCFHJfBvRg<v^5o8
58401 zw|1ceadM{YsT&46EMAkzQP<XF)4MIQ*EQ#+Z1Tn%Jh4`rG2a|$jmhC$q>P!<+?-IF
58403 z?}!_&$<gxn*LXeziW&@u)~-|0Hpc_VO1sYxYG?=|*8bbq*87FkZZd<QHrzP6T1D34
58404 z0A#Z|+2->*EzX2Jl5cca0L!uBauB)$td9BeZYQrCjo0xyp_y>?w5PlF+iLwM90r}+
58405 z?hM;=F>lZmHTk`v)}|J#{-nd~vc`kqpf%#MBoex|W#Np+nG9O1PLgA6Vz!fHh`WKz
58406 zyb`sQi5e@l$Xfi(HEUjqyDKNk<-<oh&6w?+icV#^Q^U6EBW2+Unj?#p`o1*h3+Y&S
58407 zO&=X9n;V*J$pEW5ugb6|-`ex4WGPIW<+!R6?=;T_HT|?o3wKoCvObCdo!vImw^Z3l
58410 zf4vC9Kq1DpBMhgtE?&2y&6k-a!iZZ<uEhb1QS)|g=6?j<&W5}>Lcdh7|CVP}D9!5O
58411 zMD2G*<u4d2T232<`sIkxZM4SA-!Zg;fLT0Eo%GF!C1B|vz;78)*L{r*ve%>Z#8KD3
58417 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/expected/layout.notonastaliqurdu/NotoNast…
58423 zl02$Clv656k|aq&k|?P>5-Q2;`~6<my=M&Rd7k(E{eJ)V|Ns1Ff4<kf?sc!jwXV}z
58425 zU(MTk)@$(c+XFfgsc+Cq!JtuvV=pcm*qSJ~2=)69nl!;1w1W=dIQFT=kg-EYEpOu4
58426 zMHIf3C?a-f;rOx0cjI^pwyvQg?-_E7YvFRDg9T(vo-k~1VNvxB>-;#r2FIHWLq_~R
58427 z+%2&`hua%AYQp5q{^J`HB_AY;-9K{7pu&)6{`N7^O(-9Ga8%*svB9p`KTy5~%6mr_
58429 z(lnh8(tMP<!}Gc98zg_$GH&ZX{Of?<I$CE8w$3oPkD#$-;5#bRKkJW3&pOVj{O6b`
58431 zzq7qn1E_(@LT;!-n+{WJb2@nqpiKpnx82r3VXv&r<}GNf?uG2Od`u_kT`V=or}IYI
58432 z*(0x1sYmjCYLkmxG-zxo1!b*8|7o097iOvuJLT4ra%F8c+Td^~(!p7q$xd(L;pLRp
58433 zP;<KH`P$6M<NczX(%QVg(M5I!<>V)q-pE;-UDHXKZRQN>Repf~)<tL)k+xA;vwY_K
58434 zQcXGQ97RsbVU<!4^+iEt1|vNTR%E9Y)qsWCX-yHTPathjd*u$KO=?6(0%-@Wq56Te
58435 z6Dgu@G=?Ss-KY>YG68fX4X3-PH;tnrnn-o22Mwm7NR7m?anuKU<4|%q>WqdA8&D?N
58436 zsZTf2&DfiO-w>3WC~XcysnJMzsWweQiA-unb+A_#ZF!OA)Hu+_sL$yR(q8?*-el05
58437 zz&odNK)Lrq8YufiKt~G)gJr)E^e%99m+a+%R>!Y=Y~DYO&Ra1)?=|DAJf0488-5*-
58438 z`rnn()qDR5AK5rQmhQpcaMT<oQfnZ5G)3#2YJi^?+>F6*DC+abZ-oQ~fnzT$d!$IU
58440 zQ%CgImAZ@mCxGWkbT_ng58X%8=s}uAbEt$KHofMH<|^}5(`UYJt~cK_-!k7ex0>&m
58441 z+syaPo#w~pUh^~afcd$3&^&IQG|!tC9DN-99Ctbj9EGsqsuW7$9NF<RC=oxClJRp;
58442 z6{-fCO~o&iYEmr<gH>gK*Ltv#Xh^9A%H9HZtRh;w0g`3;PNAt7(f#xgj?BgHR+>i(
58445 zHW{A+-|U|}N`?F=q@(du6hjGtaVuyb327d^f-X{!W*I24Z9^mh|Hsb|c_?V=Mx<FP
58446 zN_1w3Y!o%Y&mj_0qDMpIq=aKrv}y?7CbZiXY3AM(DJqPi7t$<C1-;*cqbyM+IyXeF
58450 zj-igB7`298LNR887UQRA2`vSEA3ue8_YjUB#!n#{e~I+h2J~&D7%8Atjpm>?8#jZp
58451 zybPn2(F$pnnjum%jFrYp<gn}v$nFs67sd%l@EhYB<bP{?k2K5CfE-zZwaj)HPY1Ir
58454 z=cCTYoPTpJb}n@;cRu5M-nr8GlJg(VQs+A72Im&%Th4c#+nw(_cRBYs_c}jw9(8{0
58455 z{NDMy(+cVnG$^Pz=swqLuFbCZU6$A5jqxUWt9Wa9TU3v#x%-cI%5Et;S9YPS3@acK
58456 z{&@aLM+9a5`q8~t@kh>JXR@=Zvzqf}XIp1y=N--hXR-4h=Y!6<0sfX;#ow#K-)8W)
58457 z75wc0f4jloKIfOtW8m)$_{$BtJ!ojq2-gbNde<AS6W&m7v^T+<;;rdzF8r-6Yc2d;
58458 z0)NW-#g4qN`~@@vvnyFe@M1&(>!kI5`D&&NtIV=EPF=b=kmI;~s7#k3b@`9WA71|8
58460 z@uRB`@5JKk8~vUBPUZ>zTN(gW>|Oa=h<zWSF1-e9fn8%MM`y1r|CGL}{H03N{<{GD
58461 zN|y;MWdSL-stuX}^iaj>*+4t10^8>U+bwLBW_x;t-lbP*JGgia5$<*Hvlw3Y1UzC5
58462 zy-Yi3C)V(f)8DBfB4h*1rETZ~`Wx-1&x{tvRAZWPzcJl-fQ}(zrXgOY!%pfVVm6aF
58464 z*qCPwGv*t^jS<G<#u8(UvCMeN7;CIBo-yt*o--derWp6qd&UdKO0x#+vZ?W+vC4Fr
58467 zv(1OiyUoew0z`&?m@gy3mYVAjTQ``S%r_8M-^Q%{uK6CK>IdeB=0}LApO~Lw_Wm64
58468 z^b7M#^D9_v5TbyKf-&1|q)p~Z^93`~j5Xb6oEc?Cn~7$E8Dl1y$)?AQH>;T`W);M~
58469 zuV5ude3aq!QSZEV`Cc!U;St?C`<y-d=J^^W`)cPG4Dpuq&hzP-h4!L+Q0l<sYSny{
58470 z@1yM09A2Gg7i87-sSKaDU`Sn`&Pc76TCJ|n$nX}eGh$*XE87>H?JX$CD%COBS*10N
58471 zY@g2VHQDP6OGP5Pu*hfTPF}0EMl-%@gHx(;?%If0m6hT}GBs;$w2H>DR3GK$4bER1
58472 zr?hlvX84SBUu<?B_veet&JGkv_7-`4TXTJ8t-fn(tMKf0gWCC=?eePmjGFm9`sJZ;
58474 z;Zze&H7Q6gz{x{0q~#0C9^|7Qc|PjQg{xsdxwEe-r>b@?+~}r3Tw<ex2Il7%72=d9
58477 z5@4mSFDSzooSnWFlaEN<h27MwRG3R@R-sQ19O6@h(19-~t*$RP!^_-8U|1#%^l}Tn
58479 zljU4OwW)<Ub{FA)QQcPqwJ7<@&?;Ao$dCc83lAfs9ePPlt(Kn#BaX}{)w-Rps4%Cl
58480 z&z*syUav1QyAwBn1T^Gx^Ii|^xkX<dG~^bccp-y9=-KDVF7TEVczqs-t*$RBqjRsk
58481 zQnM&0zlJY-aO&i`zUYk3-Say4v@?^dAwOF3V=_u9D!X@HX;c(cSeWJWq_fMxw6aPg
58484 zL<|_gvC<e<y6@ri<m!-H90nVkUe_0&QL1>G0KxM%F{9MrZBj<5$=l?NQU`BSGD@Ai
58486 zIL<!k%^+W7`d<y0$NIWGRvu{O@m0h4yx^-k#>d-KjE}c9Fh1Va#Q1ny3*+PMjTj$q
58488 z*3`mgsT|?|Wr<`SeS>mcmqs|-vFZ74N-K4!*mik{jy%eSmBjN`Wg2C88w=-+(VAVR
58489 z-Jkn}|6Z3D&ZoH7WaW|5I<;A8BNfYIZ31~<0N3XqUQ^htuCHlEW_-)KzGnZfC@g#s
58490 ziZ_RfD6XbA)7yb#14MgkNlAy)4hSZBm;n)fF*P+)DmDfZZh;^c=Zi-%6LGbs6e|s*
58491 zEMI7L`rwkxRIj&X3EI5*>SEqZyFH&1-ViA5^%Zb%Y12J#o#}OWlh>KG97*|E9CAYt
58494 zttt-rLgaY+)DGM!Yq52O2zfBJq<z#YFVou+Gdpu1$n-K_0af^%HL-VV<wcCG#Oqmm
58495 zKwGJ7^0!ptB)eQ)1-#O^cF5%_ZiD!d$x>|Zi_gx>O~&NvZJD20T3^M$Z`)pVv`2F8
58496 zRY$X~TlZhp$j<P!NdH$I=4AM8PA>s(Y-1SIUlxTzGkx_@qn!+y?X#9G`9iGJvh1O=
58497 zfu_QJGU0i4`|UGILon%-SNY#G=??#0R?K7KIMy;1p{kO-RLc+W*#QB#MS8hZI%4nU
58498 z^lGUAxdcX2A%a^Wf>_(_u`GdyM`!w)z{@-RMSf>Ar(&XgO_A=B;cJdfSC(Qsh}+v9
58499 zGjO@Ix@E9I`??}|TLw<n+9Q#RgyKZ^jI~N~dLSV=J-JK=BzkcfPW0w7oan=4IB|Q%
58501 zAot0ML0qOI5=C5w6N9-7Cx&ntP7D>ka*!G(d~s^H@WrWO;fqrvgfC8w6uvk$O8DZ`
58502 zXyJ=fV<6*}6$%_Hd%iYE-eo7-A~}wQE_+$n8;`j*P-cRi<T4Ybj0%*QgvzZdTD@EL
58505 zvnPbX{H%1JYp~C#kvqA3vaZXg^)ux<D$&eJm_SKH)-n6+-)dv0{j;!r3E-<H1%Whg
58506 z2L$j^0R02`jAwviG?D-$BK?OA|0QhGfL_2<;K2Z%2;ec`rvT;w3xFYk^n73raBpCL
58508 z?6cbznU%|?;4j8nd5qT^-@HGMN$Qo4r|_CF-FS^Y%KP}~8d=S|q62B8T<%{5@IwIK
58512 z_Iyk=q}zZlIs&{!P#1L*^%8t-Lu<5igz~h9#_4bxZd9ifb0npxPBhr;OwFP~DK8|6
58514 zjMZ>TGT%YH#i(~X_E%Dj`4G}QQ9l>u7C{dWP_inz8s-X&Zx{6a6Wv2ItbMcrm~QP;
58515 zA6n-fVb*!G5v9;Q$ot5uM;}=A)F|sS$YQ^00(rQs6Gnfu{U{~qU~Dt319TD|*8;Mx
58517 zDVCO@jQ~_Lw3`NAPFnlvRiqCBzvI|>9IJ1g65MB<(q4>lC3HB-Iz>OC&3?eA;F;_(
58519 znrF38JFQRjXDC-4`;!BCBO$9u>t$e#`pi0^AGa>)vEZjqpx-$-_MEjv#e?s6t+gs2
58521 z(pseZqHbrZs%oLV5<o-Vkga|dI0hN7x6aZ|@R(_xGIm&pjIq`s{Q)oz2(wPgwlR(m
58522 zurATp*gl0e%5ehd4nC5>+g^;fK6w8TW!NspVEZIw?H8FH(08G&7S@*-3-A9%ru886
58523 zF8m{p?Uc9W$K}{Sw6hRnI%k!s-yo9{)*;o<+5vv|t08Eg%fz8fC&;CX^_BiRj@PwL
58525 zllu$wp<{6j?deqHp|0^JwUmBM=oP%^-_SnzqF<~J)Q`Yy$Yc=8M_W6L6xhN2=<8^}
58526 z7Cr<&BfwW7bk+ppU5Y+1UbWVila5FEz!*gq%<D|_8{mg|)G;UnFdxE8Ka@F-yt}Qh
58528 zA+r{?^MJd7uE<ZeP8trN0N4uDf*t${>_+-d>!boNu>G%~&r`|)*|tZ!Y(E1br$?<#
58531 zWBg3Nj6M|fx&r$88T*^S?`WxiNxcsr`w02H;jeu#wkc?9H29c-GAWS39+Y_lh{E_E
58532 z#kL>%KZ!ayu-SC<zZK=*g1&EsP5uENdI94Hl-rgAWm=z8Fk;9I^j8D*r=y*v);qcY
58533 z{BU32WB(9%YK?6P&=ClMuP%e!zec-r!P7DDw;toKfi2rwbI93e9YoAKp;n=djVQYx
58534 zZ6kgm4xLp)QSLjWHMZN~V;^E$3>-zDjWD)I^w$}6XILwZRj`HX80W8$`K{o)8~VQh
58536 z_`%<-JoZ&>*#0Pf!0`w%1aa;J`vm);#FnoSTdosF*#FD@Okx-NU8T5E5nB+8%HxZ)
58537 z@r3QOlE>xHhQyoew9jRPXD(A7m%yXwoxw4roLA<X=Rw3x_}pjLj-#AUiH+Pw`M4OB
58539 zg?WknM*N!n8@7)*`%|$$#5>lv*cbd?;xPO~#t$FlIYsQbqdm`v&jaj(5{uX-YXtnE
58541 z3dns@#$p>-li4_AL(jK?wV42GGs4_UnCl2@GQxU{u)ZVR(C(M}WbiX~T&{wrPFMGT
58546 z6s+IB#X5U3B_hqZ3HvG7CQ1Gjy9|(lQKYJNDANvgDxX7tiu0I@<TEcSm-8^4bv&Y6
58547 zs-3;ASD1(O0>rv>%ol?YJ3oh?r^)*C1m@OL`Y?_S!?9-(o2ueiF^>Hg>gv<jwm>Y)
58549 z?PG!S`M(F!g97LC_XGC;Lj&95z;-OBEBocY!}a|3+Bhb0>Y;!Sm0gKr<?*XLhLz(_
58550 z{#z-oN$gx{Ki|mbyOsS-AG{J5E4N*lU*U(#zKZkg-INxv^(6tjWLsSvz$*bf96)(~
58552 zh~KH#Z8-(T`fOl~V~C$pvahS14%o<x0UP2NFbe1vhy%?ia1BV#L9rIN-g#E}`H-AX
58554 zuzczd%V*TJeEMx5-rmCAYtvMqlxnMJY@Y?L=;_%?dRbjbZ`~^8zo<4_rvldwmj-mo
58555 z*ViVBzVOHA0&0wEN|)%cZlSxXb}B|!RkO&X4~#dB4-v1LsYn`u^x1zg3-L4P1p#b9
58556 zt5pHa6KXpw5B6h>0DSPqewY=zV;1fVAT~Ka$LzHiK-(_N55cX7LYf1ch(fc0i$r06
58559 z-b=j+Kp!=*Uo#$<3H(e{3v#Z7IkMI?q8mE^m}_gpck5uqSf>d9Uh4D-0J=$oOw!u|
58563 z5@VyyM?_hTh_b;?4q|3I*mnD8h&sTYJA6;nu?KL8s8a~AnW!^XT%Dn-E|}xGV#V7P
58564 zv8&rrqFm@E7y9ZBUG#_oAnTssyH_+(?>GRq-y5???~_D*>H*MkAH>kxA?rNYOdcX+
58565 zKE|7mIGT@`oR7Bhe<$h-+wO~*rLRTQ53=fqvGqGn)E|26k9z&l{~h3Cz;L2FVVifN
58567 zojmy+(Nmb`SC$gJ2wlFooM;vLSOvR$2{yYLvR-|G=pV49e?ZP_U=uGx9<LxCyb9m&
58568 zVQwjf&eviEycTx24(+{$`R{f3)9XJHtw-A%P;LWw*ogUR6Lh-?y4`dafVJRe*w-6h
58569 z!L?y0TcDFS!RMQh$6JU&Z-akKxbzNqeh2=z4Q1bjy>ExzZHHaI2VdC%J-iQF-U<1B
58570 z0Dt=c`r8Hl?84gdL#$gqgzfBx-R(vnA3^pX!SDBA-T5)bwimJE6ZqD?HbkGoUOol?
58571 z`!UDvhfVFrSP!7w=ZG<%!$uB5_J<H74?!=7uzwh~`UPUb7l<K8pr<d<&X-sl9!2@1
58574 z3((guu+?86!(Snf-!Q(5=;L>+moFjS{eiN7z$Pw3$7RrO8EoDUfA)Vuyk1xQzL*+7
58576 zEmBcqfImn@uOt;yN-8d$RD3%Cd5I>er0S%S8_4T(D&=)jRc-}vtm;doZn&M4H<47e
58577 z3{o}Fe+{%*^Epzr#*(_x0W2j|yDhMtRGr?yZ=})=lS+RIi^!3r>dqjQ`3$LgPm-!%
58578 z2+RV|ZvBsdpGh@n4jd)b5Ii<KL8{S2QjHS;jJ-)U;1yC$r;=*ckyLZ^-~1R(05_7l
58579 z`B_per;}=R2dUOA0PuUu4pMC%Bh~gxQdt{F<v=bunWWnF#G-QusSe<;BjkB&UjXv$
58580 ztbrs_UFrheNp<Z5Oaah$w>N>WN!^Aq-d2ZHE@Y6~id1*Vs(X8&7<hzKkB@=#q<Yl?
58581 zI+5x<h*Tf6(FbkZ4qo!Wdp_je7d-ddM5;gJbjQP_24KIS3UGncpoReCJm_BFX;MYd
58583 z`?#wysc{(NILLcE^gH1mQWG(jiQki&1l}j3{$#Xu&nKkrHAqc`-0s78r`0BPe={rr
58585 zFO&M)7o--UpT9#_k1GJWTmm^iv6IwNwDTlvVA(iQPt7K^{4P>Y!_J?EEv<kpJu{!w
58586 zvyj1alSn;}eqMn6uFN6zq6;`lY8B-A68c_^e%3fiy$n8Id6d+v7;h=~Sqq<92VK18
58587 zBlY@&q}I<QwE=qB2z%HBJ#B&R-h>X{-b-pLWc)71w|y?D_j{4r3A_CedfyE@-vb$c
58588 zjJEc|9`}U<u-VUGL!SqeItY0lLVt&kkov+;>PyJ|C}jN=eD2s~Qpe*-oyaEj%`K$9
58590 zE}+~mu$y0dkopbwa<L1k-|LgQ1U~;rA$1vkUWQmu1|9n$8|!P*>P6DVLege`(vD)%
58591 z&IZ5^(m``byV{cut^uH2$P=VPQ-Oby4m(OZ{43HCZ;*~$MB2TWv}X(H=$fQso*^Ck
58592 z0qJ-}I-wisM6{jsDCy*tq*J<+t`bGMY7FTc5=nbokgoPH>FSS>PJNJcjS-}4f{$85
58593 zN#8h`bnOz-bqYzRWdRoH^dCuQ{7yR41WuE#_c-bL=)VDYY}gM#zm0Ib$*rWD7Ljf?
58594 zk#zGmq+5gm-;us~6X}-Vrxp5WeFN!Rnv!mF3+cAl&%)TVaV+Oe((S=}`)^2hc$;*`
58595 zPe|YT1L@8wq`NdB-L(hlZg-Hrtr6*5@ZY^B=^i<xd-f&Ws}AYj^+@+YySL|&&I9rX
58596 zknTH*bU%!x|0>dVd`^16&!h|HlP-LV^uXUp7X<?!k{<jj=^;;&9=d__Fvw##`YNsu
58597 zbOZ_j$fS4~uoVD*#g|Es@B-+6#4unU-~;vo7f6px09pd5J8~v~{zvWx&XOJl9gJ!Q
58599 zo($RFGlTS$yGY-gNqQ>Ae?R)U|5wt}{iJ6=j}JoLGoim(kjd=9q#uH==0NXrpCesz
58600 zi1foBk)F4N^!y2=AIT>D=s?m7A>+TH-$hkO{~dJ~hXcDvKMp%x0=s(xGFv*A^plX^
58601 zGVt*fWV0N0_%!OS@Bpuqeg-;wW|WO*YX<Pe|G)8Er+<y-YyRKIi-Z3ft33b1xb=Sq
58602 zFSRATx-scB836oqO&8KH!_QtxBK<1-$M*~AweX>}4*-abYhlZ;BL;7(1|S}8T1R>_
58603 z^z#PV+7b%DU*1G}Zz9IMg;@M{2hv-y{|;odtt#nv;m_~F2j0C%dOLjLy$}FCvIA}I
58606 z7rsW!{^=m;^UX<Lz<l&eEKo-J*Yl)*J4X5<eEj#1NngSobQ#CW5R3g7tMxb;w4V$e
58607 zL59&DC<Yz@)&d8BOZ@&NkOd3@N`O~@ef+j18IB~NHNS01hBKRtpx$J-G#SCw$Ovge
58611 z0q+AA8TBFS`lEqqWZVS3-ZU6k27F3JgPVXy$!LhYMh$`60qCL8(*ShP2)bw-3M>Uy
58613 zvaPXgy$QgWS|0*_C!-DeXtNpE1wij@F|M{90QA%LI2l<PKuh3jGP3)VkrP5jy9Q*m
58614 z4+efFqr(i~Su#3q1z>BP;0vAL3!RYP2|DStgN!cdx9eD75wH<BLPj?NY5*O9k-!1~
58615 z_SOw;bh}8#Z7F2r-UYzsb6*BN0Wi+)i9jo$5Wx7lL-yT20>Dd;STcH!C!-hI=mVeV
58616 za~Oc%+zvm?LtFWfW&V$3^aVeCA^X0NeP77FFXYx2vhNF-^@HsD)dL{wes=@#oqlfv
58618 zM#doc{2&|~1e+K%7eHHs-Xo)EHyJ||8AHMAuzq9=hYpLsCu1b+Zsa@wHZ>{=KzpNM
58620 zi30%G$E0XrC;&gW8-3mlx!wIS8I$ArJ2&!<a0q2m5iF#AmtGW8IIeIY#f&VRFq+>K
58623 zS1sL(nvqk!W)Z^Ql2N;88E71Z(ai%py1KY}xH4UBsKiy<RqPtz%5$Z-s^d&#rmKak
58625 zGW?%>Z{xrIt&QrC?km75qK6J(%kNtAle3G7CLAG}m|$-OdjXW0aK_%J1waYPgjFi@
58628 ztyey^T0O6pt0iionx|%~>1v9a06N;PuZF3C_;Jntf2vttZ-Uh9BXx5@_u$t_<>1#E
58630 z2l(j}+3x49#<{$8-gpi4X>$>O2gKaVI^eHKfTjyQ0P2#XWCnp&GxOw&Q>{QBP<KfF
58634 z5m;+~@l5WyuK<<;i-1Q0ZO#E^5RI)bUmqehDNt`LP+Y0~q5zIx2LWDWJlDZh<p%sk
58637 zxE=XF8)K19mLA<qtzRTP1J<f&3<V?Sve8D$HxzDpT)kk$VX$-$tTq`oTNM`Tg@vbz
58639 z^;&bC`5Nqcqq)i4Y`$S`fpu>;-!pf>zIT})n!C-9%ssI3eded;{_-zRn8(b2nrF<P
58640 z%(Ldt<~j41iii#cDU%*SdObLggI`Ueu~gi*FV-jnD35wj7itgAT7c8c>F4;@SN?FE
58641 zXXN@qC64)bgHG^^F8m^AKS!_`{u!W8l%0~C^Fr-15}mAMNgosX@_+ngsA!^5m{CW~
58645 zA)@>p*hZlK1VkRC+ktY}a?46o8K)$7FDS1*`7I&-S`j1!87t>~YBV_82wL9SIJ-4R
58647 zIM;Xxw4C#90q&Xe7gRntKL&bjn}_*`nZs1C0j=C-1m_x)uT$%76^~lAnd*h0mHB^E
58650 z8IJjDIOeb6#{)n-Z;~4*bHHwU_}&08hYiO(G#vBSaLj4LF@Fu86lfD|567G}e5#!%
58651 zz}z%^0IA_^{;z<Bzx6-R=7j(n1#rAlUbzfU*$};42bIe;$+=Gba-8}1koMNt5F4mb
58653 zfxn$Z{dg{;0$HOClr`EAS)+}VHQHENqfNrxb%>^5{`!LM#T@n}P33uv?vpRi-7nvq
58654 zn<c(4@iA(v=L~2I3e!hDM?42Sdp)~6+dXgLx6!lKv&OU1v%<3!dy71e;5WxJ!!y-0
58655 z$urhd>?!gL@Z@=Vc)AE?c-ni~cv^TGc``k<J=IYs#S`aodqO;BpCf&axc%;n?sM+b
58658 zjocjhTI4H{t0JF`To$=FazSKC<jlxvk&`3GMUIRd5?K)07r$PS-6A_iW<|D)Y!X=?
58662 zJ$y>|gz(Yf!@>uK_YdzAo*UjNJSV)h`*e7-@CM--;kClO;YoSR!(+lD!d>Aya$4Bs
58666 z5!xlReQ2A|7NLzoGx4h(T0Jx+G;YA@P<LoZs2So9xfpUT<aEf%kYgc-L-vR43E3I4
58669 zcyaIoSVlo`N$||zX~C0&#|4iJ9uiy-*)6zlaIgL?g1ZHG49*H}8QdheesEfFjo_-m
58670 z3BggpVZqK|a$O4R<+|WH<2vO!?mFT+;M(ij<=XCg%eB$9*0sj9(zU|1)V0X<h-;2(
58671 zhHI*8l54E1*i|G~c6zwFxY}1-1*+|;?n-gRx!kT0ml@;_x)^jW=yZ6Wpp!wzf({4m
58672 z584x!5VSLBTd!AwwgjyY-x=f!S{?L!(DFzMS`xG{XkO@ypxHswgQf&c2pSzeI%rtX
58674 z=TZ3JLgzu}KId-dj_{q%t<KHit5M=L=PS-tK@Gxw4I1ryHmJ38S=eUhV&{VJoS=oy
58675 z66Z|kv_40ilS6!-+Tn-8N?c=|<04Yr5y8lDj^urJMC1_X5Z95=>fsHbfd$S2XW#xU
58679 zjp$-v&^FPLKWI72O>}ZDXgd6KI&{Dqa6z(1o#XyB_nwvR^@wX*C6>+fOyWr8ULLX0
58681 zzxerj#%ej+c-3mi=O3J}zOrrteagaFqv~DuHu8^_Z9`qd;<La%tl^;Nt&uodYSjYG
58683 zQMsbI+Ukfh>2g-I-QsiHpRN9&8_W73|3M3@T6MviAUyvQwAjzzr2W$R8|X}{7idR|
58684 z&$^cRPlFEgV{|Is>IRx9^eY+fVn1JlDG(lZ`}qpc9c59%4|q_|@aS}ue-m<kwD>yE
58685 zcf!efi@$~YIM-FX{NI2!_kWI@*CqdHu0=)uvBDelLNADXdI{a_e;Txz{}5XCaLa1C
58686 zb&K@=E7DI}wWUWs=lfoIJZW_Sy<qXxqxC#?jEKLEKAgv^-m`WfJ<IBi^cPklXas8k
58687 zQe_>5`HMKmzeYIE23;jmJuh;5&+35m0SjwumB2Ewj{938-CC@o)T)ED;r|EHCH_y5
58688 ze$u)hyw$e2wTp5-`XTpAms#4%vhEVA$YHHnD}*iw?P^U%{%01>ebxPJjpQpUMmtH?
58689 zQqZTZXOMHR6^*0qt=mCeQY%w*eaK?lR@N-B&ml;MS~w4*SFB8=yIAkA+^p9@J!R0l
58690 zs%o)J`df4P4AbIIu++C66mDmOHu3+CoUPVk(3`EgV#%;oRZT`Z-I@Y^?zc*jZebPk
58692 z7?--+S_JC1aNe)VSZ?|*eqs`qiE&YU*(~v_EYK6|L8{o|v&d-cMLuV??ggF5^3l6E
58693 ztv(PQ_FHUS%cYl>nbOOgLvdv@k#nzjw9jgRT5T=(vMQ4Dy{wx-^Tl(IiXNk^hf$`#
58696 zqr|#aigj%k>n#w<*IIV^9};_G9@a5cJA}{ond*_&lc0lH8gz@r-y!a61>vY>zo4`1
58697 zDYVz(Xw%YKi1fE?C%Ox3O^4H?qKmD3t-yL8bdq(a=w&5;o>nZO2TNGbr#C>Ku}*-l
58698 z;;}$$>_<g1mJ8N+q_<gjgN|dW8nAp|)lHCY;%_cv87QM$ELvd8X;#KphVsf-3%8ab
58701 zIHsx2*7Fh%StGk;h8oK;N_}b-iZ?;#DoiZ-Nr`w5v-Q$kt0mhKM@ZQ7e2JWwq#d^N
58702 z!^}CYlli5a^(xYT_kV(Po{Z}w|F_Ji#OhNL$qW3$WQ-oRTgs8h?<bD@h{I|T#~-pS
58709 zjQXjJtvy-%^f8h1IsebnOG}~kMFOorC-SVS4QeR8^OfK_vcjn&D-EBlQj+}DIqr#V
58710 zujN&f>MQzM%(0X_vZ~p{QQA7jPrp)gi|=f1@M8r?b^T32CrC6n?q~aaR5bgotU5-P
58711 z{Vo<VKw>-F#s&ZVY{_M8lRe6UWftI^`~96H!VD5=@cL~ddkQ@+HnU!$!3fbpEo+HH
58716 z;fekuq>M+%3%Y_SJc93nJ|UK~P-5L^DcMX~XeBMQ5otUw{0!yU2kYSmq$y1PPXGn}
58717 zLjeD80L}j!KsV<94WOIw{|3-K_`d?^p8REh-HX5MuP5-={Pn&39e;fvf5BgWN!5sY
58718 zX9iFk2mw-vdJO{x0{yYy$VSf}u-^db>e%Mm$9uc49RIf{@2Al<ee&w4+P`?Np(}O&
58720 z*P*Ijp-Dnxsz!jiBrRX9uX0)FuR`Sw#wzl~{3_oFJt|b*jjggz=x(7q%4wCYSJLGi
58721 zR@p36J|$b_6`}HF`zrFC`zp(>P@A_Zi-j%_S|W6&&}l*^SEA#DjubjXXn|1qPcKz^
58723 z&?7<*2;D1mm(cA(-%8mCx;AAE=t{|1Ayoe3K+2*@^bw(Rgw7B;Rp=z4V}%wAEviHZ
58724 z2+b4PLuePF?S-}xD&LDsX(SYuoKicbx};Nt#<5IN+>#CvD$h41%l|D%zQ{+D&mna>
58728 z#0!$d{*xB`iHa{Ii7zCHFC>W<B#9R!i5Db^7bF!36)#BYRf&o(B#AF1WnH1R-6n}g
58729 zB#B2PiAN-*39TWtY9*Q=RJ<ced?CpxlnEt@M<j|zBudMP;t`4B5sBgviQ*B7;t`4B
58731 z;t`4B5sBgviQ*B7ZG?(PB#K8QW(ut>RQw`Q{322QFG-^KMWXmcqWDFE?H6L_2^X($
58732 zm2ghzX`$jN3CDyUPJovr>`8!sB-pjK2wh)^`h>0)D*p>4L3|`(iO_{Y=Uw4BLHs3Q
58733 zx=`_#1o4*y@stGdlmzjV1o4yv@sxzzN>uzMLHs2_{3SvBB|-cpLHs2_{3XFFR1}{O
58736 zUVJ28d?a3cBwl<ZUVJ28ydz$`BVN2CUc4h-yn`R_B#IO7h!gLK6Yq!<?}!uch!gLK
58739 zB~CmgRy-wEd?Z%9BUZd4R=gwjm{6HVV&%&Vu`-Xu$~+P)o)Wty7XA_Ili5V(k=WI-
58740 z@Q>K#vG9!8g|YC7&Q6|FY#KW|b~@-3w$E6529a4NR{SDX{32HTB3Aq&R{SDXJR(*+
58741 zB33*iRy-nBJR(*+B33*iRy-osD^xrpR%Vb`nL%Rh8N?oi%p)=45i#NsG2#(1;t?_8
58742 z5i#NsG2#(1;tMh23o+sgF<XU-FT{v1#E37%h%dy5FT{v1#E37%h%dy5FT{v1#E37%
58746 zi{(d)<wuL<M~mf0i{(d)<wuL<M~mf0i{(d&<wuF-M~US}iRDL$<wqS8DwZE5mLDZH
58749 zzF<c=`z*j-W7u<_ZKZ*=iddt)vb8<Ba;?hc?K1WX(_?#?J=cg0+pB^=6p|QX$3uG^
58755 z9EEH@wdEjD#g_d4oK04h=ut(yDMe(MB05SI-jYQN$-<R=MZ!Msu6zz?pOM+KEh#ly
58757 zV~zrS(tK3P@b&u}48F@f#=KE-NOBfQ-8-c2Ua31q>b8}-eEl-su%sm44;*9gmBqhl
58758 zzONFc_zLAqOx5q2uf_hX`5EZ%_5GmVX})hfM{~cmO}-QIoykw?|LAyz?-V&+K+ZG=
58760 zNS|@=v#Z~ky>ayKj)tILIQWkA!~CBz)qF=N-(he>fo2LVcJR0c^M5E+S^V~bT4MGR
58762 z+`;!H7CUBu4s`IH&rW7@kpSPPeTLt5P`%72_&O-R5uv_y#4%SU-=F!|JPMlR;JXS(
58763 zO)t_L%!8=)7IUuKJNS<78Izw&{n6~m{W3rLHwTw|*gVZoeLCurGMe-MPz9gd?~4w;
58765 zQhb-=qWK|cb$;hWJ!P%|y;r!pU_J!;gve@<uEsX3`L5JR^Pi-whc#az{)yizvHW@`
58766 z(gXAeq<=D?FCEHuuCt67<S)|v-pEqT_Yg*CzNd6i^Y!fe48D6jlDPuqcaMHD`EJ8M
58767 zrL`|LUvKUs{-X6Bw3cC10bOgbROf5H?{~ZAH%2aM_Ks}L*S5ds|MLo3Px|7gIW`&m
58769 zzpDe!#kiDH!?x9BgYO7!m-h<RXtYV&48BWwBio*8%KX#Yn%}89rdJ9N%t@ZX_YYs?
58770 z9J*Wmgq&@f+j-C6I|Fqz-$@&8^8KF#eIDs2`7Iq?%(BuA#79O*`X;t{{WbqvX<cNF
58771 z;QJ?H`CT>N&HF^6LAYl7nX367wNLXs`6j~27yRU~I-~i?@wWPL&=)n|KYUDY2VJfa
58772 zf7BFydRX1fl!j`)+YqU~0-dh;&iU&aQA>B#yF?~kC7++TsiE2TKi7PZCDmY?&)58X
58773 z%{FdXzsxPuJ9?W$NcQn(489{bLU(5w8hlq_ke0i7n(ykAiuOJFb%|Ps_}-4@C!1Tb
58774 zb?IDvitSt{fvyuP^$HIcG~d11BXO*&jJ>syDw^f{0Q=d-)Bx5CG|P8&c4>}gtqi_%
58777 z%kQY@X-0Q`wp+8mPvSRZbSKUCPIns)Zj)^ZKC%LRz0TgDsu>(TiVTj%cN-yW!;0@2
58779 zahiQW^)`8ynJp4q$`-EL=-NC}I9NNo9DL{YUYS8ANNnk5^4*)mChK~<BN6G(9T<y>
58781 z&FM&wXDgy{O!amLml@y~%+D-1a>Wk$36AOxzCYhye6v2!DQX()SKnYF5~@#3e)8)9
58784 zTdK*=uT^78XH0&I%95G!0iI8(i@Z;@!GQGi5S|6p-6lV|Fy7#(7;EOUoK3cz_B<=m
58785 zZ~Xl-6>jj|`*$?YyuX<I^w2$y9>Og@Bk-`qsHP@AWz)pGnY~FYFrG_dEPSti6Sqmz
58786 zCC*G${MK$4^@T*^MiT8=Q}whw{lw9dYH8-`RrQ>d;hAEE=GpThjagVbbwAKJiIB$(
58787 z^r8pJI_g!KvyN)F#N^-joh}7w>rDLzXf?KB)ZH(h%hokd-@tc16+hecuI5M{q?ym&
58788 zn(t|k;h00kdaT$FKi9C9d#7fa-=e%<W42PGc%`H|@hn4UG(XX>RI!$C7XD9ae!}hz
58790 zQ}fDXhO8Lp^BZWe%<dvLe)eZCTQYUj-{ELS#j|{<JjJ$LaWs2ejguLQ-&OmV?VqNK
58791 zeotzCHe|0tOr}iXXS3#K6ZY~waLkW|GUu|a#%kE4bwXy(2^#BFTCWhjF`YM-xs~-B
58793 zP^igKE0w*TR+)TvbiH`rV1-qI^`qJ#X?}v{L&f*xlbF(*VoQU?FG_`zQr3ko;r|Wq
58799 z>Bq}m`YCdkeyZH1KSKFLjd4EO7-yr6+Xz%+UgJz7YP1lBHW_&>DgkHOjd3p680XQA
58800 zaqit1=d6u!R@fM4t&MT+-q^I!2xr^y5-HQ@qTNTMa{=Idwh_+c8{yos5zcTM;heV7
58803 zd#<OhdDFGxnTUpSGA@#<UIK-w-{`8pjFZ>wAG>D%@HPAUD^h!|IkJ=f^p~;i&-)o$
58804 zD($ZaeAn!+{&PDO$Dgm1hW%y8mD&usQkyXkfE{K`m%S+!<t7BSqXXMv*R(nCPrb-B
58805 z+zi-kMlR5)B0ndi^))4%U9;byB9)O*>#8H(jHIjgukBTGE98|CbG1A(BCaXv%D^O(
58806 zez|-<{nzxfmG=X=KUAc?xq2Vzqrkz6y?yDsLFMXH!vR;fa_xSg#@1{0H(#~)TKX%X
58807 zt19-Ny=H$|`r?Z8f{IiLFf)*z78q$jf9aD0`_uo#38Gl~$n+tV^Zu2*ZT+Sf*!m5$
58809 zg{$`Eif7uXt81kluSm%~ptJ)O`+Kk1-&LOav%ObpZ+k`Rt+b7xYb*BGTq$*ZdyrBq
58812 zlbI}?eVgn+NC+W8f(f#Qun2-dAR;0nvWtj_JU~Qb7ZDK^5djg=hdgAH2MGL%JRVO$
58813 zrvG!Q@APzc7SQMazyJOJKS|xbb=Ol>r@nLQ)TwjLBR2C_)PKw4=I@`)-?#RXf5ZH3
58816 z(4Wh`rgMOZWlK{Y@UYatztTG;z{64#-pQj91?%-ydbYW~ApaEE?XUDiTmF&8o<z#h
58820 zdw)~Dcv1WFi-2mya~io%6#>hNCpMi26e}Lllm`SWHX&;fP^s92M@2xb;)14p719W4
58821 z`6~`I_PUGE0L4rrA1eY@6^*8A0k4W;B3BqM{JA-A9(}86A8@MBgi(d(AvI}-1;C@i
58824 z=HF>PpMNvoz^gpeNB&vl-+Tj?@=xR&_>%|x$={!E(YfmKsOfpP=UXr+e|^4zFL^+o
58826 zuu#aiph~_YpKHk{@}ZWzC*Q!Ayb6ir8u&7)-%S4H-p;k)OYYTN3!dbj$u;_K?(w#J
58828 zv4)nDYtzAU2j*6{9T{uOFKEkGTXJnkk{if%w;d_9<ulE>_WIAoaxJ`=Gjg`JD_XE-
58830 zwrBk<D>bid1K--^XZDu1eA}oudo5}E%U;!%Z^6QBo933Ej{0kJ|H`)MZ`oZfxt-Zl
58832 zFYC*<jJ2}PtfeK-TJbsa*H(Pbypw7B9#y7ApRD75=B38jXAvKo@=s0TL*@yTH<=cC
58834 zW>c%Yl-IQ7GwWONxLrPG_G`uG%<@c&{*{@Nnck8g%(V1^Ovj`=%;a{LXPHDMw6A=#
58835 zJdx);nU?mh%WqTuOwXtpGI@Ra-B$U5f9>+2F25%K(r>35@+1wKYWl@i`JH|y-J%~h
58839 zfmVLrEpN2)ciPs9Uun_WpPKm-|5D?v{MgQ4sXw>!Q|hfYero3z$sgvmAoWr&PqruI
58840 zo^QUk-Cl`*yN#b(#&Z+n!FGAP=jTo8_Y?X;s?AcJda^BV%JDrvKP9Dms?A=Vy0<NV
58842 z)q=;VC8-t}nwptv$TRuAzEneY%J&sgsg~;_sTO&da;94NEya>8_T}U|$rgT2zLspr
58844 z%6ny7c`unPZ@YaE|LXRKz0V)i?GH`)ec3nmV83X`@0RiJ-!Z;z*MHi_x6SrY{M$``
58845 zYLe%Bl8<|qhkMrN_M{K&CU4s1Ta&zOmp}4Y^LVsPAJ|=A-d+D`*LRxr%RTB7A29x`
58846 z%j*xPKg#Qy<ZJtUMZ5j0UElm$^~>Z1d(baGNWW{-znb-1ncs(gihs@e`=0dEc76PB
58847 z)eqbC|8{+}U4FLfbGzwhAEb}%Lw>gFL-^O+-~V5e7nAe1&3~11C-?U_Kh$O)>1eZo
58849 zbh?c9<!9)-dAs!cse39rIC`0%fIe-tx1^7YklyW@yz<A=M|L{H7+i6V(OQ=C74kXg
58851 zul$mHZw8+L&-`ckOng^ALqGWA7{-2imt*XyVWfv2fb`I9a{D~PC>aU#8>VmJ$^p`Y
58852 z-d*GcjP1q}lEMv0A+=zPFA<f|ls906X1a!;2hZ0C`rdt=pf~mn1fz4@k5ReEtLRxs
58858 z-L)&F|0UM;x$;X3e|rCB^uCf2=zX|l#|ZTMFJW{bb|Ly-k~?M1kJm1TBS*{UT!>$a
58859 zV7=HnWPf?hB8+&(b$M^EeETu-Ezcm&@Pe$RA%W{3o?~;Nz225jdzfRSyNZ1N{&M>`
58861 z{?KpA{Wm%C@OL<Rmwr-uipTkh$gAk_M($x4?fmHXUqr7W>5Deb(a(7B{iX2sogDpT
58863 zes64xK<~Y8^DAZVz(`G(^CWT<M=!=ZIQj&y9Y^m{yYv9Q38NB`>-ZItllx_f@W?wD
58865 z*GtO(g4`mhU5ZEGy}-}nIRW=_JGLn^(7RMTiktvPpncgeuI-`T_c3PR{$!D)A1N7>
58868 z?pNgVH%Y9>O8$qM=RcF2KPXp993y-B<;d+khzI~kh5WyKJPmd77o?weOJ02vBc_w1
58871 z!&h-!KeJu>8DGIqko)M7cO|Y3BTwKe3$hK@50DEvw!(ERBYW{Kc>c}O*Z&EQaXXjE
58873 zQ{KN;UW2p^Q1s<pCjIrlfPSmwF8m4yJRcEqEBXx5LnJ+?aP-q%LD6S=2ggWd@5r?x
58874 zL5{0s5*WD-o++clag3JvG)7t@eNslu<!;I6xK`(v6noR_QX-#>$Jvmqy$fai|85-b
58875 zT_q#Jy)Na>TtsR52GT>H#x2<-{e#cIH5EVu)`<`OYbnKem{7O)#<#KlL6)J<>s9iu
58877 zzaj!(@mE~yH9#<;-EZXa-y`CYuMqTCewCo7_{9`sLf%Kv&%1-5=k$&2GKm|wPUbMg
58878 zG2SJ=n(}-63I$chv0ct2sPn8P7=3P$#Np3K|6M}90Q)~d%>lF^fw=uXuBlK6^2Wz-
58880 zOTYQIWmM9m2u4?%g{!S<e|aA@oYP1z_8{2{UKvL;D9Ijuu9WOduH|?c{Y*i(L3I5-
58881 z$EUqG{!!RINH8AbuTTf0^JL7rhY0#K--}dHCa?Jlas~Mc`xP9Sh2GfkM)Z&WB*#@8
58883 z4K$n?5*bj3{7ntl<836k@?<B*eyqKKkub?Rf-7X^j61P)%;PUgp24>GrL3{<%X_bt
58884 zy68%RUp707ppX8k1mj-z68yH;eFRsVIA#33bMTup<XMWIxo^}^MqFA0X-h|BKdQYS
58885 zm92vj;Rr@^B_FF{Jsd}{X6}&q{0zmlSa-_kj;G){D0m}E)i2?iB62-PJ##y*^&)r3
58889 zQHDM!d-RTR&<Vv7jMB;eiqY`+gOdI)BK_=j{+QfCuNS{Y{O47ajPwOu*+M=cIs7qP
58890 ze+ZHoSH9gY`|s@p*YAA{OU){{x`RI=Bj7zL$3)+frM_RTR5^*-2}TaYa{Y^3k@9E_
58892 z9l4C4MuQ&tg1i6-qL4SpAAw{3jl4rV<X!SU36L86i%?EEiBgT~Bt~7-MY7aQ-6Ti7
58894 zbSYUzm(dkuIb8!-xr(l%2ayBl!E_^8M-Qb(kb~%v^ki}vJ%ye^j-#KTr<3harnATi
58896 z{`b@8=yT-9^d<T-d62$J-zGn$?}4W9Yi46M@)UDGZ}<&!GADVO`GCj&g(X>%Jj2o~
58900 z@=>~jU&pV5vGYs(C3>PLh`ID6TvI_W#x)i6-<89Z!{|HY9{Ihw)^r%8jgSt+ukXO`
58901 z7^DS+i7KQKNCRf-hE$Tj95hlUQw&l7k^#vENe~A8lYu@i_*;<Pfb=q?=bI96B=iUY
58902 zJxuV2AUy!-UPyOBx&_jWX1dlqf0g;H%OG87{+<VE7o?q#PJy%o($PRyx0y<W^R18$
58905 z%HENQfPBV0zNgN2-3|V$KVyf<H*ZX~cjGu5lk2((M)<G2L2&IQp@^JB>UjN9e<Sj1
58907 zCN=rp#hU!eBI?+%y-sfLk=qC5_5!*6x!itUZhtDb56Er(3wU)JU|d}L1Mb(x%_Dcp
58909 zyu>_PFXPQ}i}Chj@=K!xV++^blM#b|BUd9o2V-RlTFxV~Zr_mG-+(+C0%?Qm0DJ_;
58915 zc!7LPeyQ^7;uY}*xlUQDY$i7;Ta=HIyFk-Mtq{L2X9FFcxQE?+u<e9YfRut1f#iea
58916 zgar8DW`r1jZA<m|Lc_+Ju>TtTz69x6_b?ul$De}ZPr&aZ=5-I6$M1)9k9q9&`m-nQ
58917 zY214=r0e1SYam?-2{aMog0^%nq_ZHMZr*b;r0tN7+{5z@Z_T$RW0SmQed~S3etUS%
58918 z^4*Wg<BKMb8*}z>-*kA(VB7Pj@A+9Dl#Cuo9guSH%mkzm?0X<NAgT4#xE7M@T}W?3
58919 z`U9j_A-xFc8A!i|^f;u4A^ix_eUR=Z#C0pAn;=~W>1x*%u8ZLK`K>g#&Vlr)`mfA?
58920 z0@8_)j%`XuKspT4Mo0%jS`BGzPi1l~kk6<#J%6N5yRoP8f0#PLXAD5<hE#%-am8E#
58921 z_%$He%p}~y&hh%S&ObwXt9}fx$7eX-Fn?b*X&NwpO*-*j(sZvp*FE_TnHQ7yI-iG<
58922 z+UjLPTI6w{%lY&q-OeZXUMA;b=I=w09+)hrVe;=p8Cz&I=|LJB&jC6x{XM+5N4oBX
58924 z8vYyJ*SC*zolW}%^EU-40?7x-3CRM9xrg<?LV5?%oAv8-z()Ngb06?ge+m-dqW%aZ
58926 zq(zYC=+pH<`0X*zckH_k^c<uFB)}9MFhvJU(E(5NM!zyPIRH-_fF};X69?dl1MtKF
58927 zc;Wy&aXdcxEXTv<FJOz~z7N+1j=P)oZ-sOdr0XDE4e1I<fJF|#A_w4(1MtTIxZ?oa
58928 zaRA;pjxg^#3_r5jgeBc|{>OeG+wH9n-w*bPBh|_N+vs=AxMG{^_Y?RcpJ7ZMlh*`H
58929 zylHv9V<SEvuaPtdCUHr&&-Qvk3~8rzPsjFEE^NzYylSRf;?lTDW2ugLlBTzs+ULOk
58932 z_+w9UXM(4&A2iDw<gMM>zfEQ|%Zv8@@wf9=8(n`Re|;z(+DDz+fp+`Tke-C}7^H{H
58933 z-v=Pw3+YZsw?IO9#bBgRk3I1M!6-DpgMW<tEBxc+Rrn{!>+nw@e}sQ3`4jxp$UEde
58936 zBPRtht_k}-`6Al-3C=gXM?Vfn?!qJV4uTP(ULg2Yt>@5}g5@a2jG0D1hSpVrU(bpY
58937 zjQDj8TEN*>nuhJubgrBu#JFDv6P(MJ-UIXjim_^*pctXbB|Qu@X<M&JyYprlW9H8!
58938 z1EaWF4aS);9<9QW#RO-DzD&{Ld?$Gn=a6U^_bJA;N>H2)x}IVbz5OW0UOJfKT-{na
58942 zFix9C-gOT_f04(~3c#W;N~P=!f>D}|LhC=Y=u+7t_^$n=t^W~u{6VZ?HVxaC9VO?1
58943 z?k3p2Z<24~d=<6@y9q7JJW4Q%(iL<7_Rk<V>-kHHGb?=rW3-$?F%r@&g0orY(KF>U
58944 zadzz^SQ})8tp6X@-jh6oG<=L;l$WV;uH{*zmi!j&)GUDY2HR_4dnNfgY%j;>18?D+
58948 zi^#sSieOy2-;tfj|8j=u1zFOA3C;=G$<?quPTK3c3C@!K1X~=QzCiXA<p1Ys0=D0x
58949 zqp-c5;`{+a9H5^;+dM5uPFqUQCbdqM>sEr1kQ_C{hnFR<z9?%Ti{EJ@zo{X@-HmgH
58950 zv?ysV6ZHG}BSHTRyPW@fSI$QCU>qL6H1xvhBp7Az-w1kFJcMXN&m$K~PX$Dqizvne
58951 z`?HA*_?)j}FRs-j&zA|tP~1?%`LJ_wwh1W42#bdj<g0%n--qXXlH&YdmHZG|Z4By|
58955 z8%_CVA%ApJ{xQh+Hs$XF?tQx{e>3FoYRX>)`BR$m=R<x5(ab#Kr<3R9x9mH}zW-bx
58957 z1$z#;hcwvb9)~@f+{1opm3xY`&Eg)$TGr$qmO+(!=x?dWJuB=9xrgf|IqV%HbpZ->
58960 zFBBuZexKs^w0=PG+gd-Q_;te{(;v%zim3hw#V>C?hLPLolQQD(KU4Hzdz#{W>T@!#
58961 z=L;BnkG@1-lIV&aHm}Jzsc%sHvfY~$qqV(FF{a>q7`2YpFt!=91A0-W<D5O~X6Pq0
58962 zl?|cPz{sO)6r-uJD#K{RbJ44eEyKuUY$eW)v#l6Ujvb40mTWsa8NFK=;`zA@<=5xX
58963 z(~(^u{TQx5Z!mU)jJtUg1Bu4IjWNd9Z5U;l-HEZ{*pJYIfjz>Yr0f?mp5OBrJ(0bH
58964 z(bw4TF?uC?7yTVM<Is*=!Pu7kC;TVG;1BVKh?V~o^b`w!m_JN3{xkkFqVh-hBShhk
58967 zh83LYr_=|$`8F8`j<f<N`e}d$X$bhROgm_Wb^;ep0V&i=`)EHMpi_Y#r_mAMN8m-^
58968 z#5r^>ok!;bH!h(|=@?xGyts<42438s9sv5*fpi^R4?KA=-AE6in~*PoD|gZ}fGfX1
58969 zFQi`ttiJ^K@yqlo`W1RLaO1Ur_1DpVqSw<K=#9Xa-vfU90r26Ef&U%>zIzh+4Y=)J
58973 zU%kZsmA%Yf0j_$Dz0TfX|AYO3{gJ)N{>0v5?;?Kzcd1<C7H-8ESnl9DcXAguxSM;p
58974 z7kHy6N}?<}L`8IpF5r?uF(ih?G%+GZ#dP48g~%tsCGP-t{6)MA+yR^cd;vTG9FbDe
58976 zdau+-0w&tyzc`%ZBm}w+el-@qqj+fJtRbVeVZ=5WuT92X`?k1E{80Q@{8ao*JSv}C
58978 z@Vl?zcOOB|Nh#mi$Mr?HK2`my5_%V8WUUI<-w)S2NxGWQ9d?`5qN$4DjOt_wR?vx3
58980 z+N;3BG?fACj=|H(5{?mQccJn~)?!IfIRQNa<&-Vp7HSAymxh<YE3@ttEq}c7{qI*k
58981 z{@Pc?soN{xySH-udw}EPX9M-g$u|IAa6n!*1}~!c1|q#c2u061P=8QMZ+$}+pC8oH
58982 z?$m4b7tr!o#f;-C_kORk{XLK}wHtVqtmXd(vel^S`0&N>fD?mM3s!icICUl)>JJ3`
58983 zK23C#t=X)_+MQa%tCgfxFXxqb(VYWXS37_YkjwaApw-t@^@u}ojPN>UP_ks{EzXq(
58984 zRy|F%0I$G$h*rZ=fCKEKh9yt3Lu83otgE6b5F@d8NN6D-qd`ZoK~5G9s@mE>*=NgU
58986 zkfW=va?IyNH@UH-P2toeI*Nq=T2U$iAYl!&Llh*R0rlz0vka)_`1w;VFXD$Ns4PG!
58988 zY)wVE#b1cBSlSh>-aJukBdYtSs7<AYrmoE=YiobTPexW9oYq@9ge~1f1~#?7!zbIi
58989 zSX}enK;E!mTf>ub_}$e_wGo1ApCZ`Sp^3J3$+p)2-nNdANKCf%Ug`s?V;R(dBr2S-
58990 zdOEGL1~LiftOtQWWJckNI0I7@S>Q}4)dj7*ar{OYToD)qRLHS)>Rg2|kgQ-^SJI3v
58991 zj<y})i`UgJ^g$t@Gpt2~V29Luoh%46H$e|ZZ1s;K>Kr0KGsNb0$X7-E!H}YbTT0Tz
58992 zwNR2^g9H3NRa=4O%4Ibymm?Ndq0;LGn`_CYge#X&EDKZJ^-^}^gb~qQ$uMse^8#Bk
58993 z#w@-<l=miGg$$OO&n8#HP$ot?vDC=Qu3}`OjGdW!sauZ7Qak_tQbSiYOTCZ2`XP!f
58994 zIl86X{1^Uu!4)Iolm##NbEA@>FOZDy%g1<c%2h}sf5U)pEgb;<1}H-eo@DUio*5j#
58995 zY^TXT63j;bK~G_|4YgOuRWJnjFKLD1hi!#b6Ri-;+8V83q+BlKz9hDSur4eYPQpfT
58996 z0{1y3mNpt8*>!<68RL@u`VyXwXsrhL@G`lEj&e=B4V`@&v3{GdyXmxBrphRdfFI-}
58997 zI6vLQ4?AZPKb-$LS%LTwMEof36;79R7Te)NvfD{0%Q~c(K=^2|7m)f@z{=HhCMZO6
58998 ztM;J7Zc&7a#4f$14+wQg5>feZ(dE&qyNPZ%2xQkui<7w9-~jv@);ti^%tIg$<W}>C
59000 za$>n-{`5FueX{l89r8{1GI(dbE`qQle<xlYl)q}dhG0k4hUyo~8dK|+tkztb(-%xB
59001 z4#noNX@<q&6KW)^Sb{#QYSC4nGZ0m*BI~rfJ(h4-p-#KzwT-HFP0=-X$i{WWu-lx9
59002 zTeCVf-KD1FlMGe0`fN@gGXgd}5YXTWF2CKL41($$4%z~Cw;l`%E4<KYSz|Y>if(cH
59003 zG>21hT2-5ZW}pzLIS<j5(DvnO!Dq9ooXOVNtsUz8k>JpQhYGtjf!PAb4rH8pm#Z{U
59004 z|HG+BSH{*Gw)#tkD_5`lXu%hq63Do{eaMgD@o$iy*8T(y4DUzo5X#<O-{1l7M1$;!
59007 zgvW^4R98BT?P-ZdcrfOK#`MIT?ha=##ErCjjVI)TCbR|pMgWN(e}L3#Pm!5qB@n%6
59009 z4@9j_HRQAUfxFWhwOOnI$Ebq*Yr#@_tUkL-ag9G<F*HrrREx`EaoL<6m!{f7_Mqza
59011 zdf2?G)ox=rCSi-~I*7L}2i8eBuvy~Ws%RZ0gAxcamO7)j;#HoeaJm{o8wVVdPMx?y
59012 z3C`hodeyphcV-Idtk5ErZ>wY;FAfg&_XYa<28V)9mdz9j*^K&@FFLOnI(Wg%k9O#t
59013 zhi|F$j+TR-FyCPvUg-;E?W40JRx1qNY8^niU8I5XBdS)1{eLah=|V<QZBpDsGEn@0
59017 z6?l=rGE`lWa5@<-L<*UFKC3kfgEAG%1pN;RRKyYu^$iYA9l$*eI^3yNd)DW$g<}3p
59018 z-s>vNt+>5zm(6{or#ll?d_|9;Soz09BB!L1o|xMno!w)xSjw(|!=Z)zUbHFJ&g3h}
59020 zsCu7lfuTW@Zmn1+76D^@)}y-}n$4qU{3(wk;L#0Tv$=JP$CBqO)4qZ(9J<TfpA73h
59021 zZ^0>?4yRX-=;*O}=J@O6l-dvftEn7+eUi#lXg4Y^=e^`?Q6@#wQ7xwY(Cg@!fX=s=
59022 zG)xo70Qfx$LRaOAT^v<-XzC%v-l+pKnMqC-sqy<Jx*pKANwehaRIysag^I@!vMGua
59023 zWKt&P>(Z^3(3Gyk0PoczIgLXD`+Su`$YI!A%<1=ef^l65C8It)i4=~1mz-U@4ed$Q
59024 zVmk1F6m~aJ_~A%opjzye#_{i}k-RFnMOb~_N)d>(1Cc&Sq#8=Zd^&Wf+86jRxmX-Y
59028 zP#6HZG^k6(!4=T2T!8fo!-bG*xO>(}IFp4@dry};y%?V{{_ms&D)T;{K~<;Ie8%{{
59030 z6MzI&c#Puc3HI47ptKc6KC;E))GfNM@q;yc$y?IHnkN_TEY6v+-QscBtstQtK*9xl
59031 zBRN*A0NIu%{gQ-IJYwT$Zj&9F<Ba-dCVO-+KuI7S1VKpsjmFI&F+;NLcwN&{r}hmY
59033 z-3P=S&bN?r#1xVzQ^-<DT-6OCB4oF5;Jz^;h{A-j4F^jgptj+>7+(i0Nj9r!d<6*V
59034 z>_{boey9kQ<Y``OB^oiOH~~U_Uw>b7&1&_k&1Rrt<KcoL6g}nCoIM`Ju2xcI-QrIg
59037 z;u9b`E6_|Tspy9h<J*MZLSX><ZAx!B41VFdb83sou3C+1q*D9qd#~UqmEQf{EA>$-
59039 zf!E{GNq`2Lm_{~0P;K=5ekU_R-3dhmD9x0^y#;HK7H0G9p3Z_1b1`AnlUaAASX$Z(
59045 zESXA5u`AI+r{B{R=Bu~p#wR@y&~d^kH<g|EAo5Ld9Erh*ZA8}El%fxMtnLsLb-S@9
59048 zBn$1oNS0!TPC4;FtEXhs(+_C$e6F)2*PHK6#De}tqko8IZfV&=_Su{Zn%a-g-gk>#
59049 zI@v@h@{a?pEkUAWmMq#pL;*=p$GkdYO8{L_)Nk8^f)@@NPEhcoG}^4-4GsD0!<M1?
59050 z*3_TXC3&mPb-OQQGps?cAw14Z!exu_<2u3y5UVE&+>=god#EpK!8i<?>DjEp?gOgS
59052 z@;iYc3?ml`CEZZ$d&%wOxAZg+;hAbuL-U2%ifwvW4#jV=h)shnBYCdhUEZ`I6A1_M
59053 z-g0E%cKf{j3QnzDpw#Yw;Zp6({AjX6s6hLmtkH@Wo&*ffk>P<K7Lz^kd?a5)jjzG(
59055 zigu#f3H%rsXC*+@P;XNka%U(IOt7GaqWTOQ4Gi`=vhi>nRH|8X2Zs1D%-=nu!U92G
59056 zJQWgCIx0QT5pD;Wyaa}pIti1_OK-8kFf54-Lil!tqSf+Pg1#f`n;0cpP2&|%_?`7j
59059 z4!`c#6k?}#)#Pliq@=DZNIE1Lv@)eH-_<##=ys$GCtp{c(KmhGaL=qzJh?NT`Xs#l
59060 zgz=Nf8MTK&hv_9#t9@aphYFgw*_el-mId$J)np=&<7!GkU5}y0B4iyDO$A}FRZ-CV
59062 zz~-6WQE~XXyxcb06EgB{<}LW_p`lKjtDD&jpUq+qra@OQ%fnPMilgb;E#qG$OKT63
59064 zSjL95+|BYG%mk?d>LbGuirr$t@5+Llv4y=3yQh-2q+>S45y)BG79}FMu5*i*3%4^P
59065 zG+?;!``p1<*y3|{S?ysL7eRNy=C#`cx?(G5BGl%xD601o&8-P*jA?Mx%N#DN9#(bL
59066 z;f2~UYXfR$hOC`4c^+`!51^s-kR@bMb$%28Tz;!_ECeJjS+Zzeb^6GFMiyg_;23fN
59068 z%0;?7%w4n?8dHHY72pI-XDW0KRX8g#j}a;aQgOR`h07Ai4d@Z477PeAYqNvG)HhYJ
59069 z1?=`bzmGGI)#kNXrWoZ?z-bHU+}2l)xRZuE<FojC%T~Qil~BNHExw?K9EvRxWC6D`
59070 zA(FvR9`5tS0HBKe6XYHdCrNU#?4x!DtwzT@ZiaIu2s1D?5=`vcv-!#a7o?;+hC~_j
59071 zLf*L0Gzev-55*)J;dQ2UtI4WWMMu0ONoMkyvN~Zwgc_GM-4EE(Fms_*NXmol>zra>
59072 z+kp`)6whwA+5I*UZ!wo)2-R&(2D<nsB2K8%M9k{2+l`Rg+owC+R_I_&LrDX$+1eON
59074 zzoV8Dft=TFa3zp-EY>{$V5g4%&U{RoSni0pt!TR5?NJ~6Z0`rY?8x2T{tubO|9^98
59075 z{J)X!0wo8J_mbCZhr)m|TTMC9?QaZ+lo*Kylt6S_0-@~2A*7sFsw)L(EdmvA$h3r9
59076 znuvMhMnW^}x?fmw?)-RfZz{H8zqHNh9}bsAPISAwGXM9!3=qJaWda0<$#MPW@jJ-5
59077 zwc8-SOd^7r2T5&OQ!;5k$EH^VXr-u|a<WrJ|IA$`V{aow2&oK<%|sBfO8P-}lyb#V
59078 zPSc_$GNNMCFO4UAHc+bOIPEH09M-8SEtGo5rV7Jj<g+nn#b>p5MB;N2^Bv=NsFrLu
59081 z2WMjZ9%@hZMiMqxA?lB~V|GQT-08GBQvUf)x7XzXbqno{FVSC+Gucl`iF8#vJ`B0(
59082 zWCsoe_DF0qt-ig`3N6|o6^C+y{-T{y3wOEN2_+!_%7<!i0{fJ!g@E0r3BK1^W*D6(
59083 zWsUA@k~drkwoEj~VmQ-0eq%W0nV9Hzb!1y6`hjmvJ2~)ePV(`jRy9-RTXoQXj8~s@
59084 zlH>3H@Av9kws)_-;s5W|*XGsNG>d%1|GpXIz0V#8HqD=yJ?<GThyEMP9_u4>8negU
59086 z-dgiikfS@-**q82JdYDa1d1vq0#zge?LKGIlgX;8e_(K^b;jm!N_D$k-)+L?ChD|U
59087 zoVdW$oUH-+%ZN3N36dP?CUgJh$&pIAF*%Z>Ijv!C+2_Q_hng1|9+|m^X%RK%X-td2
59088 zTP9{jpj_sx2$ZWL+sT~RfP81$ghSWgG}-XCPc&F;mWhc5pu@EK10B6)eNWo5`~D_7
59092 zqt)m>Y^^}yp3JR(m#G!iLcV~UAui(@s)gdQx-+hLtl^A1VPZ;<&rO(@+{S;Ec_~2>
59093 znS7>%<|Q;ON#pL`O-mOK3>t3h-YrWGf57kG&9L<Umq7eqZ|B*A-S5AJm(f4S=4pC1
59094 zK-s&RJsBY1E%WE`F@V~okUv%0<IOyAkR+%Uw!4a{kggHlS81Mq*R<VyGJ?&gd$fSX
59095 z9ugv(pS`=Q#-(aVvxOBn$=|hjG+~59!0?1G-`#;DX7LN*jEIoagM(hvubH95BOheU
59100 z+u%q!4f>^$oD!_eF0{PTobCNvUMo##f8VQt3tpqYASW=?P|uQ`-^>GhL+6iL5RS(J
59101 zjtN^+Ti*|dyly5P_2ugevI_>$05&OwkP^j7nb2@Jp;-Y2m4q*1HLQ8SFzBPd;2@IR
59102 zQ-{2&L-$bCq56DbHc;Z(WC2&m{GL8eE@Afpfx9GuW}ZwTTdLk@7+|<S1yq!d!2+m&
59103 zVP+iAI8t{%JC;#te?&v6I27b55vu`{@uak#wx3&9b(M<wY&w;Qg@S&sS})r`-Nyn;
59104 z7X)3fuC4ZKKCP*kYBuW&1fi_l$y5cM4=tJoT#HO=s0QVV!)a)S=<vI(h6gU-8hxBQ
59105 zK-HdRXu4((>y%l2!s?FtEvnTQru{{WomrJ)R}3n_Gyp;+tdM=zv|oY-n3Bta|EpJb
59107 z(py5nEjF8U-T-1jzBe)qMLV8uTCB8L76UXjKWSaBT<;L;?(lf$H@RR;2!XoI^@~a<
59108 zqR*ce8;U8tgGUb9-25~xZxI$8j#@i}qEZ~An=2B5Vz(^8mHc3Gnph6`3#7Jh=3y+G
59109 zAw>xnG0?2}?!7Y+>tN8%()pm9*X_U)4s6&-i%qVdCu?cI#ono|fF~2M+6F^iwi_G{
59111 zLd(XIS&KXF)Ewy;hk?GHNA4M^9Y`Lmy)t=wa38l{-*&r$+(Oo{EzAPq&jkaZG%3Si
59116 zCX?~gVzJ~`YyqDmKK@)ho}wLzM11@V+*=oqC&za-jy;DLrr^3$;V$}cDv?M967Z+H
59119 z9gBDjiz%M!7AU!$Sd^g^3nuqV9B-M)k@lY8OkVFV(g0e7gZVz`K?1jdHX8_R4Jkff
59120 zZpM*^<onhgxFpzRcUzq~XZM`+K-?Ly6y_Fn?zCDwmKA4A8JU$$77yC`@de%c4b45}
59121 z+D)T}6{DI?dlsL5$l#P^oimT!xG<R8Fn*Nkn?5ad%mF(dUTGgG&)#xaG-=D)sna@;
59129 z=P^LPw0_6z$i|H;M&>4>7gEQ^|8$p)IbD~G-!y*7PR}7LV$;j{ft}uTCA5C^>h1;E
59130 zp;<~i(6y9#y5kF0X1A&btO=BpW!;03qd;v`K0@b$I7*Wn>LRsg<$-q?RKVaNTD8}A
59131 zbR0#1I1QLfv-V!PsJy?5pSj?iZEsvlrTrOxI00o1m|%6?HY9l4+0F7Sno0bjASJO#
59132 zFda%eb*qL(-3br=bf&)QpzbW2%gbredNrAlK)Y_p#G>=yIyYNPPp~PGBgV(y82|ko
59133 z-?90j<jO6X73p+k{$Ni};0jjh>s!$2->RO`mGne00N2*quf^5$W*9;blC@GsLk+07
59134 z-iZVAabRUZfQL1ZK`K!|VMH@Kkse!QGqo_Rh>kKPeLdyDj;XPT+hw<66c$pVC7W4<
59135 zV8-+)LIb5)5;?|3tZJ->nt&|K2Lj*qmV@fnpWZ${=+txi)~_uuXX9NxzA4Ad>|fxv
59136 z3!&Rxoyo;_vSiOeiz~(W;Fj4IcL%3ImRUN}=MkU%bUBz=x^SAi)S0wdKu--jV#&J#
59140 zP*^(qi;6v4^7)+Jpx@cq8F$*9R-;laqxEtt`4P?0vxyU9?N|kR^3$e>IZ&)tW%~!t
59141 z&ZMiH71m<cx*xeqAzPp;&B7g_JcdO4*V;H;#I6Eu-CcD$s5v3zHYhwsDVkp2=AdM#
59142 zKf$pQXvn96M1)r>ASn#pt~l&CpU*^g|0x?P9b-v<+3)VpC7fehj+`=U!=fs@Xa~IL
59143 z5AdQQPK`u>;FMKH<-sYtx;3)R=dzGbqJ|r65HZ-a*0?cWSgg0pxBRNt4(Kf$n#Cm?
59147 z4Gee!Tvd$Ta7R`TSVxx?Dw+ID81k}-df5D}*-#IO?0l!k7Bwovi+Hlf6Y~!ZuuVsl
59150 zlU<f8&o+cUD>1EX0A%@Ng^iubutf;VL4ao~NQl17Rzp`vlHPrKP#Z27PzGE{12Bd-
59153 zyE)dA39+b34oz@@-<RO<L(j8o4l4}h;>#16h2copZ5=+TZ@J$O5>9A#i#0@PXyK}5
59155 zZ{}jq!uHAhiFMm}ffS-Kv<&qZn)_!$NC%*LNA*v*RJ~(yIfvHggv)02s8&x`S2>}o
59156 z?rQH0t6~#Qo6lC5mz=A+^Ti8aSmDfiJSkiLV<&GvDAaS~DVIBf_KYpi;a`2#(rb+-
59157 zqC1GE>gq@ay`qj<F`O~z2Q05+cpWLw9*j;N-K?0c69WfkD25}~U(C2OMa`$Xwdw1V
59158 zN+4{v`1&KhTm-K1IrOCA%f~faDJPb1KX7@+n)O<!$9MIMvyGl^clncZ2e+&acn4Ft
59159 zm8Jee7Gi+RP0-NakVsl0!_}z?kVnX8Y%El7Xmip@vZ0V{NRSI-(QG<eij_)vMK(Ro
59160 z(`7Rg9R+7vWGPgY_tocQrE(RZr#fs-rMM_Hy_iY)hf)Lah>tT+(!%FQp<7e}p>k-5
59162 z!gc8NK~a-qj&!ucbv-ygkKo0{s$#C#nKYrRZk&Vv=JW#m4^FB-I1t)x4Q(C6uJAK%
59163 z)lvOcJU-1X>>AT;N<JQ$oeq=?yBf|WhX=B`!K@ar%sYH^MvOCI^)TU{UOC{@^#y=3
59167 z{6H?bsod-9Ue-hX3EjH(2)EBOkWUr$)Rd8;?i);{s-4b+Ywl`yVP<aeXLikIf?2Xf
59168 zogH-ZhK?<jLZ8b$<+K^JzdPT*t<Olg7F;}x(Q{V-n?J?A4ug!2YBB4Rvo^|JXKf0l
59171 zXOjt!v=;`YB^K~vg5U{<MnsZsp3P{cJL4rj%2d0>?(h|-6}EP0>1tAo2C`GqE~oIP
59173 zitOJjE7-ne1yyy&K1Ic>_4^&RNJ@$xqSH6nr+_v9-CWGj1X+ThYar<6Gu^y6;TNJ!
59177 z>`J>W&TK-2Ql9wK@o-BP##=xe`zMpOZh)F_H4yUJKuPZ}XQ?TvrVUfcX!{_x#dWd2
59178 zCATlqU$Vxds-BD}mTYR_gO+$y!!y?G2Nxt{kHW~qla25|+MVi`IU^HQAeS5<3YLqX
59180 zWl>^BOpzl@l`2HpRi6Y}D`OBGB1f7y0bwV0H~wjAw345io!URO-{0@g`l<5EUsito
59181 z>-`_AJo;$mF}QdR_0mh}YT)ZcHM*y%jENYk-l4QMN2AL%>Yat(Zk}2D0&{RsUK<AO
59182 zrq~Xuy0v5AqdkTB^9x<Q#|;l`KE`w6vxhDJ+-DX$H@&>$NQ}h(`Py81G+$0M#2eG<
59184 z0WhKtf<8#^>-$J=?;#x>T^o8GrS6`xe&W_=wjclE5yp{Eo)|x9+qQ$yR+FmDCA9`M
59187 zso7xN(<!}c2QAr>-QJZDVsLG5#H$+KX%)tq8t5z(yZq?HHoX+kxfc3f=ON3}2My2a
59188 z5Hw9i-_+2;S&kKlRCtDu4JRvkP&c}Ji<;2N1KoD_(2N1s(qWOsmck07>!6&oP;rAp
59189 ze4yVe1lmC`T0eRLLHq5=Ij)#XCp3l3qO-7=(!f*K9MBE|>@&44`Al<8W2#q{Fc|bp
59191 zHh-GM(luDognjLZe|TD_b#yU>K{th((0c~D9MdaU7tGsLnQ~Ca@=X<>x?C&J<M_v9
59192 zJPPTDp_sG=>w~i(-EjCh^E+1`zreln(9X)Hl}`^|_sf&lTyw#We6;^d4;*>?BVX-@
59194 z8?m<%JH3=F{ovj@G|^k_)#~4WU+sNrWeT18!T0g0X+LKcYVGVaZ@c%y-}e3bZKRK8
59195 znM#*`2rPoz`skB1Td7D-fumv6%>eV%+k~8%YYN$XO#B-+#lLw|;-+sVZ#p`0(@hiq
59198 zol{k0#i(Y*DD}!2?}Q3Ep;Ea~*3n??X!0t#PcChDOrSM_OT*{t1W(l0-R&x*6zhs9
59200 zJF=g%^l#g|JY-d~P9tf!-O)-1%Cdg?1M(#MqohU#c<~lniBXSqSIQl(Y)n`dW_sxl
59201 z9Mx>FoRq5{I%i~;qE5ITN;FQsSNA5Trr(~=OVxl`Hq&+}C&TK2Bk;i&czh{4Q-mex
59202 z^2Kct!`5N*$NDbRlheH}T-0mv=^n2yY4<zQI*g82;^$yGh>tu)egce=uVye#_+DoH
59203 zox~ZEov4K!PV<-j_IyUM7D}sq{+!!tbYw)R5X2QVWQ5FT8_2tpE?z?|YeeDSEG0BQ
59205 zw5h!UeMZo-5|I-JXHViY6`L{8n@cQ@R+H@~0npb?T!Oa3s^8@z<bQJaCIE6=<$>^f
59206 zbst^bRb5x#-PQNqJw1KQJw2CZG@8+UjburdEZH9Ul1~iAwu}!97z~Cb#DED)2v-ay
59207 z24}N@5ZJ(GmyiS!2!SLd3nbxZlWa(K!2wJEdsW>%J%@zF8DeXs>8k2_-}k-uzW3dq
59209 z$R8b`Syq<x{9t49R=-G6kR}X|NV0Y}0F^l1jl&G5mDI=!Z}aNWWGI()g%oct?Dos<
59210 zgui%v;rN>mU3eKO*MnyR(@~PE=k&ZD$K|QMj^^z9@Sl-Px$~ovt))3c(mDbFcE8y+
59211 zRMJE4#75NKWpr+@bZ-K3j}zt?0g+55g~J>NwxU1}|8)q8T-ZTx9qfwb9d{r{BVGqI
59212 zD8g%i35>SNvBa9m-2`UG<nHL?Ovjq(ST@;bQprdy;tly+LB_*rx|-8Mg=AvS?wC}l
59214 z1429NU`s&Oi{QV!2`m<Gkz^c)!0d&mE&=0(-{@|hU|K_)hXC7bkPWm7!(g;MWbaJX
59215 zi=-Q3>C#-&Ucq5c*k{`N)#jS(m+yLDo!!fz-Mf$Jf{AuAJcVQGI$Jq0wgy~xXXl{+
59216 zz6?M9qM3$zNu~h>E$s|tW}J8LBK|A*2Ko0u-?SohpyRd$>n6hNus-$;@tD6DQG90J
59221 zMXL+}0v|)KadP`jg~qx4slJpM3=F#gIC$-;iH4GhM+(p-k-yy!>anSp&cAj<8n`Yu
59223 zPM)b^D9Za&LOezj?Uyb*hFJd~;x=D^PuZKQ2-@v&tYF41)k``1igxxD7WL7_!p3Cs
59224 z1k>ADnRMUYVzG5*y|A?I(|UayLVL|y_V#+HZ>#<N+VA_mt)&%C$>FVFq(=U1-KNu$
59225 z-tLFgFrwjMgvo8>VGu_m)#`J#VkS+2?T&3!!RGHr$WG-c=q7dscRZ7}GYSb3r!3$&
59226 zoQDvbcWz_uA6j?E_Oan4(37~Zr=16>m1LZz2fK2|y84a1xCAsy>lh5f!jMWU9x-a>
59227 z;-UJsT&ZmEF3XI!v%_adQ_2QBi7>^dQ<)q(1Y(0BtrBYNETy)OC8Gf=L{r{$I5Bp^
59229 z^aHmZGz4KV77V%=f5nW>0}iZ$-SA!T)#x|VPNi#sIj|2LBmT|_u@M^?f?;<-K_r$s
59231 z-B1)HaRvP&N+%5{iBdNUbavfaIEmZv7QlL8_Z1v^1>jZ42|TyD;axaCbIyJjn$z<?
59233 zD7VYq8Om)Bg$5$m4`h$v=DD-LElBPa;C9=?xb0!eTMa|W=m=vW!Cr144|HPJUc@l%
59234 zYd4G_!_NC(3`Q@0pcVVScKg8o`EA2P)e2707I**-AKHKHz_D%n=J&NHhUSLn>a|L%
59237 zxkyC+b4d&NY0_hw*XS-<<e*k6hDXK(T8Mfi6@3vs7qCS8DcW)&^0*B&fXH}vt06x_
59245 zMbbGAY+2FNoN&QL!g+3lXy39=4aOoYTM=7TbH0Z3C)c^f0#8YTHdz`yp-NUH9QBXn
59247 z;^`9^Z_41kJmcoYs5f~aHISEew>F(j1T&gaG|Vg?OoWYrAf#x@!?XETR*P0-D-~dP
59251 z2WpCVDRBpJBawvfMdPK>m51&0KpKn!tn1_eOFU=WB67qhh-Zlp5br16N<0j3Hh7-+
59252 z6n1!`-xRQf+c_ep^^pB-0_=c0U<KyDKY$~kgtmo<?g;>Unf3o5SQoDd>o~&tWgV<7
59253 z1aS!A+{DIN5c-A0-FpSNXMV1@`+ttOPu;r(+U^Z#dwvA8e+fOKB0!!3xD%q<K|b;`
59254 zKwf>Z$Yc3u$1^-SYTf}filj91JjnV|zHI6|$gz1gmp?y{sFDE?cmzEz@`AV;aua;e
59256 z7=k8}^eV{LibMhC3)cZyf*=6F*$Q;Iq?16B+{@@-V^0E>^{`k6!%619wh2roO{W?9
59257 zrv@(LfD5k}T4_sYX@+2E;-?NRLnoOlf)+9S_R~KMT2ROr^M&G19coyF`QnQJ8VA$=
59258 z#uWn{61mVy7j!rLxj-I3kpET>a<4AyUil}CfsQc1MnF^lX&?|q2>j+x0Rah(7?oT<
59259 zc}&)Wk52mb$Nn9IPXIPYu>ELsedVW0n8ojPPVDw4e-1bR(=VGVHYU*Tll?z7BG{(z
59260 zxjsZx-K$;!B5uzbBETJl9?9)l1$-I)5OkD?Pg&_9r6ROcb2SXRSb+#eD)OTt)&9fH
59261 z_*g0Hr;5*|F;Rfe!m|?rRyJb&C<v|e{+qg!cn|R&-1{BwNB<AQAsB`sPzQtP`X}w5
59262 zj}spwo*_O&yp#A9;(p>j;#T4o;s#=sI7A#Eb`i_)8$=ub5OE?#M2HX}5h8&Ud-#3$
59263 zJp3;FzwpcOOYrmXkI>scWB<Gxz6<^ed<s4Z-vZwVpMdwlm&3c^OW>XGc6cj12XBTq
59267 zEb9Q#m+6V0-&n7MzD!}N%iZfbmoV~p@NNyg!S2(Yul1*!_L8>N{<e|s>p9u65%t11
59268 z(O)*qTUDuoYalc`G2TvKx6|RWzjT<<{Z5yL9oNZ*Kj;y7g(j@^u8qw-YUp+M`#x<b
59274 zQL7PFacN1@8|1wMNllkcv${NL=xJ}-r%4f+E7r8ub-Og#O|ud$G9*h8&l8Es0u>+O
59276 zAhCNXBxx)`r<$Xo-2AqjKN9vYolg5(Svja6$SQ|&jcY@)&I%$;vuG*>?uQvtGeiA`
59278 z=gtx)qr0_wK=9~kD^-n$WTh0B{ONdnb@%?)&v5Q+``YE9qlfCkz>t>Agbl?EmNLna
59281 zj+fnNCDUQkjD_X6k{SxrE}A1hv$=dxb*nmlm8~v5-)fw!-}dL9*xuOP9u8Me><Nmc
59282 zs-<{y0YQ!hAdd11*VCi5g)+<gyh=ietsJ(JRf-SkZqCe!l9-#YC>QJTd*&=7&XBxF
59283 zyNeTfD;r9^WZV7cN6zJ#cgVb<(uBmb6djGZOquqDObT-B^H&dC(|pCBeR%ue&Z&{;
59288 z8pM%)E(F~Bz<U7>UDR=C4SItC{{j9cx>5oZQHJ-xm!UUQKndQC?gl^we$x&GFG8FX
59291 zp9`I&UpP92e=c;w9*Nifd!-Yi5P>LE{3%kX1$>vK&@b2``e`tw*5wz`nyvd^>{3ar
59293 z4`kx8cqVp!3`U#LzM_Cb5Rn+Hq9J6rM@BmQ2$UGNv^okEz-bE7;b|bKw6KaG)J09l
59294 zD!W0cNOc#7AypEoRZtp-#agMjI#EvgDc?XUOor0F(Aflx=U{d)o?XQXcfLM&)`GDD
59296 zpkAs3&I2<QO8s1L2epAJkuqzk)uf;Bq22o8Nib0+x<m+e-4GYA6!QsK4)_9PA0k0G
59300 zG^vm<Qw`UuKZIoMSeIy*SyREEDWR-b&N>gQY|P5u_wR>Z?ey9r1D7M$k433uz?b}m
59301 zp%h5kv`U800*6$qHmTZ~#ET=<ny==K#GBCnyNO-IG%*G1unztK{BQ7i@W)^Z;M7lm
59305 zaQQZP5BSgEDezYCYVas{5Ig|x2ls-zz#ZTwa056EP9aP`gz)_!BBqJ-9XAk=W`hgQ
59307 z<I|vFU-CTLaXa;Wyd3QKHDsexorg7yD|KU#>wGB=A<*CTPAPMYq62IX#V#D3S~?CK
59309 z&@)?kzq&0xaEe-giw}D1-Y9XV>vQWR^|iX)2N6<N<lmXy+G7E)-fUL?!O@L=9(YIf
59311 zCmQ8Ie!$NY%JfKLAskA225&w-wAwg)@3G|_<?*{l;l#WC%O`*Py+8O>7fF)@)9dR*
59312 zynVxk7r@qd(7zgQhTY|I%pVi;%X3jt{@!b@EZ+NRh<!J{`t-^q;xtBWt~yY6(b#cB
59313 z(<B#_Fsigx%!CG1jH_1?G#33G$^-;i=Z&C3MSQ!;vL+ZVe^^pg-o>~*rHQPR9}MtN
59314 zOtx~omrIX3PL=&{oE$9*B*&7rONFa!F$<6C<)P-N*)q*oRQJe|Xhwa>ik~D&iXdo)
59315 zWGxYKM!}z>i_zS^ny(}xuq-W9w_;hzJv1VFz4NDTpQr``uF(EwDD5KkaEOmiqKWaw
59318 zOuIzCDoh<ZFwRzP-^I9A-uv+6_2Yg`G(|TrvElL1!MRj0KA$_h>N91oIT=beNA!3(
59321 zDVjmtkENnH53_oZQG&cq^E7SFjmw#dg_s&mM_G{-0zUUZ)9@>#r&1|CdOUXIWYKn=
59323 ze=y<-ltN<l*mBA5%N<$t`BMooX?kO1e)9m&71L%dUd@(5p{DNldJN5N{)yXTafn$n
59325 zz7s^j5;%#D^ZEAdxwBc41oyt|uA9!_A|*>JlR-DmK7qJK3YNe~g0QQm*u9fTVviMr
59327 z$p-K9<kEhE<7rK249?9_-drl0Qhk(}ZoY8(y4#GD5e#UpL)FQv<B2Sb#_$rXOP6)b
59328 z%y{T4PGrsY9->CYcFw7uw8^@dFds@5ed@OPDcMrEV2EY%k~_&WR%D8iLL!$@ASYP!
59329 zWBFazE~S?yJyh{!_tio(qv>>tGH0d=FMQ+9Yi6#!s>-#mO3d$yW+SnkadF22d|hpR
59330 zWGGJQv$q_+@Tukl58s*hl_GGbsSJ;4a(zgSt5o*bkp-34l?$I&A`&abLUhopq$w?;
59331 zL@JV>m*XxV0pW$;;r^9w0xvj>q_6wHli+D6!x&tG$B}&ZQurwKl-&$!Y7zW0c*rhh
59333 zX4_z`;Z!!Dqu-vhgSbU_uN{2thPan7i+*!~CAil%4nwd5JOLg9!??Gh4aK5kCi)4(
59335 z@U0@{fOiS}DsXwBYXx{!B*}Q;DuO_CbK<H8A}K{?-AK{H;_3=O65B}=BH6W@aC#bO
59337 z1(zBVtFSGkynPUy2lvAV;Va-B@OF4DJPnV)!*J0K_M5fC`?4?%!!U>xMg`(hrr!bo
59338 z2PuZ%0$&4v34RBB415sE;6v!=E#S@IaqwC@-0yzGoX(@4y<j((2XnyJ3HjTkdmwGa
59339 zE=khroCFw5NApk}HO#K_w59=>wyKfNphIP|W^rYacAK7F-;lFY+`pp))t%q^wX)>K
59340 zm^Y{Bp%X($**cyR4+w1?srRs>aP>Oit}DsH_D9Th3bw54&f3>jWqp|2`r=5$x3-8A
59343 zg6h?2uT(jB$K1_-arT|C`e<k<Y{qoIB?h941F>z%*kq6hRs)A$dD~4Bk6-xxch_$^
59344 zq%l;qzEFwoznSt2ja#n{i#{>X2&x%R>-!NsoePgy0aezsS&@ST%!LhHy@VhH%4_Jn
59346 zPJL?fu?ZoS7UXC-4W-@Z4j1|Cvu`XPnh=Ud5|xb0<7cF$^H&Y}Q#1R^UgGi1?~QG~
59347 zRM<)s|Ip^={_T;uJLa$d)OF&vdj{suG!mi6!a~?Tw-CJft2c3@yB2jlUC;8y!N<>@
59349 za20+~7Eaa@VVX{l=Wh7W!Pm`joas^Wf&Y2zp_LIWF_q_eJ_5hAp`-9^oYy7t9*%MS
59350 z_4@Fnw{PtJ_%*}@p94>!L$G-z1<E-Z9hNR!^>xrm9C!9sf=F1+$YjE*M`Q8fM9dmV
59352 z>&^R~dibPK8)aty^zrn*h0<`kr~=%`=%1)#@a-TDV(oB%Wk@WauK|IMZa0X-I3CTZ
59353 zVQ8D6oFePB4)?;$iGnM;Ua`|3f!T6$bz$ZWue-O>9J3_NRgGG=KK_nhQNqjf;|FL~
59355 zut;x!t{*sD>mFN|oH%9NY@q{aDt7;M4xFQwTVn$I+@8D^Yl+5Ctp287f3^#-!i@$E
59358 z`uI5|u9Ws29btku-umqH6Cd6007e$!?;^mO?LiJg5-u6~<y##`!noNn29@3lR68iW
59359 zOHVs&ov}ep4?CdV^zLH9kP{(E&gnEcdfj~eRt)RTeII{G2i6-;@BY{WG-D`n>+Y}r
59361 zn)b>=qZP2{)T_7OaKj%E>H452+0gu+q#m41neEw88F~uA!r|P|vF4744!-g;bJ6s5
59363 zE`A(p@UtL*yU+@qYIae(3vFhCvTOX1t-(&oPo_Zlr)Gzf6HAmH@bhA5(9%+sV134r
59364 z(&chqHg_bXa--~0nv2!c{#|4402<+sE`AmMclaixZV$Hwzuo?gv-{IxJ|cFiW<w7|
59367 z#o#R|QyHBZSJjz)1^Vs3mvG0NRY8prx1m)r-=6jR2!bqfxPkFfDj6k7w1`QHB&hQ^
59368 zkr(3DN^6Um?kwh9CLXgn1X?7_C6==-B;tj!R_Yo{aZbWU-!|M=yy;y<!-sehl-&{e
59370 zMX8YQpty^e2BYA=ITdEiGGs{;66_%42()8)YRLy#xFcxap|-fwDIH(H#e-RbW>;|q
59372 z8VLveh`gh4RNR`e*@di}ToO!Sv&V`v-Lw%q^~JY*+jy7T9eM3>)#YNK9FAA&8n2lH
59373 zZi8g~lAPC6Wne&1dEa!L9J_w*%myyF_~3!Tm9tB<luvo)ArcAXc-%G5a*^`g-}tSO
59376 z`ZWB~)w_0Q!mVp3IL`*Ov!_>X{w7J#Wa{YN?dd>j_xO%OB=yoi{nh$1@wH4Q>-8`1
59377 z!<xNz@oU5$;vbQ|-U174F^qc)p!2{MJ<@gwtxnw%;$gBYe|XkkyKAK_5ujPOqM$$&
59378 zsLq+2S#vY3Q+wF8uC9ptc0DcFodnh4)tw&7J6&-H69HBr2nLeLxW>9@o-~x%YwMw~
59379 zn3>L*g^_C$R}}`fCBiF*Es7xxLgbZrF>YQpJ9XIKx^X+}J-Yq%gJ&Cy<9fuMKYdk1
59381 z&=`z_d<L58F*vryK6-s;98XhU8;ZUnpBvAcy+<C~{n=D4Ka^X@M$#eP%$29N6+MxN
59385 zBBdyzE9q`T4ld8!cjWOu?4q{!jaNVV7iWVhO1KsY422j;s;+P#H}%BH<=ZD;^F-$q
59386 zwFSaQiF-g5ci#yjz&X28XkR(%esM6JjD)-%P=!@T9JCwD^$V+HYlExLsh@-3KHI)!
59389 z*g=PN&?%Q8C=Zv1>$P0QiiHAb8KMc{Hy~y@Vs2k)x|-9-BVixlu-WUNXTY-)H}9_^
59394 zcBGo(?226LbS~#mB{wc(V=!jREB(2q9j&34l-d0ijuwwBRnUA_t~&rTZwTo~ZpivQ
59395 zG0Aged-+J&6O?$yKXZQgbl%Weg5oGTtj|?iuY0qXk1tH3x#whVpswDir_%p#`OdsQ
59396 z<5Bib=k{jZVK*I^-g9I1NWqB40@Dvq?>sbiHj%C9oiz}lu0tm*QiWodP=yo^K0Mc}
59398 z!kx2t`e$z+#0TVHW$2cB=I?vqzLCAN^JOl0;MF&t`t+&j>3d!|vv_;E1N5&Wphu7-
59399 z-K;@e_8k4S6oZ%5l&a-i24OM+N9e6FS?7v!m}FPJ&Nx9Eo6ss0aT1_T^0Fc8w8*Nh
59401 z-cQ_5+zA+{+4We17r#K~;6Ee&bd4Qh|Iu7lM!G*b^s{#9<Q#->hm2^@3BXqgyD^2`
59403 zEyR?}YGe12RI43bDy9~WK6G;G^}FX^QiVsq_tb^oD+{bEo>lc}-~QXf)wr;GuRmS2
59407 zz1a?{e~v{m5Srqk{R<73R-9;i1Fdx$+v2I!uH<XWflfqv7|^&g19jf+w!7&e-2Id!
59408 ziF4SYK+-+E>}>x-xEU1$`D`YIbcc{)D`xDa3`@;kk@24W#x`?1WbYbrBGJ@c`{tf_
59410 z=zKj~a7&V7{e!QEyFmi{-bXZ*AQqiKVn33FaaYv_$XJGge~gLUpG!1=~BPMX2b
59411 z-Di_&{bRVRV`jr+43@ia=~|?K;6}y-?uABBXm1tK!lVhOq9*#nee1q})n9wPb{=1G
59415 z3m5;MxE_21gh8gA<ZK4k;Y<!sa*kC)a|yTsnq6nH6Fkr@-_Ruw+ShL4+{{sz1ih}^
59417 z3e7%6HbLSyWeEp3bRfxeV2P0S(l>i?Y}Bu`PilS)3)fsel+Uf+e9EFll~+Q-lNbKN
59420 zZG&MS5@-pd4|oY<s}upznHun+6Ey=f4lHZyc4O6jrwTnb(GZ^SVAR~%%2k9&$f}Bb
59423 zsg0LcoO;MtWG8Y)sREi|=yQNU-(%RbFUG#q>U@PFal`2I-LHZl_RSUB!ZbcM+^W~g
59426 zF6U{No-|l~4@CS~G~{?(h*mtI%E71K{$TN7XCIybUjRY85BW>&LsgMP+!WneSpC~@
59427 zjWOYEcy3#vgm<C1duhj8AIgX#;!9UQ*nYWBk-MD9Ux{%Z+O6)b`F&{o%EeEE#}R|J
59428 zaAy^bBD%fy7_-1)KY7<LPTJv7-MHSPo@!B~gS&Qx1c8Pk!FWPGgTl=p2(RL@Otm=*
59429 zy*@!Dm3-PAC}f~sU6|c7%qoL>UVe1pKTTKnMgk>gbQnOR=Rvt$NFn5%My49Hs}Q3t
59430 zwxLyX!a~X}xdm)pOG8hH-UKE^NTlE~Wt~-wR?VkI^J-#BaYZz}z5!OFePp(sVdKxd
59431 zed(&a<x7{m!9-y$5X8-nzKE#vJ>q@12gS3>6?*2-v5SruvUlv-CrhInq-HB<`2PZe
59437 zY7O+)$L?zzv$=S7w{46YeM*94EaEp)^m>5T)3mpU6E^5Ie*l-xA(6zd3ruy=)FK77
59438 zROQGl20s*Pm}RrN@5nG)U#;(3Knu304#i&I(OqlA-Cz{E_)^%;$76%b(q$CaVm=x7
59439 z%GkbOw|MFHf$b@&b`P^m$FFQFIvyhJ^sP2~vH$-zeR?Q7KN+YDD5YcD=5E=UPt{tg
59440 zl{bnf%O$$XbEa>k8Q&HOhQ~_dZ$+&0_QmGo??39<d&j|abERIMn?)R4Ge(Ws-Miwm
59442 z2NHc)ac=u?iaV0fSM3t41ieZ!L}xpM`fu45H#DcqUFD>$lAzVdq=Et2EpQ-AhFM1@
59448 zj#lJEKMgvWDSEe;lRb}JiLRp|nQL>b8R3G)gv{v$D-p}YTZQnpvFvqI+sx!_Fcc4%
59449 zg_cD!_ZbTdwP+;i<p-nwR7u-Cee+Z^>?sD!rG0TDB{hCcEcpY2ZXvXPh4*IJXugcL
59451 z-`0D#@Yze8amv#p-SIgqX{B+y6SM0&?=gN%1x?ec!N6$T9M-H@BW4Vmsez;X;GR$@
59455 zKcAbLIo#&7Yj$1uU$4Nsuwz~;0Ux3=y6`YQ)o=@^5-2&npjBtTtr>2eHWK}bRK4G$
59456 zB&8^k@#5XfjEm7SrmI-C)G(4|yw+IYs&m5<E73HEglqDJ_b<HS_7A^q;>H8xCoCl_
59458 z6&?!c{^P@`qLyjUFMavXa-iS8cmXNhF8~dUI7MzHySV~720MdzZR6gd-c_Pwpp;xl
59461 z%s-ilCcTAJ%&VrXNP4VT*)=eAcOjnbs3PA4-$Yw9)()#)aZ|9DN5cD!?Aij>Ya!^Q
59463 z#=0wIdsN6?wacC?)LHr;^qu<EeOg|t?%AGn`x8S}q-t7Ig~c~rSPUNg#-p*Zz(m`S
59464 zl-OuW^#+el-0(5<;;`-I{RXIk`yETB6ftEUv6M2lW+Ev;HW9@mGLJ+oe2MH@JOkKB
59467 zeuCklN8=^SC@2)gOFSE^$Y&pX@O~!<$#w-}m;cvomwz5KvCBV5+Ae?1-ix&>arrj}
59469 zKTKeEzu=$Ft$F*^V~dXso^33T6!p~AjarIv@yxUmmCS^M-TnO$9^+tpd)vAQ4;sxS
59470 zP0<fuKE`9XRUQAKF&<9P(B{<OPK-yd+p!(vu@=a8{fEkipYXZ|rCN6Wr9<g-wAgs-
59472 znvu+@st-qbI8Kfl_%eurTO7BIfO}R4ZIwG{e;}O?9j}ga29wSiOxkC#?f%#kYzMb;
59473 zj&$zYtje#eGS7k-jCH~<dtT_ZfQYU?grVTz<F9h5rYO2x_r9V1XK!9}<2-fY`EsMB
59477 zj-UgDVJT)6X{7{U0WR!~`4ZQ29bp$#iiQM*m>GG#`?%dyn%wj-7C#C&qK(2;%dw}3
59478 zyzjDK!A9QoPva_bE0_9?ZK_>qBN;uFh=zTJBD-AzkA$`y%<=1lwpOpUfVshT=lpF&
59481 zoax7|Q>4M>{aq(k=RoX67O||^>=W3q{j4$(ty=>l0;ADtq*Bvz`?9%%aY+-A?(U|g
59482 z$wO!ALxd9d7AIo0qQ8x8g4KwT3p8VzWXATd><Tolt<`QUD>0-jvy@Te0{d@#+0+~%
59483 zaM_vM?5irlSVz+HgReRcu}eCCbk*(ZbBJX&y2R`m!-v|r>@1oS$Lw4^S-fhHlLWrJ
59484 zbfmP`Cke9FF+6)^tIT;=zC70QS{)$X0{$100Dq|EI{*WhvwS1Tb8j)$0bt>m-#ld~
59485 zg5clz%y0S(S?`SQ8_Y^RPEuM2a3w+g;uqjYkpg0X8#<b_*cHmrw4dLgH-~HvWXq_C
59487 zg#*XaEYITkmE~kdk$4ci6)Q|15qRPXZKN*XT4y7*r83-_Iue(3bso2)_W7xOv;QFn
59492 zB}W42Dj*nFkDYT2iPfI^Vb~U+O-><OU9Z=yD2^AT)<rd}%eHj>bg~-PTWA@!7)U8f
59493 zT%lOHr-4W~q=iuB)~Uvf=?@+l8@SHO9^Eq-4;GK)hpmD^_y_z_W_D!ih_7+eBC8)?
59497 z74+*AMbHt`7{W{-HLMi;k#Zx0<DnNHstt~H0QxiVS3m$G&+=F5ZxVp8-rr=}<3AA7
59498 zeR#k-$giRi{vJK}O?V#&g0YVxl*ua`BM5@_7#)6smvPTe*lqE_C<%{upvZ~5sp%w5
59500 z5?FIwqAd?MIoW!bNzw*$&B=x_v4EAyAwK6{w_<P_-3A7YZ4pXJ${tNcvoMy6)C3%U
59501 z(Wvj;z2uQYfoRBVr%8s;vQZBXx>%Vz@vB9gnll0v__qWFiXh+4#1-3?jcwH1@!ol4
59502 zV?tFjn<o)0w&mDKMC(MUIJw!52GY-^(9eQfDW=lt{re`}mKkBCq>>t&DSHCxn37N=
59504 z(kmd4!wf+ZSts(pW7fga{Z`2isRY_pDiXwsu-G$X$?K#3`|~K*8L^JNcK2V%bwBNU
59506 zBrw=3r3^oaR^sSKyvmgd4c+y-j*-|__wEXI7R27G1$6L2QE($>!jd#k7|SzwMKr2n
59508 z8;!<?ld%$;J(2Q9@n9D(zy$mTh$C^v(-CK)Ke9Lz@OiOKqvPf8O4v?l!j@)bJtRq1
59510 zhH`m-t@7jgYa4^P3{LSAI1nYHm-g4L)vN3C*qUAGr{}9Zbb~J<<r3-PT<}mUI2`d0
59516 z<?)pz^>ltD>SpD9D3Ts89$mcs<*b|KJY2-vbK}1b41rQRpX7<l`SBB$R|Z3HXlp-y
59517 z=OnbfH@!?1$Cux0&9&ywFAb=rW83C$&SY{{EL-%Noa!N|c-^hBvfmfKVSDPpnp=PQ
59518 zwj;UbO1&Dl<}@QHDaBl3Y|)fRUx4*n2JPY0Q1<Nb@?!-9rzn5-;#c5tID>@Y^s|C3
59522 zJUk27lF?bZvcT)QqPF;uKbjU8X;2o-k*QdEAozANvL{hrS*b_WK4IF2PC(gnr6-^d
59525 zFBCnt-RZ0F!|)y?B?`ZZV;#$##Cx*O_1>}1b*Yl40y8s1vg{Y5&72mXy-_)y5BfZ+
59527 z7kEjCv7sG>?Cu;3J(`yq*_|-*KD_XS@qLF<@w&n@$wHj+4J3?a!e0IV=i=wVjc^AV
59529 zxsFGdD8j37$L%$`b{pmO!o@o8cN5PTGq>K-4pg-C(ZeyMYsX@)!p_8PJLhh{?!sbl
59530 z=z(`$o0~R^i-YJWsHkCDEe7_z?55XW0|+Dl{VP#`A3<kT75s)1hHT;xAA+P;S)>GF
59532 zo48zIE)%O-RV+HA^^HzYuID@N#8cKb_zAHLQfs!>;)__rxJyg8-G0GBQkU1K6^yAz
59533 zXVU43fzVXEd^$XON2!#GWp|eKh{$?uj|DCy!-Sgt<<sdv`K3d#AuSkq(u&4HN+4VJ
59534 zC2_nEy!fq)7r?XNpB-C7^onf(1dv=j2UJ4sS%>=-D>sqkz36Puj|`EV;`OE)m@}Et
59536 zW;5HsQ8b!H5L{XdHaH<_CK1n2y@HvR+}XSr$!Ls}ii;_v>E*W-@@EoW0|EINw12(`
59537 z1Gw6E+bj0%9}Q}F|FCQORC7XjnW8&TY=r{D5!!`x>?1okt->+&#id9n=f)>foC@D9
59539 z(S^I_J)S@#k-z4^_yK?Gj8k-jpy3xl1;<-pGn!p=MAsljA>%|+_q3sIhDq-<bU2Wk
59543 z-99$fSq#s?&!V%V+Ad+o2^N)!OUj1!(zKvOb=FC%U#r@%H1V>DgjYPInvD)%Q*l07
59546 zRh-x=qNlTr(Hj1>Jz82BIIumUnAhP&yyI<X1@Hg+N35nXIpp!UPogD!?spv9CGqFf
59549 zE>9yEpC*UEFu1-gDA-@Ll!nyePtq+}t77jR!h0AFGaLLA=??i5&Wh{_K0OLx#n^Pz
59555 z`YLE5CiCz|U68VmMZva(kQAUua2^Zv6bY%-?yA`FOuz|;#;0}XA+X^YoPyhT8()41
59556 zAgRt?J2+1i;yh8jb^<;_lhHwiITzE_YMpoxv#T-U%KN>;NHG^HcicBowFD-{F?nAu
59558 zWm({m<W)ORnd*c%<II)rWh8a2bZ-K}$+8$6KrhT$(REoCo2w!)ef}=Q0Q;l$m6Q~j
59559 zNhxuK<`Iu4xujp0MLgx<;_+!~;Hqtn*S+y=)swrbY3=x4!RwL3ewGak`ol-Y&fKjQ
59560 zuWztpA2!PVTdp3ROC}fY%|;65EkZPvRlV9>?l3|e>!bnlZp6;U@lk?9lpNpJ)-Emx
59563 zw}Xs}O{ZPH$R8<|?2iT99$z+_>ch1HCSDw_qr(W-3anfau2+uiSp3EXZ(Pnym{*AH
59568 zp=7p2$0uSt!cihYYr=5UObK!|@Zj0TLOL{yc=PhBZz-Q@Odlvl3d=Dg=~4@ZN2Tf8
59569 zIGOcCWh)#n;vy{<zj*Nz;A;@~;xyW7px?$5f}u4V&pPehHnJgXTB-54KXYcBf&V{y
59571 zdj}6~Y=-GJ#u9G8rlDDkduD(c+S6`u^T9MUFwo6nFdqih+#3<OR=p?5l4*LT?Xu*m
59572 zyqOvI+;h)<{=-WW5zH&Dq4+s%OYt+Os#|yZz(c6#3C@$OmdL2GVy2){_%!&&ccDKE
59576 z0^%c2JcC6_WmrcD^u{{?-EcexD~S?^C_V(>_8}|<O28JFcpWiXheXQ;#UauI0$T|2
59578 zTa?}s=+>&!D5G#HH&-e<43T0l@=9bQ{2y2c`6`k_c7WP+psjlvJm!hm5`Yj>;5m_N
59580 z?D)?7Ntvv*$Xr*dm6cl2&gn9<cIJd(F7-&3qP8bclp@E388XEbh*G&8gDAyjD6lNX
59582 zntVOcPaTEdWF0%cS;GL&6}sBw_oiF@l_is=%efJLQ}mrtb>}VU2Y_e*-bsdzLiHSr
59584 z*wkz(T-9Mm^OwN$o<!3~fP5~lg1aG>i4a{9l!S@52$h~dA}kXKLNWt+QW_zYOfN@f
59585 zR!=~gOfO7DCMtL#;#u+@gv7`pl!*(BR7K+1StyfXLCUD0G%-|@IIdUM)`|tmVkL?*
59586 zL_un(uCB7YCdx%!3}C%Xt7(upL1)Au&-0Gqc4baXBHd@ui-3`@3^+SZ!0<1z!5Z#h
59587 zvXX41-s48#iDLzi4kO<4y8_YHF?`VQ>bf7&g6^J>MaM?5M*i&GgkZ8~acrsB&<lpA
59589 z+b`p@EaYITd6b4OqviN4;{eVO^Xu?|M$Q;d6J*)+_JG(*180+y8CDmBbWL-0oo2N;
59592 zcB8&{BIpV@r*q4%dq<sKef1r#VDny2cj}VmF8iT|iA%?e-MS;B30}%em)^er5vN}v
59593 zX@X%D$=r#>9u@*I-A4W<mTG(+CBdb39TO)`I?=EA@YkdvEDr=!ibPY9fI<lpn7bH-
59596 zY<QAQE3Bb=C7a2Zb=R#uL@P{l5lT{6?d{2OMG-9^OT}`@AV@A~VcZq!=YVx|g6HL&
59599 zpAbx*K^cb4NX}kk=|t0}DGtZ56u~y@b-%8L%?u@W_lcWnZ~gK>P;FhzOSqQhoRz}b
59601 z6qEF-O7rHWM9>-N1HdY|2m!&NCB&mI0n37qfj5eki88yP?$Wgpxd63bM%f9dR7+27
59602 z*P-4jP*kp^=zf5r&Fs0m2uHoR40M(!X!EcI`9B`~9@+<HhmX7`61hJGpVRp%J_Z|v
59604 z+8bl}PN-<G`-N0W6L-qTWJ+L$I@()AOIHPPwN<al1qCYTb2zZR8hT?f#Z$e7#9X`=
59605 z6@elDGcVZudR{0wc&Nn@;vR~}i-BVUvy}vb6Az6vQT@ne35*<05)rUIaWC+8hzp56
59606 z%9zj`jZ&I9G)GO#@I#1v@F(vr6rEyV${8(Z3sTv1D-b>|QyRg?3B{tVS)w0iBJ4PK
59607 zsGJArKLZ}+odYh<L={0}%pEK8E)y~E#5Ct-XI{gOsuC?C#jrh7B|5B@nMD(VY+TjN
59611 zWOm$|%9#Yk(>hM9tXc|qsHJ^-qc2d@YD*L8K-By+$r@a1H5w+cvrmT|E1_%}T?S_P
59617 zB&C|coG3b4#>_~m_D<2#GU-B|BM4H@w)(ul#Q7QYUIa!JF2&&%bC_#6w2SQ2gO65?
59618 zHUJ;r)M1YsFw7j(8Kzs381MMulh}-GnnvlqHPbO9Q7T)OtxC?uqRfXfS1K%>l$8t+
59619 zp^EIZvU>8MUqCBJ9=UB41$*hw8>feOb}~IQ4ogoza!hU6EI3-zY~0tiZ9^8*CCjoj
59625 zj|%Ia?1#?g=jXJXRS)Lu<yW77?5OAW4WaAiYJ*PqY~yu*@UJ&-h1GDt-S}(d3&3{m
59626 z4|*>^#7wZei@NYo7NTq@-k)Oj*yWaF+VxGGN%L005v022SDcir%cjI@Ojz|XMo~;D
59628 zmU_$G`C_4drbP-Sa~?yNI=zN>tdoSl9s%E+M?R6DL65~g9L{-93MI)jIYxt?mHjh|
59631 za!KI87zYku2S1q_1q@IuHQSUAKPW^XkT*4s14QwHBNjvIHIQMq|IC|U&;Z3}-ZSVt
59633 z%PU)~Zku`0Yg|if%>~2N7~1#Qub3=f+b#e_Av1c=#JOsd{5(pY;CaKQ-i=@p<>&G5
59635 zCc=pl@o=1h1-q@j=H%X^n$a)_3eJ(iQVgwnI<PKal-rOS4^|qv)~!2tKDBb^&9|XH
59636 zQCQBrvykrH1-37WVu3E-RF<#otzFFKTUBd$i!v{7<WASuU%fCGlycSk?<p;0d6^}@
59637 zU&!#AeOb6W=1J_m7z3fzo)KPhhcg^&1E>Mi`<NO@es*C-I7eYdu;tb7TKwo8owgss
59638 zejvS8Y#G-c{8Hr+uq9Myb4%WCsFnSw9cZuo9e3OwP)zdFp8{VWAV2ba5cBYQIMEcQ
59641 z`*BJ>AM^Y)-u?_dO4nI)G*RF@FI`Q;JXDB=)F_iXx+zHvae^vQHZdP$eC4Jez8DLD
59642 zRGM*A*aGMoDnmMfbm{zAj1#z^wyDFLPZB%~K?|JX@SBDF1e=8al-VSq$gnAT@p^0$
59643 zNe{p&kG^I7kq+P#Ejz_2wS0KGviD<vSBlDJYnoRI9VM4d6763{A4HnS$-%w@V?d`(
59644 zL&5Qr6pE0M1p^ai;L%g@qr-^xwQ&M1&L`LzaFoF7fFn5Q5rE<bJ{%A{3ImtN8gq#F
59646 zioC?iG^5ItnpP7Z<wMB7Mf{h?nX=4eUq0$jJ10l`CbDUJ-lo6Xb8KA}q;e)>>*@Kc
59647 zp5*e-sj3zVb8<;m4B0ONw@T-7hMpWj4*4@6Z-Lo+<EMh+6e7g1^w?i2CG~W({#}Bh
59650 zG5wBu-rUMft?9?zd3y_3>Y>ao9NV);PuuU=-ao~sJ@)pNCLem*<pp#2v{(VPk>bnq
59651 zv~h?9a6=I-j(9jO=gwj?5tgCTPf4vp_1bHe?3`uEf?PEmOA@l;-nD&AG&w3A(hPs1
59654 zrLj87&{6X=_yv!DN!*Smg%T+&MLdS25SmHR*P_V^w?Y^(4rLLHjpy(1Q-nP9CJr6F
59656 z$Dj;{PJ9T$aM%9~$PZfxl_FBqV+cW##H+u-51IoXwD;mZ2oN8=I{R_aaE$%&2LXTa
59661 zZX+)8=D6xmhdAcr5#_US@QLWgp*28c9eR1T-(#e&qjOEdRFh(87)TpQAczyRykGR@
59662 z#7xVFNK|%KGb^QactpK!*_3of>DSU?ZTYsu+9{#;BW+}7Fpy9bvl-xGhQpbmut5+<
59664 z^*keSyklpp?D`4aR?}OuW$xzkZPE8ow%wBQwpz>KDxWhQ-fKC$AhN2UCGFE+zzY$8
59665 zi2jlRL`HSXQBisndxiP#mOwB#Dl?9(16j(ZL``-#U=#Hn)(5_A?|A7<iB`8-e|-GD
59666 zbB*JJgky00TLH(c{*?0K(XhdhPxdx#U<-@AF{T&1t`QDdTPMN(!aRH?jx<!Iw-0Ls
59670 z&0nqVziy#k=TmBg7V%rrBZRO;R2#O4Vh9pqVca4LzOfV=1i(mIJmQPtcauIrD-}0I
59671 z(iocNX;XyHfYW43;%T0yf!D+~NQ}|d+-<$u#ai`JJ-g|{r`dnQJa{0-=XnPlcoI+`
59673 zd#t=Yzx^}2?>Pk@@)h5E_pW!W-ds`PHT=rKKVa{}UyZb2=}$F^<YlBNl9wL_ztJOt
59674 z-`5*llGK&uvUCbI$qcibqdPk4AQ=q`8rAbev=58fRIl^smE}vSK*KmGN{AUn;|00h
59675 zsKXR_H$$qY+N<A-Qv$2lfqAB1+`V}{)5$E~dcK}o`K=GH+`h0}YO0kLyK~ac`7vW+
59676 z4-<DHbAT~3H)hN^bZ(Y0kElwTfB}ephRhmf<&Ac3H@AA9A!Y;yPYZ>6H!J6NTO>i_
59678 zEPySzH{QYmx-j0t#3m-X3x}JS#@OJPG|O@EHu{Ug((#j7J0M_hA>7D4gJ>fZL&1DP
59681 z6x@Ge1){-T>q;Xu*w!z9Ob+B24R+;P=bm_U6!r=7gUBvSLv2M>c-~7)Lv5@rEdoO9
59682 zqPr8LqrTyCyO&l}_fjk8AbCDQ-i7obd3q6f?3YNMPP<->E$|ug9J=>ZoL`9ZqlakX
59684 z2hur-$Zp;A!FR1$E9YKwp>biW6cMYcEnMy<xBnXcN60)<`YGpzkR|ize0=%Ky+qC?
59685 z0+*bhJY#H1-7(NGLKznL18LVtZ?(9EV<$GsXrIB-B9LH<_ct`1h5ipJ@VuI)iX|>(
59687 zx0WJbiM{XOiwN_RDEirhFMevFjvO4sJ0-TU68hnI&B0U8eK=n8+=nODJWPBRtodij
59688 znx_xc<a5-iH9rH^ynnPtPuA#gO;Yyy5%QymiJXPH?{vgb-IrSSdSZWP%l9&8t+Owv
59691 z|6XX(duAXF&Yc}dCr$<XMOu6Gmd^RY^2IIxw#!L%X9x^?`x_e<2n^Oqc)-N4pTM%f
59692 zg8V|Z(bk}0zo!#4LFs9KZ5<-Ov`$^E1GE0A4^i5~xBS5Wy7ZduV+lCbcVHg?j?4@i
59693 zkb^p-zQz6|UyOg!K)&i6j-zN0=nRgf$W)r8Rf^)~1wmr=-xZ#%@BPqOrhNO_!|nd<
59694 zrR;XrHIrt%@5Yyq68uhO;yX)dX=pQylB|<<=0syJmUbGJcB-#iBJdNy_XBei!*O7s
59696 zcz-L-jN;>DPkhg&pIgMsf;Rt_w>=VeT7X?*cOnJMW17us#n(UmK9l8Tzu|@tUikF!
59699 zKL;Sf=<p_=VfZr~2-v@mq8KIxBu623sxXX@1)9|h8FQyZJBCwgmA^9~!rXege}A{o
59701 z_rB+Skb}Z*Cw#+C4<1j(Y<?&HI8uSeKp2T`^(7hug`8`H$E={0X=7k`wvoqjl={C-
59702 zAxR9Q2wcc$z*8Z#MrFqAdDPvnHy+wtyyapmwem~f-MD<LdZ;PjG5mh8o6B%Fur67B
59704 za;ZhF{Mx&l7Y1Rnm&%E`BwF!t{B1}%J{jmx>eDClqWwu2xdJCsM#~ehbWw3Nag-}r
59705 zhD~~*(AaJOZzh!@F+#AQ3(2>-Fy7YdvB9G-n$fw~rB*K8e%V{T?R+h@`fE?GKe!3E
59706 zvh2TNs4_kgu^6xpf{4YGmu4NHNG@w<#yr-UvICBEis9vecw@IIObSn-gpg6;PMX~Y
59709 za7&QUTJt91-T&sz2e*M>R{V;Q-M+liytlV<>$w^k9nk=agyvRuey^E^mFItY@ElNT
59713 zX;ac5_EL0)86vVWYwEF8jLR)H!)lrjWqx^J1aqpDU3#=1-Luy{_h-$^yOI2R<vnV?
59714 z<eC+Cm?*u1pGP{#{xcO*!QuAo7Y%6vvn#{dsR>-pSm<3h?3C<i!8?A+-|xZk#4zMY
59715 z2&R^Z4Is|v7ED~-TwPqrR(K&)%#D1%F8BqY!<GE<pgEN7yAN+HmzqlFOtsLk%|Iz>
59716 z|I{`IK^KS@xH+e;`u)xNjW-7qMHg`v2+Cv66l5XV9L%;TlcoTU#d)<Om=JCaRyIPh
59718 zQ!8J1HxTkGfcHA*+PR?C^`)q%=5wftzY_S@y+Nl82-Jy2UKuw)#(}aAdfUVVjz(0M
59719 z*SpbCj7+gcQ?PZ3P65N2L~+5I5b9ymOrbK%dzxhKxSCvDZ-=4Rw}q{X7qb0ZEj
59720 zZ@@up!h>*2B2mp`bzKn@DKgSxyQmmz-(sw^UZP!;$ht)Pj>nHroX(L!ktG@<2#O#*
59721 zQ)k#iL6B$)dAhQ7|EV*N^i$mrJybitQ=W->d<o6rI$*2cfLp;vMiFzge2b;wVg5>T
59722 z+(*76eZ6<+*Lz3l=yzQA-p1MAp_ENHd>CI|yaA5`b|FPZwFruhhP|XHO^7aRrvc~~
59723 zG&8A`Dy3^_PAYUI^YZ2^-+6u^<E?oqV3ch<xB<1KQxxT<4dDka9vnkG>~Deczc3IX
59724 zEwPBhwNXmq#cT=g2AY;o^H1E@smWTiCRw62K9WwUD(`p7zKc-`H{24m%e1)#kucl!
59725 zT1}vSR-%+*UeD(Z`Q+v=e5nJswfcppH)8v2zM-wJX==gX5ey0+?2Y6r5DmEn*?abU
59727 zH#gn(+^0k@BbPD(hmja5=!(?JDS@)|>ZLgtQ{{4+H7IYNlXN#t;E9bC%Qv-{RuugA
59729 z$=dNdbZ_&P-Mw!)_VD^hBI-@smkth~@rx7WC$SRtuK^8H<SQ!#LjNR+eu{w6vj`Iq
59731 z(pmxE*$AqoQpk>)3x=i_teZ&k><JWpR1B4%FoY8$KaFToP2J-&ykg5aE}Px^-s54}
59733 zYm5B<V+1u#GtZm{X6JZrx(iIU(cE<Jn=m)M942$qUDUnt-1Ng^)5pJ3qsi%+t>NVK
59736 z29#2Y98Ww<9p!M%$E6LaQPEr+jeyWS^EoeXH(fddJYPlU1;1&C7SCIv=4suoo-RWq
59737 zA48if&XZ!nBb%PAq>ZH-N05|nY^`uK3$6*QC+MP|Kmw$N{BZ1&Kx8Z6ZNc8q7=8y@
59741 zY?><uK#xxP(A+U90w`nwX(*AzRH=La(vH1wX?Z+y?9S21G5d}y-5t4hzC-Cx-rBmi
59742 zw{c?6zxAG5yz#WLtqmYcp{)FM^4&m|em<6^fAJ?tD&kL~R0I-7fUsTky-0i1%oIe;
59743 zOj$1zH!}rMGgJKQfB(%)wMwZ74I*8Q7;uDyGL5BUj!WR-*#%=Llt`Yl>KIeU<xEcJ
59744 zvZ2MAnM_{r8V@ou+gKdq>*$JK^eYj%4ogsB9p_us)aP;RM1rvc&gm-$|A2p${2*2$
59746 z5jzQLw^9+-H5CJ$8n?91PmRc#249?%;lm+0aTt$sFF%~gisi7hWcR8IPj0O8r9H>a
59749 zMbAC5C-Eo<-PxYRqt_hjNsQv5WuzPw%cYPy(rPd!5p_$$77<9w&iMkZ(2~!o94D|c
59753 zYaVYN?{-d@qW1Sc^CEz}0SO^|@z+Qnknmr``Ci03cymI+Hz#ENyMy1x_lQq{HNTpy
59754 zxpu%MYq*IupCJA#So41-Yrc4JGFfwSg0FuQeK%mJHy>rf9I7ilY{E>|wB!z(Fh^CD
59758 z@Hrv|B^RXEU2y{!(t_qSO=Oj9K@#~)InCAz-OFjoao$*J=(v#gsE#dbyi_e&B*%q8
59759 zub1fY_mMvj2=S$e5a0R_w;)vP6;Tl#4i1ntgd<-`d<`jKKb{mhe9ys!gjg3QnCva&
59760 zzW|@}h4^!x+dTN2WX<0s_dQ0Ye*}@heZMx~3Q@ei$6_xhIK3io4@$*oGWfo-54lP$
59764 z&-NuOH5z!?K!B8b5}_~(uwV+dp`?K2hCTs(R02s6hYX>km&X?Pp*KbJcbW}2wY;(1
59765 zTrL$0Ia7~n*6L`TogR-cbZe854T)PjtpA^KYGYVUpso~C&hfT2ch9}u;?SwxUeXys
59767 z@b14q`1ypaKOd15KlrtS=g^--e-iNlVONlcpJ5@CRf4<?AxnYV6Zt4puI&UOW3nPf
59768 z9mNR}zdBxw!{$kxj2++pLZu{dbPA|{AC1NeLY$)@#>-tCBP;`wCB{BB8Y(zpGNn>H
59769 ztBT9FTnqB0QfWz+#hMpfz7&vdmM2n~-fc^O5SCSY#H=Xut5)8q>T(;C)Q|k-LRKl(
59770 zq{XZ?CmXhi<Dv-6oJWk^{fuCnnfp%@G?}i|L{sHkXC?^a0Yh^6n@JdGN+yKyQ16C>
59771 ziOk6{Qu_@Fqok`YBn;h=86zT#mJ{{zw_b-XOMa#m(S^vQ@PsOg?A*CCNtQ%;{}u5|
59772 zfT#W-QM$%~pYW8QTveE3_%i+g(nGe9>Y$X3z}z#yOB_y2#h%3DdWg;SAdmFW-Y7CT
59773 zPLWJhVgczkn&mTT-AqJBM64llOuDXf)dI@`TM{E#inbMvPLl*tY3*$ltHn%z&bzuX
59774 zIBQbCtKhz`y_Y$0s_2xCtv1^<VaeXMs%_7ww{EV#wb-s^ob8ZO-}2z82VUD-%`^?~
59776 zT)Luy{W2^L3#|x}rQwb>{?L9E<>{%-l3C4Nlfh=i^|Cpa*}Aw`ci?tg&;8k<-Dc&P
59777 ztwIj?ee`#cCXg3TJi9DU2;vaj0}7ao*M{Me>qy|*?7AC@-gXO0kJd_i1;T1%jI;nm
59778 zZxd~@Q>N8O_Rhu>$1UWO;uj(Vdsk|-OevP^rqz<V{p7Kr;<x9N+GA^j6_q1-Sq<eK
59779 z^yWH{zcqXQ6<ZRVl2@wIDr=<)d(Jp>U+4rk0r?xu1w1Lq9@qRF5Wu=-?%zVhz9@DK
59780 z{W%~)n!wh$_ZcZ_JAXOd(B*zP1Rw7OVMt9Ot0gp;c0?yeb<D~R=sd{{%Wd4ZP$-0D
59781 z;E66&yYJk&rO`M(?>a{4rrk8jf2UrSyDPvGEt^aOI#Vg~?3*9&<<w$L-#cOFJhJ(O
59782 z&|aJqc)Oskl*OEdL+MdXTQZ-!8BhccwfIqtM}p|0Yz;Qj5lIjn2upk@EaO)E(f-FR
59783 z`0J~!hGQ#I3|dA_Wx)G~_nZ8vQ$f?IZR3(V4{nKHxcQ-cA*@9H_u$8`*i9|yN|g0?
59784 z_JY-_J4P;JmQUyUnfcXBC|3=?C9vI1PYdKb|0~#g(9po%D>laIoZ8HbX<&}qN`B4Y
59789 zB2dHefr-UGKXdZ21$CoC7qObupy=G9Pcno8tcDz*61er1;)Qd$!s&jn=a`;jx`t5z
59791 zt-(-KW^L&Zu|5WgMFL`_qUc;9iZ=mym%_$DNdlb?x0j;cRsvY;aG2!8VqzHZ90l8}
59792 z*I$Ml3bpGoiG#wJ$n-az$hmFXE;we+QnG0x^~4J$GL|>YIfZsDb*;)MooOORlY`L5
59793 z(BDH!K*;V5cBsf5rATZT{>5PkE}0WBGs>!5Mv-!-+-cT*2j&}Ku`xZ71E0w@#N%{=
59795 z-Q87%?*NT}s%77A=TJ8vWLm{+5GG|g{~lcZCG<luEly!ol%_BgVQ|1Z24IV73XO6r
59799 zl`-@Mr~1I0Z?X!%229ypQ`B)$<>k7n%IUJ@o2@0uW@Yp8L-iCx@Iolly+YxbRf5Cf
59805 zc#Fmlcv0dlW2$lD&5IIm@vkp9@h1FJO}qt#T-LE-Ak8?MJdt>d{hb?(ABd)Xe@jm_
59809 z`xiAs@z^xQs)9n&F!`k9(=yLywQBcnSjN74%=Rscq-3H=z~qy_394RSn4h3P1yDfy
59810 zZ%ly-QhAa2w}b>6-_mCkR`EDM1LZn2*gwwOf(2BKG(&_WB>#Hyoq$z7lZ52ofAISW
59813 z6UmRo(In%eoYoup>XcmKv!_pF!YdDDJh5DAbb-Ite#3^~i9$8ged8ZBPxf5bur$4(
59814 zP|~-V6$Mz8dA+JLO-O!0rC#xuPDxeDW$3SYSrWxiQlQiJ_e%52oiuBwrOlRF({YAO
59815 zS7GFj%O=%8*gE<hF@)=c@U=49r0|V@ofN*)GhdDtzCbWjQxjs4qZZEy-|06E=e}H5
59817 zHDlJD2*6dJH+@*{V2V-};$$y}X5AuEu@t60PZr8NpH+=Kp9Kazr2LmKE~?*q-?K~U
59818 ziHKVpfy2`=u&r?tBNb1qhyrY*klKhK{p-AgPLOCu?<0v6jL4;+YmkD>?6jI_Qr1@l
59820 z9=)q^>#0`Rn}5X?E#<tGGRlWVTOzEMaqj-m3C<i}PW!!p7r3y^d&(cfIGkebUB$3y
59822 z$Ed4jaR~4`8p2c_#T|w)4z0>sw!O1nlB-3wzo!S95%Bifo!Z)Ru;!w4F3eKhJ8x@Q
59826 zv?n0W6^1?zBWfrT4Riti&p2OGKYHCTdy}9u-2*je9FM7#@_xqP;SJbCHz#)su0RB$
59827 zl3-&+>6;+&ij5(2jQgeI8piyB?=>5}z*{OBd7sIxds>YZDaWmB6k3W?$Qoiv6A6xD
59828 z9jQ84ber=z)!&6wA(Tqd?dI%-PKhn%wH%wJ)ppMIMNXI4s>Y;kPR^!F8%x>Ff+uG5
59829 zWVG-*@Ye$sxP#ONWj{(*SPFJTwqmeREI^c!QM*wL={!?D4!1H)S4?OzYC2<qrAr-c
59831 zbAo44wVTDAOX1RKH|%AdtrBIv|Go1MFZWh~BrrAuYtC@j^J;-3wCtB<kJoFuWEGb;
59833 zv)}RW*r;xr^(s%$gzzic>AlX$q7xol1=~(_)-!%V-)jgZ?efyr`GvaUY=x=0=l;w6
59834 zukEc^P18GhreKscL1&fFW)vp-H=JY1Fkurc58_U8Y#F@|nS;2id2nkprUXZxoQ^6!
59835 z-Z9~QL=z!^0W*ipd5*4*`envlOD!ytXfcFkGIK6&pvFj6NbmOjb2r&!*p#@X)3w~3
59836 zk&!#c=gghsYiZP2ud>Tq*7>_y63#fS6eVcpvL)uT6vn4hL|Ra7HososRD-7)U5(Uq
59837 z#%<*ElqCL-J^YV7yu5ore+%73N^lS0`eTaB;y?tPzTSXni0KO>p<^K!$6m0Zc26FE
59838 z0(YU(tqrQT*3+A(f<jx%Y(HurKM9^&3SFs}vl`l4d=&_^t-y6;518JZW^+&SiosES
59848 zUG~t9OBg<mbX13nfZqe07;>~Y0e2s-jnY14;OTk5a)pi_>^-3;k9Nw<JF2u@l0=&>
59850 zH$5(~v6jRof}`US=Hak}h)skg4#y<CQzxzP%0u})n#3gL-Z&6!K`3a!#j}4K2PJ&d
59851 zsy{l8NYJe)BB9W)_{#-92}oqK5SNGGQ=BdgBNArjfs^BKgm+~klO9I)+>0$GfKeIG
59852 zjk4&Yu?*MCqE8hQTt6;@rQKeT>HE1WuN-C3`{ycmEaVmquO?8=-*25M3625$&r$}(
59853 z?$0fmhw|uGzdFjJ7i5}71xr-xwj`jqyU+|6&M}Oew{XfJSqc_q%@h^<QzAuFP;iJ8
59856 z-mwD&DkKNEC3Z}XaW_mISw-%BMts>TkopTRvJqxXqU(0T!1~3c6Nd9wt)S@|1xpV!
59859 zhpt;paU3{*IQ;1Y=%0ZnfVG%UJfor1C^S+6Is#lP7y-l)ipJy2FG<kX;z_~G&{$~P
59865 z&?-}~C6}htIUS<@rv%Zs)GEFC!w@Vk*Y>ooFO+S)Zq!?pR46pJdQS6lMyt8WRJsmE
59866 zB2DD-fC+3%PU6Df_!KZ00*$LvhnP|Q#o=h-aZGqRUoR3=s+^+L?f1NMzOb@hwiler
59867 zg6uh&o?`nay51d)Ef?c<wkq=l+c$s5<j9me=j-KWR;#L_LUDAFUR@7#pWwNE*RR-`
59870 zw|dfKNs19AU-~@y%aJpc>)*eX1`Ls#>*<`x8X6{N#RnfrE53i?<iH5a88vc3=?DIU
59871 z5de?MIe8gR_~Qb07O2i^1Fmji1P-JKG43QKfCClZYnWm>JcD5N<)Z+Q!yxNMNrY8&
59875 znGD6py>$(PGdaPNxX{ZNU2W?<?-E#+w=?>&Q{KiL1(5<WB|*}8W2r_HB%5{oye>Ao
59877 z8-j~P9YLBS(=MajLrk1^?ycQ@JY$A}l2;8*qG0;PsMvw8G7L>?V!0D&Tknmi<Cxm9
59878 zldj!TEsbT+2D#wO=S-0zRk76c#8y{{f%MV;g8m6G!q=a%3>|;bQ2M~|o`uq%Rss`0
59880 zgJlx*|9^{q4e&M41)-IZ5?$bb!@9t8Og(1VY23LZRY4Y?3?W9-|2h}*ohx^**$cMY
59881 zkPB6-r&!MMzT7aR_CiZUseHpe(?9vt+WBY_pvX#{y_Qx}*)$~xA+xZ}(<$9lFrIP(
59885 zBI3-W^X&Ak8zDQ4fqG(7bF7;WX=ejmNL9UZ`p%P*s-;PW*D01L=1)JlQw^$xLJKJ9
59886 z@=1%PNRf4Hd(pj&eh#YWvIkT&ErF}bWfil_NqU;(2?Cod-*!*ctY7YS!(t_)Q8c9r
59887 zqRDzc2lcd?Ie8iEE55vcinW1-4it6U1<WEQirRnK6m_+n_f4Hn!F=y9Bs#%G@l@`i
59889 z;!N)*3@2nRTU;$t0!6Qd#WR(2tf>{`G*{1u21R3$-ex#g;uOI48!f*Ts%}D}51~Jc
59890 zG+uz-_Fpc&4b)Stw;O09b%YQ+thYxVaKuKh`kpy6qsqNaJ!M)n&y8E+n|``oH+6aK
59891 zyD%orWjifHH}tJG$>*~aY>e0Vs4?ECRSiXKHxdH87kv~M`!7^u``-+W4cmuZJJQ&|
59892 zOQ4RBMn@Fc&C;d!%KOW5-7t!x>`OAoOQcMvN=Dhq=M_e<40qK{2$Qaca?P<Dn#HoP
59894 zuS<xT=wssQUMCK%TZXC@FI+5Gb(PiFD-Y!Y6t=Tjz1q?RW6pN6J3D*dhHlTD?AcbP
59895 z1YKUQV*sBQMx)t2$_ktz8Z0eSZr}aOPM{WR>i$VPkO&$>F;|u|A5a!nx@p=C-1|03
59900 zDEZKlMs*~RPy$>*GBOXqeH<+uR1U96#aSWne~GIIL6G;t(xwaXC5^|giChf-JYCBK
59904 ztDu?NUBE7UJB6cz<}Xe(`9Rc?E%Y9wgnT--JvkFzygXnFIIS~n0v?Hfp%WhA{#)?~
59905 zga?O>FMvl%Xlas1Ad4J1p)YEaislHe&MBdjCXJih?tI?%Xc_WH-YWJ@s|G<H%%H%`
59906 zLH5Yh96}L%Q_j}~k&VF|(Qik88Yuuz<?REG1_m|+ZBL=6hFk(=H;}-wTEpVgPaVM}
59907 z*I##-OM(DFf_BiZmf;kTEvquYC2+%&OcI4~hJ9gE5(P%JPi;1Wg3@xjoq$epSuU$l
59909 z6tjRG1I$|-PcBP#JY#WK>^EHxA51KObpuytmqk#PNjpHXTvDfs;cq;Kk&5E?cip6x
59910 zEeNU`pR!&6Qb4dgD<FH_6L6pXYHnieqQ(IsfY&m`q!-}B=xOlP4-L3XJU9~Ou)aBa
59911 z3yL#^{@3N-80!{X_WD~ErIJ0#z&v1JLttd?=6AxzqOex*V-B`zHUai#k~mK<wZZ28
59916 zO-seR+h1nda@uQ0a(chHw~UgRE{@|$`pvnb)huR<#U#xC@6caEYRGE_X$5F+7f9wZ
59919 zvEYzFY*i{KQt4HC?PeisnW~&3#_e9C{-f)5-->uRoR<erw=Amb-*@>t?kM}7*2#9e
59920 zMW~KB*JL%O`S|;P0^^s`*^E-MmrRbc-FiQ}RJ^rdxIo;lD*PO*zOYxixxdR5(|J?Q
59922 z&v}la#V5{EGh-V{laxqJkOE%Ga8lz$(LwJ-dGl>`%Pba@rrlbQ6@p_uKC7`Rv-AB=
59923 zqmKjK<Jo+A88}RWD{yMx)oOnE-n?RLcMF@I%12WM(9Y@l-{%6Wr7%`HQbI9J-V5<@
59926 z<5B4(elOhD1)y5$1h5mPrWap#b}^O02u|1KT1GBfVk)_*d0K+v)GxC^M-*FNRoyd7
59927 zYTjceuBvZl1S52ur2E}QpGJznKI#oRR0L5A9P(jJ7>0f4L?r|4f;%6EVLNQs7K-iE
59928 z=wWA=Y=XziaV^8R)1Bb5)wFH;uGWdbb>midO|CZt@u?VG7d$rKofqY<Q@mO*-DB<j
59929 zK5&-cLpfo_`BlJGK&}?TgwWrLz83J*{$MvUZ0KZcGzNS>;suV5R%L-5;wX>GS8k}v
59931 za44Qs;H2U@OYqznbc0DOVi)-DXpRkrpKmr%q`BN&p6?WV*joeRMl?0mRDK<YBu1@=
59934 zVSG9@yWJb;w|J~DJh)6jTd9~0Lnu14TF!QJCA!fsdP-fQS*|6d=0l@viJoW&Gv=p5
59936 zW_H|26Q6T1)NsbAsc1SKB!|MSKhQhoRO@oHuGKBd^zF9iHw_Eywj?nsBT_-Wzb{(z
59937 z=Gwi`PJIuyRd+U4=Y*o3^%d19>SivTV&uHUDlF^I`@LPs?U*ZY@)tysd>H*v-~rt=
59938 z;Ip0xxR;nP%S~vgVKKUGH0EoflPq~9?j$<|hMh){jHyU04IzC-g#$@AIm-Md`;P4Z
59939 zQ^afSo!yN!zvMA?$?fGj72rhe)>V1`-q$W~I=RPo)^c{Jpr%>2y;2HyHrTm4&a@K8
59940 z>Ce&s1g_=-1FoWDI7Uxw!JXa0biq^p@XNCmPf@|sGO}E%l&1@xrc&86;qiC|%c#5%
59941 z-el-N?d|6(m(FjAd6>!$q;RdAE}NXnrt580q*RX1SMIM$4qvb7LR1aaNcRf+7tXP!
59942 zT2RtlEgxz$oX27NJS*oUUNtveR;68+Bl(2ATj+DZrh}x&08(%-KPh@huUM%~ks>nX
59943 zj!Ntgxq6nR>!%BWpKo8fIEYdNLQxJ^w>w}b-k=~5#lrGq%Whli?!j7GTh$DHDLj5Y
59950 z-IH^=;oNl2%{jgN?#rQH=kA$#9VTauMx#+4!DtYOAS94T1_8EJzyj-lY|Tiu7>Ts5
59951 zWp@jVS%D4M26ny1Hq_R-EQ%_?^nTwt=ce~w_ar3P!c|=}ePiG6|NV3L{b#yq+!_^U
59953 zwa!=r!#^CbC04?@dM&(pCTl`<Bj}V<EL!m5jdxsi4U7}w4A7;;{Y#g_`({OO-&F$V
59954 zbwgsMoRA!qL^c9$`iCGws35-+<$F?LQ#OHxQ>Td&&%_R+e2)#hE;!*a(}g@Oo>*ag
59955 z1q&d^-QVQ|5$bsK14T#zB~QI=<VPbSVORL6caOWnk3*oa0vvUAU}c4k!}xUUp+*zG
59956 zW6-0?xX64nfowX}exmf)Agv1$)2*_s$z`&9vhk#2min%y80|`ZJ8deSO!anl?81`F
59958 z$x2gz&ft{6w0rPA<ixw6>d(P<!Bo`rT_`G^58gV7Tnp1T!TI4}rh58~<T$f-JTfyb
59959 z9G7;RnI<#}Ab?Gy=?S))Ki=JXa(rso8PA&qY-t$p*Ybj3GjPGCVrBcv;Rj(4&Gz+1
59963 zWqAe$-GI)qBUQw(!>Hc?&R7yC#6LR*|BJyX%NTljbp=IM4p#Sjom^(xEijq2^dk>q
59965 z>S!fdLe-SrwdB0zv*~{&v8zKe3s_D|0pnJ8TTMyFjg{`j9ExXFv1G+AYWZQhr^%Ya
59966 zB_t^$rZZ_YFT1AiC44m_<CM+u>5@8ZVu2`z-1Z7uLaNBWKKD5la$7p!FGmZxZSpAK
59967 zHud$m&3QxI1{)o`@c>-#-e~e=@`*7ky;+{~0;Yp4{u~1lFiynjVGl!u{x;8c;gtbB
59971 z0X2unORo*kaMIQZ<}U-ld=e!;HeTTZm%hO&^K7@m<W1pZEgZv*5yvy12nK8kI6@T6
59972 z*S4GGVP%-hq!K|89L?9xD6o@&`g5J(b7mq`XXkg)>QZj$fxS$=l&-au);rehx?&}I
59973 z57+FP!lS>rckyDysh!KK8P<ZjZFkqHaToHdTTVWeJK9|o%Qc3VvuSyd)c>+v@-?gK
59975 zB%$&Nt!~sF>m>A4QyLy0xcPFr-cqXX*tF{^XR;Tb?~)9`@aV7XUINsrALg|T>v%G~
59977 z(BUwq037qEh>6)3&csD5Atj@E8W%C>t}O=G0=k}#jVCRFDYNb)O(89Cd9C)aLzAk-
59979 zN27z)KuX^DwYFO*vM^|^wb!6CsRFw?UaS?OB*0&O`a+B2#HJZ_&8hR3I;{5->cUPw
59981 z2*83=s+;lxBhw0pQ#hrHD$172zGiy0sT^QmMgKRXj4S{xG5p$UiE0H-;a3)_3()Fl
59983 z*0<~l=bN%)Kuh$i<x)|03iXKVVTR>Z^q&9<-T%dGLV*Q{3ByksR_0sE6SFUz)l_a8
59988 zj-@(?o=A+uUqncRj+68=NSwjqH;5R9u_%LLOjsx6<~r<8eTYRTpF+<15L~6)haV!~
59990 zUwDgO)B#_#`xd`wB1T*wMv2kh^ovNGc=;`VQ?xJIh1R*#YShX_h$NA)At-WygSLz=
59992 zLY*ZPBV(*3=5oA|Fh<cH#R*jL4*@fF_(jhUV^g4FIjZX-*dsA?yk&Y^>%{_79K3>H
59993 zktuE>&4lgYlz9R&bj})^KsTAQ82nVwPgK9=`5P9^lj_xq(-dh^vp5}7uRc~`bq3Wc
59994 znp#q;$HnuoWRuX04lrW`#xbNoF$yrxz(C0)2qQVIsHwhI-&DOQ!T&PaL53I`_L4F_
59995 z5X$OUD8YkR_3JN`@P{-ea&=M|Awl7%{<}23b!lt^S%ed(ZpyJO=p@O(%9tTKoJ!-g
59999 zsRfDC<0z>Kh3DSi-+%AJ!E{rCv$O4;HX$ku!{sDVlVY?H2Qe;C791h7>FYQA?of}=
60002 zUjoH(3xUwdFCaJtr0B)Fd>33?7^m*_RZt)g-^f>ik1#M3L^HAD(_b579zmEG1BCM2
60004 zpmi*oj6(CJNGuJAx67J*q7wn`Mly+0Kqg&}BDEwG%9JK0SwoA^?z-qB$RhHgkTbbT
60005 z)&?e00s&~yj-CaATCsr%gwMpr{A&dP>bK6JV<4fjgRQ#|R`!+fE%2|iczM9Z56kBT
60008 zWU`u<11vo_2K@`@Hy|TSkNn;$5bf4jw84W|>$Hi*-inFE-iqH#ym`OZm{?lkZCTpQ
60010 zk#HAz?dDHz7uFMrrY1-{kZ>i~4AOuOu%HT}p5|0ZECLU>v6#?}I89p)-q<Xi{|S@f
60012 z$HtG3!#7!BK?7QB6g!5Fas(S0q9zA>UGWH4GB$@R8HDq|MX_W78th4-dbaT^XxEF3
60014 zWCdJ68P=0HS0r$t5hx7D+HG0Q2}-t{j>g1qpzlIfCURW{a@`oqHFywf{4JDg_ivG0
60015 z_kdVep|wspHY~U)K}frTuJ9+@vCoj|(|)u+73;v+JpZHDk}W-$rFXQI1mL|oXMiYG
60018 z70Ka}2970-+Qn2w!EHS*Ty3ulDJQ8}g~R9Wzb2<O;RO)XC*{0l+kYalYXdr?7o-C4
60019 zPZTyS=PzcRc7ClZ@k1ALOJ;#JJ8pShQuSgtMT-)n@)}x|(^kHeD5?$!n>j9BR+s8P
60020 z&|^`-?2ph@q>ug}biku!T7PR6X|*r?%~+%rI>aXyY4y?my%%ZSB}$DdfVouaeBD1R
60022 zdlLP8ko!Fv9rWI0!DE`uofJHxY%VoZ=et|}{zNjjCK!dfQK}{MR6|-gK5#uhU2iJQ
60023 z=hnJj(#(y3O+^p)E?ulT{<$(t<~C`fvAQg~u*R{r<pjxGSmZP1s-NJ0p<F7?R5t!*
60025 zzAd@#{IyFZl*vFO3$TY08a-JG3h|TWc9ZFYHzJW!Q!uRe)5+rHY|;>UZq<>43@#K(
60026 z7^7+u2vLFmy5Q=XRPX7ED<~U!QaImO8%Qh-4BaA>NlS1&UQa@q%vQy?D#NN=G>Z2n
60027 z^c+${F24p0_uQsA;Bv-Jp%zV^KC8gw<rOIe>>y^)q-Om0a0nq7hJoH`zZYp9;EqBt
60028 zsc-$x=8Z~gsIVGS_EA*AwY-#~>1H~W*~)D{{ul(2>d3=#vj@D@VFhPNREXp5QG>|z
60029 zjZ03dYt|fl(ly8-LujEqz?zl6RTk=R&Z@_HwOlOZ(n%280hcD|_8FqXQx+;JYIIMg
60030 zY|hBoM77t<N;2&HfdL&fQZZiR<f0kasI*ldW_3-A3bCFXZ@|*4qQMrRtuSe0NUjHr
60031 zl)er-fmnCa3G_h}14i`vh{*%CDgFP5ZT|WdU~uQbm3uHvH=_aPy^`Tc4fuLD9u{Ad
60033 z(^{f>!hqe4_;E1~udWm(gHK=G>wK;OKG&Xpj)<Wzzp)QO86VDFH-h3Aj$*IOe;&c%
60034 z$MN}(j~3>y`i+0|9-_@c5HRkH-3Di7V^4UW;ckNf^j}mHsfkp>1+I})L(ens+q7t^
60036 zxWfr%S|BD4hDQ?-;COM^r$|m6v3o$dgy~e0tn*fNIj0sKoW}8JayA>nxs)@hYS{s9
60039 zYAc1DWXl;&t7sb^-6|B}wzlev%h|Pr%7af>TDgsG*N%@GRcH9rN?d|?CXKow;>n(M
60042 zE#?`sZmzvN^5$qHrAk>ji(Y}ScM*wT%UQ9wZi%?NXzv{Z8XfH~iiH-SQF}YdvwsBl
60043 zd`u_=>)QV(`g_5E?Wex5Am0VpH{9-bauML&;REO1e^17W76C3c7JV<DwTz&=I#~pG
60046 zgzcQeeq*`0Jl-f1V!_Rd<y~nv3z2tvkzyfl$_b{xs=m7UvF*ts#q3H-XBhe}n-uwA
60049 z*;U0W8jK2JeeK~HB<U&ACj^oI?$<PwoD}%KK4j~5P-J<rv))~+RUqJJ5aYGc_B`O{
60050 z9O0(H-URXUEZT*5pWpOkqGM{R7#AqoG_AV6^9^egyiccRt2Rlo?1d}$qhCIW_E}^c
60054 zTI%u%v1HD-q)+>|VH-d2EtlV9l5g6RKWRvw^yEid?(UlAqox&tQ|;TDya?Xn>Sy(D
60056 z4e-f5dbblvcO_X^Gr~Ui2M*t8^LDN!=?ZM<ot;}avwM5m>+B&tK&0;1mPkb(CLaA>
60057 zu{Y5(9_pRZ>wLC1aIaqHOCM;z@mA-de7t$DPUq<!J|F2KANxY*>$ZmvX4PAbVz<;S
60058 z<lK}h^XxdQetHkz88-iJYxsm5_4JQjEai)Nr3kEjcP($*#66bqef--?R`q(@t^rH0
60062 zHU+buY(;>SKO9R2(_;6-nOQjIpbHpsI8H+&a9ln1Owjs(gMVK{gEaKy>B+uL9E}<y
60065 zSgKN2MZ<8`X*-I>2C;syVe1%zQO3}8Fb@Vd3y(<vIU5baR1BOl>ZZ1*Pfr@E@u;C%
60067 z#cS8z_r7mwJ#w+-YyGy9h_Qw!rEH3Fy0%<(w5IdK2i4lseaicZSKjsT@=l?!w7Jo0
60068 zS=PH4*DI-t=BZg+%tp~cH}=g)6WEoTaG(`}*V-zE9flK?Mo@5{!imp}z0ACDR#jpF
60069 z_+P-$Z=wx?I(s?LV0eNS(K=agGDZ%({LY6y{B*{s890r>LO9E+ATZ)-DqnlLRLc~L
60072 zfHFD~fdhu!f-{Rcr_WED31?90H%FBc%fu;Ip(4ja^#OIpxDFw4W^~4sSt76tFL(<q
60073 z<d7BK;cdqP|D`p~yRs!fVli-OHTXv?(O?9c&Xu38HquS|Vz2Suz3x`sN9#sWKEBfK
60074 zJp>2u723uy3<L&5NVN-(u65F>l`NI}>^FYHlPg=r^k~mNOgS}y;i%ZR(-Q4(xao(Z
60076 zR2*nZ9HVfdqf<N)k16ut@ug~ZJNNYV=-~{bnLqAsdrRw9F5#Wex(!~awQ9VzUKY!_
60077 z!VC9xwxpGJQ|j%*&omzCZymMFhY!5<gxyTVGxoobvyz>01koy$JisH-S%HrbD22&R
60079 zLpjdGPcCLxOreqz7IycR#7|`7jP&REz5H=1J+qr#v}jtyjrFSFtLGNhuPrqb!Fu-3
60080 zetf*1-Pz3>RW)uW9i8YHq>}z^-sUr!uAJP^zJTn)4egn5L%VYp6}C3KJmmSg4eh~h
60083 zHhy><zC{htH-g5)sXjgTIsa0)wFV-ug@_!p^<Uts9G`p<3l<cJ5C_-L1a4dahO`an
60085 zFL8>>r(}ZU7%7!-S)e&$SS&+H6*ISO$`;K7e)zdNe~CU5>jv>GaHrC+cL|R1qvMT2
60086 zZ_b^9Mg*P<4=VtDYH-?`hI#*46GDz(4HP6ra%m@K3v8amVFo^i5pg<YYZTDIKwWg7
60089 zSfX->z`cgA1_1~(CD6Y{W3X41h<tA}hD|~gWP;0h96}@~Y?!T#(?}N0lC%A)-EQQA
60091 zKchLMh<tp+C@4Oev4^WmEV$7ak0Gy24l_@PWH=xby$Lz-9vHvPyi9}`N;n?y3ry3Z
60093 z7+0ATnd~UDXc!j5Qn4PsWOuR@C#GF}F|S8h_#Z=;KmdAUBnaSQRB&N-(7gC|8a&(-
60094 z$Ap_DXI!bfwswS_9o2<`znjWe-HL~zGNBfNmJTt~C>U05vD5YZMt-S?GbAR^gnO<D
60099 z&2*C{>#5YL@xp%zmUgPU=bXGm#ZfKkxP0#418=K%Uy^k!`-vl*rOXY>k@@3j0r?31
60100 z0}#2wH89VQ<n46~kCo!ElzL=91f-DX93VEakCCuC1Oz1vXozt@<DPtR64nq=Sfect
60111 zDLi-1DndsC4};FgF1|728TtyQE{kk@YCES;zGrN<nrW0wR6AC=rYEEn(1CW@$!fBZ
60113 z-*wDc^^*03kunq2Cugr(Ea_%l{OC&`YUl5I)p8=CZKN1Svz|Jd-gHpsKzGpJ2Ks3k
60114 zqH#08k0`!DH11{-MViaaWk`(xjT<N}`m8C46KLEKD%*4nVg`^K4nBauV6l`{^0r(y
60115 zn*ktq%Gfl4ybm{mxrc>9)-*+<4`&^OitTPVnQn4(%@E}Pjhk!Zu^3L{PR$-qIuzk@
60116 z7>-V=nPB16ojd3sqyGdPdHajLKAxsd%}i4x=*K1zgE;@(`=c@HI5nGD2+tVlw;3>l
60117 znMvx94fqBKXG_Myql;2b(R!KYhC-97&FPr9S#sBttRBazjnTuo^2!35by|v~*hMxW
60119 zEWnS6!n-j@L%3Wxn8JJd*Dkw97q^VW=31SIQzp+*I;LKEtjcL|EWU8%c71qlC%^k?
60120 zli`-@a(}5O;he}5ajh>fQY^%0z&N_Ov7aq<v%CWwiJ;YI2mLw34N#OGeN777tug-c
60121 zL^4A>wE+5w93w+zPrp3Dhaw|<C<y^RS-A+l-pzZ!(Xi)wdQP}x)6~eATd9-F<zQ!z
60123 z=-P3HsJ|kQ+>*&TX|bBpTlpAGh?TNv%Ut!opzrNpVrk@0kl}xC%)fVIe$<Lg<)$^)
60124 zH##a4#ttd9XO~JjO%|AyxxRde=)jkpv|V4!XsTw2R!OEPoZ_1_-^uLh8Hp#St@*he
60127 zg*W&?*ta@3`-2D-54KI6`Edkt!f^UQ9E-jDhCdl}tt#M&4${fx3wb#!S3H(-rwH>=
60130 zw4ESeWK)srhE~=yn#6M{-(hsS=A>#*%ZlDgW&sB~PAMgeO`2$@Q%jO4OB|JJz`evj
60132 zbQOjQ`P}JR-b^`boT?7}he>t?F8DyJG%3{8QIe!%1VLhk;%t?YKlLFo!N*BE_sB>Z
60134 z%I>x9dpvC}`ZYCGR_gaH1cT836<bBqNC~<4`6P-Qj2D8xmCQ>nBXHqH$@zug!*K;u
60135 zJ8P~c-1z$ZclA59x}M1km<&g1(lp&jx(T0K{kCAwYq#Aj=aV%XXNed;Gf!h=;|;jL
60136 z=U?BsA9)q|6k;RWuj(KeKM3zr9ph0%7!=_-tm(5S@F`x?3dI;Oq-O97VQ?1}oAltf
60137 zgP;3!iXak2RkVk#_An-4Sox=M)#ZwHRgl^nOI1lg!R^MjpnAOX@6q?6A_zjx!68)e
60139 zs&-Y*`A{d+)>HYKo6~HV<SHeDESAPwZjCjd7HE1kPjk8fiD_aTB23-+ee@rpEaJlx
60141 z<fff+kfbB2rD!qhm(XRTirgMC1~5X2pei}u{{X!xG-%=oczOnXK6)ig3`}-DMX6%Q
60143 zG~3E#SjVXacR^9BHv?`LIlk*#>3E!uGRVITOh*CSP25x@3`ekW2hW?U8>EvU5-gwv
60145 z1_J9LTO-z0p*TjI1%JK(ekv5rXU0sW!|(-m&LF{6Kxu{boYyM852clu|9Sao{1zyl
60146 zXkRCKDNRznTx!8_e1R9@MBFm8er9RpF8Qd0>-p!&;71B9o7MFg5vOa8-IiUW<>Oo&
60147 z&zukDac&}C1!T-2;OOuNpZUYed2gyjf?t&%`)|>Pkg+EG=|D!)lA%Zv#L2g9vr-6#
60149 znym|rhnCY?oJ`R~HQ{(tl97%4x~59w0cDB8o5WHvpQ9PMl1a-EBmX1h*N`kMg$RF5
60151 zv23+-6elXBj2>OxZS+MD6uviv=wkB<_?ZkEmO+C@vG7r}B>L^5uq16$<{<ztF^(mI
60158 zHRp6f&J<^gM;_8eMsK=!w6@Y}M8zWy^<KYt6fUW`XZ1*tw0`<j^~fkn5>K-{`(tuO
60159 zI#^8_DbuOV6_ALc?QYp83rK8I6cqu4$^Tbeju-E9SVy;>xHMNof>-<F7>_iNHRKSk
60161 z&UE5BgVy3?r_^2-(^gW`i}~yAY(te&GA;d*Yg&0pE?5~Z`#TcL@qM3mZvkFttZgOD
60163 z&(PliK4TB?$v+5FGt&Ahpi&NS7IvfvSnMznJcZ9bbsRcocGxBd-Irq$$7b8b!tY83
60164 zZ-6g_KF;(_0aj30qzgTJSgOMi91G)^sIBaHq!0Qi(jN^*janu>-ESTN^mU_()yZ`n
60167 z<fp@x8q(f2Aao_5s%3<P22bI$PmQ;4+>6ljwa_^lhL-h>ka-F*RPq@Lwx&$h$cOpn
60169 zO}e#c<~dnF4bNRm;j$dVh}oKGbxi`aUl{(9>{@n42Bc4me1hjpNwD~2&*Y-au8e*K
60170 z_<?Pp4BkD`R+b=|K2UsF*qw4D3ujf7vAa~1184X6)LX)ea<_vZowe>-r3AfBH#JvL
60174 zb~_%ai$fF{ZY*xJ8d-N-nwwo4elPWUlG(!YJN$}FkxlCfD5JH2$JWG*nNqb<?n;wS
60176 zp-e0`Ab-JX$n#h_Fg53p7e^8>H8}7IF&sOxwFz$}$GnB%Gidu08O@%4d6Kso_t@$i
60177 z&?KGPI5+H<i(%n}qGnr={o)DI%}_3wB#)sdP12-q0kB$8P}e^BT`xBPV^}s}@IWy_
60181 zUj0CMAyrWz8LxEq4OLBPP;&d*-~TD}rIg)<!kggo|0b@mtkB8;b=O!A)?bU9+IO5~
60187 z-_hXZ-G!d&EC3S-H575WE6AujZZm_X6gTws6jx$EAgKr@x6lk*gI-0iAio93QXct5
60188 zZ<540Gbd82mS$2lMSr{>H#qJzV-u#FqJ#~VrbvOcytNAk$&;GUSkknDo4MZ2bfgT-
60189 z*c`!(jh1HgT2kO*R16l&IZn|omP$*qkZQp^rh6e;1MsuxKLb(Ol~Ft$b}-H2NWmuK
60192 z;MB~_NX=~Hco6MRZzJq4k6Oov-YQVOBvUUiBu3yMREH6v9`w$u^_@+xTrh`ib?NbI
60193 zUOK!bDqD1H<@|0w>1{7JHY7)DRx_k_*q4gJ*2QhUcB7lz@F)W|jxTjqoQ9D)I-li}
60195 zA9p-{77cbT?i&U7E=16W0|n4PX?5-&93{Pe`YalxQx?U*j@+|}Fz&|tBrs%S5MN&h
60196 zhP|WlV-R2XI5vL#R|Ddkcax4PA&clDG3kyO!*yfxAik3n(j?_FX?y~*tLm%At9nHz
60198 z-%eJ|X}T}6d1KlM_aE-uiFxRM06`I)H2J`5Cd4a>1igUZBuc`Ko)|)qu%{x1ka&y?
60199 zP5orDwS4!tO^iM@Hu`X0rQh`mj-{(K1PO`u1o~sBh6vd_7~DMB9}E9@lm3fS{TR9p
60202 z$~m{A8vmEjCE&q-chH{ynjTEOCBXk-`sX<8*$4hO(2bLd;d~sK1fgLJcwDc{RTXEv
60203 z)Kf2?bgqIFEyR*mq&PKp>)Wsse;%b52=7dXexTMk8YhaT|3p>L<7VD)fJH+s-()S`
60204 z5jflCyaMm^SVD-qh1!ymVp5u@Gs>XK)3ji+p2u2tWIuix?IBs@J3}hS!RTuO{2y5R
60206 zoR*8ClE5ZK-sJokTg`Q@L!;9ZDxD2*X0fVD21jy!zSoP2XFrQxLJG)BU%x9(1OFlb
60207 z+bN(0auzOTa>7a2;rrv}{cL)WuPkL9KQ1SnRz{Opo99i@661-wmr8gUcgagMyc#VD
60208 zIwLhTUghYx(rFd-RMdCIqu+y+zMkg{SXm5f<>U+uWi-&(?Vgx533iwS@RQr$zO(%B
60211 zW-}6Ke`e+;>=(HDfrdBAdOcs#JW*6p)b@2sVMRmY{8Z&azj`ZZ8%QM0wQ{4a(iA1p
60212 z+MrBOaXOVOZP}U{S<?gx6bkagW2ufsQjJfg+MWy+0gwJT94iV4b2-{Sn}H*&D7f{>
60213 z8}Z2-qxmBbW_Cd2_zEBj;E$K*#*t>mkixnfTy4(GcNPZ(>7EesfFv`W#T7@aw~ZLb
60215 zleR5M-~vE|x!T+*lFaf6CKi%xg148Kj2O!W6wySW8YqR6fbw5(#e}LfcxI~vbYyDi
60217 zJH5@`O<6$i!CKF_vK7^eTjp8k3o3KTrc-q@6v;Bd*(9Dzia-J+OUSfyEZd~%!FIAC
60221 z4{^$h7QPq#Ts}7&%!0Gs02jk5BniA&1>6&-6s4qKxhaC8C=}y_nyT0=Epl*5a1677
60223 zE-XJj+;aNYrU)COrKA%eY-qj;J1Evh`6stXw`_ME?_%{}f7iY7$Sl0ZqT_>etRO7$
60224 z4*c(dpsq7&?v!W>#}4n>Z3pL6R+l9KIYbYkq<A@4{e{6?Sn-|00bs*1IKb>CzVLlB
60225 zU3WpM30<w-JZf0LJz9Qtul)E^4|%z&NXEg%sJweI@#wdl7m|EDCi1yQH-?Xwy*NV?
60226 zs%Dm|>58_!g1WcgIeeOp=l0i^@5d=QKI{stnboz1#bnKmYoq+-bM^!8-{I2&&Ns8=
60227 z2Zzn$nr~Xi8=DU-YC$*Nb5E?^T9q?VbK-B}zX+&u--uZZniCUmvpI3lYc;~f7L(@0
60228 zL3b_|K1HXHP-*N$bD~>OD|Ut<7@$c_X;^Y1%3u<odu)C9XiYT;hQ_s8X|^}fuWFc)
60229 zSWdq8f$CFBrSnDS{)iThY~`Ur^JYbLS?hs~-mSgTTxTM1%<zl&k01-k^5-)Xs1YtW
60232 zA^{FtesGZA-)OU<zqNMdgWcASrd5(rEBp`R*O4Zoj}!|9tQ}@CV7mr3)A}6_{YMvf
60233 z)(?m64P?CA<%BqaVg)yQ`{wOaznCTns@OL@SyY=eCaU)z$|-NDvGK{Rz5A|RDG#JY
60234 zJp8S>L-<?0t<@VpxSnjMY$IAY`KS0VfGYvqISAZFXP!IXbkAt7)2IRN1h+NC!I^k~
60235 zGctTv)+_?8Dti3zNSA@c(yE-fn0O@QOWeslHX1%!RZYN_gjOq7(^a+CWAe|7QqsAw
60237 z2?*FS9@>jQ=VH*1j4cf8Uy{d)IeHlz@A*0N6XM-Iq2KKj{@I_nt3e2X&jYZ4P77H_
60240 z)u-1Ni!~)t5ahb!gf2|%3jX`RaNKxpGs_1MR7_~-p)!bJvtG;@v^#@rA!SBuOAFAz
60243 zVk(<hf1kVU=k`_#kb&Rvi0&5BR@s4$(F1pmkYnWihz-?^G^1{8)Sgv0b4Lu0@k1a~
60244 zQv@j?)Y6(2PsI(*X_V_6`KrjsT-HihTvBFpIih(k;j2>Kf+d2hcXqIs@Lxd=kSil$
60245 z1A4?LEEr`c2p4aLcj4u%tt<?X1M~o&`pF?G%G8jJfBe0<w>Y_;zbjIz!lgS!8;-_+
60248 z9VCbR$8(=cLst(ve=bVk*pUf*^uxr7XC`eksTevlF-BqmHWT>>g_5L5LNQ1O$bJY;
60249 zBFA@qD?-8$E(6|KLW0J%7sC(0jx{27_WMU=_*S6eUwPg4Le&EoK<1EKu8_~E9!(`@
60251 zm+vQP$VKQ~9#&t^yWHE^SO?zaMfBo5z01>H#8?HK)B#1me-{t4Ca{1yG)|~IRGC*w
60252 z<txPnny`T<l|I_<kt9dJjh0m(dYSv_#NE71pcPiLdrzeN-AwgT(Lc)P_lk?*)Q7XZ
60254 zuBXxmh-J>U^NojyjmbhpK$;l3`U8W$z_^&ddA(VB;+@^@^-c^Ub-}x@`owa(t&{OM
60256 z*nDwoxRRuBp^}Rcsq(G0(u&#W7=<Ul_u1`7`&kQ+<oU-BpIl9ZcqG`rBMu>c_UG+4
60258 z+e_R2vxA@6|IUqr>pLIc5z+$mD}mN;+-Rsy!btr7ufFGfLGt#$-uaE#<Aj7PK_#D@
60259 zQSwXZ5;nJp5q8L)<q=1|Wo%lhfEg91=4j`Jx-Fm-md(l|=oB~BA{X=F(ctl#YKtI1
60263 z7yOH}2fX|oIG>(yG<s0a-9OlW>{4xi6dmo?!O_~_X!e^uS{rGfJle!PIdQD%H3m~a
60264 z=_Cn@m>8BW<Zd5*|JCW4R7=2PAkdEiL+=!wm7wp-EU|^Hci+GKi6g*v-*zxQ(apM=
60268 z6Od%N-27=C1)KyFCytYfz?GK{Gr7h5PA9XItzN6Hea`{7qi;P}8lUA>O)o4jC9W^u
60269 z`1C^Kc)tox^55?KDs~%xH!_5}AwAX&fc!&bh|S?U&!-3ibdx!UD)M<LQl!`z8OJFa
60273 zW|JjOo)bAV$d`QJ=B1~1hHe!&k%xuCz6a$lclkNs;b;9+F46eAFXZ-?y}6VL)F=Of
60277 zaw=?&G8Xxvt|n-b!)Z<iG$}9s*t1bI$QXS3sOAGE@d1+%ai9glkYk#>$Rw=wg7cN#
60278 z$Iq=nx3B*_4@E%++@iNr%x)F3APh{VuXOFD%+_=3GkFZC$#5V%Yk%b_#x-<pW*o9J
60280 zuBWS+{9^9;>~7I-F*iSOe+5t^y>|ZDqflZt_rjQ~@twCfpW6uhsG6!QtXL3z@VD=L
60283 zZKezD&QI+>d9dQvf;ho%di6ZP*K<J6Zti7(PDx5-yZ*j|-0n&NrdnznZhh#a93BRy
60284 z|Mt#*i+z<CA$yQ(HfQLReOn?$lgJ*rM@*2yW)Ps~g^D^&ty7sO(krCNUb}YH+j-K6
60285 zb0opAA|%(s-+!l=5aOgA*ID<ddEqcnH#h|@H45dc9g9%TH`hNEqj*MfSk}0@?!5Q-
60286 z{4)m&Nhn_5{b)E!4@Wfji<^6a1~!-Sxhu_0C|q^5wB)od*f|(S{PCT?#Qu;#kZt6H
60289 z_Ncn?=+z>yVlXt__d`17O3q@&-T~n$(<ql;xmCX!YH(W~WG?MR$^Xkl9~ppHEcxb>
60292 z`rji|;Pozl-kIdX-f+0tK|8UN%WcN4^5le5zjESa27Tmzcx<>VTs2q7z$!ry!V%8K
60295 zN?k7f%=@8!fKm73>#$w`%UCmt6t`BY{!2f)8QgO#qt@--XG)K5T)g1_$g_dj4Xb)L
60296 zs<4vv-dnj{;FbaXS>H%|3uaj4fywG!{3@Wxjn{_IegCUUR`<Kj`fM71h8C0h$vw*_
60298 z>Owbn@w{{M8x9N|)>B}$GpeU_Z|;}FbhMl)rmcb-H6p}5OgxXAM|NM`P6rk4HxFO{
60302 zIPA8e<vmg3==Wx=?$}bC>7bmTlbr-)+FFbeBo&*aGzae-#Bpcq6?N-ig=1m76I9^<
60305 zVn7?N)*mzkF`Jknj%r+~&C&)|nLmgB4zh`Czq)K=<GQ6XYhPkmI6-@cu9;K}H_=V}
60308 zSAyAtJ72<v_y9z<)<|EjI2b<7kFKJtll<rzEdytzYv7--2hR-JQ-_aH6a!QN#*P~Y
60309 zZUhd*d{#Gx<8UlbU=@aCBvNF}EuT*63BOT%<Yjl#JP=sguoxO9d3Ang!6+-`bG0pl
60311 z1Uz}IZV<YT^D#6=l0g-%Y?m9W4~$@81IBMTk6|FINAX*}Zj%(;shW~ib1SJ8Yw<>#
60313 zZx`KbJ~h-m8{G?#YP^hN;!d8C8>(}RP?DMnR;CD=!d>0!DfXq?w=Y<bJ(8Jg-R4nB
60314 zNyJ^6o#=yn-Jyi;?xLCHWD!Mkf@eve{^<D^%grUl+PiY?(197*O#VWxw40C;Ojb*M
60315 z^Ao^P4Vo7cWvzMNAj%E>&-hOwJ?N9QgWQnuc5_2Lq}QmG{L{H1?5u<>WRp{Ap(7W@
60319 zV;>u{z&johQ{}8#N{;QoXYns1D~LJL(gGiw>b@0p1)EmY=W9d5HDY=sa0G2m{Q-rJ
60324 zlroc0<t2U5&9Q>c=nBOV3?C>x$m&0Ze;;7=-B*Y9TXcM2C)ONapEQ1VA<s$TP*bmG
60325 zw-*sb8kULyRisF|1F8u1Hq>vez8ShZD+U*OJBM02Z<H>SichVT&KE;b2LzdkB?i4)
60327 z`aI2|7_BHuzgYQ+k1RmRd3-c{xaP;@An;08wPZz*6e7&96i{rxo7vBJw{91UmkY)3
60330 zRn@uh-e;cY@y_!+)ve*y*mbL_=dNygpn-0h8H7fG2E+jf;sDVEoT8!_jWL=*MZgIK
60332 zw}!ozo<2TT*fpC!4f<gr_z->XsDmW&pXDGKnlML_PzB8MjP8-~6epu8Qw%R#n%2tf
60334 z1+TiXc4)c0)jdLdfqppj0L%yGnbeQz9+{n<=#F{-hUUjn(HO$XEvw^9u94Pu#}Fx=
60335 z;(5l=^=7I*+icD?#yF&LBXV?B+*F!pC6e6g73nn!ZT;jWk1aPY!jV_q<?-(FSRd=x
60337 zkr3X~Rz~O%nM-I4&5*R9SZb<2B!<ATDJ!{a$COy8IUI{nH^eLCG{;CQR!SW1UH$5-
60338 z4%80r8=;9%j^&SBFfUhn^;qoq!PM^h05NRwk2rJ>5eMy<#k2TFu6ZU?-W5T!3j*5A
60340 z?7q6kjqDz5&`VwWbN4URu|dzw)ZFHne_-m^%db9EtL!gYHLHL3;v$I%<mYo2PxOz@
60344 ztHA-RqT*=K)c~!f&Y_|P@tz0Zfi0j7Z=f^rlu<p^J(r@&i%LP@35d-yRAAT}*;hhL
60345 zkL{?xA|sldpi)ToCH+!}-du(frBGj8PFPAdp1Yt@FU5~sdF7G#kwcXO#c+RNn&h;C
60346 zojuroeN9VSi3{e7CuT0WHsOXCPLbltO=>F+F5gaf!FC*6-VcJylm8zMF2{=)`=UmJ
60347 z%Qxg9wFxJj)e^fAUhY#I3u!@h484`f)zj%l-Yl7Ti*s_`?d<kzdSxue^Ae()(rOQ5
60348 z%uQ_&W1ie$-0{dOuB})17t7s3eynWQZ7e8rW;-!^FwwMH+s5LFYmX*&&P<$`*&Jw&
60350 zy<4Y)UC-K5a?k3LT^OfCo+OFD)`qtIY)=^AOIXVkFRQP->sR{8g`-PLcZGaWN@&H4
60352 zqR-Q;vzy|+jp><$YLGO`QH*Qojf7s%r*93#2f`Y$rWq^pio=O`Z4DSBj{K(FcCA(q
60353 zBEQW-Ceuo5x$2_2<I-y{&5a$ely;@9Di$P2(zbI5eI&bfx+a@tH+S`FdPj92X(tWO
60355 zZ6IVil&?H5W-Py7UOuSV36&zHX7@Cx&dro!)A7pe_|f9wTP|uM1{sniSVu-3360wB
60356 z%k1RhCEIsizvBf9rvY{x$a)!dH<$)a-)tm_4Qs_ToZcGAIvJ&|J~O%+OczJ7#;w&!
60361 z7to4)1kLpkavDj48~TDCK)y1hHuCX>*>nIE)c-gwJ;Z6ZPfH`GV+*5g2KnU?^WT&O
60362 zV~`PzWuk=QXN>AV|Jz|bjUbB_-jk`x+<2?pL~lgrEk0JVc2C46V!4%s5|eq=@EXNi
60363 z4hpVl7&BSjnoAtUtVv5*nUY^Lb=`}_56q-iJ6^|2&u7$>O7@GXM&a6Bf+<i;R%@m1
60365 zJG|1Md7dJm9IK|rvAW!>C<m953uyc9-Z<@;t6V-+*t^sgjcR|g`n(%Yq$VRJ`Fqs$
60367 zW<k|r30D&wp}UNh@6zkG@4jez6q{YSyk|_!P8KP(v1{)5>u<=+MX%-^)U{}XK8NW{
60372 zef=Mzr~d&zjoO5<L#I%i&qi&C^)E(kz8JL$-JGvOZT=u^vwm#tyJ4HP??!FHb0RmR
60374 z2^~lG-yikyZ|g6L`gl>)M;NsGLDc5AgElv<YrqV9F$1EZHo=)sdJeUDENXMb`n#fj
60375 z-WBx|MghDWwfTH7mYaU}Z=)7}JEVQs=4GhO7s58b^UbKuH-~Kkk2yVs+I%tmuC-6D
60376 zzddU8_UOC9v)dm+Z61l{^{I6^Y9mK&!eFQ;QJde3-qm&McGSj>+5~P4T0(8U67}=o
60377 z`t?zp>!UWIar=)@o3BP~o?fp-ZE8`Q(3JI;sLh`RZEk(~wV)8vurQ!uXtVetYV-B5
60380 zlGv!gfp2^$#qqwA+vZX%DM+khW-U1`SK93&p%a9ae=)8zQ>m0ntVk;yM^|U!dRj<N
60384 zB7UP^RRaC@Y^8r=p046-PFn-9CMU{KouA%F8m~Zx6KZli?H=e=+d?Xl?TCEJu2!0s
60385 z<CRu>+p7r$VQ+C_Ipt1e{gSKdb}gZ0&4osHwcOgDnP_Gj`BE%}meIehf1P*%-e#l_
60387 zO^g@3UOIF1rfjZQDNV;Fs)_Bj(uv7Vu{fzK-^r}Z7UE9Ub1M5YJ#T!@E9zAzjZ~5D
60389 zkCtdIOk=A_&y>b?b{c}|mD!cCb|$rvvTG!b?Q_pz>rS^i6UAptV4Lv%nKu-9yc8v{
60390 zEzIO%(_@D-=as!Sp~(r~)YP~fX0Htw%;jJlls^(f+yg-(|KKGbgArK&2n>&L@#x1m
60398 zF-7$%mEwpDn#YySn{hNv`TS(iJeV&PGAYN}$nQFs{IiioG);R6y_@3{_Phkr?gcZ`
60400 zD0wD{6a8;S^E-2)-?K=b;_+#(rWYqH&ia0A(r?w{PRe!5E+nr#FZm;wyw%Dp8YD&E
60402 zE{R6#w;)M0RU#PTjKYXZyY2j_ILf;JsEMjPUL1&{=>$Q+vq~gNSK{f-GAXHx30bl=
60404 z&+pq*Uhbz=j}5_>u=pGj8=KzomU3)^YHUH!(ca?G*5$`KS%JxLOwFstGs$?hd)-B8
60405 zFDJ`IJ$|sV;4~bD9H-~}Zr0G9qHk7$@MxUv_7eCoNP#Q+lE-0}#i}R}14p+D@UaLO
60407 zNGxU2GiZw}UU&oT+lOZgO)I7e<*J-_qrqPd6~tsdKJZCJ$u$wz$GL+E>LfFKOL9;o
60412 zn!gdhCj8vVjpwlMb|HF>z(+vQ8il;bL-Af93cM)XGtvzRdO<Hx0OV*V_+766jB!o@
60413 zilu4lwzKpFSkx7JuC8z?^}XlQ6?#O#3xpHU0y(W)Qn(5Tq;M$S-?z~jOVRiKSiMCK
60418 z{XAW*9>u2JUNr-Sc1z2~%vy%D#H1owWX5eH;Ereb3it#lf)03DUlbt0z*QGAa9=pV
60423 zx9|~>)?9n8RLG_sOBTa4N5UqbR8-qwNTNWDZD!lW?odH;oNRKk5HI9iJuVbPqoA+6
60427 zv{araU48q>iE4c6#N0)*#Y-=oD#RPd8#8gAl9qc~ZRbp9mtSgTtl0J{TX@R@<0pIj
60428 zw>9kUi*G7SzEg`A(DItXc|iVpeI5P-d>mB4_9wE2h}}tO{Un1hpQsENyl?1>RX2b3
60430 z@S2)v^F+PXzcN>ypN84&Ou;MIMFI(Jo#%~aP9s@UXAp9dDy{zUSf-%hI+E)@B+Br2
60433 zC-ZSP>zQedq+g!gmo8-#&Jijum(I})%~-f{_}D*9ri^^u+O^krVlwGxev3%kZr9`z
60437 zs*CV{c)=khZ(js^V-f3vSPw^{6F~aL&6+_rYJtl<K#Hayjbj>U1Sf_K`<2t%Fu1e(
60438 zk(x(S$B-zduLd+l9}bm*Y#Q5X0vNVMDZt3%%(x>6Q^FzOa~-1?S0mIBOLDp>X_BAy
60439 z_qXlROtE3P`5fQDpu?-hDMQXmyuQm7Ib2o>QK$=lGpN`6XfXYcS~wN{YWyP>BFum!
60440 zIEz1i@pwH@NV_`8(m}=4&15OEXl7`xh>wgkr%`h-+PGgkM>}%BZ<qnUaW{%WXOn>{
60441 z85M;d+bCE&iclPP0L${s0HTD!m6%kLl1W>gB(4dKUX7CSP2S`eFMK<KD4wTS)0kX-
60442 zx_BaI$8bSt2pM;bB;joNV;G{yd_vC^5#9b2$;D3vW}G?jnvcyWBOs-M)(f^}-8(=R
60444 z3T2E+>bK2hx5Z7F=2%Zos74L$Z5&%|)nmQu=XnhitJQQ=Dn9P6URg}!_ajtNY-^^B
60445 zy0<Hu>HR%|C6?vxKNP@{FdFO-sDWu54VDa|!R+T44K~q57^DVk8-Y@bM3|^;>a;Ma
60446 z=xQTSDvXrERT+^wMbSuMikp@wk_eKRTJP$~m25t~uR9EuTAY*PN)RnI-ciasrgt8j
60447 zsk-qM1Vir59qF{M?k;cNnScIdbx&*~U}{><V8sQk6!;N@M#|vgC$ez^=Zak&0I(sS
60448 z*&G}jAH8v=D0$bBrLYpz(4^9f;Ao3P@Px!K9pRHS5eVO!t4ndY{rqck-rhsob&im9
60449 zTVU1Hu@l)U;ZLM$SKKj^t%@9Hk2fH%n!LcJvmVP)f~8WlT-slnI5ruv(>KFqkojpA
60451 z#PggXUK-8qzM#<8@xG!UFlHi==m&Mpf1Hy+>7*nu)TTEz9QsfWZV19?oz|xdrJc!q
60453 zK>~581#n|u&>)2*JfsH_J~3puB;qn8y@f?*PrnVeaAqvErl-n96M+ww0STC3hligK
60454 zR}KrDY$|MjRs=ZUN|uAz5R>qhc4ra%%k}E19rFk8-RWi){A?}e=6y3~5zNc{i;Kxp
60457 zJcI|*!Vl4--*lS!Ys*vk#KYw9seyrL>(c{U)s}~`0d4-YhjDfn5sq{Mc=7Cg;N`Rg
60458 zScYQQ+t8w+sZ-CfqYmn5=d<ew5g#7g+FcMJzH6f+hNACz&OII5Fq@5cvEi&-%%&6Z
60460 zt-NTHl>_5h(l$kop;XDLjs@aZbVY}vMO#n8_#7lT(b3aI$%#3ANn$9=O!sn;XXRG-
60461 zLZnRY>TlPPAdL%15Y-S<AQ1GRRyS;8bOc4HO{QxIN`*A~ZdJmrVrG-87_;6%#n+Ij
60462 zjX=~v-YM*nam(GfUzF5h4BN=;i#magjFwqZmZYSmOC}OI)L6f&>n)jW&du4T$EMR8
60463 z1~W(+a#E5RT0sbsNVeMPOz823x5598INdB*?k{>6$}@OoBt-<$g#h<Nz7|}u3k(Z1
60464 zwGfnQ&9-JIx`m8oU=YP_@u!``_{9z)JBBteH}Ig%<OrJZ%|yZ)&$K4<BuQ#XEi1DM
60465 zBT40Hqu}Y^3d~_5p9s8W3od#Q`k0@)IOnC8y9jd9-WY{|5yzMn4Li&d*}T^(q!f?$
60467 zTzg9>D?tmgG<JM%eA-k}iV_!v@f~|JjEHlzYl_S(v!@mkp1_f@Z6$MM#i}j1%{<4)
60468 zTMR2(W_#S@4VvO9TA(O_XCQAhJe%VwQdCgyG)p(fG|sVE*%Pdsswta-mBzsm*wJ6c
60469 zuHzz-M8x^Jj~5qOjb!5d0+vP`ha&+?>@z!#dj~6*O%~@|w<IawS=wKc;|?Nq*@M?+
60475 z=S~a6nY^^T-1ghavqj-xK{LKd(A1xcpc#kb=PzhV=PPMsF)6z|ud)<JjW1QsC2CTV
60477 zu)K-QR4gx-Hroj-Y$!&Ggbgb)mEMN5G2|+iHkJ99RZSHy&sjbeH3Vx1qK0B9KQ}6C
60481 z?ZVjkkV=)2Vv1<hO)9L!SUDvm)~H;c0L#xhB&@&f$Cv5nDb(wI-%N=Ep`P{Zq64Y(
60482 zlIl8=7Fl;gs{78N1xoNXi*;-kx(vP;<Z$kUL=eEI{FrGsa8wCWM{+QCS|0MSiqGiD
60486 z|Ew)NKGM+;^^-6;bc#j};?0pxWi*vC$LW{-=7Zyu=R}cC8OLJ2<VrMMU(OW{HK@3W
60490 zYdg6%9gK5tUUx*+rB$?ckwo2{GTdmG0w))>V4#(_Z2Kj@<Lp&<8S1=XQtg<ayV-D@
60491 z>+2x;k6_4IycE~Jg??w@DUb#i_r-)r{3O;wv=h@XO>Zi1KGlorX}QjDS+h*G=%$VK
60499 zy~_kglr2Jlzi<~J3U9gP<iT-~QN@>Ygs#%7p{a4N3k_3KjN2TDM6-5k;C`YY!9xxb
60500 z+)0KepbP~O;utp(sJf`$2y|c?x_P4w6$M;v4R*w8(3xpy_u}4AxA*)Q-5u-Cee$Uf
60503 zgX3DlSRTwi5nsZbYGAN-96HiU*l+_yZYLVYi3BVTZ>ph>jqHXDFSPSxCeRCf<6)Rx
60509 zry15#6tuT9S^|jx#D`2)5eQb5EqSiZr+;|I`+jTfpFjA)-S-`T^{@Z?`+jrZ8{hbs
60511 zPd?&Ec$Gu}KiGsDAgL`JN?-+Dl#)ot6=i~HmNZyZHH9JsiDH^AQVc~F@hpvJwXAOP
60512 z<ku;ZB}s;n%Xx;RRY$8mBGYJ>=#@NTUjnHz4IyA-4HIK(LT}^1-6z(c0DI6M5phil
60513 zb4|9~EBD-<%eriNo3OA=SllLVL;vm(78eEl3;Gu^pxf8~j=h<<3#?#Up&WqBJS6v?
60514 z+3!ez`Pts2se%<^8H+7ChgfqfsA|~531kX|EeRK*ykzd6fPG{?L6hHp^rc4^;-#WU
60515 zA%^|>k6iv<*n!k%XJQpqcUd;2=l911sM-c4W!zXXrN{Gz5;t?Ilk*S$&L98Tmt6|m
60517 z084n@;(5(mm%$RT6wW(X1H*ZT37ejA+6+Yz3v;h{+4NKf&ARZ=mtK7H_rCv~-+NQ(
60518 znP;7iy?5=JwYotFqFD45OW-((5ez?-HJ*9as<3>lf#&?`^_OxtBZXoQOg&LR_ys~{
60519 zPbl$nXtD%N0Qz1)Qv^-j!$O8)?#J*P8(o5^(S48UsAVaLWk=0Pq>Ba3$zk)zL=&~f
60520 zrn<%%TLYG2D3-YwFwCnqKZAp#yJ56EHiiHkjEOTJ-17`i;vmlRd<blfw?}Yn_s;Fh
60521 z3v-j*9ai4v*jR8hIz&H1Ppli%@GNXP5tth)90;ccJ0a2^ae^T9!XGxQx;Hk)r88V%
60523 zH-%!3Nz{IxAK&XVXv%Yafu~rW(sJFEI;XO{NeHnCg+p+7EHPa)k(R_!3_~W>gdF48
60525 zJAvVii?1o{QP^@qrEjNG5ES#NTDqnx0*7>-!1bFAQB8EhoSj1Wz7V2Gil(UYcy#Uv
60526 zr&@x|OAeWhLZ{K|>R*Sy{jG1oi3`x)P>-&?XYGgR&)nT+W;~gjO&*+T+lxDs<y{k<
60527 z4wv_1lL^EUla-}dEPews(Q_IZBc}eJGtJx9|AN1TU=ZlL0NnM_7^H`;fC3;H#M~Hy
60528 zxessl`#4Akfo7*gdY-iz(iJWqjr8pMi`yXBy>r_Iix-Twi+RLxf}A{jz$3AmIj9O;
60529 z7`hQ0cMt(Q2s_%~kl}WMVbsyU(vDEkP2c~-Cw_@J{41BvpE!JM_DgWvsZ+n%n_gx_
60532 zxetyYIw${=>AbQ8!Rp?nBP&NHx|LGQLv-%L{#ogK-lQHsPg-{otUO<G>zzyY)DgWC
60534 zK>~*7?gboVICu{ZxMV3BN7vy*5JAW?zd2-Ch>ABKI<UHTes+3lqT8&Oi@A&{g3I6u
60536 z-_K8f2mZz%e(*1fPDzO&WXEOe&NNb`MOV+19l^J~oSbx4yPDOQ${4yglT5m-%w`lX
60541 z<@DsG-Iz<cZ54`B%Zt|J4jdZ&R@CGDsK*?r_DhMtBj!p$zE-$rt1Uk6TSic7X5>qQ
60543 zT1KDV(L%$z9S!SUXjmO^)4s>b_yk-9+p1S{aZd^Aei3`(r+r55ITkiHF%~AkG3=ox
60544 zt_tGIkiujImn0xg;$LuJLr@GttXIoL9JxVlOl@FC2|!XbH#XF}-2gE$`Ft?XYfXZn
60545 zS(;#FLqsTpDa5jPS(B8eC6l5-mpX3D_DTXt%QUH%6Un_hY%xQN#X6)NJ(nCK9A9C%
60549 z@VNk6O=?Mw0SZ*GpP`%^_4GuJhT(A-Z)~d79*a%n3&n+AB~i1}o+Q`Asrud%msR(T
60551 z^%=nIXaQIQk0iq!mKmNVD6Os6^97pa^-fjonL5(QDYPaG3hMnGesO135M(967Bxb*
60554 zeW^)lUDeos*+ubfcQ1-@h4Ou-dAzB0bKCim5!XPoFXTO3j4Fxf7>xS#>{V!-HBbxq
60555 z1|H;OZ!k702-rkxG2f!f`EZ=CA(43TwAl(Hk{Z;#m`NHsM?l>q1>TRxOo|X}L96N{
60557 zqH<Hg%MTVN6)sE)4ige46S+*HoGh0rbhsSI$uP-w<N<TSL$r8t_9mjhrfm|%AYNNk
60558 zjdCnDmQQ9i8tIoTAzrP!{FIY4H42Jj3-h)n%K1!g-(>dSu2xx@<WgUzsKYtk67lK3
60561 zVj?6klT-4E!v3AkSY5U`=){w3ZYIz0hG^3eNqi^PGGV8mp;*?nrgl!C*YhI4A_?>`
60562 z@If6s5*lb_H;6ebCq<--?u~~`9eoH#KHPLo?mc!aeAFT7&{~FnqE`v=>G8lhiu-Vb
60563 zySVd{(S0hirp4(X-8~MZM=JuJ9OY2h8yb%VM;+_&x@`g<`a>=?)eDSjL#sLt_`plT
60567 z=5@`XAjj&KBP))`(@s?}l!}+wfd>A{^&cR%@hBJv7xl%8fzQxKXXt9dp)w?zNg_x-
60569 zV+Dib8HOV%Ly{apq3o=k#480-49`F#y}MSM(=tnSUJ|lisbjDyTeC^pQq{cWPS@g;
60574 zcsQ1tN9-e^s0rDvn4&A@Tn18-h(_&n)#`Wweba~0H(i6ise&cB7{JwpeipczPWkRA
60576 zd_Y=LIn9Jw-15ORzyb@OPPZ$smJ5gO+N&gs|S2nr1p4R<eQ-6T%I1uqW5ior1q
60577 z<EX3XAgxKOS+C;INY^nmW|U_~9NP(_;#?~-i$<3NM2gn6#q8A3=HNJ5VnmvxRnC_v
60578 zmee8Um82->Sm5hqvY?xa=`#?bMrvA3HKsdSPKHu~<qg)5AuBVKKvRs!x*BYCEkPkQ
60580 z{vd*MBzBY>#H7d&6bt$6ASvJ|uH6VR-vVsM(dSev<EM*Wc`nVN7tGTFGvlS)Ot$6Z
60585 znm{K7LK8%pf{xEL7A-T*W$<Cj2hmc#1#Qw2Lf)1TA@9O@A#WV~nH(VRQ5`;DbK~2H
60586 z-gr1t7KbgH6i3@>k>&{!%NI*VGL@9FNtUNM3f-&tHcL^WBTil5%O*|9d0A{#lC#Oe
60587 z#d|fu6HyPsrPE!V9T{{JaTc){$Gc@UjksSpatYJ&zF}nmVR-qXup~eeG}E{wK%_7r
60589 zrzlvfwCQ}a#CVS4dJ0-4HHqT#n%wKp8T*ljujO>KmEMO|$96Oi4-~+4_?Rz2QUNO8
60590 zNZf$K*r?N@-J($Q%m4vXrw6e`!RB(z&!qf9tWYe55FVej$md4!frZ}@hHC@YXG=ud
60593 z(g=t+IV*_-jTQl9sZ>!B9G0VHN#T*QXT?~9EVOM=;{x%^W!0H0(yEbyv@an}NRio!
60596 z$yg`e3Bf%(3hsLYbUz5^#>-`VfbN6CI{{xB^W%lGAaDdbR#sA;hA^|ks1_sgw!-@^
60598 zt!Kje_4o$XFK;aKaFLt_^%>@X#-$xwkW=j#r=UM9$J)H^i?X5T1cdlxp}v<U+k1Rg
60599 zQarz%A}B@`OacKyMds0xVbS83(g)E%--EFIDL4(rz-4_=3*M~j1R1SsoAPi1EZ&Ke
60600 z!z!)GjXaz|j$>@K!;P-O6`-T6c4J^H!1%aQD?5tt16DhXdpRBA<9Y97XqwS7p04pa
60604 zar+iek%JoHXdntuFcQWtf=Mi!0<+rhD2=pQ%~O22dF(TK#S@%nmhfv{acO-Wd~1CT
60605 z?k3(zFyNO1PwETN^*;vJ?+C6J*Vl+#aQ)8UI)PrA7+k-5%k{4X*H^Bu!}kZ*@4*We
60607 z_(TcOgx6|0$}2nhdGxh$cq_b&n1U>jz-QMM0RK3EA75JttA(IpcxV`(Bi7Jx$AV#$
60612 zEUn-=In5mR@sOYX5gPJgG-M5Ya{X{blEcF(#o;I6Wk>;Hfet>kc2{_R?XKbd#+m{<
60613 z>jiWlt%3E`==s%X$^^)-T>`$m{w~ye25=ws5C+5Hw&mW`#N=cT;|E-mgkc9CIQRpW
60616 z8iDO6_cAzP6Fy`gRl^=8)C5@Z43S}_P^|>HL&=H2Z#f>QR-u(}h%|;kV_;Z*CoE6P
60617 zkm3DO-H;?2!9z+jv|>J?)Gc19_^BPK9TM3<QX}7@Xh|{aWsjyrPEZNOwhRPj=u}P7
60623 z1AH5N6Z{SMOYrC5Pth|3`t(-B)C_bVr{AnY2b$p3;FUl?ec;plELe@7$JfX|{?{A}
60631 zHx*SFS8B=Rwp?z)5>#q(A||Jef-F}X1<sZwU8ptcbz4+ZiDup5?MzmR#pH5=D~?Zj
60632 z>1of;3Dz1Tu^dvec#)$BQ_EP~OoH3J?e06tcieerr#-9a1zw^)BbPis#fYxwxw2Ms
60633 zimJ#b5*(XMaBy8@U`ON7rJSoeaaQ(R*OTa!-~DEx(=2B@o&&!@%-*$lk5TF}PC7#)
60634 zZJ6g3hh-&(k~r7pl-YLmuDjRny5ypF?Ek>!L>4V>jw>c-4JKXH(%nV9E-DpOM%slZ
60635 zC-pqTHH%e)=R_?-yy08#X&=)VTIZXE!qwZhy>uqs^Vk$(?^53D*o>RW@J_K~$ZAEA
60636 zYWntODv?exQn6N)Jc(6ViE7_+>kYMuL-9nG<|U1q@;%QJ=!DyLd5hZp)a~CqNF9Fi
60637 zslTBV*;_#>{|}|Os%Zp`gG-QN#0w%t$CS8YSCWEnYUrP~X|!Wn*@y{=l9zR5q-O8}
60639 z-9_y|Joy3eDEJEa9@?p8_&=8B&>n?|qtO7L`H=zE9exG80USkplSW)l2LBEGe!wqP
60640 zq}-f9dllC((7``~Z-B3ZuYo@Te*nG!K8^M*&d6~$xEXO&2mOZBGsGD(kPjHTh&X5&
60641 zOJ20M5uygGA>&*HG(+D9M07(0_u7~<agbCA@)-Iyol^CaEM{p?qu@!!AtVbLgk+p_
60642 zp=R;~A!-Oj$ue^l=5{jXp4j@f|MWi3+L;-4224UTPh#T>Bt&v^r~M;m=#K$1$;c<4
60644 z@Jp!Wqp1C(;OD{p;7-I%UkGjk&jZ&YUV1r_ZHK`s*bByyqTa+Oy^-Yd5w-y6ZA0|e
60646 zVD^c5S&J&OxR(LP9FN#4eFn~nzc@f;0poOO)F9GgLf*NVbw-?X;8BNRTF=1TI?6Uf
60647 zdj$?6LBGPdRxa%+?#OM|CMR7nW0qxgV$$$sK^N=jKTXpy`!fYUpXHs-j4-*oobLJK
60648 zx}}wFoV>PqytZozF~GbpNu_E*i0QJ0d9G-PVoWYLO^3CU3D$7trgFF3Gj|jGZAn#Y
60650 zDK{;!IhPf4oiUcj{8E-$t*;|i>1PU^v9+6yzv=e<=H#SorW9;D<XBtfSec?tL5Z;<
60651 zO?N8l%kF*A+Fcq=CX&}r+`Z?G*Kui9u*HJkb?Hpq@G~7x(#wie*SgyfXihLvtyN-8
60653 zUE*ztcXi_R-+XW97&TR^F7O7m<L$rv`WKh!1K<AkgOtOmb7+Q$efs~QBxG4fFbVTL
60654 zljS6qBy=_H%S~J*JucZu12xrDj7O+E#U<-jDw&3mlQ_=6ER|#EM4~vBD|r57CO7t@
60655 z*SFvHsn4CDG|8JwdMsj*9-T6bJg+i{Z@&K9-`#`s%m20hUHb2-Z-J{2ySoi-wzs0~
60657 zsAcH`-~|ZrV6Mp^?$<#o3K8(z=LdVY3o3}qV&3^7@HpD*H-VFg@6Li5#6@!;i+ClA
60658 z?mh~B6Fr50{{i?O_-8bT|B0~bZ-7@I4AloQw9_$~6~R9sluIDQDuZRT;|au<46ug!
60662 zMzarbIBYhKB2tzf{Xc=e*y@9*`z7=<3%s8Qm7VjZatl%U@t-=Cwf__<kJ6Y$G|v1q
60663 zX$-%H{>^NnG(AG;rH?#oA`eK+qoHz$<k+;pqTkPt)XM*lNbNowQXe}OWzl*GHV{C9
60667 zBA_v_K#^JHr!*F{GL~+GUx$AVKLtMt-v-|bUkP6UuY=dZgYW{l0Ow&H)}W2BI<~I=
60668 z3;Z5x`CZihyYT;le*ixNe-}OV74+;^;3we6;d|h(p&lMb{X7m|3m-&1J%svu2=(?7
60670 zz3flHSCRhphe-SSFW@8K!{FDzuY%VhJ>h<&qTC5yf;5B6z$HkNn?ia)3p79(6wxMY
60671 z;q6$b%V8jGnZ=p_g4yLLG_gF0<te*?O{M3C9!&Ie9LF;ELhFe;{9y;c-YqLc9sz4M
60672 z?6+*94)8gdiQq>V1{m5hBI8ETD;d}{Ha-l~WDLSx*d9)qfiOCakh|M;;OI?^+4EB)
60673 z&xh6-w>Pz6u5{gQF=)clJ*+-->7YB-p}UbEu-wD0O5B$2j&{wk7MmiABc{)C4^M>+
60674 z9t=8*3^qYup^8#QLkf>#IIufN2M}hK3@tc8Bh-eB{MPt7S5`=T+`EWf!dNlO<=8O5
60675 zxrZ}FI8GEWhe(TtI5-$l9{R!^2M>pJ!n4t#rsS3pC5reI6vNVG+z4q*SWgNLC|NA=
60676 zxwPq-@#zY^SDIdu4@~*#cxL_(OC_hu{zcrLPA09d$P@L<j60c5#o1)9M6Sw{+oc0N
60680 zCDZ)Vf03w|v!&97t<@tFx8F9lyxb?B?r+a^oMh45Jvnh|j?7*EqFdJXd-1eor8Cd(
60682 z@T5p_4AMKq<m@yjm?_ocWLC|l&D_-5Ekaz?MMYVF6seXHine^+Y-0QXdVm(`WNeHw
60683 zi(@f+tRA09Ykp2s6n5$QUtXH@ld-kGR%?~`bYdns+cj4+6BAFrW0v9EH2H$K?CA>e
60686 zO_a>ZoD<8e{SABJukL?1HIeC+%(?2}Lh0i675&PX`_h-bclHs5Sc*Fi>!*x4e(kMj
60687 z6--~8oGJAZ+v`Wid3N%Ki5r@;c5#t}nwF-=wq5MRTDcfg$-Sv7(2Sw!)ix`e{Nd6{
60688 zO-PH>2Q0xAMVl+QM#fy4oSmk&P1n1&DR`>ta=fVIQr1ew^x_HENj6xKw~W6`s}qHU
60689 zPB4tXJED_HW^mkGQ>0_2#*vhXBR&?IYfnv2##SfBZ<!-#s&vKd?fWNEDfq%AO5z-v
60690 zSXj&TD{4m1-8gyM0+qkvj$5jo+1U3eLE=1rCp3z2B`w>Xxr#ei`*g4aXsP|#>a1_K
60691 zas<J#R?IJ$B)PEolwOobb?wDUvW|9^*-p;&E?WAH+it%qE?TZa&dsuHEb-)&mx^iq
60692 zB}Uh>4mRI`7<E5=E2tyPbt2SE;k)|jH~iem!*etbZ@c2sJv-ZZmgDFGLs0Cl7C}<f
60694 z+6B$xpsDlj!wHIQ4*H-u_TJ~v2~MiF?HM|uN#dS!_0nHFTL&~n-g6#31aX_i+i%~!
60695 z8-lk!^ozgnnpfZc^SA%}{rBDR!pkq)ePZ{C|A)Od0h8k@&qiyn>grm%s=Jon_kGr0
60696 zXL@G3M>Cp{G};$Smb}TbE!nay+kzNd7#VEG5XTpY!)n%;A3_Wf#9)UQhY-PahzW!^
60697 z2>~bgzi|jp@Xh0!n1n@E-*c)?_w<ZrgdO02^8C+_%v3L5pXEE>Ip2G>_bZnSKL%ie
60699 z)mnc`0WPXRZ>L>U5V1Jo?+pvAoSHAk6K~zPU-RoS@0I*|?yYZ4#COfftRSeb{64WU
60701 zVR0$CYbG?`Iy|@G>Z$qA#x3VRgEx0gow#MomRnA=_Sm-9&#J_YTz;`p8?PK3+L1^l
60704 zGn1(ltW24FWnX~!1epqt%+4M-FxwdorAar43vm<W#ip^T&y6MF5n0#ZUfoSUmd2*>
60705 zX>wJJnSOiL5Eu6}Sw~m@`lpZl%dxhZVz{X5HOorG48ibf1Ru{?$;{2WGdW!n!X8o-
60706 zNy0LQ4(vT*TRze($sT?vlenarDQSw&H&KWcybO<%YW`p)9!p)fDW39y-%&z7NmF5S
60707 zWXs~gV9;hMPbvyVo!zGkxttpvm57iZ#p<BqBQf7=tT@MDb-Ye42WwkCl$Xh(sEz}b
60709 zjpulVCn#lT+fvECb*~-q`NRnAEu<MLY#5FB?7?U-?j_ZQExVVtf-3$1R53uwV7d(2
60710 zHm<$)DmL-v$|@otwtgMKYj-W2@p5!p9Ntn)js;4(MsmK8q1}0Hq?pbH!ya4|3EVV{
60712 zfl9vR(84XVE;TLrKI%4X3e>ZjdaX9hQ1Bvs--df}1QArtqKyN$zUx$$WwMf1Jk^=M
60713 zJHH_VCdL7hvE`w#-x`}t3c003gTqAuRXE*-6=pVWc=LOH3;1(I@zpakmkrPPbdvN{
60715 z@@m#P#1THwy5Mc7ru%OBVEI5M1WHVL_H4;+&8D{}y&jg67!NLqI6fR`rQY0V!P-t-
60716 zJw1L4VM@VtV($3xtmX%`-SV6B$;D)%ll1c7H!Q{FQxsVNEqv=Js_Nc5cUd|N3HG1e
60717 z?+}N{H(|3_^|4CYxsPnQbwzZ!PF?x_+t)jlltgS6pY2uBt&Y1vl0nyu)-vOMHQ64W
60718 z8R3n}Q$yLv&IG6&!H|3=Ek?^R-==!HU}{dM1w)i=Tg})V?HNBcyGhsP;w8~i)Qs0R
60723 zSL*&TktL5~+p%Ojw&>jQY2-kwFSjp_X+CT_zMbqdxz`5zZ6@i`64VA`K`a|G>bovj
60724 zV0woTTx?P=)(s&S4rh2@K-Iux9W*%MiA8qhw`Vd-X@O%yu5k|;lj)S(nUkG@$IF?j
60725 zFJ}x%v1quXgsixlP?P{8_!OJ>iiC&p`uX%^V{2wH5uZ%}i+6`Kdeo}-M>IA%ni7&e
60727 zwry^9x|M?mn|pz)SGcgg($?`}=pGvi&y>jw6B5b!d6u{MWxp1-q?ECiXX{)RO(&V+
60728 z##F8*M}m@E)XcD8OY;nF6{mfEFrD%8%kHkcl-7&JS`M$VJCZC4q%s_eW*EVglX02R
60729 zyc1Mn`^M6M|C_@uX$x&9a^mQKr~fbNZVsE9ZZ&G@W!<ge7#-VN%UdjK%^^dDSoK0L
60730 znc18P@aBbHa`;Gjt_Ia*496#Lkd?LEWnwnr_gZVXOKl-pg(@=az)H8d83P0928Ypo
60731 zJfV}n7>{>nX0i!Sq~n|E^*w4|M{8)vSfQeT-gB>|H*J`EV-C4j-@C?|2|2rz<Uv2W
60733 zn2NTAj-#+4U{3^cyaAVUlf=mjf>REBv6j+irkZu2v;};DUdti(fb=^4*gc{(ptB3y
60735 zEeyrt8HS-P394-Vo@0>}ZhI>R{IP3dqlv!v*5N7Ddwa1N2Ja7ok0}(QXpLyeu=@em
60736 zz7^j}ujkq?;@1bw%UPL3?r)`+=hLG-7hkk}-V0p($dSypacE&uSXc5Pk_+f&u@f<U
60738 zwc|s8SNpJi3-g^B>gS?@e%Sf7V8L2SazO%3(`$o-+Z5F&(IR^xN=R<b<?C|Pgd>*{
60740 zc5?xk-4eW!x>QLy5Mo{9az`(pitWSq(QD$0Wmqv_T<ebSLqxWZEG_^SA%8AUa)O~a
60743 z$ax@>MKYc92awDGB;z{X>w!!T$<)t(1<8B`$++I<8$c%S%3xpY7F?Nb0m--n?xR4a
60744 zfMhmzStP?E8Fz^J4v;CLyzV()MR`?`jMI~-y+Edf(!tN4K{98MjB7Jb1DP^PXY=_a
60745 zl1Z+p`#B&pgk)yUUxH*VSyA^Jfy^+HnLPhAl6iVX-Twl}jG*#7+0CPR<yX}GGeBk(
60746 z$!zHgNJdyu_kRE~V<@lt&NoqB%@uV&1Z2ihI`sL+k<8;4)V;EH-O*_DS^RBS0}_PC
60749 zO^m3#j}vW?_w%%uRsq!ZvHh4-@5JxM>evZq{rK@z$WJ;q$J^cz7&KCT0$vjSC557@
60752 z#j}D(V&GwnFJL-;6?rXYxwk+$hx8&J36sPo=XN)VyZ)O1Gtp!Mh*@EZF^V|4;a!FI
60755 zKB6&)ei-h6<1{eVh533F{InEG53{W0Hb~!EQS`j!;Mptf6o-x!?eemQ`zDJhgh5;R
60757 zi%5|nxSMIoG1)Ae2XDDMoK-llH=fXjb9}U+%NlN_Y{5_?I4P!v?5K|qX`O{dK9<om
60764 zt(RtJ{k#}f!WBId$VKx8FBgj8-Ls?hu$L8R%EO4TuN0<}vJnX+iV;Z@Jwh%T%uSVI
60765 zV@*4<X-mQwikT6OXJrrTr8pFFG=%>M8^u~M5;E_s5`f-7fPouy1OU2^u{7ZX9)-_d
60768 z^(Ff_R^>bjr$*xf>%~XnNxPH@r%_~U;&Vg->tI9e;!uz$3AgFio=|kKPBc8=#+PeX
60770 zP4bzM=}YDV^V?GCNiahPHRa0_!B8vV&Bul>&Db&C&{avHaoga-lHZmYK~QMZrUfxB
60773 z66G}y$<okW(?ji8aLi!5OxVQv{Yo-q4rwH=ie}XI2eL{g=&@9qCk0UQsB`80-I#*K
60774 ze-7oP5A@TZrN(`6p2HMeVHg;l!C}7X58v5k4tzHxL!f=xRJeZguARs0%^SC8hfPno
60776 zY9%iK$a`D`>TyV>RM_$VWumRCrMq@2ayCiKMpJw&Fh9(l&zD-&BuH>~w~PNX@j+}D
60777 z8*h)O3aC~TrwAC{nj)Q12LP{Q7(r1^`@tK=1hq46meM7f2^Nhk8gg9clU?bsdc-Wf
60779 zjif@=cy2?su>IgvrkRp>kK{2_C1#qSd~g=?bx{5iWP?oFmMn=R!QswjX(t%-g^Ox1
60780 z2DKSrX&4ERh6+o#!3|u;z-IelIs4UNAr-GgoV#Pck)JL%mehP|QVJ)UsYa<iX;t?P
60782 z7K1$~42mo>V5o=WVXy}Q7|1{#vHMn-oD;Pf^dH*-KQzWvGtM%0F<ym0zyXKqm;q2>
60785 z;CW-5S)p<ksk~IkB*S1#mqpM^#_@5^ReUDX*S%vvniK4()+4J!Cky*-th-^vD*5~)
60786 zo6^%$_eF|!AQp_IQ=wowW%#|eQJ4#+;sL2Vo!&g19=amn4Qr8<v1`LSy#j-8rFfns
60787 zInE4*V_<5}(C?S^@|IflPy?uR*oo%-ZqOEGY^l9TmH;*}Kz)k<zd7TXd()nD;{Cu2
60793 zn%T5Zfl*D}!L`2z*QbYs#^RU=*+1FojI^4o->f_8YBx3}bXy%uY^_$V>|Aqr^W^jf
60796 z8pno8=}M*&vNhG~fzgHCegan*-7sK8y~kVICwv9n1QNs72S}Cw-YUqEm|;ajTCr2M
60798 zx7?5&!}F$@-gM(sB(QmG`z8SI9_aoQJBbfrUMzs^bSZ)UOSE-uO%!kp^p$`J2V*bp
60800 z6(09+V1S|#VbPi-#v&#<o4nPYuXIKm03`%{GAk-JbDmQ<gNqx?UxyQrb^5~~`71&4
60803 zjb|A$Hj#*xg8ookGxT&U+RR8MPg0t~YF;l;z{5ZRR|5s4u>)-}W*U+xAV=%gMPK%}
60804 zEBCh6bHmQQL&y&3pz+gqnsyq0*%L!Yyt-a4z071@5uyP*qWK~opA`!Dtf=bGhccy#
60806 z!1zc*7E_>Y>=^LEZUDH*#htRV2o-evax!kjS%_?bUuLTixR3kCpkq!rjyYQ!1D?48
60809 zElH@g3=NI`UW{U>i%PeP7Zbz~wFnf)v0d<hqyeL!MZ-ow_bD<D+zKSZ_c*HouCXBG
60812 zPg0OBr3W2IXP6&QSqh4hG<Eu-vhDo(Vl?Ii8gzt7hl#}q1#v8u2xdcBzoq~$jM=!&
60814 z5}2JgE9y`-I1-NVoE(kBl}Rv1>3#rc>Il%3j@{>4kyj-gzEA~+oU)P%r^OCCB>VtT
60816 z>IX+hGRj<Jm^u6)%X&GVEO<ok`%XkLvisYhE;l%XMFJbbE`7Y<V;#t{?Du-eg<R$L
60818 zVnEh>iGWv#g@Y!e>5*XC7amI%(~&?_*K&5g@P~rsGkm&|`n*>F-^;#Yz#K4a6IAgx
60819 z+rA($W*&fH3U@|8oI-WY4wxYUO#Cjm2oIX^bZ>y~8*F(!NygzkfQzG-VvxfCb0`ej
60820 zhHc?kG;Ag8ga#>*7|g^?&Ry?A{-BPSK9^B5(urx?n&kDX;Q|$i4b^5!W1VD6i%W*7
60824 z0*(!NB_N)W(c1wyqh18gWPUL?6DXuFfHTY*c*db-aG1+(_EDuwK4vDgxaAK{q{^MK
60826 zuDP)-2mAoOiGr7e)9@Z32*Jpmz=JxLPW2ED-LsGQg<toP4vmnG3Jg4Ao4U`%I?Mpp
60827 z=|P=UNXMP;?x_31nb1<i%nE^}XfTrrL~7~r))qMzEle?WL-SuAFHn4h3pK)txNZ1H
60829 zb!-x@LokedWUe&dNn1ur<i&`lF|zn;<vJM|XYOG9b64-k{0PVE;J=8*u=J<NrDQa{
60833 zY9BW{F|hy)=X#*?cLAN-V7_xlTk8Rxl(QNFq0bgq4dFFbMyLVol6(~_CkV78<H1ZQ
60842 zg}ny+`+tbv!_;2Dk9xM|^1ve+<vRm3jM~PjG0V@2G)pC~p^d9I-B@ln+9gikzw^fS
60844 z8C&=c7Y?#~B*c1>(S`3y$p9Y>F>E}!pnHP`#rcvp8HlT~ap#?q2-4tPw4%fnPELhL
60845 ze?pCbSvxEr{!vsuUt0!cBVTRV)-TOPO90I2JzX#MhVD5`1DVDgj$Hrhjo3mNMmm68
60850 zsQ$FBDY!SRXlc#JX<QOQvUibtu=}YJn87iB;Bl+yY-ZO$2LtWt?0p*7Qn}wY6kH&S
60851 z*3`HV5OH#kDCPV+MIX-ye9n~OL00rhzwG3Q?x)GEAh}^IjODO#M?JZ?%6q`j4$ppE
60852 zaFE-vl2W#ipa4R0I8o8=JUl1r#{3*y#m?$3!2uX5cH0#r5uquO(2Z=t&j+G%K(@z3
60854 zRR~ZOEIK9SD8nIP1G>1?Re}L#GX&wN<*Tj=LX6}CLx{{k#i-t2eu9M4SPxR~00|Z_
60855 z?sL(A02!LewGw65XvM2wMiuWsM(PFa`ox-9U%yss0}Z0`01bWy9$x4^K;DGCp8724
60856 zerc?YZNYwTnRM5m44OWbCW(!}t8Aza4}swmF2tEh@G->@LEwnMS1kI9T0&tG5<Nc)
60857 z91VbjGzq3iz=_ibFq(!_B%0b8Y>!|Jn3yr-X^aIBf^{Nm5sZth*8ItVwzrhc=Cj#s
60858 zf@34D<>@`k>&-H<HMI4_qERXfl-N5xVlWQO9GuGPeew+=8`ITbFgPAaq&Sg|Sz^j3
60859 zd$tN*!5b2o)4?$#kp!Pd-OqDTAUp=XfZtQIp-Nb?>!zjU!ahG4PV<Uv#92w^M87D$
60865 zk;WyP`3qZ9Gd?S$Xgc{8)no&qgk>bOFe{d%VL8IpBux@^RR`5X)dJQ0BWFPVtM1)c
60870 zceR$x0LL1*RvxYt4p70SY0@5Akx0sG%38R<353CmI4)76l`F!&ct8pIe6+}T46l-n
60871 zP_%FvrwSSlW(5i;GAa%jME(q3rR<&pD!rEqVKJb}3U-%MK-1I+0v{jF#07vzU?gIa
60876 z8M=?96q5=lKI{FA5mD`u31-dyxVU6Fw(jHw^8UJ$_x;@jcApai2j*=k9tRq%%5KGo
60878 zScU~Napzbv6U)SzWX6_pRSG7PVZ2-mveYa~n<0ZD4cjL&DisLYnvyP=EYKZF73l6S
60879 z9Z&g1@cz(XE+jnfR)y);>M$>WpEfwTB(f-%RLIGNe2}HBP=F!<;1obE{*a~jazUwr
60880 zT>i?*<wIQqo9_N-ITz#A)+M%1Ren{8ei0;kXfRRs)#~Hfb=2{zNtEcm3F!C%&~hd=
60882 zg#hbgX**&9Jz73kI>R<V>B`oB_tKHw-Jo=DMWvg<_{STgu!Q8RE@5`Chu`yBiu)kz
60886 zN4rnrEcHnY|JhS6*8AC0C`cH<I_JNS{{+7YAi@f^9s6e6=K%nyiW44c>-^j_#d><E
60887 zJjXKxiP7*F&S{LKXp*|iVG+jZW0;4-Sr2<P=5D5LIWq?2hu4s2J)DQ-PA~rs<2+pN
60888 zXYJ-1zo0xc<yqs0Ea$ld^LV%`U<%vehGH(ac~hs|n#@&lm29Sx%2vH>2%gy|At+mM
60889 zm&Uzek#KHUz}86*9-=keb@U{>HI-am=r?LLzh567A2&6hNc;1XnX$1HDS1Leti-9c
60893 zcJa4;06+I{TX--JJav)HB5=z*NEQ#=7NjDk^)sQ$g1$83g$tTTu*b3A#@`I&bu8OX
60894 zDb9^gn2^I91uuN!ujhFT<8@w#iNZ@kWIs{1|BAV*pZ@p2t2e<{!ku`opVu3~D-ph;
60895 zMNp?h-G9bDi2szxfNU|G#eAU1Uj=m|@H1cS)$K(vg}RdbHuw%L-fGSoeiB~lsJquT
60897 z+5uhS83x;2h(^%1O)3c|P3!Jm$i&L4trywJ5dC?-H=Uq8#bkPjGS=JH__jZ#I?*J9
60900 z94e-jv|>0Wda)=Tg^Wz(iai78kc{(Qcfvq1Otv4i8g$iAx~9mwTnv_mJTxJRGLG|1
60902 z18rbIYzEtmb=uRVG?-7$k4H$z0}*uhhBiC*y(k<f@eA&Ig+rSb>ebLpc*YMYezaZ#
60904 zp%)S?i4zn<12;j?G$@)!9g6CjU9h#Zz-5aO$s0)1hRLUuSzHcDYD`f?++#{|R7u6y
60906 zF98+|zfbhA1cxqOkhmK>kdUx#mYGUK!e-T~I=#Nvf=0g`ogvq`_F5lbZuk`hBLSaE
60908 zQG0hVtpzDIqy$vil1MczvkJ!ww3i3fdL0-}@21}C+;axiDo03o;%~{o@y*UrAb1_0
60910 zN8&V1I4x=Eye0M9Qj6LYPi`bB4GiU8Kkp5SV`HN169h}5gpCtwTw%4W-)mF?UX5lw
60911 zLj<qryoV1&X)yeC8{G-)&%kh5>g}xd8^O7Gm~=U}lY{=R7bCt_dn1=fEV3|!SJdJ_
60912 z-jYz~(n&57WjTL@Q!*?|GK6ffa!Ln&EZLH5K}qQ%5R8{f(Pei=6BHrnyuS!W)ho|`
60913 z3i~MNODra0*w0?)E^qzpb-ie&-OEW6`!Mw>Fi<tIqiuf~3>@`*JO+=WEukIT&0Ee$
60914 zPRwRFusQ8?32dh;phj_GJ3Qs(d_&-H-}1DxDg-6SE8u=6x&1&}3WvkZaI-R=Nnfn<
60915 zy1jP*9Q3!}9rdx-t=(DO4dF8Y5b((a=P{EWZ^&jGq@czmWt#fb@>X$1gImQRwZBz-
60916 z{)RwG@ksd;Ee9njYEceCP{Ts31hn@lP_s{w4I%@)H-<6v2^S=Ep9OzDLBAiHgQWJ5
60918 zapAFZ-%TR$tQ%=+RbR)8(SlYE1wAC}Iy4;+^|8?A-`XS^f(Q3_cvA^(EHyTjZI1PV
60920 zc13spkKJ-yp`?+xoX``yMy7U8jM&DOiPWKHWlk-Q!k>imzVf~XK<57R(1vk6rvcAP
60922 zoVpx*{vL-z<>a{+yCwAN(g0tJEAw6_{o??!aX{kC%}~H??GMsdV0CN<Z0(BE+Vc(j
60925 z?6_@LX;&xXw0&N$?j0lbwHk7p!3jW-U+w-SaXX#CHeiRag~xZ!wL&}%S;ydNvTqQ%
60926 zkc7+GqV}AF;}!^+*mj^T;#jjjK8kI?H&D*0sUGJ=y*A(*YW<k@%RErd1-=0V_SChu
60927 z7E4mtR5NDMOVB`zexEWF^Cf+a6O9qrPrNbRYG-G6DE^R4kwSS4>U_9nk}?bi=JVl4
60928 z*VE`Q$2GxJCYYNT-<#fb^S*L!TN(y{J~cB#f}Y|lTG7pg#moHRnf-GcubV$UH35`6
60929 zx??z&^q1|ZLYnI-7+5lxtb!TdHX=iO$+h-Z?t>d?(3Y*<#t39f`UYJAGEX6yeHi1)
60930 zFg=;S@4iC5Ot*o|mtC3jZvc~aM@H?*{6qJP#BKBhkoh|5S^o}0D?u5yC-a}(zadUh
60931 z{{&=yAIZQm)$M(sLcMQycb>R|dK$=lwlDKuB=g=L6A~!%-%&S%9=gYoIgY&!d#jt*
60932 zTYGsyhNu6ez68?wG?IA-_IIw#-}PjE+WjuMk=hMp{%<7n0(O%tbJL*AC#Z*j%wM@O
60934 z=)DTwo8Ld5<5-&5yzZERV;eeClZw<MaZEe>0MKMzv+kQdd~qR*T%QD@-vJ!b3*4Eg
60935 zEn7cyDEL(A;L?y8#qr7O7xG80yCR(^%8Umm1Wk-?4<5c}s}vGFq%0;5cj`y-X%ElQ
60937 zlaCvnJ?-SqE!O_m&x;X>5{KjY%j?4jN*TjE(3#!e)D1Yq9KUAj(3Bb@Zua<7!|C|g
60939 z{yl26_n!Yc`t8?y6k*+`r~q9DGJl8CKY#vnNak|`RAc`R>Dq{YLLKal-6_=gQ%D9H
60941 zd+ES3Z=-$)Wc~zo=5KeugwpvEN(a{cpJ@!p{3*)o=I*zU%(s^5(Wvdz!$9Uy)G_`Q
60943 z-@6p2nI2td-#OGAAhpshASS?pUa_u2@W^R#XfELMQXb0VVFIdJjua=#<;l`02Rwpx
60947 zO^rwv$$;O66fiprZ`-pJ90j-qD7U^DU{Z;vHHcga+WaKpvFg=yUiRW&T~EPjRj9X3
60948 zzm<@!bmy*(GryM2ZciunU%oHW1`q})*g>S_-?_K2b3+!Y_lB$Fa6WG2LjH>a8R*yM
60949 z=rITXf2&7g4Do*t&8(qSw+${-ZP1-wt@#Uiy<hm(`$cB$U$g^jPqPm=|ATEiHCeC1
60953 zXW@K4P2Uba|D5Xxu<ZGNLyq9z26!pI2Im#T3oc4HcBeZO-s#RO-U2>-C;2063d}2x
60954 zwY?+o2H4W#3_+oBFa+-mg30u0jKbh0$O|rwUGVi<m&U5&x=#|o$T)>hF@qsNdW<{n
60955 zLGwZ6jQDmy7iNut^-9>VE?6*}OIhIm4(gqbR^p=*JfqWEWOz)^@6P4-B}Cop0c}W&
60957 zsWAnoSSm2a*?W%P(U~WBF1H~+_txQHjKEnvIhLC?MpI-g9GXrR1LX@<Iy$IQ`<JHD
60958 zTIE%#bk#I2u)IdKLai6m>ZAv1m7?sqGF0oXjNo_GYJcE9DJUVe#-dXPe~wlqTU<Cj
60960 zNT$$5=&Aelfe!IaN9GTa%--%_Aep~dMo%P8{eM8_3rOaHE+VPz_DE{sGzW9a^G7`y
60961 zEb5jg+DAPAt?Z<$K;|q$J%0;+<j9ac8A#^(J-Dzyd<DrI>;4nU>z{fE3rutBR1L^H
60962 zgQh2c)b$`4&oY@Sd4yJg%;Ts$KfEBFSGr#(E~9P%GEbs({;@lcWabCZ-1E-#?TaX#
60968 zfsrONY%xp(U|IaK^;~Q$*-Q-C8Mq2`|5e)xJGKnKR6c7bcW-Zrxq8vIFWnJYEcU=u
60969 zq@?*8Ei*x0aS<p5ml~d=AHWvDG}zHKoDJ;T<jw}-|K-^L)HTOoi})fvc$t21NJewz
60971 za$d$+dW#hG;+RR3H0j@4ufLHftfzUB6?va+2aUNQe=~LZW0|G-;r-d&ue-G1tQM&S
60972 zE4sN<oVACh66WrEuPN-D1*$J=xe1#Qn4yiPX_7lHvS9QN-KU62`hL(Gz6-Rt0D9)9
60973 zu}1Yh?XS5#qS5OSaFJ$~_G4SIYq33TWxh|pad2C_AL8h>;7$lRXWOj_7%rf{jMr-y
60974 zfJVp_zVpI4+v<*y{dv=i56Z0O^EH|w*+<eWM=^#^ErryS+PDR-=<#s=W|uWP?U4eU
60977 z1Jn^9^L->Uft_|`PA@Oap(SsU?=9YS$I*y9KCtL^6XkVj=K=J+39Xa#qTXcao6fwO
60978 zWFX-@I_v!I{&GBu@q(!4W%_vc73`tLF1Hj9p%L8;bb_en7r==AChV2QN9u$t^~#`^
60979 z&QUuN-8@JO7qM^j()xy*7K&)mr<=d2`ybtts6HnLDc8xLAi8;wA9fbIyZ-(9Rc=am
60980 z_wqww3i_1uH+8?zJ&e*iyn=H6qkYQx+pt~TTanDID=6pXKIQz)-4+&f^9l~26r=-}
60981 za{e~_FTqIY$Shu1|53*?-n`|YD{*jj-N)ST?|U06$=mwvv0V3Yr!8+rZMj_63aZE9
60982 zm8b-C-dy(`L>vDYmc~W_rq)X^7!64}y+4HGo74RR;bAx+W8|$)oSqYoFT8a5{$j8l
60983 zh2Mkm{j?(hNr+ZT9B6w+h6=e<j$+Ls-5YrOtSyGKA-LSF0|6tg2i#-w0CeLA#DuEE
60985 zGwF-m-ljirHtDqltsvcDSvaoAp$NP@a^`%99LGn25~i>_+e%}|2M<$0!i%NRz6!Df
60986 zF=ZeNCw(iJN#GPv2E9rd`IVAjBsuMfLbcGV)Z%ST)GFzrR2ov<4&E_xxlxVYx-UB5
60989 zat7FriQkEhV>8%^wlXoIlO#nt{N3Yyr6pYEE=X)Z-3p)+PM&~@SgEg6UkIn*K{jYS
60990 zcdZsX(B|PD>ToItDG-dcOlZKZxb)AxE!5Ta^go4^EJr0X2F)pFmn~h-F4&6Yjn?wI
60991 zP5UBhq7XD?EiS30Wz(|4j%g`*mGzP|?V6Tq1!u!b+CR}yIL->hSs@TErHWIk*A}$A
60992 zYi2$<jLa-f9>5P_BUlS+tX}r@H8%3A(b#0OIzF6ALyfI(TcoQj=2co2=s)Gd)#)R#
60994 zmL<nr%L3gogD0^uY#RHuw$dD4?v7)9J*8K6!aibL-5Im1yWl#KpesUP`C7W-tJRp>
60995 z7tLX-eA)3?)zHhCNHrARP<*wWF|{SP`1%D|wyR0qu=cjs?u`!;d+={zZEOj<rL8PX
60997 zLZEm$8@{lk-nw>2&5uRA9$5>Bk|4{Ggx}I7PUgh8%?G@fM%V1M&>B^z*Z!K@YkSr>
60998 z@~gB)*msk|KhGLTN2{;VEdW!rCO2Q+QjP0s<=EozYcRz8-o>&kU6nBRFI;GbH~<tI
61000 z_Q$`-#jihkG%9$@(O6-2_~Yrz4#d^X`@7wKt_+NvflBd{U$hh-&^)r>A(fOjIRZ<u
61001 zzgLRb)hDh^5Oi)uDNwFI2Dt`d2u+P4USqa~9_Z!k)IO{xM`6BOJvgMCbn1Wfwris-
61003 zj9@E)qC0^{TP3j-Vk_Vxl7s8DE}~pl=D>lrCQFcBPqJi-V=xgH2jYOZ!wuxu>)$9K
61005 z@c!SO_vk1dc>l6{r{Mf=VpnxzBn$5p{H%tKl-JPFy#I5y_*I@Q{@?S=?E3bz_EFB&
61009 za^Ao0{O#D?-LDZ0HtDDm9mN2^X<wV4a+ZTb_%F5?jE*a`@%F&!zZHjf2G+3HWhAu5
61010 zda!fe@1T!l7>c%}U@>LvoJj8<mxInBonW%QZR;^J%2A-(layY{ImbDNO<JvNY-Wl&
61011 zd4o1}?e?qZ(-RX3V^bx*t?V4Z8H&e~_1Vr5E3ONXfW1^N@0-gx%en=%x_8W3x;;lc
61012 zMc#%runpK1Z7Bnc2X2xPOL3e8x=A^_a3nM<>X;jft-sM09QYjTM`|0`Vw-Ija$erU
61013 zVhy~3=ulC#d#5ulA9f;_mDC^3(F%IH=JJ37%PEMqXxS$C%jrUT*9Iw23Q#-%RSd|)
61015 zgj;bo@sT&4y0*0;8)+|OHizw!#0xBWKc{e+PBd~QX!kl5A|9td<`5i-@K89uB9=R9
61018 z;6LIrg$-mkR6vRCAV`^t-PSp1asuV!^>|@w1Qa=FlX{ddA8BqkICua>Cw#<4a;L+j
61021 zfPa$Hqviq86bZqSw5+U!z`#iUIaQ&$^b-L8A+EgvTQC@A#mt9%PUWh_^kQ1ESr1%s
61023 z=1nRyyHPa*;Q-Ck9!44tzl#=#kFm*XcIn|rKFY`}+y|aYJ;5p<%^Qdk{$cV)OzE+p
61025 zKMG&Ra!Gbw%LU^#k43PP7&*6bX%GHySKWHmVf;UiUv=^({NFI?>Z@-&LA0H}OU~c@
61026 z&fg=>-`cguZn}yHIDaGXFMj^mO~+0W)Un%cK2BtuzeCPn{>E#L93zxlj~}}Z;MYGT
61027 zb`blCD~Y4T3F3C*G;u%icH%w6hlx)RXNV_=FA+}@-z2_GJWu?9c!~HiiIE(skR}-;
61029 zJ>-YUPmpKGC&(|6Pm|vyzfC?*{s1WT#}r0!ltP(QjLK0XRD)_$i_{KkKXoN_l-om{
61030 zpl+v5Q}<JEr`|(-nEC{DhI)ef67@9oP3qg!^VAQhm#7~D$IQ_RZPGD1M~~1Ax=k<A
61031 zJLvuNmGn{i1bsVwn!cZYJN+K|!}KTUGxQVmm*}VIZ_?kUpQnF7zeN9-!5EHF7?X)H
61032 zIc9`uFm3KAv&igV_A^&9N0}4g-|ft4=6-H7^LFMv%!ipzFlU%2m@hF;Gv8#s%{<Ti
61034 zNv&a+I)+i5U7eUZx3RM;rtaIadoiXS-MtMAA9pyjzArd`zv%pZ%K7^zaDxkc{zvHf
61037 z-Dju<d3wO}Bzk@p1G7mW_p<vt{hh9yavDAFLeEpKeE2)=Gx~)4jK9l$CQ*9nUG6hG
61038 z;y&||`z*ZZK1*M7pF^K;pCk9V&#@!!voh;GYccm(KacV!+-KmN`!r1VDZhlC|B9X{
61040 zdXMyGejYth`K$~|59Q<kru&41X-@ga&~wCns;C_Tx1!%4b)UL|-am)r4x{wYQ)kfU
61042 zM)lR-jO31^=k@4$6to8z+_giXeZVvDHuU}__o*Yjn<#$;*|$_fPgEZX=}|&@l!nl=
61043 z1aB>XbWnRr2@Fz3;~KIr|C7i*&Y<V#(X;pYm(lZS^!y9-?AaOWAIkIS`F-?!5%g{F
61045 z3Hc@TYDE4qdX-Ty^eUuq=#@`V&?`<c-B;3i<ze*dW#xaMSN{Sm(0%p1@&)wjZ<Mp>
61047 zm1io?R-UW8P<gTPa^+l=stQ%T8mgwMrD~<xs?JrHs(Y%3sz<8Ft0$|cs`peMs6JGE
61048 zxcW%-(duK>C#z?x&s3kSK39FA`eOCv>bV+K6KZ-bR7=%LwMwm3o2xC=_S6p5j?|9V
61050 zS6`~{sUNBzsUNSOte>jiQ-7fTQ2pWhBlSn?kJX>7pRGSrf42Ty{e}9A^_T1C8dO7Q
61055 zCihGpnmjUjeDdVvsmXgLADDb-^5MxxCLf)AZ1Ty;vy;zEK0Eo`<O`E8PQE;Ou0^$k
61057 zz0i8G^>XXn6g4GG=~Do$PnD)BQ?04FsimnsQ-`LGOdX#(Idy94o~Z|>9-4Z1>XE5O
61060 zX69y=X7<b+nmICaeCFiLshN9b9+-J(=HZz~W*(h+Z05<Cvop`kJUjE;%nLIw&b&Nx
61063 z=h4n%ohLhIJI{2U?L60cq4Q$r<<7ZTYF3!lXa9fZ-aRg=>)ij}YwZDvrN$aU2qA<R
61064 zYK<Yr7-Fm;*5ZhW<1oO8h{$!g5BIq-48v_e#Nj@mU(2x`54F}%kH=DD4JF19viB~v
61065 z)<cc;%h#$Qgb-?}<#?<m<hSOT2TvyL@BGg9_4_B`<!A4`_PXu0p7nm7wTBD=;lbe{
61068 zWb^3evCZR~r#H`To|DVu-f|y#fIL_pA`g{^$>nl|TrE$MYvfwFPHvIg<aW73-Xrgo
61069 z_sRR^1M(sHh<sE&CLfni%V*_tTVz|jxA<%c*b=-YWJ~Clur2Z}iY@9bNn12qv|Dsr
61071 zHc%1jh@=Qjgf>DKVTrIs*drVfJrTVTeG&Z;0}(?JBN3w!V-e#K(-E@~b6aIwy|?;o
61073 zj&GgbI=gi)QWohQ=@S_c85|iB85$WDDUVb{sw0ykHIdp#U8E(_7HN-kMD|4XM)pPa
61074 zM-D^|MUF&{Mvg^}M@~o1M$T=MZS&sdvn^m-@V1a`q1(c?$+s!CskbF<(`?gj(`~bC
61077 z?ZMkawuf#H+b-X(*sk85v|Y1ZyIr^4vfZ}bzTL6CXM6AVzU}?n2euDwAK5;-eQf*q
61078 z_UY}j+vgNAg}1^-5ugZGgeXE4VG6lIp-?N56dHwAp;K5CHicc`Q1mEz6@7|+#eiZ+
61079 zF`^h%j48$y(~4Qe+z#0e?;Son0(J!N2-y+3BW#C!hhm3%N74?>4($%z4$BVP4*L$r
61080 zj-DO8JNkC??-<xIv}0t)=#H@+<2$Bz%<h;|%9P$pA7y|tSQ(-WRfZ|$N`+FbOj2r;
61082 zv?5v^ofNH!)<)~1Ez!1Ud$c3EC%QMfFS<W^AbKczBziP@EP6b8I(jyGP9;-$t9(=e
61083 zs$f-!DpVDwlB*OdwJJ%aQE62=l|^M!*;NizkE&PIr|MS?sD@M{s!`RLYFss~npMrk
61084 z$YQ)>d}0D(f@4BrLSw>W<S~jEbxcx>CPo{hi?PJmV(c-Fn4Xy4n7)|)n1Ps~n30&#
61089 zx-)F2e5YckdS}v3%}(u3-A>C++fMsV$IhOey*vAM_U|0nIka<R=jhI{o#Q*Fch2sd
61090 zi<iZF$NR(w#0STR#D~U*#mnOr@#^@bcul-EUKekPx5eAz9q~Q!z43kV{qY0wL-8Z=
61093 z+5}yKCBc?pPjDpkB=jcqCG;l@Bn%~tB#b7EC5$IbC(I_y?UwEK-tDtHV0ZBDklmrX
61095 zS)zBMPhvn~aAHVeXku8RJW-LTPE1PFBx)0NiIzlLqCL@(*pt|s*q7L!IFLA$IFdM;
61096 zIF>k`IGs3~IJZZ($9s>@o`5~UdqVbv?g`r?-=o;0-jlRPvq!r}x5u)_w#UB5v8QKG
61097 z@1DLr{d)%X4DA`&GrDJN&-k9{J+ph}l4MEVNj^ydNx?}WNufz$N%AB`k~%3VNt2{a
61099 zuY9j!uX=CNUd>+ZUfo{HUfW*#UdP^^y}f(;_V(``*gLd$WbY{a-%OsI45Hv~u${*@
61100 zF@=MD^&?+OA+Y0G{G}B7ccu6*rI0w&7oRh=e8KjNan<ZTi95+^A#qmcZ#Kl$I=^--
61101 zuEAMz9OVK*{hjK}89V1pXZoB|$w4^(>6g;kJ}>s3v$oiK^8-w0=5I5dn*Sx!@%i5|
61102 zy)i$?^xFJKPIcxNFTfdzz0UrPvVT`tYiz$8%l5``tbONaH8(x+=#9r^c=W^LLcU-;
61104 zXS?jju?psaKO*392GaSP7hU&%sBj&-8ePYu%OIcg<3Iv`JIWugr|`NBkMVd6cGdgV
61105 z1<ZF9j}v&j@5;vo<B{TV4IbrqOu(ZSkF{7{#X0|E6aOm%9!;+2Y;hg=-%a3g3Xd~*
61106 zeBjF0eb;sUhx@MUuIsMj!E{U?!F&;}ar{FAM`IG$b47bZvoj?-+vc%@orSWqm+4w|
61107 z#{Q92^c(DK4LghQP_VNV>`dvwa>oR)vp5eGJM-r#@5evE&iq)Kig>zOxSWH>LUw14
61109 z^JNcW*v>R|3A-9p-B-=WFk6b{*i}FCax{kRR%7n6tCKNYjAsn9)0lB~b(HzP#W73S
61114 z$>AU8eMuInC3P(AG$YdoWGyKq|3ZI3Kl6ANdQArLjr3HKDHOgeu-2vPzt<*Moq
61115 zraX-)L#i=M3B;5$DhX4b!IYz_bC?q3N{JtgJA^5#U1JvC$Hwe7JnxIFkLx)vW(^fY
61117 za5;7w-XCzzKB`>(;|G?hR;gA&>lB}qe|ui#tMbLP08E=wQ5D6sr!nnn^quHCn1=Pe
61119 z()pP$ofpG7RUPFP6FJ$!ze@DvG+j;KBcJlGdiZdZmHY-DO0xLx@Xzo;{ImRW{yBaH
61120 zAIyK7qq{dK2UBu>vDW$Ce$Ral|BFsdGO#h#a^B=avX>;$b<{zhqrtS07Lcp-1a;cV
61127 zt8ANWhitoSi!72OJ8yH3#|b+_<7U);I~&!T)H&+5oypOj%6WC0`dl<s-*jFr{9~i6
61128 z;GUwCY$o5M2gpWBXc+ksd5dnQ2k8L)S9+HW69ZM#=jke%#>R6yeT1aZMvs-wKNc4|
61130 zmsM9;+j-p6ychXC@5z6Ye~kAgU(nb2Z?L)fKJURl!Y`($`9*Aw8fYB9l7F72@~in(
61131 z{0sbxe2B*e=Pd17#mX-w;ryfIZzO?V#$5Gx$#HUqzQHfyzeV4oBK<S{Ptr)0{7d{A
61133 zG@iE5X!3h%r>*ojFY{RH@e(V4l9e}-WRgOEKusi->PbEM3HdqQL=AKY9ihLbGh~SD
61137 zK9+X{EBP%}Dhf)+vU-oXYW8@{Bbe22jC+Rs2YH3ON_LYOa*2FGrb#yGBtIqpo4!nS
61139 z{xAG2{~!E4{y+Kq5AQ;{EM1l%)5tPqS+Z<djx1M}C(CEG_^?|3%0J-$#?SGe^Yi={
61141 zP@YmwDQ6h@`jzLE7nH-wk%xC(>2uLE+ADfVv`@5ubWrq)=#c2Otd>SDD0+GH%IMY6
61145 z`W>1?v*}iPg#HVy_4qb(xinG3y+Ph1&$AytvWvV=Mr7Y1Iph!IUGf`JK-%e5@(t2Q
61147 zcVz249`OkC*z6G``+{j0N6toZGkb6B9p5{(cV_Rsy>rPl*(-TTvQM&qa!~S$<dEdG
61148 z$?KChCd-qfl2ys^$w|rS$vMe|$+~27a&>Y;vOT#Y`B3ta<lf|y$)}UgCJ!WEOcs(a
61149 zC66XwPrjKvkvyGzH~D_@e2Oe(amvyZ-;{uq<tZyuR;PrfY)ILZ5|N@viA_mJNlwwE
61150 z<fRm+7*Z@LwJD7$Eh&za!zo8oj;HjcoJl#CGMF-yBBfkTxtcPTayw-*<xa|M%7auc
61153 zK5b)~JS{3sl@_0tl$M^BlUA6fOEafcr!}P6(>l@)r5#D@O*@%(I_+%QK-$GLA?;Gy
61155 zdU3iT-I89L-k9E!?npnJel-1fdSCjP^mFNh=|kyK`sMVi>0{})(<jsKq|c^5$lx+O
61157 z%4o~z&gjWFmT@BER7QWs`HTx0!x<wPS2C_;+{hTun97*RxR)`fp&BpE5{-|>UlXKR
61160 z%*!m!G-O&bYcm@&TQVJ)hcl069?$H{Jd=4Yb1-u#Q_8%Yc{Ot^^LFNB=AF#h%m-Oq
61162 zbu8;d)~T%itn*nHvWBxpvaV!Z%es*@o;8&<lXWj^E}Le1WiQG0$@b3<%3hHjlFb--
61168 zioB4#wR!9FHs;CmqViOE@p(yk>3KPMg?YL>b6#~`L!LdaBkxe&k-Xl#lX<7}&gKo|
61170 zoAM*_75TCG3HizSn*6-{;(SBCCBHVmF~23>k$*V<X#Vm1zWg)!=kf>hhw`QT%lTLH
61171 z$MSFIPv+mrpUr=u<+Pq!Z|yRzpEgh%tX-vDqg|&B(}rs!wMwm8o2X6IW@)wBQmsjA
61174 z0|gfggn~;2qXpLsZWc@wOc&fOxL+_|C@WlCxU|r>FraXG;mX3*g`tHT3O5x-6e<d1
61175 z3lj>H3pIs#g~f%2LQ7$7VPj!Sp`-9{;nBk5965D{oB8_pv#_u5OyRl0!NQ?Jsqk{)
61176 z)xxpD+l7;bcM4|<9~5y#o<-h8%ZmJp0*iu+Ru!!&T2~ZS6kZfrq%2YwB^IR?Wff_Q
61180 zY$}N;QIy1%B$OnVXiD-*ic1V7mXg|%#*&s2N6F!mqb0{n`by4}oGTeD87h%VE|**_
61182 ze?LpJO0}h>rKVDAsjalBw5_zew5Rk~>50-)rTwMnOD~iTmyVQPDZN&DqjbD<s&uCG
61183 zUg=yJE%Pc{Qsz_UUlvrhqAa9rZQ1&=jb-w(s4`Vqd|6UidRb0cVVSPXTvlDyP-ZXd
61184 zC_7Ykq^!5>WZCJmvt<Ki7t4gQOJ$>F*UN5}O_WWS-7ULcHm{TE7VDPke02f3<+_!+
61185 z)w)pK2HhrIgifK0)g|bXbsAlsu2^T#S#-6!MqP`}p*yTQsynXh)1A?s(+%o|bdv6}
61189 zIB7U-IBOU%Tr>!VONLRyb;C`=gkjon*Kpr3Z<HAq8<!e=jRD5x#+Am^#!%x1<0fN-
61190 zQDKZVCK!{A8e^WZ*k~|XjJ3u_V~f#YJZwB_JZ|hWo-v*?4jPAylJT<fs&UMC+c;^w
61192 z+tgz^W;$UyW$HJbH(f9dn?_7mOxH{|Oyj00(~Rk!X|9}>dzCLK_bK-;4=P_#9#X!x
61193 ze0}-Ga(Q`FxvD(AJgGdrJg2;{Tvu)`uP$#Wx0iR6A1Xgm-dldM{B-%*@`3V;<wE(T
61195 zIl-K4)|m6m#b$%qVy-nenp?~c^I`K*^Ko;Z`HcCTdC)v$mduyUSIuMQ+vZ909rLXD
61197 zSM*dIt2j|{s-nN*e8q)|;fj%pD;3u&Zd8m{OjXQO+^d+gP>YvkiN(j_Zwa!ju!LCF
61199 z*DW_K6P9VqUCVvTe5I^%aplrV-^zf><&`TdS67BsZm8T;8BwXIjIB(lOs>>a=2aF~
61202 zkM)@Kg!PoQ-+JD9!8&Xmv0kxWv)-_dTc@lu)_c~uDq7`LwWP|Y%D*b8YDHB@)!M4{
61203 zRU511RZ&%{s`#p;s`RRys=_K=mAR_As-enW)lqe*>PS^@)yb;URcEUPsxDRuRhOzp
61204 ztFBkwteU8ruDV-wziPf(R=v1-X|->4K=tzKmDQ`OL#sDbZ>o-{R#eAUCsZd_YpV0A
61205 zi>nRQmg?H-#_E=8NA=<Aqt(Z&`>M}WpQ|3M9;%kAFIQi!9;?1xJz0IHdbavO4Oin?
61207 zHElKBH9a-QYEIOgs_CyeUvr^mxMrm0O3k&J8#UuKQ#CU+_iE;9X{}f7l3Jfy|JtD1
61209 zy;v*MUaB3fy<U5>cA|E=_HOO{+W9(J-Qv2Xb-r~0b<68k)~&7!t=mwysV<^UQ5Rd6
61212 zdThsRCv2x|{kHSA3$|g~i0z8)n(c;d+%{#KvE8%H)l-iAi;|o9`uDTmtA0tnPrZMA
61213 zQ2mPfkovXt>+3hx%j=`+RrT@pN%iUVIrWA0x_Wbcb$vs<y}qOVQ2mkm-ujdEr|Zww
61214 z57b|*7wRw7kJewWzga&~KV5&f{(k*@gREh3!_o%dhJc3U4J#W~H-t89XxP*c(V%FE
61216 zPQz@&gMHjS&wbwemhJP~7q~BY->Q9U_O06&wl92N<UZv-^}fV?sr$0_Y4?@xGwrkP
61217 zv+Zlz*S4>FU(dc{`%dgTwXc8Q`F$7m4euM-cV*wTeK+=v@0;2;v+v%%xklRP)wrb5
61218 zr_sMLsBuMONaNbZ^^F@F<&9B|s>b-nq{j5doW{aNU8A|Ny0M|r-q_K2sPRZ+Z{x|v
61219 z(~V~v2RQQ2Io!<Gzn_g48->P8jiZg%8*esFG)_0(ZM@$&zhAb0@&2XzefJ0KU%r3k
61221 z5AGk@FYUj)|LXp+{kQi|?!U8tcK?GWuF12>yJ=aIUsGUHaMP-$HBIZ9!kWUHBAb*=
61223 znrXV%G<Sd=@H(*MfX@N{13?E?90)nE_Q3iB8xP12L>*8ah(C~YApJnjfx-j21LgzO
61224 z2O1984|E(jbl}K=-UBBOoIY^&z`%iv2ZRHc4vZeSe&FVTi38II?jE>*VBRjXFSakW
61225 z``QES%k3-etL>ro4faj;2)n`_YfrEz+cow)d$HZXkssD_GhhFH+Aa24d!xO@?yw)W
61228 zt@%dtc=J^AO!K|wxfa^u)v~0;r^UY|sAWY<NXy!m^(`A)<SkJxs+Rbcq?YuSoR-2C
61229 zU5mM;x}~AT-qO)>sO3mYZ_CM+(=BIP23jt*2rZXdMq948+-#X>nQpn;a=&H1Ro1$=
61231 zTl-qiw4Q4nY#nNqS}(U=Z5?a9-8$KNr**dVK^xcR+2-B0tj(`2ur0W4Rofbl{8JA%
61232 z^Y!m%+q$-}w(z#dHf5W-EwL@NEvrr2R@!E2v$omVn%dghy4!l%j<ua=JJr_TcE0UG
61238 zcaC&k>Aco?qjS7-iX%Tb%gucK``J0ud9QQMK^<O>B@Q2lzaz-8!V%(F>sasD=#V?2
61239 z94be=Bgv8O$Z-@pbPltl+R@;!J31VP97i0zj+2hlj<b#d$3=(Wxa1ghTzA}bOgN?;
61241 zwRAbU4tE{xI^NaSb*AfF*I?IBm(+E+>uT3n*X^#!t~*_`T@SjsZqIJ-?q%J6-GSY~
61242 z-K)CSbg%0U>kjXZ>{fQGyA!)pyR*8r-KE{8Zfm!#yQ#aaySuxm`&jph?o-|U-RHY6
61245 zJ9wOT9p5j+{7W&vKjx2e%TFF@!F<$p{p}-|ZzEoxaw|tR;@{GJM2G20tnVzQn_bt}
61246 zN3cBB|Hp7lzvMa&AI0<tEZ>6V6ENQe_j12(!29ud|2)=@?f-Ed-dE%O{;%9$>$-m9
61248 z7w{UN=Z))F|3#cv*Z6Z6*JD39Ot-j>)2@DTBMo@$b{*ey{Z1_R`zg$yj`@$f<tJVf
61250 z9d<7_g7e^o_W64U){o;e-GTS}@P5lz?&EdXAm+n%f3@&@O_+}T`+bgkIc%2%<8y``
61251 z!s8j&QHk^C)r<Ke@P0qmlkV2;!~6KWBpB^2Y+>B8@cNwVxZ?rN>#*y1VT0><?K-9p
61252 zVLQI~T!DCW**W*F0rO+N_i)~(sat;HwGs2-`hE`i^4UG?*AlmKBy0ng3&wPp-E-0e
61253 zrmw>Ks<A%g)@S%U*J`mpYcL(#lNRR53-jsR%SqTjFKq8xA=Z!f@fq^Y3x9|FTFzJQ
61255 z=OxeK`h4An*WGxHM}>=1+(n#^!7$hHL$tSx-q;RuKs<{_w4Zm7+xR>5+`D%%f3jPC
61257 zV^J#RQ@WQEaa}IL{(l(hx?Ya!`!nS5BCP+z@UPs*^|--|`C_qN9N*6{|048P9|pLW
61259 zUaq2FyMTUj3i&SJ_z5^(zeG-6#c^NY%hY+d{KOO2@6|l)2bQ10=U!guR*rlZx#2mA
61261 zdg6My8t|3-$m#E*zxG64et`aS3jf~|PxM#6yXRgG+a=H5z<MyQ_%6l^k(ln;hxxAJ
61263 z?{FOq;`NlTTYln+@zn3+*blU~sl|AG#H}1zkMWad2&QA4I*j(?iCp{L5-g8)Ife7`
61264 zJB)7!(JxFb!}7>WPrUy->RxUb`QwS#qsZlFah*(|Kl4Oxj^1;>|0%|M>(S49V*SGl
61267 zo(a0-R*t-e@so!Q)6xIFk6iU|#bw;TPhxrW-=8Ay{vG4n0gU56MgF{x?R%iT|NEGG
61268 zx%Y9rJhJdUuCE|0|0(j^LxcA(f8{><uh)DqANr{wjQ>AHf8~Mx>fcYgm-AQ{58QXH
61269 zL!P~c{(lSd)&t}1Ahf&J7GpiD-P(P4AD@>5;rOjXI}gJCyoUC-1=r2n=+Do}v7hMI
61270 z-o|;Jyp7L=>wXCLqi-$D3&vk>V||mC-0~9{^5n{W*Yz{#KPE5Y^}Jg-vJT@68P3-v
61272 zvH`q*@+<eT{#Wl}KJ-KHp}kC^oy*W)U9q{B!*<Ct7%#kv`{`Gavzw7`GTi4rgZA?(
61273 z?xQA~+}eG3AD@>zgZ|`I++RL}^}RZc_2d5d7r6fVk?X(3`TGUN-;>C@i?|Li;&}ZW
61275 z?~}_h9p~p9_G=RD_ad$@nIGnBb1!!h*N+VC{<k>3foR{83-;}U_ibOf?^+Ke6uBY8
61276 zb$b!l%OtKt8TzZ=CcBrzc1a+{8KG!zp)UI--$#3qd1F4@7lfice=_0L?!)`|yd)6g
61278 zPk4-{E@K=Ni1zUb#^Hg<ZskZQ#!tK*(~(2(;&}24?V^1IqP>2C{_HZww{Ky*_z6De
61281 z=kYAs?`h=4Z_uxu#eMb!^5Pxj@;k`;f5Uy`Z(Q$fxSylnp1AFnpHLjH-{5>djpILo
61283 zQCx4oK|lU9@@WF+iK0LH&HAt0$91;Wj`?tW-@*OP1kMjdfAyPX?&Yvu5`gjLTIBs&
61285 z$LooO{R8@yL0td;irlz_^U;rS|HMYO{DdM;F5x~n0R7Gc?xz9<-O7=*7(Y>bA2NaQ
61288 z*6zdm_`J^V%5>$&{bd01`(@-!82b4$xX$|)J}1EEJA>=~W1PQVqM!aHj@M6d9)68}
61289 z<_x}{`uMP0enPPPukpR(Q@CC~#`m;O-Ek{N)*#2oLi^ax0P=)j{lCV2*Hbv&AEO`n
61290 zHS+EZz6bmmpKky;PSBr>+;=ZGfczn7_ahh=K85`H7}pWOxN2njEB9-$|M(t@pg$VG
61291 z{mRG4CxYA>8Fnv+?UJW({@0-WtZ}UivH{mW!SB>~3ik(VaQ%H8@7C_a`}n-%DYU0G
61292 zxW9Y~+gpQv2H#V0r*VEx;{I#|{n}}a??1-4=xvMx-p086&4teeFdjRNpNEX!bIVWg
61297 z-O7>G7(a37-^bD4oJar1VVomjoa~SOdwd}s{q`x`Ka6AjzgQS|j5DP^_j12j7;hX8
61299 zfW!BqPvZXIMO-iAOWfLhcpsmaJc;)EB696XeBKu^URj6h<EQBVkK_Ak5!dBUF^>KS
61300 z?fe|RS2>6A-H$Qu6fym$Xa^sia?k(8!si|s*F1^seT4J=q}8n)d9fPH;rr2#a36mT
61301 z{l*u_B@sVwd=l;LBeYKu{Y>9AOviqnLqG5Z)-N`=mph03`U3kSVjTA*^6Mj9KVRVI
61302 zDx&!-_i_D&U_AW=zLz_P_WBX}r7zH5iE6iU3+=kTo7q_p#*HC3Z?EG1?hA|u{m`$5
61305 z!uP`hw)-Zo!;jEky@mD6<M;`w?&aRXeDi3>0>0<-L%!TbKRAz{s|f0^+{bw11>8T(
61307 z{E$B{;QrDNdG!MBM_$1={U_+(j^XESAE00R3HpKC$hC!i=~-;&Ulu+G!uJC|!F6#v
61309 zxX-_hanjF`1M~Pf_y-%@%l#bfbROpke;<fEf%9-1+nvY#%Ll8!av$G!ty-uD<Eo!y
61312 z<BRrp3;o*@OWewlRp@s=$M-C^(C+)uu0BWp4`UqUi|g(d#tp+bE<Z+Y-NN?!F>d+1
61313 z5%c-Dm+MFVe2#u(82zy?KJP6&evbR`VXv>;$M=cPqd)l^$MI*#m0M_!pQFEe|F&DX
61315 zapdh0{9ONi^lQiQ{opNpukbS*ub-j){1C_SeH`cG3;hao&;L2{<bAYLUtE8;aG&hE
61316 z(XAX=iTl7g<kKyj-!o`OpCjLgaKG(~?cG}Vd<Dz>2<y3p_H_pBdJgv=LwDTEok9N0
61318 zA}>~BoI8h~|2~fK?n>Mj-n{PC?!x_r=OvHh`df+n%f~UkT#0_~MdyBxaJN7|aw>hv
61319 zspN6cN=PYz^8!%#ZbvHTT;E7X49>q%Fvnko>%Tg`{g4;=-#Nc=j-3e)&pvo~Hq8I_
61322 z<d7nV6gi}9fs`$fvISBiASD7)A|Pceq-=$ht&kE0DN&FT1u5GhWjmy7hm;sdiGh?D
61323 zNKrzH5>l9z=$(-Y&)p&&<W1)pd7O<<4xB9~&v`ig8&7x93<`71zt8ddBl=7FF^=k^
61325 zwCRs<)DWpZ&NN<silyApPqXtWBeOU?TYY-h3VoUjB=3?>T$aQy!C7}&iKpIXSZla!
61327 zlcoIyu4UYHX5U|s$5>t6hF-%N1B@7XkAIYReu}h+WRn6?Nt*dkejWchr1-Hhbbe>j
61328 zIXdML#4R#}u#%UI%UF+A816z}efU5aCok7HkybK5!}-@>yu7&2xIeMg@PPXpH%DF}
61329 zGpxrKxy6QABQ-8H1{y<*8;p_0c%#O6j^m9<#yq2$)hXkrcs4ftUuBCp=Qm)bF-@1{
61330 zv--S^ZN_89e&ew5nsLfFXIf$kGG>|9nw(>|7@jtpSlJW5<a}n{2cCL~^NCom-XsIg
61334 zo9rMRZ06o%mhR;0qbxOx%~K&MW6xhl8p(drL>D{1Q_lH)a?X(>OIb^KY-Bq4CwM>J
61337 z^B&GP%7<IRJ<2WR{J8*bITy@*hkKD*&ArZT<RZBpvLM-Q*@WybvRRLK__pKkBf}Ix
61339 z=lqV@rK|=@9tRBpT@CsY=o-*G(0tHJ&}Pt9&<@ZyK?gtwK}VfRp8<v1*cx%_F3=3n
61343 zpmT7S10|poGy!xsXd>ty&?L~kpvj;qpsAo~&Nali#nug5A*-G5%bjn`**axD-uZp1
61346 zCWq-5%Xiu2SKh<C%^kyiBQ*>dh7CuI-o|31)o5q*3^i^v9yXp}`A!&TjPu48cK>q8
61349 z#@P<b=f&~_=%)-T3~P*j`g8h=`g#3`aRqyVaAUW#oUzx)^676HR~pwj?>bB9NAy?q
61350 zrwjo`xiQw5YAkg2!)P%&-zxaPJi2DlIo7*iwExjq`<RXzO~&h{D1)D2xqeWu(O=Pz
61353 zU(7FY#t;0rzT|Bl|2s={+2|;<yNs_`CiC~eE)LkW1bFo*@XEO}31Sh*%VZbHfwmh-
61357 zs-1Ap!x%pQccVB8Yxm8CF{HD9Z!ur`9_C>F+x!atJI;{?Px}<kjC+j_XXGEQbr(NY
61358 zKaAs?HTV*Li1z*wjSiEOtk$!@q<8)ym2S~Vn186-V>`r(e^0mndfNZ*-Ua>xHva!B
61360 z9n}XJOvaFMuX3ScaYe1Atum-GuX51pql?vD&|fn2n3k8XH+NS=SY(!KI$vE5+fU6H
61362 zjIW`Fc%x*zXX-Ou=QftvbjS1$45v&@<xysPh0L<da?CPaxvBDA*{CjDuQCK0drjxf
61363 zerBPf!ID^ZsBDV0P|Cd6mGYbB*oyFq5nZBgfbHW(O;hC-U8(M>A<OWf+`s&kj?*!!
61364 z8k$U8Szp-&*6$GgQvDkJS^YJm!e}zBHZgC{Jqf&7#C^<uytqmB^DXWk=lsiZf92*F
61366 zPL4bZ?Dz)lr~NF&Ne~JIq5Nz7Yn;r(-@~8dfhLr#u<dN8NjZNuyGxz#G@NfW9!4E&
61369 zW9Lycik)w#+u6B-vfT?+Qnq`cF*Js09No#ZfEKX371YAiN~>6ko!Z&?Khb|;Gy5Ei
61370 z1S$U={yQuxT*a?q=P&bXp-*3)*+tIpKK@cv=^VLC!eV5$JI-bn<{HHUQh>fo_NDP7
61372 zab6^tu-!G|<;$$SU1S&QL5}lH4fN?7%+D9H)zC;9neDfec9z~p*v^?T^=;PU3*-Vj
61374 z&RDErIc?O&)=($yWchzcf5^_y(R1tx2dUF{PdR@FQ1*rF3-&xgKx@Li@fA+0S#<Pe
61375 z>MnRdfsN+`8_k-p`0Rhk&cFBDe5h=N>{Ui*na47h5BGSTjphm<iEEuuXFr^80f8RO
61379 ztSGFgt>~^eSut2~rDCGufvLr^#IoG7&Jtxwwv<{LEQc+pEEg?TEmM~H%4L-+DmPRr
61380 zE7L0tl}(jLD$i67S6;8YW2IJK>niI;YpgZPYPPmmk6F)JCF>3A-73#2|Ekqh;Z^Zf
61381 zc~#b`j;iBT=c_JN-LAS<y|_BCdTn(?bz*g4b!~Nb^~vhN>MPX~)emZx)GV)AR})o}
61382 zTvJ-pP;<EERL#Yjt2I+K^R>%rSJZB(Ro1508fu$rkJO&29j?7zd#8@p`PQwf+gKM{
61383 zmsMx3YpFX{ceYNdyHR)7=4tb{t+s{R;%#|0tF6O!+;-k}$#&azuYPfTAhVX&z#lo^
61388 zpld*123-sK3h1k#>p{N@x&br{bR+2ZK)(+f4!Rjs4!Q+&D`*txc2EWA4p0?n3}`H<
61389 z8gwUUJm@aa1kl}}iJ(cKdqI;yQ$SNe^FZ@Kt3azkYe4Hk+d(@(J3$?w-Jpj+{|WSm
61390 zphrRf1+*9RN1(?+e++s8^e3PvLEi@bCFnb#?}EMu`aY-tIs$qLbQJVM&}*RALH{@C
61391 z80h~2{R8MN&~eaDK&L>bL1#c`LH`5v9_W99-Ut0F=-)u+KtBil!l{%4C7=}a8=&6=
61394 zpv|CdpkQMZY>a}9QLr)E1qzl%4}yZd(ZirW00k?eeV{)D{Ws8`fu03@3-lc5FF?<O
61396 z<-tyPAQkTc>Iu3C)C&{{#xDj1i{iaO!LE3)D<15M2fO0Iu6VF39_&g6mMjD7l|j26
61399 zSpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?J`2ES0r)Hc
61400 zp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ
61402 z0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu
61403 z0`OS?J`2ES0r)Hcp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyY
61405 z&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq
61407 zfX@Q(SpYr@z-IyYEC8Pc;IjaH7J$zJ@L2#p3&3Xq_$&aQ1>my)d=`Mu0`OS?J`2ES
61408 z0r)Hcp9SEv0DKmJ&jRpS06q)AX94&u0G|cmvjBV+fX@Q(SpYr@z-IyYEC8Pc;IjaH
61410 zX94&u0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gt
61411 zd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_d
61412 zz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa
61413 z2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>t
61414 zi@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_T
61415 zvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!R
61416 zK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ
61417 z;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y
61418 z1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gS
61419 zMc}gtd=`PvBJf!RK8wI-5%??upGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlF
61420 zSp+_dz-JNoECQcJ;IjyP7J<(q@L2>ti@;|Q_$&gSMc}gtd=`PvBJf!RK8wI-5%??u
61421 zpGDxa2z(ZS&m!<y1U`$vXA$@;0-r_Tvj}_^fzKlFSp+_dz-JNoECQcJ;IjyP7J<(q
61423 z0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE
61424 z67X39K1;x73HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~g
61425 zECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x73HU4lpC#b41bmi&
61426 z&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd
61428 zfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE67X39K1;x7
61429 z3HU4lpC#b41bmi&&l2!i0zON?X9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmL
61431 zX9@T$0iPw{vjlvWfX@=}Spq&wz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9J
61433 zz-I~gECHV-;IjmLmVnO^@L2*rOTcFd_$&dRCE&9Je3pRE{||Zh9~ae{-wD3Xf#M?9
61437 z&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k%)w_4
61438 zK6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ
61440 z;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k%)w_4K6CJy
61441 zgU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)
61443 zIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6nS;+9eCFUY2cJ3k%)w_4K6CJygU=j%
61444 z=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6kJ_{_m)4nA}6
61445 znS;+9eCFUY2cJ3k%)w_4K6CJygU=j%=HN32pE>x<!DkLWbMTpi&m4T_;4=rGIrz-M
61447 zpE>x<!DkLWbMTpi&m4T_;4=rGIrz-MXAVAd@R@_p9DL^BGY6k}_{_s+9zOH%nTO9j
61458 z_{_s+9zOH%nTO9jeCFXZ51)DX%)@6MKJ)OIhtE8G=HW9Bp9T0Vz-IwI3-DQh&jNfF
61460 zfX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@
61461 z0X_@xS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq
61463 z7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@x
61464 zS%A+1d=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$
61466 zp9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq3_$<I@0X_@xS%A+1
61467 zd=}ud0G|c;EWl?0J`3<!fX@Pa7T~i0p9T0Vz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7
61469 zz-IwI3-DQh&jNfF;Ijaq1^6t$X8}G7@L7P*0(=(WvjCq(_$<O_5k8CXS%l9bd=}xe
61481 zCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xfg3l6s
61482 zmf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2k
61484 zX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xfg3l6smf*7l
61485 zpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|J
61487 z@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|1fM1NEWu|9K1=Xfg3l6smf*7lpC$M#
61488 z!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm?d_$<L^2|i2kS%S|Je3sy|
61489 z1fM1NEWu|9K1=Xfg3l6smf*7lpC$M#!Dk6ROYm8O&k}r=;IjmuCHO4CX9+$_@L7V-
61491 zOYm8O&k}r=;IjmuCHO4CX9+$_@L7V-5`326vjm@I_$<R`89vMKS%%Lte3s#}44-BA
61492 zEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZd
61493 zvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-
61494 z&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9R
61495 zKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ
61496 z_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L
61497 z;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~
61498 zhR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`
61499 z89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupJn(g!)F;j%kWu-&oX?L;j;{%
61500 zW%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMKS%%Lte3s#}44-BAEW>9RKFjb~hR-s5
61501 zmf^DupJn(g!)F;j%kWu-&oX?L;j;{%W%w+^XBj@r@L7h>GJKZdvkaeQ_$<R`89vMK
61502 zS%%Lte3s#}44-BAEW>9RKFjb~hR-s5mf^DupB4D5z-I+MEAUx?&kB52;Ijgs75J>c
61503 zX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&
61504 zpB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?A
61505 zd{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh
61506 z@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5
61507 zz-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI
61508 z0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+
61509 z3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+M
61510 zEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@JvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5
61511 ztiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?&kB52;Ijgs75J>cX9Yeh@L7S+3Vc@J
61512 zvjU$L_^iNZ1wJeAS%J?Ad{*GI0-qK5tiWdlJ}dB9fzJwjR^YP&pB4D5z-I+MEAUx?
61524 zd{*JJ3ZGT@tiop%KCAFqh0iK{R^hV>pEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U
61526 z!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz
61527 z2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;
61529 zYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(f
61530 ztifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^
61532 z&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v_^iQa4L)n|S%c3SeAeKz2A?(ftifju
61533 zK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz;IjswHTbN-XAM4U@L7Y;8hqB^vj(3v
61534 z_^iQa4L)n|S%c3SeAeKz2A?(ftifjuK5Ot<gU=d#*5I=SpEdZb!DkIVYw%fv&l-Hz
61535 z;IjswHTbN-XAM4U@L7Y;8hqB^vj(4a_^iWc9X{*uS%=R$eAeN!4xe@Stixv=KI`yV
61546 z4xe@Stixv=KI`yVhtE2E*5R`bpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR
61547 z27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K
61548 z8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{
61549 zY`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)
61550 zvjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH
61551 z&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&
61552 zJ{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC
61553 z_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p
61554 z;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1a
61555 zfX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr4ft%pX9GSP@Y#UR27ET)vjLwC_-w#u
61556 z13nw@*?`Xmd^X^-0iO-{Y`|v&J{$1afX@beHsG@XpAGnIz-I$K8}QkH&jx%p;Ijdr
61559 znPFy_Z2OzcZ#w4A4*b6{*U9}G%nirv*_T;nl9?p)JIoz2zsvkFng4s{-;*_;Fi*(b
61560 zJTG<<^B2rtko-CGS7dIUt(9fhnAezR*Rf=5>@IefdG$1QpCbw9%TB_XvXgL*>?E8W
61561 zI|*mUPGWzJ{Wa?x*-1D@b`pD(JxY>eteea|Y#EtXuvKJU!`6^_kPVW#dG72aHo+#y
61564 z@$7lnf5G`RGXHhwubWq#W4_|}W5*lEM<$6`Vx3L;r<qmE&oV#HY-WDJKC|>MG25B1
61566 zG3JL%4wJ{^GX+c`<HFggJD4!j$@DPCnGt4`Il-J{PBH(AIm7(V%vt7tVa_xED|3PQ
61567 zZRR5LJIpxqZ<zms`6KHZ2KN}A5gDENznBNiH1ns-L*_p)f5!Yr<|*@+%nRlv^P2e^
61568 z<_+_=%v<K~n0L(IGyj?S!2B2HA6W9x6X-u>KVz4%UtyQCUuDzTpJG?A|A<}5{xrLa
61570 zwt;PA18fu9%!b)G+s_WN!|ZW(gdJs1u>XQR$^IsLiXCJBCHp(<CH8mO-)H}Ty~h3_
61572 z<0RI6LX25LZ26R!@|k_Dlk}vYO5T|KbIF^Me?ED0@-HNBN&dy;Uryec{Eg&Y$=^)Q
61574 zyPV&2W;nm)-0l3fbC2^o&b`j>I?ZeMy(Z6)#hxDvpBw+*Jv09MpBMlCdse*tuX)Ug
61578 znTuro-(h}-tUr$P%$w)*Phx(T`CYR9?=ine*7<$r_en1k%mmr$512o2EMcxPSIJiY
61582 z-2WMNgCmXoS#~3-ZXxf4OROs`nAayrBG2|;GCzH?-z05*i~Sa9|J&@h$$j&>1xe&t
61584 zUil!2{UJ-98*DC{ORD*7KG~{}EhOu^SQlB-ye>i#Tf&x*bxPS%vW}PalF?SOm1NCo
61585 z@=lw^*0QzaK6&+#HXGOm^V2PP?@eLbSn`>IyaR_w9%jR2-o<t~KC`Z}(8KnapLE$c
61586 z$p_eBGM~N5gn9LaB=TDQ7i8PtVt<RY^Do(dMdq{DV>rv6C0m_i&ynhR_B_ciuouX-
61589 z&fl<qL$<|P<;iCU@;qVRvTw<F{*L`SlD}i$kv9LHe5P<FB_}15xijfAM=Fsc-SG+e
61592 z`HLjq>fGvB;`|!<oZ=+!NEsw|JKf|-{s32-{3@<|JCgL+VO|OE3Fd!_`E$(wBl%=B
61594 zU(Ve#uW#x&={V*1Eyq~Wg`}rso7wG?$Zb2-S`u1gaC2aqt<5c^%wBsJOXl@s>7`_A
61595 zIT_2Wz1`QW_U2msnzjBXSo#%fDaBf1982uper-YDhw(EBYqL~K$yUqrS(4Qgi}hLa
61596 z%Ek+_WL%3g+1e(VYGrQp^a%GY7~wv9-{~cGk)>Z<u-)9!R~IbJw(`$0t|aRbF!M(H
61597 zxX+ExX}6qgZJTBvnIDk(QhUj~#{6gYQa+h~YA@yDNF>>h{%l_<cH4}-|FcJp#aPX2
61599 z_gYJ-So)5&v<yp`*3xn;eRsj5ma(9RGV8g_eqnib?NV!PCzi~s%`kY~XWNgqc?5Tn
61602 ztmj)~J>MehE!IcfBHPw2vYvmD_56#hSHH-5^^2@my~uji_OUmQVu{1NX1UYejv?!?
61603 z_CCzN?#;A%!MaI!4CdCKH<q<p&9>KeI_6&6v&V-eKa<d!)4HW#-MM2wTd(;M+t+@{
61604 z_P#IK-uETj*HGIpR<HY#_Upc+egBti@BfnR>%V0C`Y+kO`b)O2rnXO6(1LTpBc4Ql
61605 zCZm;4?6qdsOZmc)OeQ~_SZ0`?ahQ^ld(P~+d(3+K-U@Q>2=4u3``%Z`z3<uC?7eS6
61606 z8uOX?pB8L8U&TGk2lL)v+xPy$zV|nC+a~|H-O5)X&0N3Vwp-p~k6<sh{d=foX8*)t
61607 zz8jeL*4Xz}J1mi%-=DjO-tz3;%zG@3Mh>Z&*UM&cMC>ITmH8#J#UGNT16cF>^pfSC
61608 zY2Lhv4#zPp{k6698)#*A?-=r~KiB)OJIt$c&-HFEp?7=9YGtm6zo3__N0e^m;DT1{
61610 zf+L%|pv`Ym`)w^*&kw7Wq;Jqm=>2;OdjH;n-oLk?_wOxuT)(&AaWy}6n8z!L>V5VI
61611 zCRxYEfzLYT5l*s>50zNQh)SsE2ZJle&widraj@2-y2~;9N!t7rv@n~0Cz;QZzL3p+
61616 z-A|}7%svi3>DqH+{`|f<$<LHU+fM$8+n(FUpRDbqFI{`#<DWvd{!!y_;!#dru%C0s
61617 z<tJ%>_IdH++V_0n(RBXU^>Y?Ek}3EdcJa}qU=Ke3NU=Y53(q3Q-}z&=$oaxinteW`
61619 zYYM(s`0-n&{)nDu_c-lKM{aJv1S9x#kv3+>|KHon+*rPBUzU)cX=r8fBbh>4|4B!(
61620 z1jl9RqNADHtDk&4KkC?|;G3<Vtd+Dc8BvPkv!8hH%(gxyKR-pApDo(ve5*g{2+h`(
61621 zlAlY_>ax$-@cDMX@?Sk#v)#|g&(Ey(7jOOlo%ZLxiJ1G=Zti>A`EQ#%j=66fXEV2z
61622 zB~w|Em3=~G-?y^VMY5DdGAEU}tZd05>(Sqx6k6HrnCWl7=El6#9`iTsF)y{p{0)1|
61623 zOYJ_sVUKxXma<6Zq%xP4Em>qehRO=9Y<A3_*kjJHv-AZSOReW#kfkrklBxBI7G&uQ
61624 zvQMb>zP}(#Uy!9PvR>*U>!mERUdkftIjQwr3$pYD*^))tTe3)d47Fb2f-HSOHutG|
61625 z?wB65k6*HV{0`d3D%n0(2kqmMZ1;Q6J_ZZ3ltnTpmAR~J$s+5`jxWg`UzR<-Bzt^W
61626 z_V|+Q@nzZLOS0R`vd6bDOIajyQkl!jmMpR!LuG|lHaq6|Z@-J}F)y*lTx^edi9P0G
61628 zuRZ34S;``rlgeCHwq%j@7%D5Yve_}G+GGBXJ?2z<%-^xcoNABxJNB4U?LNL^k9lF1
61636 zWrbEYJ7)Ut-E(99sy*iU&&pr5$2|X8`Kxvx^PiO$W+{tgPAYRb=+DXv*JG$`_Omj+
61638 z6SLogj!v8ipU6D1nJhJ1$%PX&C$^nfMV9)lWb8!ViM1!pZ?1c-Byl3^#M03>WGQSV
61639 zkrTT{-;X{aOPy8{II(f``KU~mTCBu-V#VnF(OYDx!%7NHu%mZIFOj97m1K{;9-SB+
61641 zmn?N#N!n;PX?-hMYM)I;K92fFcZ{wfOED{%8Fi7i(#TSul{_0gG`f7`9a#!l$@J*%
61644 z9yvUcMY0YndrsOqG_reSC&_|VHci^f7}+$ko@A|7#*?--j;t6lf6s2SvRkCB^byDL
61646 z<KrZ2x3Xr^*5%`;kDnx2%*wo^t+C^=;}MeeSy>)wD|)=)xcQgikd+-GZTXM8j^~i9
61647 z$IAASwhE3PJieb~=Ho$LgTpsSTUp1q504z*L)K}w((}j9AKyo|-*J3Bl_p3}YmYA-
61648 zE<K(?rOn6pA5T5b4!<3KO{L|>w++t>PY-7dKO<?sm1ZA5IQ;VX>fwjOQ&hV9c=GVw
61649 z;j6>ThA&g;#^G1PSBA%j&kUcU(v`yxhR22@Lr;biB<;0Q$MBos6T_3k-NXL*bm+zK
61651 z8a_hCkvvo|^pQ#<!+VAuL+^)P4Lzq)|L~@v7engM_Mt~4?X=Ro;eA6-htr4jp-C#;
61653 z)5M#h^FyUWM-rEZ4pHf&p~TSPp{$`jL%XO{9BLlQ7+Rl*3~eQ8hm~F*Ix)0k$UU@S
61654 zD4j~r4ILa>miUl3ns`g414BC#?-DbKXNkvD+BUQ<@gy;o*qpde(x8==4((1n97;>@
61657 zqtZ)>eTkI8H-m=;Us37F#MZ&rgD(aj4L+dKXkyji^x)*+`azMTaVzyDb`0tXcJR*N
61658 z1eN9tz8t(fczWRN;7KaoH+X;W)ZoZqbTCY%I|gqLMh3kDQ-cALMyz!0;KRYT!STVW
61660 zJ-A|!rP6DIy9YiFyd2m+@Qg~&4sINHKJaAV{(wxS!-LBQ)PWlVs|W6qwA)I9gIfmp
61662 z44fk^Wm9STzyN7wcmK(Oo%3n`hk?Mru7T|X8wb`=>B|Av!1{r-e(%6alE$p`{y^Kn
61664 zq5n?*O#jvXb5vT>|FHi||3Lg%f0Rm(_22D}^+);x{XQx^(0`@h-=7n|(O*i^kd<!l
61665 z=liSr$NKa7v#4}Ue|P`>{vGi||5hqZA^mOZ-`u~pf7N^%e@psX-Ot9|{mV$&W2KM#
61667 zS`)t+e-XbFAEVOdxE?<l@9ujP4^gQ*ek&f12jeyIaw{dDMf;}X(|r?t6Y-02Z~Pcp
61668 zui45c<HPan_}+L%-&lM<m5-CwGvb^2B7KqgdMYO$GUD6guK4=+n)q@m55^CWF(>!E
61669 z>&xz&p>lV8Ti;CI%f5`h$9>aQPCjM#W%a#?uj-rboBjNg>=?Ax-xc59m)4gScl1s6
61671 zo$Yh?<@FtojrV0y`R%?K8PmSlNZ+o$?N(048N1k*+2`xq-nSZ`$?S2)PWHuP?wGsp
61673 z*p1lL*u@wdJ4fYfV~=C!VyAmw#D-&WD>uiP5*v%%i^XGpd``5-+50B;r1wVejo6i#
61674 zKjtFqhpqf!>{Ki#b|9A7doFf}%J0O&vCP=E-gs|3wwcN=k@hoU<+07N4Y5^Jej;`_
61675 zmL6LgbM)r)zNhlG*sk99y>EImd!P3{v2rrbUQh2#Y+dh@-YI-`ogZg*ETcEQH$9fx
61676 zJJoxgtlw$n8NIK2CwkBJjz!=1UZC>zy$^cFdSlTi(I>qTDo^X3=^g34-5cp`>-Ej&
61677 z(V5<hy<XD$vFJo^HkD8J4)<pF9*mCl?(NO6ax%{7WN%h)GwFRjK2O`@j9%#-iF%{n
61680 zJsOOf&;O3uyytE7Y}6e+9L?$(j~=D+N6}a`E4r&^q-P|$oyzZ$_A{ft==SKA=sGID
61682 zb#!@;+G9TdgI0c|=UvZ@o{K%_df1-JRKC0CG0BFzUv$6diBtK8p7%XtJ@<OzJ>5Oc
61684 z8SD0U`+LfJHusp%|5huX=sDbz-s9+g-<{KwLgiyUyGZuDJCod=P<f;$yL+Z*UH6mj
61685 zhut!jdwWv5r@HTSU++%uo}lvV?$_ND-Iu!Fcc1MZvvPBs8QtUE54y*?Bl!Jnew>@S
61686 zXS$}krn+x;N4m}Df18yr@4ndW?LO9>-8Io&FrRn5>mDY3?Cl!s8tcxW^2en8tnOyg
61687 z&yMa*RDQ49)xExZP51IHZ+9A%U+F&3oz|V)mEHBOYsSjSIJ-`Dv)$XeX1b>FJEJ|$
61688 zu4s2w*ZQvY-K)B$yUgc*+{$aZ9bJ=MSGvZ#(z>ou`O&WDBs&$EiOh73Q2Cy2w(DG%
61690 zk2CVL>s%xl33mCqws)D&|A>|IUB|jsccpf*5qH-zD!<ybmt?OaS>*PD%1?LYMBaC8
61694 zlHIwvb8}=}=aWwJ`QL5ju}Es?ROj{1iO%%STU74rd`+^m;rHS9onusfERxna-ua+&
61695 ztn)-?jLP?R-tLTawsrc#Q=MKa-_&`r)7$9@PjnvZ%(ilKoXb1iox`2kof-HJ!X9V%
61698 zOo!$0NZ5S-$E<u`_<A@PE)TmqCc`yUz9oD%><%C981EPlXHoeI(tb`j7S1AD?wZd#
61699 zK7@VY?PRNU9l`KwDt{V27G51*(cuoKhFL2o<LuzW>EXR$w&Ml9tFgz~L0a$F-myKr
61704 z@3HcN(Cttp<O_M*r$PZL-ygad@`jGJPqa^jvZ;J4Y2O_h4rPZ9hW1kV%20DCBeWy5
61705 zsXY=}KcBaM47oz<Lu=Z-q2-}8D<|V@e->IDIuJ^0pTYNR_Bh-1kh?vjJtMTOeWu-f
61706 z{#(C~wBHP^YM*Yu*FM?4zFnm9^C1VxuC%9-+c=dEgjToTXn)>5-hRIQ6qPr$%k3lW
61707 z1MT6q>GmL%=e1vN54Jb7O}3Y}yRF<D=e~A-``LDPdltU?n;mDWgK4`#TF+^ZwP&^O
61708 zY8z?aL)vJzDrehk+PAf@ZEJ2{MWzi@CE6Zs--zi*`^xs^RHdrDs(opDM%#zBw{82{
61709 zUQm_n_H}Jf+8(yaZBuQV+wN19UF|7t_u3}guC*;Ew<}a-ZQIMX%WW51-?p75(@Cn5
61711 z*{0vB+-&P^+uydMHPN<}Oc_+=T-)ik-I%;>TiP~Kl^E%FecR!-^tPp~Ic*NAQq#7x
61713 zgEPUI)>Ew`R>j=Yl-9GYV(V~gsI?j2kJ@`0H2aRWUTqDudV;rFy=0qStMZ_AtTnGS
61715 zD!$h3!8gHI!6(7p<o1xN9Bo|{oDS;2^}%~&nxrbbgCB#pgExYy<aRlD(W;O=CF@-a
61716 zJ`G+7o(Rr<=R3cr%Shj+gHyqQV6a6GhRHVJ*-Fcs;FX|1=xVtU%pp@LRhcF|mt#5^
61719 z2h&?7S{}EYYZ-2S(PF+9I<3m`mb)#nmO!)I;v-Yre5Ls<={bbyQcF!sIaPT``t`Jo
61720 zv>a(U)O@-nld4R%G`D25>}c84vc5UevX!b_Y$<42*Rr~0S#x=Fc}pr)Nwn;1NojF3
61721 zA8LL>rdL#@p=ERP%jRdzJIHOiS+^==Pn&a^pR_D*R-11(-@v!p_MSHHZ`ss*ula5B
61722 z_2vuBj%M?<&|+1#G(T)U(>&1htT{@i5vr0-dOm?^vbnoCG+$|YNBRvmUu^a^dzvPi
61723 zk5QFJ&57p2%~{QRns+swYTidx?ld<v?`+=IyrC)76lz{eRmRD<*EFwe@-(NBDVeGa
61726 zSJRQELxIapIaK9wQ@rV5)BdK6z=^<#rX5t}Zj-NRd()OcuxTBcR#TNrO-GwnHKhk!
61727 z0asH>lf$ZzJq?UBEo<5x_!xK@c!qEO?L7^InvMkCG_4Oj4XA-F0rRyGv?`va)WB5W
61728 zdLTV8L8e<&C5!ZY+nfTg0#^d#RApOJO5j3351b4PH$Dn<Q<as08-cb!Am9yn8t(*r
61731 zB|YEAl-zi?@itXC7+BMIv++garN#>lZyLv_%JxRNainpeG29qzm~M<xl~s+`8k-ya
61733 zX3}ap{yJjsX~Q+r_qxVIjmsN8HXLg-Ukhzk<#gkYhPMq*8}>9jBGU`15+Oam#I(BM
61734 zVZ(i@Qr@_|L2Yz2Og7wXNNc!4RSq>gYq;2OuHj_EaQ*9s(^O?g1K*Hnh&8m;-><*l
61736 z#@^F<mGr%{!PBs@VMTpSgZWyBTb1h#Sq)3;-`5|he^Y;?!9i8dG`JgBOxx;b>R(co
61739 z-v{f1^}Fjg`@8GS*Fwaq==HAp_4UjB-ug5$t)wb9>YM9VVcK7xTF+9Iv-Ji3kM&#p
61740 zul&#bJN*x-O0+)Rulq&+r2nRWjsG51sq(+`-|%1cU-Yx&c8;oK`yctw`p4>?`x9h}
61741 zQI%c(JN~FYTqo9v{sw=IRUv!oU+Zu4kCQfY{73LNt@%AoBYnI5!=%-{bz^?>wa_(N
61742 zseA1YkQO)Ah5hTuw1ukN_b2>YG3Ak#S5cLlq~8_(On-9S$GU@cGgRfAe^cFyx~Fvy
61743 z>eRaJb&se@%)hKouA8d6Rkw=Vu2Yqox;J&#>aO@c)}1HQ8LD!mZo2Mt-AUh5-_yEy
61744 zUAI*sds>%KH&S=IE>h>K^Wv{;_MX;lBz-s6U8pOsJL<bqXTBD?t;*86fx1I=yL~6?
61745 zc9JP`zT%syJ72dClfQ09-Bzmdfb_e$?pWRGx)nZmT`E<%Rkx?k;d}3U<$LZs;Cn+=
61746 z&ev`5J@Y;G>AtPxCQ_AnU7C;g-Sw^T-5}Fds^as#_D%RM)xNKN?>p-ovnpgyeMfy4
61747 zefNE*d{JK*fA_QZ)R#&6PWW#6LcXfnyFT-^&~8;W`Of(~zU<mdzJp{sMpc%Po^vq8
61749 zPpQfU-@4i-wGV4I*UDs?qACNvl-hf>leNpq?ON>>t3vj))?a(8_GRtm+S9cs@s~(@
61752 zYo3wmF;%%(yQbz*&4Zea<i^+BwJKy!YZ5hjEn9P^W}@a2{x)jwX-%+pb<K^M=QZOs
61753 zr>bXa%-2GnRdLmbHN!Qb>IXH=Wa_3W`$^AHOjm0HH9o4ch4fohGggyVbF}(=O%_#2
61756 z$f~qeKdrt{eWL1Bb%IP|RK-ntK8<OrdZ0Q=RSuATBh^=`{nb@fH>zD!Woz}x>SNW}
61757 z)%&aWR-LUrNL5ylp7vDls@_r+t%_D}oUc^9Cp~SbURzaFold5uROK=0DXluWDx2Ki
61759 zs^qHkWV%9CLZs&jbE<k=b*}0(Rq>F1PgUKmid97_<*EQx$*Q_kRZ~@7l~;AN@>-Rf
61760 zs%)zosX9`1s4BDabmi%)-Be{|RdZEF)sD(Y)h05npRZJYs4A#hSGBsbyt2G%Syif4
61761 zA$wZ+glx61Dy8yG<tzL}+uqYku_}*jx4H6V<#gqaO7pc4wJKMumRG8kw<}jy-XPOm
61762 zsxn4;zGqIAZ!51?PEeI_)w0UVl@BY=RG#uas~n&zrInMF-IbwAe`S@IuWY6&2P-dD
61765 zWrjE1n@;A_m8sq-?;WbPwsNiaR^{4?w-s-_FTIz&7pWRc`Z?#7y(8WMZ@6OG8=bFJ
61767 z@w&Y0y=yAG-sKfuGEbvw0q;I<iq}zbh}_<g>6KOc#KBhNRJ`|^)250S73TN9=HDm=
61768 zt=gW7N8Y6sV#Uphl@-@MS6g2(S@F7JqT*7;*@`i$X7;z#n^OL${85Eoak8SD{EU<S
61770 zD|S=0)1;rB6`qQX73(Til-E?OrfOl*+v<t~6=@a8<=N!+j;eVowv@jre_sBud}sN6
61772 zV`Pe0HFC_#-jpXue~I#&<)QK_hxu<A?BiMXpxj@6w%lEQxNN*U>vOf6<wwiA%lDV>
61773 zE#FbTm8y~c$}W_TmHEs3<>lp@%U6+~Ye|2-RxMtBuzXqBhq9yO_O|S3IZM@Q%H3rd
61774 zWf`PLwtQRJOxa7SmR-KT>=~KXmaQ#cQFgyfrfNIOH<wM7y(_y>cD3wc8C!Ols;wry
61775 zT`qfAcBbr9>9f*jWdrlI(vM}g%OYiMWxmp>GB23|RP9OG`Lfb7SLx-lBV~ukJcp{?
61776 zEsK?9mF+7XDce;#Lgw44+IU%2+19d6rGe5w*%~sfv})v-l_tv8lm6D19WF~RGym`U
61777 z-udHM>Mu(v+fn+q^l9my(np`G9W8xPwyJcxR4=_(I!V>c{`Qt_ElnY}52d$CFOi=U
61778 zq`$CL+fe$r^jzt1$%~Q~rExNyq-v?9Z%f1yk@R@7^iFBCG(2A`c}e;TmQI&UluVRf
61779 zEcKRpsG3arDJUH%Jyd$2ba%<g(oCv$mGqWb>MPw|x}_vo5-eRu)lQWjDP38*yfnF_
61780 zpyXpoL1`LQYb)JV^1kFvNoL9Ok|$*TimJIv*OWXec~G*kgeTL+lDkxGU#X*HvgBq-
61783 zN!;W1xJi$jOOBPSE?Gg<qNJ~7B{iP?p8X}eJs&;qsG7GV+cQ(L&hy0c&?9>`d+t-U
61784 zLnS*s_e+vJcRjZ~%gF62Rom`)?iu%-_na!8@r;n^3{_j{;XMgYtoXjC%@ZK=$b7B%
61785 zz2}O@@2M)j;c*q;AoCom_Q-R>bJTOV_)PH`&ptBkv1;U)6;FDyNPk(LW>1F4{QGC;
61787 z*J9O<c~Xm~imw-^liLKDZc(+}p0)0`?zf(`#kY!I7GEyDNY&PnzRr1A_q2PuSS}tZ
61788 z9-wN;q@QT<)#5<0uh`?hRqUOwxu28Xyv3)AbBd3+&$-VPAE0V{aa-}8;$6jC+|lBV
61791 z)y)2uxnC4b7EQXZyMyj>^3#0(>zJ(-&A3my3)}~bE)-pG?<Z3>RlDz=D2f-wNsrm?
61798 z3P)VKT-(Wf4^_M8s&Z|0Z7K}7))WTFd?i)8<T~t1cP%Z<Da>&>$o#!kBgd?8*p)*1
61803 z_7^-YxKMC5|5g60f)iv)ST%CY3N{yvk^aUC?iIuf%+JWJ^T)GbSwX1aQbA2YUjDU$
61804 zqYG>KGX?H~;ezafg9UpFGN>BqFaKe|h5S%{sGy->XTb*Y(|rGHvud{sjuosfNX>WW
61805 zy9-z{Eu(7Z3u^NB=kF&yE-Tob|1tj^Rf`p5lRmTaH|K9ISeO4K{~=YYD%hESzaTmP
61807 z{HnYg`L6sNGB2I4<$cIMk$*J*aNe2xeR*fdd=FK7oZp<Ek-sA^k{8L}M5gstjU2PQ
61809 z0{Izv>3Qk-sd-a**U3He{V#6Sa`Im0UCuk5`!@G&-bpf@qiTEd+1%;eY0~4lJUMS9
61810 zZ-A<;Cw)cpp5@-ky_I)0FOcV>YAK{2Z{8`=_K~~;x##i@&DU~YklqgEwdL)}+m##5
61811 zjpl8kYGR&?w7Vv6d9F7vjZ7=4+C<(y(yk--Q0|-DS7iR4s-4W+l=~w0Y3}yi2V~lw
61812 zt5UUK-qKt#_g?Nwa=S^UYgUaMv)qE*$-MQslew>RCvwj^%zv+EAJ5#(+zYvS?#bNl
61814 z@!ZX1+DX+O<eoIY<Rd-q%=M5S)={;aq_5Sv!JO=z?A!ynX}QT%?QCvA&d1y>Ij?e_
61816 zKKXyRdLOv9zO#P(-kX~cLI@%J4<UpAAwUQr{0||75CVh{LI@#5)-kMDJFJY=S~JQR
61818 zeh&Bj+;g7i<eq!(ft!B3W8Puls|-!!ec&DRUhY`;_I9iT_b{|r?~J$G+u3oq<F3~M
61820 z=%Kqq*P-)jI*vPbphm5KUqsqfZ*0fYj)xsmC@X-+46War(?N6)z>hoLcKAE)F*LVV
61823 z$YX%A2Y7)r7&Fh5=b*z1Nc03e)cdbrJRMKZCC?MjJI{(|-ox?Cg=k*Sl4r*=>$&Nf
61826 zFB#fRkEH!Y`?L0qc18O-V2hy*d9e1i_6O~}_Qm$Qz{?EnZ2MmOT>FgsRr@vfE8wdP
61827 zt-k$H`*{0^d&|Amei_h@G#ImXRr?_HH`qSkexbb+qu%}ecs$#M?cME@?ap?id%9is
61828 zq2_+wZfU>RUec~<&uEu2H0aO$qJ7-m?e1>(w2RxhV5#-*3ewiv_3roXL$?LWKH!+4
61829 z&9yt-Iqn?b<93;Q*ZrKKjklM$p8^DKK|ASQcds(E3+-aJ-~G~k*L~Z4qwUyzi=jE8
61830 zw_ENF_f_{;+taqE?g55Y;$C$3yL;VTZGN{G(8JKg?rUzh+tGH*ZFU=gt*2Vsd-r9x
61831 z&Rx_t>{hl71IroOuDjDMbtks<wDq|801nb%%-Yu7BIr-#HoA$nBaC`~_2cnuyW950
61834 zLt9y!$~D@iJ=I)?(3`fct4-b}ah-RaZxb@K%{FrzrwwzxcG+F806~U!uTAMXaP7IY
61835 zu4k?-;1>+-MjPMt#P!G(?|J};cP%rt0oRdh$u-{^Yz?|*0Mkf=F>`gf=Gr)}IoG!9
61838 zFB#gb%hbB-61Hx&ZnUnpid)wi+Nev>y59P_b-8uX`QG`y^)^F0-}<a|y7gM?m~*#v
61839 z7;u%L*;^m94z^x)uDABK_5k-YG;QllYj<m>^KPrdc^BBq(BfN1S}m<c=T+y`)*^r!
61843 zy-u}L>6Elwa>fJXr&`NPr^6|7@>{%4tR)D{VQ3r9qLw!;M=geyJ%FL*1w&hOCbk4x
61844 zwp-*-9s$;n24mK8t>uYR-SVX6UCT<#JVw0>{qcCVTy9xv*=d<=nRFbqjE88QE!SHf
61846 zhYxx*we+=UTU4i-;~4r<w2V5=IL@@VTH;%T4DBiO!)qyX1Rbv(FC8YwD~9H8u{&P1
61850 zfTs-Yj-#Ym&@2Fc>L8ofn^zgyghSlycZluB_T%Q4&3Bt`GqgVF=T`GZ^VR0D<^lWD
61853 z-X3V?+8^8R+eP-J5N*=FVn4Jm*zeeH+OIP-9`r{*Z?hEaoAxRDL{q>%3UORMQJePc
61854 zdrc3T9w1(_U$kFfsO$E1i2s`1ZFe-?vYP=`hI+?-$zEpH+7(ShO+$7WK*dnU?H;?>
61855 z9^2Gy=K=_TfT8x<bxrS@-ZYt^95n3#A2C$BUDEWT=~<Hk$_CBrNabQglcs6Yu4&>z
61856 zdEd0!w183Xw1=U;Boj@drlqExrrD-R+kx$%Y5YUg_PXg>6NR;=k*2|>{t)$P)1{`{
61857 zO+8IrO)lF)lRZSe-{ff;ZK`iF*(RGxnlua*Vz$jRO*iRioNLNy%CPk}Ng?L1Aa%HD
61859 zZw%UI0MmduhRU;T*{<2HHa>5BZX31@0FRxjjfb{-woA6Y#+Aku+gX~=AQkd$d}2Fi
61861 z#`leH8xI>Tjr$?0yYa{-ZQN-LG%6dPG(KXeRLlmOwsDIF*0|RAppn<O3^9KhsWMxv
61864 z*4Sk&vz9fgtw&bs&9^U~jt1N&b{mD(E$gaP48<R!YOD_%GprA-$JTq+1?y~xDzeU5
61867 z8=g1hG;9JM1D-Nei<M}2*s#*ThqBZ#4}71YDjW71<{D<|U)8^AxJL6;q*D3v8g4Ya
61869 z-Uc=FFR8!O5FesWHOLz54Z;Rqy{G<t{ac0#G1vPVx*G@@n)>7V!+Kr)KE(V5q;@u#
61871 zdSCs;y0!XqfNsErQ?+ide!9N1-d%UQ?smPk-VE$usO$9u^@jSgy3xAPdKJwIq(Z)R
61873 zJ*_9}*6UX5?$rtE7D7}_-Tk`#x;u5VmZQ4sb(0L0iaD_^ST{}MQQdgmh-Is85MuuA
61875 z&QT|-<6FFSn8j-eg5@yO;X1A5wdIvX4`tW#9QY+eJzE!Rd1~3TNTEEWc?GGEuf<|{
61876 zRHw9HP~KSXTjnt8n-m|9hDB+)Yk6jwwv5&8*6vz{LsXt+!g2`kTLvtbEayK|YY#0K
61877 zEH^D@EFO!kcFtl6QJ+{GmO+crqN^RVs4Yr{3NhC%Tc#{p8eJB-MN)g-5)Uzd9;r7h
61879 z?QQdM?G3;b;1)xb)jqDBs2w$Lo40FywHJYh7%EXaUwfhUoO#*2T-!;r8>x`5d9Svs
61880 zcGY~te53Yit)rIu=HKT}N5i~cYpU(5)z-?)KC`b@9HQQ-&8Qs#IBR2T1+_$oI$q1E
61885 zR?SAu)ta%I0n^i(OCc(+W~gSNrmyC_>3+?b8V^H-m`%quYc<_8CTpBEHq&&C1!Ddj
61886 zQnzbvn+8k+i2G}bYSavMxn{IRQRAwKuMwKg)Q|ukL%mT`VtQ*jHtm~?P<8-^4AobY
61887 zXbPCNO>)yCz#8BQL+vyLO%F`VCKAeB({12IhH5Z9H{CMbsNS#MH%-tyid4wgBr{E#
61888 zj;bG3KQgVDhD_9(&!0OT4HIGNH_e#3O^)ij)pt$S57p{Dlgo4uFl;hIFWL}w-Be;a
61892 zW5zCHSG5~@q5i)p1E-^5oT=tjml=b`m(+)E+znBOjfd4XfY|ul_|*6~L_KSKVti*@
61893 zG2S=M8#%_g5Y=K_G`=v-7^kaV8m}717%COB+IVc7qOl6S3{*WfUV@m%kt#H9SIt+=
61895 z0mp#%4E2UFr|Ph3zp4mIplTa<hoSn6{HiBakE-IKJfL|QsgQ3~XVt1vW_W9OTlK1H
61899 z>kPHTux1!B3|4MbZa_P|z?T_nqT#lo$Iw-|P`O}m(QHR5<XagucntR|Co3lnqlS6|
61900 z_2&QZ>1b3wH|PxK3^|6x%KplJgD6B@F-Qyp0IPv-;8X@f)S1fn236&&%9oYTD@!V$
61903 zQVEa))C_gI(pxF1jMtylpRMFolE6ZSx?HK(zt_K|9{Ti$H18u7^3~taA5}W^O1-jD
61904 zs^8I5-vavL>1gPE`mIV#zouW*^Pt=fQ9JebDr5Ec^t<}o`dj*`5Y?c+u79W>)eq?}
61905 zRy@&P2vKGF%lbL}IemA<qTa1{FjOjLuHLWr(iqcQ_2!BxJ+=QGIZ-PP^fxOmR$N4U
61909 z;OlxSI3emvg|Na<f$4&}dfhACONI(D>*gw)x?>tL-LCGrE=Nc0f3F~QtfENA*YOb(
61910 zx`(<IhI+mtUbn2<)6MB-%3tZO0j3$MO}DNa(+%q`m2Z}B>iPf!3{|bWqdTuVTfU_8
61912 z6PCZnsPAokJR0T8Izp!@KQ7-X*Fgz{s5i>@bY_64e7pQf`C5qTD_<{vUA|ntSbn?g
61915 z@P?r-l*`NZ%3hSIplp?G06$}>ljUUDdf9530Lnd@7my11mi3q2FHbBzDm^OOFS}Dl
61916 z{mTbqr=wBkDw{5QR5o6Axpb>^tE@jnEh!r)dk(l;)?3z7<_%F3%g&Tdl-bMb%k-t!
61918 zrLRk0G1R#-OX+@DZ0Xa|%~EOUL%?H(I#&9o^nU45>0BuWWd<<MP|ue>E1fRAR<c_<
61920 zSZXY#zVrFf>1dQ3mugG9O68@(lJh0!OL-ycc4=(sMS!W4EO}pY9HK6lyeZ8n*)Q2C
61921 z*)CC+JPA>6lsqftlsqa~D-nX{B146kONL6tC4LGeFH7#0+%7&Yq4vLnNbN3pSG--k
61923 z#l8|5Knzfvs>KH-&XU*?L2+ksX9-dK4w%bOH%f|%-xMDe8=&mb`~s<vZ}CF$%aZzH
61924 zS+T4nzW7-&_06xr)6poNEPh=4w%A{Mr<i~;8>03X&zJCv=ZgcyH;b<qkB6wP;;Y3E
61926 zR@7V6i@3WuqgZ;X7VQ>aDvmEU7jufSB74zmK#-w6ELIe~EZQx4TBL!p33$#>=Zd*S
61927 zkBc4_iHhz6mH;aZb*$*1XufE!@O9zqqUoY*z%vZ>e9=bH)uOS&r-e_8257#7RLHl;
61928 zRy0(!Q+U7de$hfvU(p$i`o7-Bqfw+T>Moirauyj2rwgZxbRnv+$Xs+A&|g#pp7IaX
61929 z!s8-Ek*g>kyvV{ch3`Yu?ILbbN#WbV<3eNMe&G&7g_sK;6j=)oXe1T}3bza8h1C9c
61932 z6ebp4);hF~LQ5f6OMMG=^mH_|8`@x@QhT6%rltPd3Q-rd&kOYc9{8<m{UPe4c13##
61935 zwVHzCg2MtGlpR0-u#fa`j3_Wcg#Q=9f~^ATZ{e2#Uq!kcA_Np16)Y9ZYk~zcAv#eo
61936 zTd-L$RWMO7qzPyO1-=h;&2GVP!D2ywL9fPN&;{^@=xYVt1(OBN0-I)9GhJXT&@ps~
61938 zP<8<O486WUsM*qNXvCUTfLP-PtTS|_=18-ona>aA2Q@Q*X}}!Psrb2?*#hDOnoZ4=
61939 zhI;?^E2sJ8ztjwCb^(i;eob$_U(*$$Khkt-CN)ltO=HZT&Y#xkLi9TtlcrCj)u{4)
61941 zalTk1%-_o2fZ94kS8L??Yxzg{OZoHapgNd81DIpzg8a?=sr(6bAb&_50QLb!Pj&UH
61942 z{KfqK{9d(R?a%K5cmX{~hxpY`^1Gq^6HMki^KBUQ-M)|WQ!nJ3@@D~k`PzJy+Ltd2
61943 z(XZyq^Bwu3e11Nr_Cg7U=oj*de2w~8eW=!{cL0G9-LBrv7pk|^8)`9>Rkfd?Q}Gw&
61944 z%kzSH!F;)TO?{+ZQqSiF)l~jNNRQ1Y)U)|SULY@^-c(PiC%}%L>Upo#yXs-}qPkz*
61945 zo9EB-tGfU_41HTYsdlPudDCiR-ZZcdU}5O@)O~8LT9xO^^QmP3F+hQIh(GU|S`O`>
61946 zz@ZkY`55(my^r(DyQn7A-2hGAao%B`E^jA9cjfJ>g?U?f8+ogFVkrI)y(n)j?<j96
61947 zZ(bG5n*mIR=&^aTd7F7tc@wIDDv&pn=VRy)Kb*0v@~ixLyLrQTi+TNdy-=s}{{qqj
61948 z(0+H`nrd1#oi~~1%(H>DFmyk(Z_4Y-)8?sEK9w&|22e2c={!fCD37o5=3y!?lpxeN
61949 z4BeNfQ5~xeRXQj;fB;}0=@37hv72W?5URFR)cx-Zr}=^RTAp0BraDqBspfNos+ka7
61950 zteRDAs-{#Es-fIKZb0SxP=_;yRg0>ARd23e)dlc|=mAx?YEtD?*>b0Ir&UIkj-f;R
61955 zE<l_k&K2ft<!nH0ouOND<vD9PM>$J5^Vz}dV9pF+j-e}ZHgl$OCb9!LL)igfA7GTB
61956 zb8;4Q`g3}-{n`GUE`S%%gLH^Ldq1Ze+CRZ$jx&e4|9$>6zwGrKQ_d`)FGriB%J${R
61957 zLiD*Dd5$ATl*7-#vb|7(A^K<zk)z2z&OXf6W$yq2A$m{tZjLZ}D|;hb3}rRj&(I<M
61960 z9NIsDBU_YB-T!>2`6(x|iR^BGMtQ6}RO*yFA$qTJH(RLOQf??$m0~FV5Z$I+QywXo
61962 zj-mZ-<yzKs*0gd`=~UXlS{V8kv~N=ODYZ&fmM_bvlmQeBeM#wnKKNN)C6?ud5`-Fu
61963 zp-(9_S;tw2Svn{?fB;}0=@5Tbf7Y(jgdoh?%A)RnpF7Pj%bB&NlxMAF9c3+L%`1Xg
61965 zh7R#7o@LD{d<q}*V#?}+-c(Sh@*hC@eP~~vHLUO|yjc$DjSrT?&~HHdM3zQztT<HY
61970 z#mxT9-VA?+KeG$q1@s^t;?H=W*$wTVU^3I0N!|a(PxH%ok!i}D1@vWVGgTSBOj(G&
61971 zk}1!0WQsERnOKGwN-#vfl}Ti3GLAD2Gjtg{fIx^on6aBF%-G7<$PhzW&G0jHh(F_O
61974 zhxSk4$Pi^v_rKxO{L*h{5E<P7P5N>AVY)7TCqy4f-^~!FZ>4XfucnKk_(Sxw>1*jn
61976 zh;$yb-<`fDpO#OjPo_K5ZD1{@y8HmzH>LNbYtvP7pWK%&11K2!<8(*5D4j3&rekt1
61979 zZj|d7I>euLB%e+5rTL&2le|x^m8+mm<v)V-O=w>(A5Qb8dF2kdNX`e#Vd#s{J|Wkn
61980 z9j6_p>7eWY_8I!5T$r|%wvi@ITLp;I{D5_a-j{Ziwv;w63(A6NGk|Hp9MU2FG)LO3
61982 z6U3lRQ^|a3GJrTl-%OK345Bo?%q#PzVX`1Yhxld7Y27lNOb5L{EV5(SA^b$;e+B8+
61983 z(@e5mfLJC@6Uw$^8&F$k=$F#uvNhR}Y)Lks8cYq!W&m>x-7VXcP01!w1G1si0I&}*
61989 zolgl$X8_Y7dZ%<&x+$HKPNW1<0@5L=kD*iXo20ub{uIA-S2`?Rl=e$|p-$!h5z^(*
61994 zV4tDiNfAo6BpVX3WECKm_yOw-eN1vBS(3~r2a|)68Nf7P4(SlT<eX$Sg*bs^Q!*u?
61995 z?tg=)`AO;}!;)RVqNHEao9vf#h3HC2w`5Y{l-MN3<mu#Ti7rIvN=%YIiB_UY_DN&_
61996 z@rQcyONm_KkccGwWN)%pf+YtTI>ev+MADtCOV&XzghZ2koO}pBQTcxf=?fB5@-9G}
61999 zCp(fw$^2xD`ue^&7@|K(CXzMcWAUL_C*A=BLi7dkZn99kCEgHI|E-Gs3?1SZUrUxJ
62001 z`Nds;9)?~do)kO9wxnsXF=-lD2e2^oSaF|ND^?}>l6+zrKnzeI9pX=VEtW(3Cvb>G
62002 zV(R`kdYWI-wwMri12jp;Nry?gq@57`Uec~un6#C&k+hm5hT;#=uO+P|9VIO#%_jzv
62004 z*2Ei$H<AoAmjTSkgNG4`w~`D=w-PTUUP_{By-DgMB}RQ;DIEPZi%1+uk|fbcbS1iy
62005 ztV#SNPKbvWVyB=?JV@M2)Ixa{;!&3PEQyo&C~+-On79lOCN73}#KZBu#JR+ogjWf#
62006 z60ZTSGCUxcgka+9gpGs^#A}HoiGyG-LoQ!I9?ueI61x*S6YeJ5O?1#~1-Ow1^pdcg
62007 z=tx{l7)uyST!h+SqA`(r3-BwaaU@(zR3~1gkkFIRlh~OkO-u~&=uhM)_5ySX?-Jf5
62009 zo-he^9CG>ciAVeqoP9CjLi~gH2MOIYcLL5K59lTSNkVtRTKshUbix|cCKH?q)LUR*
62010 zK8+)OKEaqULm~ch{N;oT37UkQ5RdT$X~H1DmLN#r#=D`s3-LG?|1KdX{xE(&z9>Eb
62012 zllY4?UjX=!2lNuRAAd1^J8nL1K7Jc&v+-x+skeZJPUDDs81IZ<q7XM8Hy%F}Z;IE4
62013 zc+AFY;wJ%T;$`vTxN~vm;sqfdL-B%mecb!Fw{e!ZLx3f2Kg8oq+##I%Jnm^+29(Eu
62014 zhYSzMCC(I|6Gy}mCk!q5<L-f7fLy+SJY;b8jku}Uo!FhYQJRMU6UYO4iG3e88n++2
62016 zg?QY6NbGUKI9{wL_C3H8`!>Ym5=5ekeHHsMwgk#^z*B|?<Pz(R)5pSph<ULavFlJ-
62017 zg<O6cd6dD~cVlnI9LF5T-k^C3a0_`*y~M}fh<zKg8M7Jt7HaFUW3j^+^=*=m<A`|;
62018 zkvydkvk<codpou#wkyPAE7lcz4=@~Sjy1$g#7x9$Lp&B^wXt2X@>ogC`B-7hd0<|M
62022 zF<qiEQ5j;j=ty(`wLQqihdj=~*-u1|sEIFnK=U$S4S7(#SVRwEB+;*<U&lzm<3Kbo
62023 zqTYh_G2+M&O^bpQqPL>ApsjJyNQeg^x-5DIm=m27bw@8oFN)kBdPMJt+@cZa%NTuC
62024 zR1|#`SRLZAA}SJfLtoP9-soPD2*77}KrYd<qW)-Wv=y;YL`1)X+8fB_bI4-|&fbX*
62028 z{-%(63vPfBhfBB;Eu|3kCh85ewII9`;-MAZ6utvI7ETC9qqd{Ag}x9Eq0lG1BRnrW
62029 z8?_|#L@fb3KlF%tCG-eKh4n&H)MV78umqrCct9>uTf*y67osj8J}XoRWnjgS%Q*5_
62031 z@vufM2nA6KQO~1pMcokW3-+TXLOhgF6H)%Cfv8J@hf(JR4}s5ycyOZ5N8O0>M!5vD
62036 z@4bH<N94`O*8&#}Rip~q+KYS<;^B+j5@-Qf<XYr|NFJ2M5D!n}V&sd+naFAW%gC$z
62037 zm%w8o9wm`i;oQN<%lvizdSox4hv7lxB97eP-{#*&JRR8?=?3e7Tt-ej_-`XGN9rPr
62039 z;xWbFi!=j7{B8adz68ozh({lPjeo>n;?G9}`7;qg;OP(#JAVewo#c;4Jd1e79|T-x
62041 z^QWP9j-SJ)z6E>bG>(W3ej@)eg$PH4gKyz;`9z4v-H11QHy|ToKVm0B4P`sTV=Q8u
62042 zPeeS7Sc%|AECKit^C2ERaC|3XHsU7lfOilv2^eR1KrRv1h$G%3-Xp{-5knC^uooeh
62043 zG323)xEXOK!o!>6%|+N~wg8;SgX)D7VT+jOjqpYy=Aq_`&__^jfsUQV!P|?-i5REA
62044 z>*jSwcp}6Ru^}F75!{G#fD+zY-Z9SzWk1AYhPNLP%X`Y(<VkrC0aD&dh{qrtKjz)z
62045 zErh=df5)2z++=t_F3>j-9taPdFtjwqn*cisxqO5?jJyS2AMbql{qXy|Gc<buXORch
62046 zi<EbUw-SCm{5o$1Y7;y=kNOteN2hT>zk1$H3gH*SFY?awR6Iq9M}Q~h`2h7i9*+!n
62047 zLU|kFaX<VmPZ9nyd^cPZ{uH1I-wg4%9{v>0T@POk7eKiOSYUWSF5y02EccLmc*4-q
62048 z?eJS*Z$K`C$io9?4~GwMA9Ejv_tAVFa0z)(y_AIag>Q22aPNd~LhV*~SGX6W-by}=
62051 zxx+LM0LG99)r*}w%-s$1hxxg?P+R2ob9*uB-Qd$WRNOA^Duu8cVK=x}xel&1#Dm8*
62052 zaBl&6xoWO5>{8ezuH-|Hu$Np3*UIH{Ibp7_Aix#&I>ci=EC}ZwgzbfCp*#a@F+3ob
62053 zu)Ex{FkzSwF(>R%*c#LxKrW-mV+_uo3!CA*;=BsGM)Os`H1eQ&=?S|Q_L{T7*$8_L
62054 zwY9L3FlszU8F84y`op#;aPD&MhRuX^hjoT{$ip0Ai-5r}W0;OJ#u*D!hj?IN>afl*
62055 zX;>nsCyY=1L;Yc#4?Q?9!uW9RJI))98Oi}*kKqvk9#+mln3W^v$Pp)U0-SA(dM}pu
62056 zv5$hY&UwvQ<}9+`v)^-W(|jw$hs&7_BiI3U;DkAwoGH!(M!g^Uu@8HXGsv0eT;QBz
62057 zFSD09oiw{ceAYQ$j-Nfno<ckZ5t=dTJ;_s_SxyP(EJP(^UtnM0#L_GX@fqQWIQ?uZ
62058 z+ltu8A=vLQ>V3gepDy+*j)eV!{fw=EvO)8Dh>wZ=n3KaM*u)95-?IJedl>cJ+^LV0
62060 z=8_Pf6}FB&P4<)hh|jTe*cll09@VMOG&`PcW^>pWX@~Nf=2sy;1LQH=N#>9_h-Kt1
62061 z`5dF(Cpz`<kWa{W<O+G8<UpCHc`n39N8V-gSi7v<6DFUL)8sXbdavfxC!QQ7?~#|t
62062 zKGq6rg*;31nGbzfZ^>?QjWx}hMm$M6NgGDJUvlcRO&Z8vQcWsZmspob3C-~#KFg$-
62063 z^s$^QC*pdNN0J!zp2exp6zdI{!P;l-u+&htX?_yobCI=0YFRuM4>87CV?DsA_YF>c
62065 z(`@+Ahd5%HShIwW@FDJlmQ@(__vcfe4VIK;gVwl&8_GMH--P%q5J8rg&=Ok2O5%Xn
62066 z!>GT*p8AXvPgx|fPOK8}I8NN7c_GB7msnzn@B{qdgozzumbi&ge~&!%sVA-y4~RkH
62069 zzKrjI=M44=dxc-4`D%#IS$qmV#vWsj5wF5o)O9+_@G;^S@SFG<+=I<wbGVIW%f~)A
62072 zn$0xV(*Esq-A=QU=2n_5wAw+lmp)QQvx8<E#jK|^|1*8WMc1kEBCuaz?=TFP;%OKO
62076 zVJdtYzlr5ha|6@h-@uo!0{kBC$I9^s_yf#{uiz_KHC$b*m<eCQ*RUG6${%88m}}q0
62077 zYVq&jkFh%Zd-(UT2K?{wzsIcj7XFV|BmPft-8bR?g8vKFjPKw(m;>L%e}J{%Kg9R3
62078 zR+u0EiM8QB!heLd<3GlKf_Y#DhGD-%gcCgM69gaT)h7uFk&AT^Wkea)NBsi^*k`DJ
62079 z(gW)!%!Cd5EMX^_u>qn5X7V81gFb}~6TeLSDt49lHR9K>-y=Rv{04T7_zdwG?DvV^
62081 zOT-fPP2!uxx3CqsPkkHvJK{UUcd&00-zC0_JtDqGY+~Obwumk4d&D;J@7NRK`@|2h
62083 z^5^8waUuDR&BCMEY&Hi^VsqKycru&M7T_uDXm%_vgY`BE&w%FuDXwH^v-9w5c0M~F
62085 zx!)${;qLo@ct~tO9?ywA;*fYvyn}f85Uqrj!BVk`SbCNj?)olPC+jS$7uKx-)(C3?
62090 zm@2F&Ob^e}Hh9wS3_Bav8+I{l0G_rd;Hmp&*zK_SuzO(-!XAcggl)sFWH0Oxp2y#D
62092 z*zLXMz6&SA`LH*WglE9ct0-I_ZVtDFyTUue&xZHHzH}gb1omXt!f%G(hWq@tS?jEI
62093 zu&<GQe`0YKvf;=Ik&Qz(9@zwB6OqkCHXGR-WOI>KA*)6<A6X5u1;}cVEkw2m*<xhN
62098 zL-v1={ofNyV94Ug639j%8;Ps{*(hYud?ccg6(JjgY%H>9z7lA@5@@~>Xuc9j$cm9o
62099 zMi$La0?khX%})Z&PXf(P0?khX%}b&L*-~WD{3I%nMe~!WL>A3c!iX%Irv#dx1e$LI
62100 zns3B8Wc!fqNA|PGUPSgck-dcMZy|dbSu|gWab&-O>{pSUL>A2-0?i)+%^w2IAL9QY
62102 z8{!|3-9Z*z_rwp8-A5M91L8lCMe~995wd7r5I;ut6|z4;7R?s|%@^Vr+2Dy~q3fH4
62103 z))y8VSq`#c$a0ZI>ksU4Pb``j@Pu(<(fnYc`N2Z-gN5b?3(XG}njb7QKS(rhNi<(c
62104 zG+#*+C!0hTwZ}&7vC({DOOQ=LHWgVJvT4Z5kxfT716j0AvK7c?A*)0d%{Mk$=h$c-
62110 z!ydepC?_i5nYEHI5JsY!s3DqQuYHc_Bl?NY!qe+-5|@bIA}$j{#5nO4;;Y0Y@w>zn
62112 z68pq|5dTRW5I=(F-X9aMh@TKg#7~K1xYh|4b!BtlYUaWf%!8|z4_B%Hu1+Cbks?+M
62113 z`G$N;{(=m`vuYGu$c}@j)f9FrTgFaf%h~Dh<eJG=u(Q}owuW8CE@$gt-}n|AfX|zQ
62114 z^I_kg2s_6N_@p&>34Ep|ydJm1XXk}ast5LL{rF{k5Fep-Y49oCr1oa;xhzooGT4c&
62116 zbHoL>%ibY;FovVB6PSWAy9IlJyTl@l)&pV<cA-y*ZPp?YVBLrN%_{2=jMO2F%Uj|-
62117 z><xG@2AiyS*dNGQ&saMwB})yv1RcxBvcNvU$?~wyz)s;jtB-Yw^^$c2`-Nf1UJv*z
62118 zMzCtI6q?h3&(K_h$$>vf*FS{`fIorp>G}yr0yogV$7-axiRNbdcq<kI+(sYirMa6v
62119 zs|J%%OiJl`6V(oROt&Va+M(-BCrr1~OY>*x7(Pq4aEAOk9iftD>WGh4J6KmJrrY@x
62121 zd-T#iXXxXf#7bxu)7jmnv!nPkG&iGm{)}!viRLu=coNN3^bv|1=rO6mMra<Tb0493
62122 zlpcW*nn&rgnyDDbm-N{F7tOC}-lh5LH1E@VM32eIXwbRSK8^GkcF<$eM7Pt5#nYc4
62124 zx`Hud(N}>0Y!kFH1-2Qk9|1Zpru~G_GK;<@BTvqQwkR6`EmP-3!058*tB=yDYe;b7
62126 z)-SVu6%(<3jrD0Pf%WUGU&q9(epWx03_I}4n1uB?)&Q2q8e|P(>8xSa2$sPbWqpKY
62130 z!n&|eVcpm-V`s6;*l%OMg7sj(ik-uL4f{0Ki(SBegZ-=6SFrQgXRror5c@Lb!#<CF
62131 z0sA8MC2Ruw9qiY!G4c-iee#FoJh?zFl1t=0a+$nO`pF063b{(Ikq^mr@)7x%+#sKj
62132 zo8%U`O+F=`kpc2K`GVYG{}Oq~?qq+0{VVJ<SReb7>@Ic>`%|zUe-b`LKK%(s!F3r8
62137 zYu`7Bzb6)mbz&P<%729NPjKcI@da2lci{<Q3-)cWSArG)0CtcB@tXQgAO2k^--Fiw
62138 zko*NZo~?zoO~fu>7qWTe8#W(S!g5#zqu6nvma%iF-(|7Gpm51wP`^!uXPX=NG(2nE
62139 z#h2mPVikV~tJe>y-v#2wu=3nvtkmBmR*1hL{+9R_tk>Tm9uwb%HT!$8CjA5PeOR$y
62140 ze!OPCqSx#HB7R1^A$|_4(=TAX=8-}2f7v*!$<gc>b}U;A>$3FYl{tf6m9yEoY!y3?
62141 zt!C#_D>LU9tAbu<iB(uT=U^R_5^@+B1(5@5ry6!jW$;|GKv;-p03F1lgX1QsTVceW
62142 zvDR3RSzE*l7}W!KdJd3sh~^zUL2y~StOIyvh-DqKf+WEblRTD;SYjzyDwdWM5q4;o
62145 z<HHd3EqoLohx^AItlxK`^%d3<^zerD7{3ZFzGL|zPXbzAf$VqTiS{uZ-6FZrPAp_3
62146 zBNe2I{*9iNEF%r1nY5A)(oJ@fdt^6xNS=dh_5wadUW66`qz_`-#jjJp_hap|`4Go>
62150 z_#LQ!2J8yhZvy@c>Q?{{;Jj>@CEo|UgrCKLbU4-sp#EYJ0Q?64`oZ8FwiVC<57=?k
62154 zYdu&#wT9FAMbiFh|F@kJ3r`S~y@L9?g8I9H`n!VqyMp?=a?&3?I+4f<X-oG9_N2cR
62155 z)ZZ1<-xbu~6}ms1RSMTbGJN(w0-FMmK>a6xH&BlS`vbU^?m_(+PyvVrz<C&T=lv<v
62158 zSAd_<duANl1-u5oTL1w-1b}m~w}2x6i~vd1_rUI9EGj$d6QQ%DMwH4tlD4t*C!P#h
62160 zksu&qj1UnK^0D(l2mvudiWC76L--1ah{#tF5iwFkL`0;BITkTSiXkFWN-3q3Qc5YM
62161 zh?G)FIb5%=!(kY%ufsSFFT-&dhG7`S!^_WM?%ErwAzA0l@BC)w-g)mkSw9vl&t4zT
62163 z3-Cb33ncd>CsePdR(nNpxrzEu^$Pr7?bW8WUTs?I)uvT>LiU06+J0Pthk}(!1RjM)
62165 zF+hi}@OHct{}z9M_u}8<1GEdY0@_8|C0Y@!gm#stp_S3fX*Xy(V8N?^<-SX6B%kO0
62166 z8#pNZci^Fh;vxue@%I0AJ}}_-?xwlXd}(h31lmvA2XK=_P$9rGDa`{Q+Af+aO-#Nb
62167 zlI9N3Z4b?x<^vGxEr5M{0lo&3$0vZ&Zu9{9etHN!lzxD|m+nV@o9<8F2M{ih9!x(-
62168 zSAY-z`n((XVfDcO8UP;H3u?_z`dvM1KGy(skA(EPNS}-Jv}Rx58CmnQUVB*x@Uym3
62169 zz7_ZN9gkl;D__v748#*#LH`8%7aT$V9!Jpz^v}>gMgI}4#U`*3;H`X%-owVR{{j4}
62170 z{~LRX{RK9R{U!G2Xf3J+IsXoLIKM&f(`9rk`X0JBeLLL;cnG%iP4peK-+|ONx&wV9
62171 z?Vmw^JgK`PWN(JhU%&P!zrel%ed_>z<*GN?Pxb95%9|v8$$!Kasr~@3k+!nd7mSX-
62172 z_8MJ*2TS$^_=pI`G}sjZy+)8S;AM9r55aowC2E6mQ8^lkrlW-j^+7AprnOWrh%jdA
62175 z6V-rPNi+~0!~ii$OcD!xjL+nA5o^8^U&8m}hw~HpYJL%4%dh3P0%{Y#i$BC4=VtS#
62181 zGHIV1OVY5rPSUx%Q!3s4P&(q4ES;1LNuKO}E}7Z=Qo87-_pp$>@^Emsb!W?LqyaLn
62185 zoi9q>trbu2ZV)f+?%w@)_mt@2?qxS?8N<y<CUBF={9FlHjH^PH=@uX>c8iheCG)No
62186 zt_`vlw{%&*TfS`E9dn&=Z*+a-RwkQutJ#CO+ljs0yTrln!)~o^eR~|-M)pYEpNb3J
62187 zXWb^<SKJmQ7JGu-1>!m>L*gLiO2kr`#LrzWZkL9L2c+?mNNJWNRa)e(l<LG|(t1g*
62190 z!ex;qqLl^6;$&)BsjOPoCL5GJb$uqA-(#`IX^+<)#h&Cnd17o&x!7(`{hqEpkM>ON
62192 zZuH3(cll@}{XR94QJ;3nl=!K5)@Mj!<1-<7>9gQ&>Bew(bmK~#<(BRexwE^!o6KG1
62194 zK&0UUTWPYuNtz=qbsLoGB^d&-v`HYBb_+tJ52X{50zs^FPLSq-2y#4_f?^Lsp!M(;
62197 zZlxlIo8Gm+wOqt?trf}KnnWRP-L7qJ4_*6RM@8}C1yPpUgzJ>soa;*oBDQp+iHaml
62200 zU24q-wt!zEmGX7KdbaSpf#n=Sv_49oRASaApU?2o3afn@ge^YZ{CJ<o{34$zVXx1!
62201 z@UfgBe9j-_kIM!8Wx1blK^`Nb2|QgJ1VMsWd8UXZFBXXe<*uEAT5+79P2?-ri^AnC
62202 zu0w(;ai-v<xKNZV%8~brN`;PMtxzJa6Y0h6q9#$d(BJimP$eD^Jrs|LCdAXCIoBCs
62203 zns`Z==VtASxH-8p-K0P}1BBPyVq6KgbXRY;e6cOB!L7`###Q0g>YCuzCuZ~7-9~tQ
62205 zB+m$?WS)q3$A}DfJ0g!LB`SzIqLt`Dw7fQ-Uf!tBDDS1u3qdjAD5xMLgul-UktVkj
62206 zG!WMWokX=@h-e{t<znKwJV5Y-PZP}WS)ww&i0><p6TIRl3vKy1q8fgws~=x4Wb>PZ
62208 z(TG6d`b?1EIxn0SW5Ok|ooG@l5U9m+k+oPUauO$s7P)2OY;lQ5Dy|d-h#OrkxCU_-
62209 zw^2MSekzI)&x+Ey9pV*kzZ--5*p2HZ6Xm;wxH@nr+~T=2Zdu$Vw<0&4tC(luR?o9@
62210 z>)>(S26>)t<2--27rbz{WnKa=la~+hypmUsXt{cy7;d*uCU=56$4}=W{CpmhNB9);
62211 z6h3->8Bfix;T7{+c@?|{pBCN_?+L$;H^U#{y%J^v<YyCJ{7E91zevOhONdMnmnali
62213 zJ;E-&R5ZvB5RC&3ej#`!S_ax_!;f)w7R<YP3NfIyPdVAHu|QkxTnmH(*K*-3r^vOI
62215 zT8dk^EO9TF5I^R6iJx-=xRKmMZWgzIdkxWY3cZ^+b>6+40nQkq<V+KZ0Q;@IN4ZjN
62217 zD?E*$fM*ao@|uMbK7-HY_3&l9M?!zzGogwfB244Q^RsyKf^q^A=JAV!*Z4YNHNRd^
62218 zOV|lp2!XJd-ywX=9~3?pv<VjoxroLe7qR#+fY$c2V@1BAaQ?C=Szsf|5sb3aM5XK;
62220 z*9!J4*9MNYYbVFSb%-P2$T&e96(^aaMzrkIJ&)NMwt?Nu?%{c|AMt|N&)D-EjAO?U
62222 z-V`^BpUf>1AY7e*$$Lpya_b34Zij&24hp;pi9kX46DsaFKZpB5kU*pf)I=W8<ZJv=
62224 zP|K$Y>-a2}bYZ(ou5iGmL^vj#=8J?&{D&?&k+n;$$jPNeBozhlCtSKkF)l-*beAzv
62228 z&-wYB1)#;nK#ME*twbTek4ppE+rXdXbpox`I<o~90teoZK+Jmrw6xAyDu{IUBk`0s
62229 zBhc_(IV%MQ=XgQ0bB3Tt@QAP#JR{nj^91wGr9#ZPLTD!x5ChJ2Lb-FRQ0d$wOmrR=
62230 zW;>4yOPr^KmCg$;h>NX@lZ)6zj@;bczI$l*#O?)|rOa6-lPP7XvV56V)*$PaJ(f+$
62231 zmiI9B2spue{Px7`$=p-CN57|KPd_Jf&p6Lw*?cgo-4(4dR6L=2ZIlLb4Yu>fq
62232 z9p1y<&v;_*McyMHYu+;-wvV?@IA_`?jW_R8Kwv&P!p^6W>*UkJ^Ya-Y1U}P*+~*ac
62237 ziu3BNWp14>gI($?VC#MTxVFAA+;-ng?f|=q-R)b<e(0;`j`_B5r`Z$SCH5Q#@$Kib
62238 zeaCs$9460+L-3>=Z?2c`EH7X$#*5)7c<G!3UOqRNSGL!ISHn^BS~<nMK5pEO8QutQ
62241 z+PBoV+PBSj(D$kD{9cQ_PJ6xfD)uJt&D&ePw|;Ne-bZ^U_b&O_`VoG<ek#8Vzaqa%
62243 zf4Bc*|0(}v&d@#v=gB_7KEHi2`!e?xb7uDGIj{D$aBcVX?;GDY8-N8kaJ>Sg+~9y<
62244 zZd^b@Ku*9lZec(zR~yj5tqT}-d>HVII}otQ9SgMPP6x6bp9Fe4PV=mJPJ!V(X<(Y;
62246 z@6Zu`J8E~d?C9Pxv}0_?WZ+5=%h%Rd5IBwK18oC|K;J-BU`Ak3U}a!)U|--^;7kw_
62250 z3(;}fLmD{)Y+`#SXKecbXPUDV(!;e58QDI<b=v-nE8RW|P&p=Knw!q{-oDJuceLb|
62254 zC01#xB$U2Nl`_L6Ls{ffpsaK$S2ipAlw-=7FvO)cjOEf6CUNNx3kr)5%XS$J)3{89
62255 z)wsM2YiC=A4Y3`=CfJg&1-5^<C0iBl>`=r`W9Nm-*w@09?CS7ThjMm{Lp8gX{Wv_I
62258 z`@e?nAT!-R_8+%<?BBk3?EjBD$NrdoV;J(cV3vQ4(5YV>ZAMl=z`>m32s!Uo2o20V
62260 zqq_lp54s1`DM#fXehYmI(0x%~koH6UKr8;JKe7SH&^|y9L<2!O2qm9&?nn0nN-!D>
62261 zYCC`)0QnE12f<Y(szfY+jD>-#;b=Ix8i7WDR#d18u>>*~4bm}a49Fjg#)9}TdKggR
62262 zQ1Yqf5%dVT-yV%etVnqT^#F+kbta?9AWsUK0%}V|Q$eXLG>hC(kDdm3iqIm238eKs
62265 z(Bcp159IE6^heN(pU|HG<!AI~a$h_;4Dvrh9|6i^^fCF2nS6o^H06JgyW!C%pv9-?
62266 zQ$YW7^v?l(0-XRg`~~_KpxwVj|B~DRkNy?lc?z8ZJp2~@Eyy{8&VZ}4=q$)NkIn<i
62267 zBDx4#`6u+B0R1KU66F6K`a4h?&^B-t=o`rS&*(pc^uJ)_Pt3pvvBE4dOJoz!zm4Sn
62268 zb!-!|h5Uskpl`-DBQ`)E8HhcplL!N7<yM6Jt&trlYmeC@8-a$h0A(At4U__!3Mh`4
62270 z8USQ~+V*05LD~=V1N;C@2XzAI2kAg85M14l?FVrL76EEdVJbjBj2#AjNyE~Rt-uy!
62271 zf~#3r7QzHpAqV8i#d1N5=dg32tvoCb<Of!Q+-;6s0F(l(09-A>N<hx**mY1tIaUt%
62272 zxq;mvcba22$$jQn1-Z+d+zkM1$!$<dkLf|4Dy#~Oj{!4)7Vltp$Q|WaHMm-X)sVZ%
62273 zv3nr@XV_;53s@ZTNpLIH3i|aW_9a3G*5_-)8d#uj$lV247pUz!>^pJ~Io1uX-pB3(
62278 z>ICRJ={o_%h3*2<Y&sjHIdl$41Ir5X6LbRP<kR_x1^G*S#2VOHA-Q9lE&?@6=~849
62280 z2wTA)^EGArS|C3d;N70Oww3xLzipuMlfjy*ceQp4Dn-@{W{HaFRLz!Dn*7*M-&e<i
62281 zd@F(_Rn8hA&xhRtuG&yJHvtM+iiT{Ya+1H2rBT14-9WzM0`zN@LZj05)EHa6=G__4
62282 zP-G|K1X|buYS;+4z(8IyhZVU81W;DXlkKl^Y6EEGe-_n>#oCx4AibJn1I6uDY6Ma0
62286 zR>``zfl^z*cP97)NI>o(rv7umA42to2Cg#zFXRk4P_1EW<GK-HP@GzUZ!TbV?GfrN
62287 zwxA{)%q=-@ENY(wIjiLEi7lW{8z^2dY91KWyjW3VOtwjm)+)sX@VNn$-9WXsff^x_
62289 zO4UgA&zc&IRoQ;i8onms8>qgss9LQ-U{RW~+6GzYR*>VDwtkUBYidUax;EN4#T6-S
62291 z|MmH=kNF4t-_5}Pksk{RPkzCyRolI40p8#a%?NWgQ#J*qQmd%4iYesB^50-<EdHJQ
62292 zwQ6Zd1VWHoRC?>WwC(G(oe|y6h|V&ivyAAQjOd$Q)3MiWAyn_k@3w2-?WpftUthOf
62293 z`~J)It<-nB*Vk><zW;K43-z7#`a6UAzUlS%%_i;JnY6#%r2VZX?K_yXzs00|)>`|U
62298 zv}b41-gcAmHl6QnCgW{t-&iK&ZEEjK`7xbuQ++g@Pt*A^wKt~nVVd96ew)sRsl1z(
62299 zx1kV~#6og+{H--Vm{|AC_}UJzZZiHxtovr1bMv~Ko7d&sye=mjtZ9tDan^k!)_pTB
62300 z#|56d@i&)s-#8}Uwi|sT)?FjkU0dIR!|QA0tT|KnC2j%A2d^pHO(-sAd0fo$aLn>>
62302 z$IV*D&05FJ+QQA+!p+*k&Dx@w)l4(1nPyfq&8%kBtRB>?9@MNJ%&Zh<R?5mOkCj;-
62304 zGph%K%#LY2m{~nmW~HpmN--ewWm;;Z*$i$pE49Nc&knOZn<08?I)k{`e9_Ei2QwR0
62305 zE3*-^G8+wsS>HFB^>nit&uoZxoAOM9@NAj~HR}axRthyMg+cmmS_(5OWd#`@(|WAT
62306 z>ajAbhha9V46~XUW;HX+YG#<t#YVH5H=5PF(X8f;kQp?sd52leJIrd{VK(nO%xd0Y
62309 z;lbXBGh-g!aQ21=rV(d0>!{|fF^za&7*RQp)|f^-7`OI@hc~U^My)Z7s4kGc;YO`(
62310 zGNKZYdTB=WZZ@L2K=`E@)%&If)TjnqBdQC82h1q1G1Uc9ua!|=8w4i5n-G}%8p|Y1
62315 zsMWxrRs(}t4Gd~Ete{rI3TibNP^-a!T8)jr*J{9g7}z+lpyR-Tj)OgP9PFXvU=JM!
62319 z8wYcKjYr3R-CV#t5SVXd5A}`gp}vtl)Hkw+`bPFp-^ke4*bJ2tyLIvl^Gjg95fkbg
62320 zF`>Q@6Y3i=p}vu^2eRHTG3Nn?`bId^H^QO55f1f@aHwx&?18{77t@Fe^Nnaw--rhF
62321 zjc8Echz9kIP$&+eP#i*`ID|rR2!-Mh3dJD|ibEI_hcGA(VNe{hg4%T}s9m>$+I0rh
62323 zhxSlCw1?`UJyZ|vp?YW!)kAxz9x|bN$b{-46RL+ys2(z*ddP(8Arq>HI8+aDs2<`_
62324 zJ;b4Uh(q-dhw32>s)sbF9@3zCNQ3Gj3e`gts)s044>717Vo*J_g6g3aR1X<YJw%c9
62326 zoFV)g>$rmv^-bT_-(UVE?>4B11HWr$>^Tuo&xwHY>j1S$Z~A8JpEyJKHMSDljHoV<
62328 zP_G+@dfhnG>&Bs8x3QPSSVuMImj?B^X;8152KBmWP_LT?^}1<LubT$-x=|?FqfoR*
62330 zXm15Ydn+i~TS3vD0Y!TT6zv&Mv}Zuko&iOB1{Cc#LeYLB6zw-c(S9Qo?RP-Yeg_oo
62334 z2E_;(6eDO*jG#d=f(FG18WbaFP>evK7=c1D0)=7(3dIN%iV-LjBTy(tU{H*}pcsKc
62337 z$sUS`_E1E$ha#dq6cO#Ah-eQ*M0+SA+Cvf19*T(eP()-x5s?W+L?#pwnNUPzLJ^S(
62340 zpooY;5fOtTq7@Vot)Pf#1w}+FC?Z-x5zz{YhzuwqGN6dafFdFTiijJbh`14oh#R4Z
62341 zxC4raJD`ZT8H$LTp@_)-J&4HoJ;(>YM`~sAtCu%xul2tJFs2jG{Of;L@rDjZV%%gO
62344 z4d6=S7Lm&|+DpER1b_L<wT<4mCAe0`taN#Z)|1yPrhmC+yNp|dYif_lw-!*%+S^a4
62345 zk9CFEi9DZ<rm|UZsYElWI$yt4Wn&CF0Itb)So%-cSQ@`6VbfzP1@3?bfvYSB4L1^%
62348 znIRje8J!jiTF=&LdYl!DhHZ`9-s+VIN+`IUM6ZRGdgI61hgt39h^IO&Y!fqH30HWX
62349 z2ZnrmZByAD{9&JPzbta*5lqpb$U^9fUd3a@bHzd^Sn-E?g(?-LiVToKLhTd<ibMog
62351 zB$Q>LjY@f_BD6~x4k*LQw9xF(r{G&;Xi4ZCf-0O5G+d2fp)V9HWMimB=z=mXG*@Y%
62354 zo*p3&pO4gsKZ}fyz#{A-OTw}6{D`t}W<)q*8y*}H8yOxE5LT;DD74|35k=wJh>5Vt
62355 z2#bhe(ATZhTl-c|eEsF5*SB83pDzMUrq1*H8jO(z^&Th;j39Yx6#3>R4Esm&^eF0W
62356 zM;P6eIz7rZbVb=1MvEF%c7-`aO^41YOOz9l<H}0qeB=z^h7pk#MT>HX$cvIh1%$IB
62357 zu0_R0Wkys-6-8Ab8^YqlGQ$eO$|9bHAz`+NWu#a5Y-Dg`Tx3W1tH{jAL4*;NuF8m^
62358 zMb$<<S4~A`MzyI5B1WS6Ra#YSjDspDdLCh@7-6yD>B@z$jPQaO>qE^4YY%1}Y!534
62359 z*Ty&>>Wfeyn`0P<I%1|`Uq+Y5EUA`bdZQjkJ0G%%Ar9q6+r*3@*3q(v-YA{QFFGVT
62362 zu5=wrKJ+kp=upm~(&+I+`a@08(}%iafo+dbMJ*m`k9-#EcW5Ab;?S7NBBmrZ^3XK0
62363 z;n1_#gxJ#9>e%eqw%9?yhut6I1I+asPHYc#MlY+Rv15_lu>-MnhX!ICRWT9Xk=0QH
62364 zvF(U;?C@dD;p)SQhjU_|9&SC{f7s?Q8&Jm&_Z=RM9XxC}+;Z6YuvZ)-jzApZ#*UO9
62365 zsf$}W^7P1D-1L!-BSUc=NBob(93F`aii<h?EG{iB_wa07X<TLOXdE}r3&@%^^)5k_
62366 ze2*lEccC&6lWzh<0k^>*Cg0$PQg7iysrSO6Ywv#}-&%$u+m2Mk=S5?O?4p{ZSy2wE
62367 zrxCMJe$nD14bc@*V%6M{&iJyp>LbHPCgSVjT8_*kwsA<@;E|<xn^>FJXR!-_hw)fl
62369 ze&tA4Jb6x<Ej7+!YK-MZV|);B`!!;p6qi(Zbn56zQeDzOf<uB=(zHUBY#k;@mWBl!
62370 z>kEAqZx>I*%i@FMW05U~)8j-(5|88@%83n%jf<DZkHk+Nl^zX<&xv0=YH_saXeNp2
62372 zN9T@U@$$I&c=A0|7RXBwXs8oPo|?83-HG7n0(s6C)=8fDMR%mm_2M0EPhcFgKIWXj
62373 zJ?3>R<Y<3_>{!CF?1YeGrN<0MM-t+XwH)h9$T~K9Z2IW)grZ~1iM9#4L~f$@(T1b*
62374 z3H1pb2}r_V!Z@-$Mtw+h$S<b&km^u+q9AD^Nt=izr6;Kp?PA(v29xTOI+KQz3gYwQ
62376 z0i~l-l2VdVozk9Sn?j`cCO0MbBtNF^2#~$Bpn8c@y`-V(XgcWeCG-+PH}5e$mL5y}
62378 zl&8Ol^3hnd8m$8eJZ$#v&-HKn{0EFYLy&xj=lXYd3h5%m^gN<Jd>YYzTRV^Fm(z%T
62383 zpd`gVxhHtwz;sCSfw6-D$@3|?<VPtn2kH(wAfl9>)U0>p?}Q(XKW3ZIm+~;R=pDv8
62384 z#8Fv-A)z#-CROxK>N|O<zVEcZGng9w&Xad$Q*~)bnq5ju%ECKk@6@K&r-{=1QajRA
62387 zPKk{cL{CJ|M=N6_F#&1H<K-ttPfSP4PxhRA98HU^h;B^p&a}>SK3;obIm0$BA-(D3
62389 z$;y*Wh)>FNn*8`;#!RLr>xp{e#6)Iw)?8-mX_|WR#9U_oX~)d5)1GH+GLXy{r$aJd
62390 zogq#qriG-_0!M=KgT@aw29=$Xp9(*op5c8e^;BMl;#AqG+K}p?n4q?h=AiVTfso$g
62393 z7!(r{4(4L!RKTg&6R%EXo+?5-Pt=`as}r*-)p=@d+SrNqtmad)tiG(Vcl^?(PAS05
62394 zB%aDqb}C*(=#+!u^@`;aW2ZFg#;h52uX-$P@x=6L<W%)()@jK*%Hy<CttXaF^`9D3
62398 zBi*4MI&E>L@=Vidhci9u;;g0!--yVxv`9&00J8d?4AQD>rrxl)YFq56w;`@tm~GUl
62399 zhO2gld`Bfly?qe-y*5V*0!E#MjIFajq(#ABTN`^|FMGh4^rQVC9suhr6xdGSF_HEY
62404 zqB>hOs+!6k%YJcYKAV>P>Rm>*L$)MqTwS8BR5z--lKhfX6b7d!6##UeKV6p{kR6*f
62405 zowXco6U{zdtR7ZBJ*`vEs#g$ybz8Q@yXqWS&SEY*x96;7u6OQePRLoO-0-uWxoNpG
62406 zIq_$Ma|?2^&c^5J&Z^I0xsBO&?-m8H19SJ=?H2`V_WSKuy{pYBI$Ls9pQAh5e6}~h
62408 zI@f*f;koql((_Nw&*qJtFFRj*F7JFmetmvt-gG{aZ+A{}KIVM;`N6!Ud{MsNx!Cj8
62410 zq-6dPlJo`k1%m(4^0bI8f>M82s>F0Lg0IO|$VrP+qTKPsu~YKg=~If6cBkS`auZ4u
62411 zCzI<>dtY$6Aj?a>5Pl*3RAxRC^xgkL(FJ|B=-q$|t?IgL|NPj~iVK4mCh~GFEEd?D
62412 zD#*{uFUdC)5CwkOvG2wg#Hu^8v+`Td55#Nydjq_KR*t-iul9ee9y*fk|2#nHzYvgo
62413 zs%#(a{P_8qc-#2a^DAJ4w*4>CaMDk}DX##h&>yGJe@*8p^v4mu0?9?$MP)(kMeW6g
62414 zf`E&u7xOQu3MvYkE~FRq7K~mfD0oq@q7*5JP@7P;azde3G{-+WT6455y5|u4P)@ug
62415 z{@Kyoqu0*Q6%-X@9u*`!O_;kdabZ5g?vTx)#Pbgi$qp&bHx)P((85?@;`7}Xv={2n
62416 zPh9A{FpT&Yv5RCyilW4e4=*)e>b=->Nqs3kxAL6dIaRLw9FjYGapKa*rKyW^MK+g~
62418 zzo6z~a-nyj@?uV5a$#;k%f-^dYlSrz^@VMP17M`KQ?r0kvw%~xfKju6Bdc#k-A28a
62421 zV*Ysk%u)7H*%3Whza-`-=PUE%(OuCE@A+N!RI&1}<>y}PyEIbBE$X~98LA1bE}AYO
62423 zS#sI`Vp~zndjapo6a~HK^q%x$#-;Yls>^AY`Y-2QzIHM1(#YlN%Pp6lU+%s9`111-
62424 zc1cdjwaW`7vXa`8j$&GgqGY(_Suv|5v1IXz^~KUl^TncK-y)<qyg2z{MG>Por?|9;
62425 zU92x|Lc&TzuC-qqE=|1l{Mu4UZ)t96S!vz-jQ2&Qo$m*{A73(3`mpqQ$yDjf_jBGa
62426 zD_Oc~^M3vN-6geGY_4*z%CAPgKl1*ItLbG(nZp(K)xxV4SDVT_%M@38%Tmh<uE?&A
62427 zUVU+OrL3Z?Sz}k$U-smRLL=4$XyVG|uUl%=*V)(QR}wX)nrcnkb=CDu&EWNt>(y6s
62428 zG*312NO;NYuO>9vB`eoxzZ$;6(3Jja{t8!P(6k(`iOY;DDo!lUi7W$t-&}6*dGGT|
62438 ziYHH-ps(5blk}6|YLd22+oOGWQ+aEpQl))*Gx27&F65?Th271P%FLT$9rtFXE<szN
62439 zow+qoA+89hEYW3G#8s#(t97Lnr4`kc?K(q6Tg71Iu&$-zX~lfyb6wvD79TiOE&;h(
62440 z){TDP^?~9xLpS|F@&|dhMY`n=%0H;T9dOI`gRT!A-H!iY@)q}Y&Ie1Cwzs@*msJwy
62441 z9_eJaW^Oj#Qdauj^u5`2YdpB==J2iLo7Oj<-pai>d+XZGm0L9-$U$!%<5nATRR5yt
62443 zrk++WtEFd>&*a{g-JY&$uNu6asZZ1^ZqshJS23!H+jaVW{n%~0+XGeds_@%mRjE~Z
62444 z=h){)^Mmr^&Xoh7DC0J9ZVI4&@wu1zmHADTQ@7*vY`yGu@a-kNP37Y4LVb>2b6cyg
62452 zZr?(^*Pc9cfP5Pw`Tq5th|AhrgHVJA0*dfKAj=6rT7-~KEyN&Th#MjSX%7Ufe34zq
62453 zZa|SC<h?l`#23W-5ORGQ1p<m(0s%uxK){ev5Ku$|0*YJ%0Yz?tfFc#h2W$7aez}Wf
62455 zYkv9Z?ADyRobv3l9N(PCD&<+$S*$Aitp8cD-YL5;rvt2YM{?$Jo}OqqnV0FD>2=ca
62456 z<mAc6Cu&ZrG7Xt6C(|-VGy6_FJXwA6Wv2B>|IE_NY+Zi^yF#XGyESraN-xokRwybG
62457 zbyF2N6`JhHvoU8gvTJhEa`Lm;*^6fj&+6W_INNZxOK&h_-5t6+VJN=4P-CfYHdNL)
62459 z?o?6jt(JRMv?8agq}9x7QB_d2e|4-rH%FY~uh-n+-tpG^8A=U?+je?~JGpnR>6`D=
62460 z+-Xan%xKHB&E#gpo-93?eVe#lc4y$uxW4Dk%$=2+YMt|~7q?#Btk>yvCAVYsk%ksS
62463 zDDNaopL<;Mn3i>VRC_GThW|gIg|vScEp+=2UpJAMMq67wk(frKFpW-O8jZp<I)!O;
62467 z+FybAuW5e`;#n};sL^br)NG^lC_1Q(ddh>-PtY?+KDDYFsdpL;_1dBvd3SmYomqCL
62468 z7t|J~=1+H>ZZHhr8M!lUn7H$*nrWD?7FGM-p;gCLXT8Hsn@f*OPfODuZ#zD4$Dz8U
62469 z+Hglw-C8|xC!qRC_1vA<yR^HG*IUbzwIZ$G_2=dN<zv^2%0)NIZq$~uZpd$hU)PrV
62470 z-e|uuSRQ`k$&Fcq?oQ@i&$}UaitZ-f&Ancmm8hOnzs$-$V|~W?*6as;Ralk7or=3<
62472 zHyAevJ0yER&5*VyiAE$OdG{*RIRAY=piRCG=DEh*Wz`lDoD{J-e_6=}09D4S)0
62473 z{1yaD<OK*;)E$)#t9VP<G7HL<Sy1;_Xln>e-f5vzcUov@BpL}~QZwk({T3SJZkUp;
62474 zL^jaF=wS$r9!?KO==2CWC`D-iovxy*KzbFKuigo`Q-3$FHuz4*-Ll&FJE}W_cWdvq
62475 z-x<F<c=w5+|IUlMvo(le<j!)9U5%*PrpB*EW#}+GuXe8X1UeB^9eW3<&ZtSRDY(O^
62476 zE~wGg)K{0+bk+=KR-P7QBiYQ;-q}R9_np-0+M0=)`8zpxRkh8v`n&$M>e`Z|xTN~z
62480 z*abAe3-toBzZ;bSnIO+uw4n6EnmSLBL7k_#nL1C=hB{Ai6LpfJEu|k@D9zZoZhdt9
62483 zw{ECzqSm`^;Umjh<wwqq&l+FWCVwRR)b>-sN6JtAKaKk+_0#N6uYHvNY2Bw?A89{*
62487 zuetVF-De&3@t+NS_VkO`wnuGKUu3nt`pWLJxi3n-Ff?Odw0<#ApViE27S|Vnnq%s9
62490 zs$c%R`18t-ZQ5n+;a_sw)7y(`3%`_q8TonBm+4;??koJf=kv!OJAXd;`OA+zTddpl
62491 zUsklYwhz{pe;o8>Q;YMLy<d*jwAa?Oczqn(64H|J<%{--_Qfw(zP9<AXvuD~YZJGW
62494 z>uBldZ&!UC*-_k~Zy*2q@z+!BGhZ)vFpf?i>r7-O3QAM2GBp#L`C|!*<%xBr`m1?Y
62495 z%St^<Cp3N<RcS!!oF-jUQ2OxdtOmJ?XtbL8wD7c*6WJ$9OI61iCk!WA(z?=%(<_g2
62496 zPxPG_E$b-1c60LPQhANeR!5W#mbdAAb*l0KU52ixY`lD2SE*|*pV9T{#>!rlujpoO
62500 z?RfOfll$WjCORg*nfc~bS7gU*r|tdO2a6rAI@vu~uT584k3)~Nm-xn})2lPMEB_m(
62501 z&bXf7UcavLo`jy9-q^0Xo@+g|z3OiyotZryy_&9$p5dNny|rCKJ&O;ldpo<HK43ra
62503 zF3~P|=k#|O-xUUMJ3J3QJGjuf^quazhHtIAo4R|xb^5OByN8|~yA-?Pzm<OX?7M~F
62504 zm!AEeW8VgJTXZ{q8`CZA4*IsNJFYwHfThAh;rMNOcX4+mu-uf!?85~n;$9Nmm=
62505 z1~KVZ;^+=^$J!1c9Q8qcK>QB+4)80<C+r*1i|9o_`NL27#?f(rvu~dD(J>3m0-<4+
62509 zy>=jX@Wder0E3PpNg$mJ0u4z)z-%FDAkdKG$O(|nKr%u46bKlS1p*B@jl2ueIbiic
62510 z1FMfh5R<D(9IQi%K>9rpXw=FQN3MYI%lh&v2-w;x^H(5XYirH-LBOb$3kFs$S`e?U
62511 zK6MCrZUwalrLcJQ6lA*5ssuM%m0;AW1Ouy*SupP8N)$I*o8Z*igj|n+e$g|)s)U9-
62513 zsRK>}UV}^bt$Sj6(!bBU@7R;yQ}%t?`N8|*?`sDX1Ia%#zHcAM8z}!-lpoMj)6@F>
62515 z`Q0xZSbE_1bI$$p2ayj_`&51DKiU37{9Jaw<|p3=xj)zU75t?7DdXqv`z=2eJ<$9-
62516 z(x?5Y@~7sXU$n8llHKolV0h5nSAYNEgPsSE`a1iDf9m^bYzXO__-SSk8FIM)bddGn
62517 z*^p=7{GenoXh`t`Z7_Z?dnok>he6F?%}~LE`5$wB)P&}St%Ni0&-7wHNPY<Dwfj-_
62518 zBm4exiS|nQmAYQR53!+|a6zy9hs<8(k2d{Fy@@{*{ZP@H{X^pq-MuS6Dt=7tE&1Wm
62519 z56^ome^~6d>}~9K>i7IQGT0*6vA3%~xIf-q<v!s)ztdr7d%rqhAy^t5)H~c?(y#A*
62520 z+TYyY+dJDo(mw@cA^5*^;}7cwwZ5^S);Fsw8#=X)p;IdrI<->y_s|(~1w&t_IT#Z1
62522 z)Ohgvq-IO%q~?v-Z?WGZHq<VDTk8B}3+nu3IyQ@e5ybxP^(o97sgswjsFRm1|JeIw
62524 z*F(RaNE!WcZU8x%;mTDOo-9-tPU?Otbd`xplsaXDqWQ<R0p?G-pBe^;pSpf}_+#II
62525 z_fOA$S{P6aS`0e+5Je;ZlfAbOkLtSah0osSoY8zpn$c)x^eu!CLI@!P#sbT-j4{YU
62527 zV~jB-ln_cOdH2ldXz#t&8r<i-dHPqv<C8hRS!eCF*Z0}y%+}(o70ZTIeDm5j9}Ef(
62529 zGW_1*Ek~{#xp#Qa2i_0zhs}Q4`*i-WB~K4|y5@r+AJiN^`oZK6<{Uov!O{=bAHMOy
62530 z_74soyVK<U;7n6~)6nMK&CN}9%~zTqG)-$-(6s7<YbSyyN}INv7<poH)4rybrmG)3
62531 zI5F?U$`e~o>_3{?^x$~l#F-N}PV$r4$BU0w9W6ZGaD3*`isMU;uRB_IeEac3$J>tI
62534 z!RF=78-I9U@%^`xf7tSN!P`TpTsg4%z?La@j};%Q{N<=)<Bm=LW#h30$5#Gw=Fc|%
62537 zb)zec_WxB6c=o5EpYHnU@I|GIn-+KcwD_k-ep>(5mBl5CtC|Ki*EdgV8reL*c}3HN
62538 z=8es}nr1W~X+BrC@U4SyXTDvw@J9WFv3tfgEgJXsgtte$^k8ggY{{{?O$(cEo-mqL
62539 zo(P>NIrdJ|#uHU1#y9Oe@%o8{b??^Cs6SGFu5M<1{@B;YF04-;TQzok{h+a{#%?~g
62541 z-@VB7M)eyF$95fepDa5$;&}GS2`6VBJ9ND4<l>WSj#r=DdU9XGqgQt|7BmiRxb^Dc
62542 z#@fayug-jJ&}*Y!J=-|9aoOxCxqIf^KY8-__>)~H?;dOIJEeH`DR<vF#qXTTJwE-^
62543 zpbw{gxZu>N4_AG-<@o$llRn({Vauu6A71_N!LhF6%TK*?YTa9{!dXJcZXbX5)V5Ox
62546 zwh!xtQ@r&1Nc-JJn(_qezbf9^zTY^nX5N(V&zd)H-imi>7tC9@Z{f-D-dC=_^6)29
62547 zHZ6W{-Fw@AGH27w_h!Dg<R`Z`?c3C{$=Y;v(}PpvKU{Kl$=P+MrhmBh?Dn&VK79Xd
62549 z9eS^AQ|5bt_lh@_y;t>K!>RcnwtQ6n(Wq0)KfLnM<d5clc<-a-A8l;)ezg0errM2T
62552 zi)9x_wjOM|*7mUF)|sOhjf;`iGam;(E;-fJdhO%tk0-P~_;}XG@0_~Rr>M{VkJq10
62555 z@1Jfvf8hL?mbs^IoWFkl(dkF+q4rXvZT^GtyT>1WBl*qkZytOje|-D+Tc<Xh8FXgU
62557 z`8ns8jh_5s(TgoFUa4tbSh28h^sE;vYS-6pujzR4Uaj~1hR$)FGtTeoT++Gz{L#*x
62559 zj`l6>`&w_ex3piaxmBBAJ7jd-i$-lt?c^7OwR38hp2|IKwLiEJI8}b3_(IipkIb3-
62562 zyQX$6IMr}^aR=|nJiVr)ylZvW`=_^djOser)pmMc$K<YCmtCh%cFet;f4Sn+>!-Uq
62564 z7ruGs&1>PZNO{J|xwVnpjIOy;L>SlqK12RaGNkjgQ_Yj^|I$49`)c=}vt=-5%e2^2
62565 zI(O_Toh$Z~E-ChWE^bjz?D?EO_Ixfi_I%D4dp?&Odp?&EvuGe@OYiS^g^?Q*S%3v%
62568 z-z7X<u7|VO+DLM2ZNym>iLQ`)`9XeAApgSuMIeW|SIdtZ9xiUO#pe_JgyG`ihTQPQ
62569 z*3XmpX?|KD(KQoiwd6Lx-Mvnd99v!YcE5f7YyNBT?LB@^Nb(#08^QBFzb|<H8~-=M
62571 zhQVy{Pu%J8*!p~Qjm5MBc0k<Y#oywVEA}k5-r}sZ6x+q!Yb?pJm3(jao8ANL0pi;-
62573 zy|>|sy|>}%UJr<_ce-M$0&cV_;Et~fus>pdBw{1_c9Sc%CYtm+h;q3?;8s=$+}$e#
62574 zuh<R3>aW_b3J;6E2j#L~vtJXRmE6F-yLQ8mD;5nox4XT%y<zQ+AJ;9aIa1wpw&{BN
62576 zk(X9{KKb)`=Z>`R6}{1(_U22?m%7fiwRc{+*OlCUr>n4Q__^ypp1N-8y7}iG{CM8F
62577 zmFqS?^XS>8Ih*F}{?6GsN9VLxr9RvKT;+4)&L>}RUC6#r-Zk#?m7j09FtY3Q&-Z_R
62578 zrfbpXH*WB*H8-+v47t$Q_5O{z8`HZE+*ovD?S)xgXKrl2ak%UHjrJRN&gWlP()H+a
62579 z=)&5|rI$yXA9UgU%Z-<3U)X<n>E(CNkNolSb$i#HJU`*b8`fP}cfTtC*_(52eUE?V
62580 z+V>*gD}DXlZ`FM}^zD-KGcL4TxN_m%<(*%6zbNeRUOw_g<rfW?+rOCg#nQ{Szu54_
62585 z)7CCJbN<Z5sTb#6Tz+-VE$^+utIKXx-fFnG;p&E4vu-WDy6e`4Te~mryn6Ij^Q|ja
62586 zJ8nJrDtPhm)jMC6el_w__g9m@ns@%{#kNoLKOK7U#;0|kPCI|^;-gO&e7dSL`018U
62589 z{8dAHS?AHuCVw`!v;DK>pKUx||Jm-(nvPHVtn;(G-?_i&+M)-(*5oruL0^~ai0^Jv
62590 zG*?CU#WG_5ZI1na{GVaG*YipJj(2|--A7WrGJ393v)H*2ZN!Y9i~n|sGph&rnfPyK
62591 z5C16g_u{`DJ^Z7{---XWYkdAz{I@OkIW7tBmh!zGj1gE=GQ$`}(CRqvo|D-<hu%Gi
62593 zX<i>qVv^3WywzjjxZGxsRr`0_SeHs-mPQ99i~scsEE^sr&drgwU+n+6s4sT6WX?I$
62594 z&VAr}ANbx4zISWiJAUSzd3s_%wPyeBb8bMJNF>hP(>>azo^z(1Cjn`aK-9@dbIu)!
62597 zF%gXg5S4c!k&F6tQ{bEhH6k%f!=P4-?$~kxEAnoO=yPC?;ZMn17`sl_DetD!y&dY=
62598 z1c>BK$w1|A6Un7sExphalcX}{S#fSQkv|N@<2lfk{Kf;miH~S0qnbUwE+y7=-KR%h
62599 zNu$rQgz$p?-Fz^{6i$UbRO)EhMvks@3|r3Zt_6?|+Een=Wy4lB5vF@~KV|N4Oqk8$
62600 zyMOB0U)Q69NQ<ky4HT#SkgarWMl*=5@PqV)C{Cfx`k|ThL-XxNc)nT<<ZPg~^)aCR
62602 zUHSq2K{{^ec2#?)-aQ!8FxI^TE(dy{`02h0?E<q8)SRx9Vx&jiSNekQoeXRfI-;zo
62606 zACD)9F*GMh#~#D4H^DESFO#~jG<tO5oH3volbA8aR5}CD7>edt&-eN{)1;8sGjP2L
62607 zu8*HH!s7bfIn;fW+6As*+BK4k&KGto7C@-%4yB3D53X$BSx_DW<&NtDVhqhj(m}gn
62613 zN$@iXeyX-j0;8;AA}pSR^r(Z~ltUxq+ObPK=4i{PH0-f7P8@zc&ExqvYqnoc!~YXB
62615 zaQ>!t4MSWLjiXlz%n5T>_3vD(T0vsYb?z9Zu01-Kb1kIP^#n(ODC_1-jl{{ZI60a#
62617 zd-qVn5mZFdaD<o$u?#rt`1sCBjI11el-U}9#;FE!T~3#gD`PplxFTbm8|%&*Op!va
62618 z%Sbs?Env;)PhO#XTpPtSoUFkS+DE${N-pQ;$nFD{^J$i2AWtzOhf*?df|GMU6h)H2
62619 zXDjxZBYC16Ai|N%Nrt+1jx#H+qx2{y8U<ga-~U>g9C2&<6s}S-=Udj}$GGxP+J*Cx
62620 zbkK`@1Rca2Iyf%G7}9&Z3SxfH8gU=PbWrDUpTTs{5^`MVb(jug3|UQ%tNNysL3}-k
62621 z2@si4CBgwB^P=wc9GqKV#?njVs*UvLcw~7DHLH6JwHh$(yZGo9Aupb%S~>N(<7=@-
62622 zIKtG*ATg{vwc@LE5OY?P)ZA?nZ^0yKT6Q8&eJe-Jr_S>|r`s;=(WU;q1-^Ia2WYzV
62623 z7<zxET1x-k1m8>Rso%$~3D*amSy~zbHDLmO(>oYwb;^68H|RZ=Za<0^qk2~ay(duw
62626 zEP@W&*@fi8n0}Xpqle0WG=1XOq~e8+E_ly@qeI7?-j^$$s@?^t-YdIEoeuhReAUpw
62627 zN)4xjm6-H&)%$TzEZ-^7G1z0P@1y8+Fjh<h#}DqiOBH@P9gHi}z_BLz>2w&=eMgNr
62628 zu0@a94M0EA>2$2nfc~S#CmsVwEskUu-O+mqeVs$z<Eh@F-__|p1U*aDwDc{9R`)J>
62631 zQ^c4<2k*`>2KDS@AGLq<A>R1O4#b$@tn^E-fIcHBoO4SVSNAGCze_LEdw1QZ)N?5#
62632 zH5VO&-YE5?Vl08~)LF~S<sdSTV8ld-r6B4PJ4YrjlE{Z>e1L`ldzuJgK$lK`1hoWd
62633 zbc7jL4<<rXi|g-D;P*-7%9pBRH8Wt$BrtVMxeCX6Jcld1R7{OVXLSv)y<jYwSE#20
62638 zk7M^F?abEBEai-YE2G@uc@m(9=Qf~+=Wskrlg4An92`AYJ2~fE{Z)WR`#x?vmxjPO
62640 z`yLOVfp&9f^j|$d&d{0;ADzZjvZLB3>9){$o5W0<`w2)#`w-@bF=t%(%N2+*q%o7w
62641 zqLdH5%M3AxAAE-g(?Jc(c|gomWN~_4^^T&CLZ@T;DvtUK6t$+ytEozFB3j%PP%93-
62646 z^av1x^L089h++F;%}9Q_A7Fi1-S2Y6?XUKAB?eQz>u;!iR;i(ORHcU6^TeO1Fhwh-
62648 z4)!0|6R~$v9&2j0l`BMg#*}{2-_U#g{@q&CzlZ0lFX=sesiF7crH0<Wml}GH?c@sm
62651 z^g8T^@C|OK^5d=wV-6kc52&sRXIu}G71H1c&^rKUtsHkr7-J}Y;<Do3r%@4uI|{l}
62652 zk*m5o$_WpWn1wJ-&{2M*b2Q0uR9cIqrTB7^FDLnOk}ua{!(%w>drq!$R$^R+VQ_`Q
62653 z?4d9L)~DMFrpAf&^sYL0JfaCO_5Mz!b0Pv`@LD%9EBJgz|4n6Kj~uFZ=+6O)3|R5-
62657 zZ!}pw-p@5e?*AbpTE><W^G>JW^ml4DwtDQtHKa(39=&gb+IF-E>oneZfXX$p218uZ
62658 zvjp@oJ5f1D)@_KZ>mW2e%u-bDf$~Go#8J)?;JW-UuV7r4pQ6WE3+EyyzfkhiS&AjZ
62660 z&;P5rKw{3WFnWfNcN{t$%p~%z1M<`Ji<2o-ndO~^ipeLjDqW&nB<E46jUn@q>|7ij
62661 zsN?E$gSiamx4w!!<V*^CG^5)|T`i-mN83-epfk2ktFEL$%|RbfSJ<#;=z4K1i8TZL
62662 zNc9isNtAz4Ugzi*+nN!c;#ddj0i$|tgT4VRtX4hjA9!xqzp&S-UZT!U_Y>WJXupzn
62663 zhThK!T=$nm9+Svt5_t{fkJv{jk5c^s(<j39%mMA6C^KMs>;-)ge{9=C8GxP_W#Px!
62664 zp0=iH9ctdRr4#vp^Zu!`vS4@HP@Y-JnW=os0d<rMyxKHOaBcza`c57?KZ}$`U*AzF
62665 z;+n@Y=~8oqSO9@Ll=bhKtA!8~A@VnEjz;u7C8!;TRL=39LZ5}c?%ls<rmEC&iK*E-
62667 z<)tig42u{S`jNDdyjt~r$dj72nSg^%%M;L29uViNzBkri(-ZU-ik9*io`9C}Br5?e
62671 zItHJPV}2NO=-@mc=Ew)<L0xMqm@^NEF~XL#eesM<QV%LEeiuPU;S)2wH>JLhMqv+v
62672 z-<D$tQGel}|Dq^<$BKVrl!V4gLVVy8Idyd&W7J+&tcRamYgaLb<X6|^^>t&PHitN7
62675 zK8~pG9F?Fv=Dht6XX-*@K|b(pp(ujo@gPK>1+E%u6@u?TVLHl6E?@(k?VK8|TQANH
62677 z#>I3LhWE#nD-W>B;mV2S!~U1ZCv{(T-eSVKf*2z)m^)-;hx{PMNDO;9)dA?VSUV79
62679 z=zQVM9uzG`<9BZ`bK(A(qy8}N|2V_B5gjM!I6(*B{Z=vft0T-0)6sLIFv{z&7E~0!
62680 zwM%&@MkOtN#~1U(nlnj#s<il>U`k%7L6g+KN{fH5M9E9>rBFs#%p~pT^uv_A7-fWo
62682 z@2q<0F|U7**EwC9gs{7lG>L!bP-?(x*uMwS`zc*}jxR%-=m-Nkbz(@>ItO}&YZRph
62683 zyqk931BX}HBmz4{)n>3`jayOm?6RJ#q-Ei1i`;Qc_ogILX8gnhYD~AG?BjF{S{C<C
62688 z-0PZiuC)Nh5yq4;<f;%y7$-6HS{dWmW*k_JciYD7ky5v#N-yQn&*k-|c0IPX+SOu|
62693 z<8)qD=@ap%GAqXETn_aE^ES>mECHS<|FZ-*oxz=KMEeiU!74rWADo>fJ>@?*Z>#iJ
62694 z|FrxxPS+5Xp5{;a4=q1ccU1aB{He-8`wvY|<8&2+@>Be=|0Ke3Es}jcr8k<M#wCC3
62695 zR}`+UFw^|8U*Srq-lxF&M%76Dz6RGrSUsUU6g`xO!kwBGMV*={tDlN-fXVm3bqv<v
62697 zSCJWGa$J>8$Kro0+wqkoZ49-$aOS3B&KP<ZV)k%U?Iy=Ci7|8=saTOVhDnT}+eq(i
62699 z-arN%X}WE3q!s}gaJ;Fs`e-=5bc?Edag0e6cIYt9pe59~;aJmARR$by5|t4L<3{bn
62700 zanz|6l754&32F7waP(oj>1Yuc4aXp~n;L`EEO69eyXh#rZ-KF=qx#%%{9(IMv=GHr
62701 z07o3QD2`h->Tov2kynWL<9Jf>K8U}h*ZJW1p)w%E3z3{SGN>#^(_<WGavTeZs!*az
62702 zMCqA|2~OZeh(C@1O3zdj=zOrpQ+kH}jpf9?oT#GcdWO&5OALA6tv-i^G#)?`l}3G{
62708 zdkN%YA({1GLcpuk_|-9K)!vHMFlK6)N$@klwemfG$_FW*qx@O-7fbOmIELyWrs6|V
62709 zyEekO5{0_$EO2cSm~UKW-RoqPly;VM((@z+e~Y1epQMxi7sa3l#&;2cm=o(<qr(_O
62710 zzA5?X^MD>J`N16?bw8H;;9rK-{Z#UM+~03>e&2%WU~I^7Ekn159-WdOH?S>n)ad(2
62711 zOOz>SZ-oPnF%zJw=U`eh0WFS6D4FU(FjjRLR9YBcYAwXxrK2W7o%(@CqobJ<v1@7(
62712 z4oAarPSL{nm$?H*JJ;$9_E%k#G;N|RLRpB;E|jN9oc6UuensmpvA-m;7BwzM)|DEd
62713 z@I>CgA7kT0_SA8;8qn6G=S$O5)^gsxil583g5&2=&r!d3YK~5CB6<_hn;Jd5-a^+~
62716 zYHt#+m#SyP^C(2P<}HOvbU;29;-mJ*7P>dk-yBwZS9L6S|G?3&k~z3bgLeyZboGux
62717 z?+|<U%tG3$U(Y-wR?_2VRCMUphWkgT*W!qP_f~L!5osHVNq(H*#}PkEkww~wk`KoW
62718 z6(dvx=sK_r7t$#=^scF24;|E1BG1?7#tj$Jl|^9Oa1lDtF?lW23yc-{3vIny)#Ig)
62719 zmhtp%T8|L<YjF!)3-4}B0%Hb@rg#^h=&!ZIt{c<A$dlv3yAiynHihXsnW{4DI=~pb
62721 z*wkqCZV2*~wEcVdnhE%Ff-g_NSEn@-&{A1T@4loAFq=tvF)c?~NsTm^3n;C_JHLL0
62723 z7)a#rl;*G>t2-OvdXN26<xl&fj?3R(QSv{|%P8M@oKI2s<2)#lx6t#YZTL7ppm1zo
62724 z_?yVy-RCkN$9FkVzxOKN$LZr^%GG-PIZM1#RY!^UoDhK{J2d)wv={O5f~y#!VTdNa
62725 zXN<mP?bGHJ{S0Y%0vZ+3>sfCD_V#j3S*L*r11oY4qW9Z)g;U?_+gVxFbuH=ON-d_t
62726 zn8Q!+3oyoz{Ukq#;hl7#r6nEg3v}B`I@o7mei(D;EP@WM%KDJ*G3L-&1f8YPae^Pl
62727 z81l+^uZ8KLuS$Lv!OtT2VLy-4OP_WA0ssRTe4^k+*Kz`re*pnvl1|>^!g2L(%!vgX
62729 z)bTgfqSE7Zlo8$}y$<^rT>X@&>H~3kp-0B4Xg{U?9%dY+`C24j8ig~aP}AVZ<Kvpd
62731 zGSbr=d(!Ljln<H-aEBhQvzrNUNl){qeN@*0mLGbgu1PFE^gm}z=z$oQ^pwX^IJT^`
62732 z7RDt#OF*yUtUFTU`O4Wx#L2PFud~(fJ>YvaH#+-#sNbvWOz~e2%YMc==L&yI;aA#y
62734 zMn`Nzw~)TGO#dE4-@60u+6OJgV_Z3Lm9(BiquVp?gAh@7GJ#fi_~`n9p1=WudlhHj
62735 z1&G0QKXo4mxF5IfH<F*JjSKxt@-u;aZbCkYIn@lxhv}e)N`6p2OouUeKcnt90_DSW
62736 z7<2eR`5@--gYscI7$qhVIdOiN4r8(|I`Jd<sTh3YrJuqNUW@m1=LmyQ+F!XA>OjXh
62737 z5zp~xffyC#9AQp%P-EYD?_9?mI=H6^#2CsG&U@*Q4rUL@PsJR5IvvEE`Kp=5nXisf
62739 z`J-+%$yY}mzL1teC0|bR#rqmzT8zqHUdwvx{MK6{9z^3oG|oFUI>HG=y~;*c+2|@8
62740 zU8QSX-A4u@>Q$yTR=*yE1B4?QuF*L6UM>ycJ&4?`PNnf^H2r!smRN`Vdi0~u9rBU;
62741 z|Eq}lq=I$NL0%=F`KsA9Nz=TOy;TJJi^TL_V_-T?&|%+_82)t!<cI07AI9gE2*cOH
62742 zF))VxSkmeIpm)bLnh3+!VrwMA^lM>!;7q0O-va4$49AkB(=ixf64S?pQRdLWabfI9
62743 zI-MVkNT)Z{F&w83osQw?b$U6-55}}Z2l-LHMn!fUQS*pg9ndj#47t}i1LIP;!Wn~U
62745 zg-TlL7gRdxtfpY;DZV(9s<hNEsIa^km9*3^v#`7rUka79)UVDkUzn{OYeQ7hLcSPv
62746 zR++FKFsi-@jQL`n!OXAnrRIk9K-0oX;dnEp2bfJ%TBrwDMVxy#N)Hq*jp9B{<v>Y>
62747 zJr&j{svlQ(Qh~G->hM)-i{z`L4qr%1p^`7OJVqs7s0WIc$~%d&5w5w;T@;nMV2)Gy
62748 zLj6*-6zcHB`o*Zj7weaz#r0q1OUVmq6Lkx)&N{ghqUt_nm{vudY_InSPPT`r`eewZ
62754 z4{=?7m~H4hhI5PF#o^pQ(bKr(kE<-5r|A4e=e77)>V3TIjqGk3+11zzjox!oe?v$A
62758 zsf?n=1D=OX%)=(;VUzQK5$41boJZoggZ6-bi-I9ctpjRA>T`22PSEMmtoEepJTQhc
62759 zfkTJKWlA>C|C#~^{B(>1OkY)&7zbEXFD968i6QUY_4vRTC+T1&f_LcZ^^mr|f-*z*
62762 zm#P4qK-D}B^@~yY<VB~YP=_zpFI7vZ3PaVM_-9JLu%_rwTqzXl7gr#M7VDR)Oq@WS
62763 zwHZpk7?n?~pnfS@T;U{Ntl!5~K7DSu(#11BMyU!YX>q-SmC>PvC|xl*f$D2Mx_&Vl
62768 zvHofPG%o3J$4T?2x;QBhrGE-%3300PQ~6UJ7Onq8y&~?YoUVh`Kkl_udaQq%KaERz
62769 ztbdw6)#XWfDE(77ONdjQp~|1?z-av^>Lqa>=2UKs$E!3&Pveq5)%9Rp@~1i<ik|8M
62771 z-JhbzJu~jfq&yg>dN?^Q#;NX3<xh2IiF!HICHgm~9W}z@^H4U9&oq}>8|}TW)}$LA
62772 z%bV{TZp8kV+z>sc%r=bF<>JGt-e-H?C^QNqg=K{!3nvxMDO^^#p>S8>(ZY_xJAK@J
62773 z^7{<!Q`cu&p9OtZ_1V&AU!RsfSNl9D3KSJ*-7TsrYABjnw4`WV(e|Q4*~^OBvbPo8
62774 z?92OR_AT!_Dks!;a?bF+b91KjUEX(N-`#zi`gZ0t^}U;Ov)G#(C@v_jD6Y?)R6IR*
62775 zaq+_3&Bd#8j}&jsy<WUOFS)oiZ&2~Iya~k*^A_f<%-h&6n0KgON#50d)%ouH?EJF)
62778 zy?6CKY^*BYR(!DdZ1IhLM!!hEvVJ4`P3kwN-?Dxi`t9m>v|mTRJ0<Rt{LJE#p(S-C
62781 z1H3tR1{CB*22|u$=GNy<&7GUObU=OX`va!uHs^Na-pVubf_X)G6$2LLO&+j1Z%N*o
62782 zye)Zq@{Z=6%eygPYkq2eLH>~ZQTdJeGxHbaugc$)zbpT6{@MI%`S*Kyd*${j?=_-V
62783 zL$B9+E$FqP*M?p@dL8W5+UrWMy9KU-%!1N_s)BI^(+cJlEGt-Fu+3Oiy18_3>B-V7
62788 z*1_v@?+)IPmpS-wURB<>ylHv!@|F!gm$z;3t-O<Yoq4zOd44FrIDhyMD}Tz6?EH7~
62789 z*XD1{-<#i*-=2Rn|52|%ufkqKd)4%s)N59+#l2P=s|H5~mkk~{c+%iGgO?57FnHJC
62790 zqk}sJ-x=Z_l0RhVkh&q$hAbGeYRHx$`-Zd(xjN**lYu9TpR9Va;mMg#E_rg@liQy>
62791 z^kmzUH;3|}nM2Emj>?!kbn?)-LzfTTICS^WrlFk~H-_HLOnu7xRKZgfPt`v)J#*1h
62793 zoIS4MT=u+*TiNS}S=sxCWoLJ0-_GH~2IUkFtI4SwHYI0H&O144bGGK}9X2ngeb|be
62795 z?`qyX8LRoz^XD6@DvnlkRNNWn9+p3B=&-tB(?S))77SZ8Y|F5H!&-)29rhr!XLulV
62797 zczR=G$J4tbtxq>a?mpd_k@@u9jH*g+#<a?UjAfM-8QU`UXPm68&$wMVJu_6fFmrfj
62799 z$=UhYgR)0vPspB;y)b)a_Qvd;*@v>vWM9p`m*dXK&MC{O&KaLGJ!gK-@|<_$v6|DB
62800 zb0^ozjpUZdSj}CR`+n{|Jy!E-^Clasp1$(*{mRtJqTt!e%HaLV@#(phGb$HXuC3fw
62804 zo_Qd%C9^B@PL`Dw$tuaJ%&O0tnl(3TY1X=|_p|n8HD`5X-O4tygV{yd71_1fle1@M
62806 zJHlA?%!+3=rEPm=Pul)xn$tR;=?d~^?gfjhl7qvm3WHOsh6mrN8W-Fe+#77FdOdiv
62808 zheBsUSF0X{-QnzTS-3hpK0G}<KfFBrZg_k6K)5B`6}}U(B9TZ*q%u+;nHrfJSsGav
62810 zGjmbqs?1H9yD|@Fp3S_Lc|XgWm77(bH6p7a>-DS!Su3(OWbMd0nAMtfCF^dsD?2m0
62811 zG`lK$T=ul=dD+Xd*Jp3b-k*Ik9;-Q_oMNGw2UUTp;;O2uhN_u?BUMWR*Q?f5ZLd01
62812 z)mC*gZRE2&ZN{^iX)B*Ce|FTflb@aY?DDjG&u$E6Kf60v{cO{-ozLD4F0b|mw^tVg
62814 zLtCB;hK`2Lg>Hl%hEu}@;UUkJgd3l$4lfF?3U3PU3Lg%i4PSe1Lc|-%jg&`5L>eNm
62817 z*>fA7+x6Vh=Q^IdGr~P0f5gxcbt9&YSTJJMh%F=bjc6Hhb;N_`1J4&fU-f*$^E01c
62819 zg@rGyeqrki`(J2HZ++of`rQ{EjtY({8C5-MLTK8kS)pa4-U)3RwSLr&QHMvJ8+9uj
62820 z8f}G#kIoKH89iup&FCrNt)u6Kn?|n)-yFRu5*WQFGIVrvWYXxa$l}rWBAaWHBS#`_
62822 zY8q;0)-0)6SF^q5P)%FS%@_HLnJ<>VIO@g8FV1~&`HLH0-2GzHi=8jtt@YLx)K=8i
62824 zH?M9*-KM%db<K5Mb@yIMeyQ-K;lcKo#=Z3VON(Aw^V0h-9eC+X`mC3(r>}nLQGKYs
62826 z`Pj|j?PK?bTgILY-x+%)5*d3xQaLU)9;@SuBJYo@j5LoMFJpDw3>d4%s<G3@E*!gh
62827 z?AEdS$F`2WHumAT;JA`;)#E0Nn>Fs8aqGwJ7<YKwxpB8%wqDMDdC<!>FHd=S-peaq
62828 z-t_XGmz!Vidimb?<ne{$hmRjO{`K*T#;+Ow{`dpq&y2r5{?RL;S4v+Q@k-+>vtL>I
62831 zeXrG}cf2<3wFR%OdTq;V`$Dy^wS;EBb~Uu-wFixX#^TVq#;VZ6#)fb~<IM1=#wFpI
62833 z8+Rt}Z9J0P-q@b}sPT46;Y3$T&BWZ4Srdn(te#k#vU}pxl(v-XDGw&jPtBjWGIiv{
62834 z&8ag|7pAUE-I%&_;@;FV6Hlhz^Sk}o{xW~Hf4qPC#4G;g6Yu-C`w#eA{9XP#0V@!h
62837 znBJOxCH-#570L{ihN?p2LeoO?LZYsQwuSbGPKG)|x5GRfir3Zfl<=JJJK?qAt;Q<v
62838 zgNa^W^27pP{=^F3$cgp78NP+Sl@q7?HcnjVJ2Y{%@2c-!vO76DxoqOr<na^tC(ln_
62839 zp8Rg|_T&S}Ey-OITT`rw*HTJSDpTrHrl!nIS(>tL;=`1EDa|PzDYsIM)L?2+YDH>o
62841 z2Fe2?0u6!J0}BEx0viH50tW-Ffh&Q#X|A-)w9>Syv~g+E(&nWtOIx3|Ep30=$+XV2
62842 z+d&=-1&f2jgLT0v!8yTqf@|Y-HP{}!8GMu;NH3IiHGOsZ=JefqT@8&4O$g11)>UJb
62843 zr>pV4=g!1bujP$+OT3lddhb;4+=)frrQUVk_r3eP&E5|0EuY~F`iguNzFOa8-)!F!
62844 z-x}W*-yYvl-#On6-^1k8<bvcO$)l1RlV>I`N?w(`DS21&;pDT)*OKq2cvEsy%2P(9
62845 zG^D(qvLIze%7&C3DF;(pQ?8`kO?9Park18wrH)ITmO3wWS?c=KZK?ZHPo{RJ-u82U
62847 z@E|QYEkA8g+Q_sCX*1Fmrmaldn6@+RP}-Tat7-Rw?qGJXELa^JADkYXA6y=MH@H1`
62849 z*g!VW@UTB*(+w~C7W-o(nayTz8folpw#3L|OW87`7hBF&7=>&lTVwQP|AYMxql|4}
62850 z8;yZ%3)^B0Vt>bW8-v*%w%>S~9bgBH5$qs4Xgtpju|vj4c9<PDUSLPq5n~iP%8nVM
62851 z*>TovyvR<mQ^pwfA^Xs%V`td^F<xRHu{L8YJI~G=FS9PzWsGN6*eAv->{E8lc$Hme
62853 zkK!*GKj7o|%f=7+D|~|SHgDvAX#5HPBmQmUFZdtxKQ`9#@9^&#Kjz=(-#6anZ}I<T
62854 z{1yKbzQWkdSMgQGHoltwrSZ4?ulQdXf5$iS_l+HV8{cO9BmX=8cg8-xlkYPAiSOpS
62856 zzw+N07x};Oe>1M|e>a)&iD{XZal;ImgN-lDC(R1xF`qG?VJX&2)=Mna`i=D)=C>Z&
62862 zp6wEzy}|IYzZU+@V*bs9fA0{-zh^tewLfD&6EU-k?Gnh(+0O;%-NO6b?0>WWEh1+R
62864 z#EBh?6Dt-cOvK3<A>02E(ZWQud?X}k6ES1OV#X7T87^Yxium>u5jjb*$YCOKu8Yr~
62865 zi}+!&_+cV`z7&+V*e${TD-la(ESB6{{4<h8M0pIGdqrHaSX>1~T;+++`8?m?ych3f
62866 zSiFE2h|j%wZ-E!`Lh-o|?<4pW@gl>+`|@HViTC3rhKu*-rGkEdh)l-I_&_5)7N2G;
62868 zSA^sZyg|tMDt}d6J3&Oai@(NS6LV?gje=$(pDeh2gMUL@HHA+R-~Ivr198<<K2^;0
62869 zoBW$XwrPBt`22?=FK|AcPdCy;c6i<J@^A5Pi4kY;8RFY-i+sUj`NHJ0_$(tJvc`AB
62870 zwX^wbG0J!O9K*-IC-Ml7<q<CO$XnvLh%XW}Kjc3YS1sm?#kg<tw*|K)e2Mt{-$bsl
62873 zmw98kjEP(({G9)c|4e+lOXM{>me)*?*A9wr|AikC-~NLCLhwAyh2QdDihRdJzB?+A
62875 z=jR2tcHS=dU*H{r@*=+|zU}0l;`1euJuQ(vuLzkx5joTs%b`AzL+=WjU-MrJ4)^#y
62876 zG0Ja5R(13H{JxMRnp-XY@BH5d=ZE~E;PW5+KLq_F{z%aOmjBjpnIiNIGnRQRk$FSn
62877 z7&gNOGb3h1e4Alrh|ig3mch+zGu!Z*IcAQa&o%P|l5gf4w%N-p5Lfj!dkdt{EEF_-
62879 zhZq4-1D+H#L(QRr|5N5u;@b+dLhun)!LXxM!Qj!VU@+^U^-vuD!}<@yvL0DtcGhpL
62880 z-x|y|Y{PKb%ofuWHN!Tz?Xq2lEh>lGuxyX*5j4qmvf;B+>=f}i)lM~%L@f!5&*^r$
62882 ztw3U|!S-OmZHPTYT=k^=q@W*a4;A!J*-r@xE9_wc7xl@AzhUDu0!FG~7$Q>}|4%oP
62883 zhLCguNdZV0(S#9AGNMTaG+rc+7s(Sv;8jpUFOtxUB=jN)y+}eYlF)-Bj3ST*%IrZh
62887 z>_#%Xk<4x+vm43mMl!pR%q}Fe3(4$4GP{t>E+n%H$?QThyO7K-B(n?2>_;;Dk<5N1
62888 zvmeRqM>6}7%zh-ZAIa=TGW(ItNl4}-By$pyISI*}gk(-aGAALKlaS0wNaiFYa}dcK
62890 zsdQ+Dn30O6bfXyxn$|;`rlAgPL_yPgX#E=M(1sK=+(VnHp$=`jf+qLSrf6sinuS-H
62891 zTbhPqdA-Wq0vhVjh7~lOkk_lsEnPvwguGs5ZmPU;Zpj*&f@a}S<`&RUEU!nIn_ok*
62892 zEj-HHQZy9H>rv*Gtf7>=au!lvQ<;TdL$PG0GK*9V#acI&StM&HmdsS-RV9=1O35rm
62893 z-c$|6GFXbdDH@73X(^Hg6f{iAASIJBFh#Ny4aK7|MY3cK#oA$tWPSw=lQKxjqzqh<
62895 z4yg*7M#$h-XjL?g;G3k-O4LVYL?4+EePl-Tkr~lPW<(#E5q)Gv^pP3SM`lDHnGwBY
62896 zM)Z;y(Mx7TFPRa&WJdIo8PQ8-L@${Uy<|r8kQvcKW<(E}5j|u^^pF|RLuNz|nGro?
62897 zMl{KcXp$MxBr~E(W<-<Bh$fj4O)?`|WJa{ejA)S=(IPXVMP@{c%!n455gC~g8JQ6o
62899 zhc=7Mi0K;Y&}NbuF-=3MOdBRMt<<lYX_JZkpk_oha|H-_)r^>_pmJ_O4aN5XYDNrb
62901 zQ`Ou@RcVu~(k5A@O|nXxWR*6_Ds7Tg+9a#ANmgl-tkM=)r7f~bTV$2C$SQ4-RoWt}
62907 zW?5v-vdEfcku}RAYnDaUEQ_pJ7Fn|xS+f{fvlv;k7+JFzS+f{fvlv;kI9aneS+h7<
62911 z)-cJeVUk(HB(sJ|W(|wX8Wx!~EHZ0YWY)0AtYMK^gOOQ-ky(S0S%Z;TgOgc<lUak4
62912 zS;Ho?hD~M-H<>luWY%zfZPrNDQ0%`x(tmxV|N2P(^^yMTBmLJ)`mdMtUoYvuUebTP
62916 zbDx*YeI7FRdC1)7A#<OH%zYj*_j$<N=OJ^SNyeK=#+ymTn@Pr-NyeK=#+yaPn?=T(
62918 zJAOI})#pxf4TO$O^*IjpoJ@_)ECr>Wlc}+(K6j#?lc^D_u5(e($<#Pj<)xmJsnM-I
62919 z$D!67)#%PtP-@Lljc)b16Sd~3#=N@DMXfoinLw47T60wMgZdnYT60wMLxzG<YmREx
62921 zRP&iCFSX{V-Vdoycc|3^H6w-<lv+Jd^Q8JTidsETv!}XJMy(#G_gSjE)arq{Ql>wR
62923 zDAj?u$qvL#b|7xD196ibh|8cl5cTdhO+l#+#6@->F0uo0ksXM-vKLTLssr(p9f+Uo
62924 zK-5)0zk*U7ND|qBsB43%3QBb#YX1<?P=|IM*+1y(h*Ym3qebuHaeY(!2Ynrp>NS#y
62926 zNUGPMdLs|n8+pjy$V2u<9<n#`kiC)GKj>WrmRIc`^tDW?*PwbMlkAO5vNtlx-pC|-
62928 zsNRT?y%8gOBS!W{jO>jV*&C@{h2CpmdDX6hUjJ1)5UMxgWN*aD-iVXE5hr^iwb#%)
62930 zg9=LZMrvQ8b}LkG<RW_`7ug&64XQU%yOlHrrFtVj*&F%E-pEh(MrsceP*AEjN+Nrs
62931 zB(gVBI~%`(QoT`-?2SUk*R7&tXsAQ`|B_vh{>ufbW0G;9KTV}pTx4|Xzg(a?CYibP
62932 zUoKD`2-V@KUC=rOr8+#d3sO5Ks>Ab=9iEr$@VsP)=OsHlFWKR#U69@zVR_XqNdG+p
62933 z)iF^Wo`>x4JY<LGAv-(|+2MJ}4o~fZ^xg=|t9C*9Zy%_RiR$o7vcogU4$mYzJd^D3
62934 zOtQmMyCA(c!t$zJkpAlls$-%$Jd5n`EV9G1$PUjUJ3Nc*@YF6y?~Sm$Y8OQR{zC1T
62936 zdn3JL!t$!U5&er3wU44YJe%zBY_h|%$qvsZJ3O^x()%bZnc6YYzj{%-E2_hDlO3L$
62940 zcRuv9Tl!63`q$+2TekF*SNc5=`ZvY&UJ>-~glTKizvrd*X`n4c|CW}1XOI3JE3IEz
62941 z5A>T`^xWboXGhH))&qB=h$-<uw%pjlf~?5cZA=rNW*G;J8OCg*-8gDoH|7}&1^r$A
62942 zx@($mT%6t*$6Ur{R$xpJ6laY^#$-V~TU@&+cHL})r!MxFi{lD^l{hx}Pm1IHK+xcU
62945 zb*g{9;Yuq@+nlyP=n57FXNd1c`X>cO1{MV-1XdgF)EfWP)Jgt%ftIwYw0*%s!yR}x
62946 zE#kis*q&MwIN+a_R%#@thtfBv?+<NEFH1k0ek-&ueN@ODDh!=9l7pqerD+d?Rl(Nu
62947 zk->4n^{Hk4+TgU{b|WP?DY!LwQqUa;6@=Qt-q7vz5uxGfjiK>IuZ+x$p&4^C8Zy>o
62948 z><W9s4dFZC-0+NuJG>~8AK4c!53deyi42X@MOwon!h6Hbk!g_yk?Y~k$g0SejOgDw
62950 zTfzQ}tz>`BR<YGwDBJX#0W-}ki0(aT4mO{(>jn1;=I-Gg<vf@@$%YF4l^XxKj~!t(
62955 z);V#!W?d7<f3@x!%x<(B#qk^VH^lLq_8*Glx9x8m(Z9bmOvH6cEK5e~OjhhpF-QDk
62957 zKN8136aSd8%2?B*mrRyvn8NP;jU?e$WkMsu0|-so-I|)q=8DghzLv%GwNf0TJMhN$
62958 z-sS8PyJVPr5FccC;=1EM=RY^x!ULmwXufT}Z7}oi&A%7g$+z;w@o%l2;`noGk2wCL
62959 zbwC_{X&n{E<5r6}p0>`4<9X|{IDTq<Dvmd;JL33j>(@e$Q|zhY_$_-zOq(zKS87w_
62962 z^LK2IdXZg{fK^`l9mjrxs5ib6|I&@$ihn_o-P}Su(ki}gtHkXwm<<+|dy+jVEHso2
62965 zwim9*NCp3YGg55lSRUKi)g>}?fAKlKvuol^wfw&{wl0f*rg2aFGh-GtV-}6?c5kv|
62966 zmMo5WEKk_-kJujx`$cW$j@c|JwikIks@yS~CB<x(9J84_7F$W|E%uhUDr&i;nB|gU
62968 z+vA(F)9kc3M)&yUu|2-yJ9=B}Q}(I&9Nh(<$M(PH><$wh6wl?kh85eJJH9Ko72AW`
62969 z;>En5IF`nC-!9`Kd&hEYe3xxkY=7<e&f2b+_qbxaY1@1fpDvEy<=+)Zbl+-=|Bx>h
62970 zpQHOtySn$A{t5qy`1~`zON<`f8=CVye2+LrcfRMmiJuV1Q@lkSqkBDb-o`I=`=z(X
62974 zVN^DiAR@wu$TPT2;u5|@jZb~XAW@$oyhM#Lgpe14d`et-Mu{QlGe&WCW?)1#CgL6=
62975 zqH#e5RPz3=bMC$8-swS;$NA>xcHKU`R#kWPse4LP+eNU4_W?R>C#vm4wVkN86V-O2
62976 z+D=s43DweZ$nSKXsLm7Bd7?T`ROgB6JW-t|Dkt$uR6%d!vMMuKl^Ir<;p9#KRa^z0
62977 z-jDZ7G+dcVOQ0GqNWH(mOl2n4aAlB|EAiRMNuY8PsGJ0llOF=(ckR2k>>HI3*7y;n
62978 z@7I3-QnxaBYyR)>c{QYkQ}4)Ul@^AyG~nAt$P9Bcw*uWe@;P}&{)YV9@mVFu=)3T3
62979 z{$2R#x8VOB=%gqMDe8;;M?V>syqP}KchcKLTHHJ7Z6Y)7o%A-59QRIoo5;@;nS#&m
62981 z8eM{=6OzXIPIOjzW60YMpo=IGzr{R$L%B($%e{%*>YK<-B4fFAA2Oyp*+}JzRjyd&
62987 zW<c^|RG{=o<;jg`X=y>e-#NM@V-iRIEz@#isY$mpU4M?2uFvMnEiKum#ya<nN!pSt
62988 zskBzt%F_0jl39tVaqVHMj?!9eQdZZ}a&0TEDd;kj>AK=tGWni|`7*kelAD<_57!n-
62991 zy1umMrF2t7-+k|Q*Gpe-q}x{K=q71#*Zvf1iQMdTcUP_jJ@Ps-J&L6i+l5lrg#!vD
62992 zNjGH`dfb&}J@;BqzT$ejw#Amv(xY8yVJX+7>n?3&G1YoYu-?3-ZSb|$pLch?NVlz&
62993 zUfR0uN-w3myaB~)eXOsR=*nU8ed_L8_g!3T`dd?^!M~{NFTTI~9KyY&QkL_4+5_JW
62996 zq;3wEhmRn=CTtI1Mf&5YEb2>9G$0xkO*WgOInm|OO-L^^o6Wn?(&(Y6A$kGn&Cv&$
62997 zFw-Y9JTpEslcLP*%r`UFyF8giW*5>+%&wpkmiO??%FL5UH)LMOyqlHmUfChp<0;CH
62998 z&(6$V67<c^%ifk<f$=#Sy>-tK4&otvB#+Ri2&4H}9>?Q(0#D?VxsDg}QeMVQ7`@-f
63001 z>8WhM^<0k`{tka9Ie&?5F%Dh}U}LJa5}$1bw$9e+s=p7tfGbc7JfJsmh1#-+-oj<+
63003 zVo!k;<XT|tsTTR|X%_kIG&>ESPq$}~)4Ba=8!mUwzb92=R`#MQ%*;Wc3}IM-dhQuu
63005 z%YaSXgwd*$N~(;{`7y_jfwER$(_?<$1imHj0x`Q7(e1%@;Lczt`W9G73g-F%;DL4!
63006 z(9N`yz<_f5kQGTP-a`@HMY;V~Mpv0T6PkEvoRa3d@>;7x(|6|6CZCRXcUAdxRFbwO
63007 zX;YGxk~Dkow<Y)6lJB!6>B^FHP}1J0q`gr|{<4z#3TZA$$K{omlviF-UU^A*rQdTt
63009 z)N4KUT2CF;BM;V7N7hqE)>B8;)3>ar-mItItf$^ePra3%dMiEkR(k5K^weAFsW<S{
63010 z8+hssJoN^idIL|rfv4W6h-N)B<DrR%#vWQ+hj{uXp1z5vE#hg5c-kVKwuq-KWuCT_
63011 zdD>FusiVwOUb!b<xu-4Vo_j-2TS8A;LeIE_o^c61Z3#VX2|aCLPg~g27WUN3o_g6+
63012 zZ<;1_h3t<qiDuCd8buSy?O}cYIGRT$x-GgldXmD7M4i#XXnCejw1u+Kwx~Y3Ho85!
63014 z+`MneWqdh*TfIxZ%k$K)M15BH7QWRzW8>xOUGf00<Olg7Ud6xVM_k-p_q2^4<Hz|4
63016 zD{_jQCa23xIa6lISu$I`D(A>~@-?|oE|zb|T=|w<CjTMVxYK=^C*PAB<VN|viyJLJ
63018 zB%jC*`Aj~ST`o$gaq&s_G<&;fq-H-Cfz+MroBn2yi!tg>^vw_#Rn!bK!*l*T=4dlA
63019 zI3@Tb_$>H5*cJT4x)XR82{dD~w!+2vw7u<Kc5l0{i{WX9+F|x^JHj3Xdt{V7#-0z}
63020 z*s8Ijd+5R)rD8=#8Y?<V#fpwJR&-esEBauKG#<x?{{KgY_Q!;-=n@mUe7Dh{!z3DX
63022 zcaFM5bgoK8bdEHlbCinZT%N>oj-xoo@tX^gn?sG+T&~fYvqjOGU4-Uvw-K5vcN?3z
63027 z{d9Lnm6zUK{_<|<0c-}}I5>ap;`|J`6FS2AIN7`L?PQuuH`9aEN!xfY9?i3{hAqXK
63032 z5vz8!Ya@0BSMW7F-}#lq?Uh;?&u8=bd=YXCmcw`oPv==YhwJ&0^l0!{J_$Koi9`4Z
63034 zBR^kmg7&{n7DLBZ=jM#o(<b^0y^6V81}%R-wD@Z5`qm=H-O%x?WDPX=Dq2HNNQ1ON
63035 zLq8AQ`?_oqH>Mlq1$kNiDqH0PT1-o!Wp_b~mYHg^7c}Jnsy3l1H$9<2`$9Jkp=+_r
63036 z8)a(Ecr(dNHFajTsfDJjHI2YV(*$fX*k71t(*kTUt-w~(25d9yfa^><u-$Y3JIs3E
63038 z+tQ%esMw?!(_6HS4T_D5O^VHm@wctog9gP$#U{mO#TLalPn-6#L9tP>NwHb6MX^;e
63039 z&bdy<qd~Dzu}QI6u|=^}u}v|~->&1=pxCI`q}Z(3qS&g~rnpWqzN<q=y+N^2F`kDe
63045 zcqX3-4SE*Vq_g>}(4^<^xqJzKgRg_${T}}(|Cn#%pFnpn;>G++tXjWP9sX-*?R)rM
63046 zew6>ff8?k5X=wg7ZpXUt9M*~#_|N<oevx0on(-!9jjjA1zmIk1BmR^>=YL?e=^+(Z
63047 zU8=A??IAs-7uK0Qu~O}gwP|1JBm2qW(Dp|{qaP(Bq4kfIF>)NV_c%EfE7(QQ&EJL|
63050 z!RX-Fpe7g-)CLoSkAv;O4t;i2WvlI;cK?!RSO?j`?&*d-!j87b+8R5?*4pFj@%98e
63053 zPv@WF`l|Eh1c&?_tM)m32j9gPz*b%Zi{72PT<vUJ{*LqA#O?-`E-Z9+4l~brZGx9z
63055 ze}-!r@4|J5u$1v~>|4tDe(WfQ^8;A%kLD-j80<Fwh@DIgKZPAbEw9DC-~@ge*6I{)
63056 zl&NwWcfuaMkT=4Dyo}$5b$A_bgXQ-F{#5=8D|?_PIidU*S4Mt@E9-1K?5F-4Yk3d3
63063 z0S)AZd@BuB@8n_XojhF6evSk`KSU#V6|bQhJ-->J=Qrc^{APmsB~R2-oD=mF=OplU
63064 z3r*7Vo5^~9a|-s#&(IXd;WSlGZl>wU&FTCqzedyb<fcyjl4t74%`EjxK1)w)&IXs2
63066 ze2adnCm%~3Z__Wp+Y4y9o><)Lc$@Civx*16&nsvpc=~Soy`Dy_aa>K0>IuZ->T~=D
63067 z@N*+I=&3`Ko;NhB|8a|+F|=dn`Vw_G4yQls$-!oD_$Ty|o)EmQzQ}LrdB9fi`H}Pv
63068 ztn*Ra!&&59<yKs-Hh(gI;(pFL=l+h{d4Ti8=Yin%kcYbSN*)HwyOIxgoX;biuP~2t
63070 zZ`kYA{t$4L`mj5`VdWdYKYQ%S-csVp-kEr^Zvr~LVdWcEzTxit*_Cft`G%EmSowyP
63073 zG1rc7^u(sr$2{j<jv3dpmz<Aze9{s>rM@Nq{N$G8geCqBN9>atQ(T_j?!=i$-xVOR
63075 z=&M?;rT%<8pFjh!dpnT^sn5lsJeg0WA=tr9ht{g&+0a_Bh-ox9_bNI8Ji7pTW+C5B
63077 zwDMOo_-iP&!a_fa-o<|GSlWjDSRL(f9K^lAK^OCZ;GG4qpBKsso(R6UhtC6FJj@qh
63078 z@72h29T)ICa6u<uhnfF`zb`usw5@7`*Hs(*O*Oz<*fD*=Til+Bw_-j+epfZX4$S1f
63079 z{3-TN!^EAL)yRHs#>D+nW&(|)lkxv#?8k+s;u5TTGk|U;I5iVFJ&;vB;AVn#CRk^J
63081 zSZ9KDCRk^JbtYJ6q9Ex`y4_5$&IIdB6l6J;Vkff;6A8UXCG=t7BSrEU%b-eJseC0e
63082 z^|8v-4(F5OW+Ek1PLB3ZBnabU&$P2iVhO^|qn?CvzUepP@2cc<v5*%0FXYB(BEFeN
63084 zOYb2y-kq~h15&RdH5$3r5=NRfA~hVjny8&vJr8H-E{SnJ+gbQK3xBg+pIl!c)tj8J
63085 zq<K#9dBshRw?LVplo?8yrj%()nWmH}N|~Y*hnrA3D2mT3ZbDs-a+XrgQp#+l%vQ>5
63086 zrJSjhGnI0tQtFjbuatV-an+ek<~h_8do`4)?~dDV32e9fbmU)&pW-?_<({B}$1m3J
63092 …--git a/src/third_party/harfbuzz-ng/src/test/subset/data/fonts/NotoNastaliqUrdu-Regular.ttf b/src/…
63096 zc%1Bg37i~NwfCvI)m6Rkd-wFd%uM%8X3NZEl1wJEWZx5#nXEHeNWvOIfUpN4fB_Vh
63097 zT~ts+K#)!XvZ|;&1Vu#!1fL2%5K#CO1r;Hg{{FYBdeV~x^*!HvzxTZ_dQ!J;-Fxo;
63099 z4Md-?&Rlw2?{8)e|CXe$+(wpNgA12VXu0PbYv+K)9q2#2;pCBROTX;?4N>4_^k2K-
63100 z%pD2k33{HWfX9?Me%t1gKils5E>X0H$nM)ba{4yZJ2BoMAAj>nXCMFkJ+FR-XgU$Q
63101 zFt%mW$i~zI`$xgQi0AEFP!agDb1LpPa(-J*-m$Z-`;0Ck(MaTb;iOYHjF=z12K);d
63102 z-2eRKk)7L2Cf^5We>vJGP8m6Q)9rtFvP|r;1d;r2+fF@whiDu5KC$meL`#-z+rDYr
63103 z#_oG=CaULnzC>JCjA-ZZzVJH7ls}Qe-r#~fH+NT#Uw`TU!<^CG@89IwuQ+illc@IK
63106 zm(WbL`6X4fgTh4Rmo+}+9<4mO8`nEQ%R$3>nP1oHbf-?M^?FXXf=&RFASi_L2O5pO
63107 zk83>$h|1@IF4pNrojw8jy-rtxt_B^im!X|9>{vcmzrR4o#GhZG^%X{NeG~*ADxU$m
63108 z5A-Fy%&DXkA2Y9yb8!{lJ9U{L1FbnkD*h3jUe$=preZE>yj7i5bTfPmS*v9{ntWFt
63109 zDU;f-BG1TSGUX4mM`euPAEv7-57|KFQPKNLI{j9s-{@2&qbettaf?oToSQYGE}e+^
63110 zsKmBV)G(2@$`fe2;W@g*&`MhjFVX43jkHDVpkIS_fToEPX$`ImL5-lOPQ##epl<!y
63111 zV*Pm&XoXm&73}-CcEJB%q+YR&x`nIg<6>OBCWP}S4dT~2kcGEV+X>}^;)5Xc(|NY2
63113 zztTt)!RO~RD7t97XrrwxMN#P_iVAaRlQfq)-4+@&hiTA|qd}9A%rw3Hl3=8>C5$P3
63114 zfx6fl=-_u0Wt-8bSpJD{LivZnb>$yPL*U~Ay@=;mk(cXO*h*pPo9K5P`mMnI?c|j%
63116 z@&tOSJV7|Q{2X-gtk4d97|XA))!_Yc3W_FN8_UnrYnX9e&~+W1EPNGx-zq<+(nIAZ
63118 zUMoLK_oDm)=&yM84xTlY-%#oN@*83TGTsgwo?L!|-UQE8pq~IUX)+3Tm*1h6%g+n%
63119 zL2uWT{~|8M{nO=xkogs1A$VMavA31~!d@u9jXquCCg|%K%!#YZR|t;s6T+3{F5$`Y
63120 zkHqKDE`|G@dfiFTm7{zQ=x*V;@+;!?<@d#Hz_VN*_i{Y@Litf40Nmd$?-Pb_eYgCM
63121 zSS-IUxFCNMdFg#%wLq_L14ljZaQa>Od2t=^<{|e(koRZhUkVvudIjaz@!VSeCGA6b
63122 zCHl^#n2-a%Js=VKhHk}sK`%qcUoF2)PXc3O`3?3&`9-#^{G#|2XgkPSeoehj#PhY~
63123 z_vu%-eg-@$^a^M(a72LZ8OYlN>~EqC_lr|;{WNqvs_N`{@ig%2D*pnq@cX}zRKA#F
63126 z)%&XU<m2gMh(0_6KQWCu^krY8DeAZq><TR6U%(%@=uhRRgf~H#LMI#0-cx>pMd1e*
63127 zVys{4zVJQZIT5%<V6%3}dlSZhyuv<BPhtS=bs1G%aIBYLTpbU`D0<Nb#Br!tR-w&1
63130 za{pNmJ$=0V5S?1S16W=ZKLhfkABdnYPFzQ@$2-v3JK}uwza6^9+z_{*d>_h<x?Drh
63131 z<NETA;%lmoUV=^DSL+{!{VpxP&rSxd#IuFyySMxtYeabi`g8kEf_<-o{(8XkT#Vle
63137 zgV=z1%ASI6bDVli;B$cczd8>-RUYJXRb<+HRObPYM~ESabFc6@!RMhGTYiPua+Em2
63138 z=YM6Msj-XCyQ;V{7F!UDD)B|-aicb8)jHk|Jk)q|6#l%8ikY{m#3f)<?aqnEkP23g
63139 zo3De2o0xOY9WF-&ry3hMkBVHJs^V1zH^->PC61HFOpdF9iN`rzS6EA*;PZ&*0z5YJ
63144 za`uPRzN-&WWjs!JesA@CwGNKZ#nI@x!*ulGc+6wimumPqRqKP}mmj4+S9q!N6?I-3
63147 zzL4(~zW};P-*0ldOQ%nRJ`cK$k9EYJt!ke}zoxKo4)XV3BhTJRA(S~a<35UOSgk)t
63149 zyk5;uU%}e?hWIl)+k$7GM{J7W*$H^|ALuK-g=-gL*&scPwf-G33wj580F<$2z9aq~
63153 zsZw9*U(l&vr^-0z=~QWVxlW(c>1#S2et)4(OLe+hr*m~u=bdoBrYBw2&+9Ut3ff58
63154 zx!PO0k9<k@Asz!x1})IzKqu*EK<XY8xxmr(S(W{ex}T`ZOOCeRspK+8>~na2#B-5W
63158 zs-p=s2|hBF*3kKM3w@a$phxJZ^cPu@y>e7e$X#-eJV#z7uamdRr^^?~m&+fQKOuig
63159 zzD~YL{;Yhfe4Bi`e5d?nd9S=*en5Uy{<{3Q{2lqb@(<)^<mcpH%D<9-BmY${E6bG)
63162 zmx1ngK(|O)p=?%8G~QzTs__xyD+x=&lL#iFiELt$if-S*ZWZ18Kqr*{1bm3&QjD&q
63163 zkI-^;hUTH+VEMK3cPdN%LFo9PpO@aBtk)P0ym(MVn56?B9QfXWrw+V(;9m~Bjk`Aw
63165 zMEd)M8+4+vyF-7j#{E~QgcADG!}K%!{d4*qjaC{Q_KM=YvA^F}OZ+Vi39?|s)u^@)
63166 z3oZD&9kg25A>6HV*{5H>qF<lj-YCt$*x#mm>2V;qj|_A_-9*;`(T(g?x|{AH?62r~
63173 zed&kNkEEYS&q+U(UX=b-`i1lo{8m96Fd{QG(}VPobi4FL$sze9r{tI1l1B<jLCGtH
63175 z#O%mJMhviFLwbEAnJm#ziTcw0``|!*!@Uh9p;$@`AKy?Ci|J%K*-&D|#K!&1>!aSj
63176 zlBX{*Jlwli^!D}c&9c6d*tcwFqGU~@&^NNNBrV#xPZUM4DJ3^Wle~7H-6!-$6DX#8
63178 zd0;SEV%ec3s|L|HvS%<+TC@mNJ!oC(<fYD`p~POTH4xRJO212#n)vf3-tw_Ug9&J3
63179 z&q$(VUNkt2ngoAl=B0LCY9Eda4-E}PpskX%Z$pWe43=mvZ=A$^WNs<OOR>2l4?1ZB
63181 ztg0KDNNn7ztnW?mhg{r<2A}_pb^{wqhWaEP_9gZt_F$~NO@=Hqw0LlMQDkJv&|rEf
63182 zIg}{%EFHwN2-k}arJ<x0OQycUJ}f}0){VGL_om@4>E4l&xc>N(umJ;<l=_B}shHqs
63183 z?GQ_%^$E_Q)H6K9n+*4>XwAiaCOh>F^wuZG9LG`|??_gSi%<ZBK8QY?7}%2@;YL-J
63184 zO%ZO8QX&G76_hY-dZb?)!gh@Ar3`ve<dA69o$N(bp#3&0u>p({NhgQu;lz&OUQrw<
63185 zZ5-)uC^?I0nn;u!eRDVi6kwr}liw}Dol~`!3yhqqQWDU?28>*C^$jQX3@1u1sI8&o
63187 zR_|U1|I3NLN`fD@VA(~3d%5}`Z|@#h7{fa2lWBCTlq1@6-UTz6*9<|DnZQ32wd0L-
63188 z3={4p@}!}!z7los69hrEmam9JNgP-<SaPR(69XkX+|P!AhvAA|)C>c|1Hqs`F7i-s
63191 zyY?_qq>`g>EP=VK_iM6pL969ULcRoWr63=_rXe4{W*{HGW+5NH<{%%x<{=-y)<Qmh
63193 z<`MowTSU0@EfrhuwaWwC^-9h4dkunbU=Y!fOW9hbo@2FXD<&qY$R~oE)@I<yF)@FS
63194 ziiOvc|2{Pf>F-W=?rjr%T-J8z0|Fc!KW5EHXG5u@*ch17Q0n|!P2u4i(0me1ME-1|
63195 zF)@?J2B>!So;@?uGZ9P%u>vCeVrl9W1fLfg?m`grmjY-eA+BcCW_zvFTe9>OHtlIl
63196 zClXWkfam1#%@U0ozmkmEptnwxhIw%5Sv<I3N*EH6{Zh^l9_r;G*No_$R(qsp4434-
63199 zLAe#X$5hCL(KKD6WrK~0DOlM#dc88iap|Tg$ywaZu1;b!BOcA$b!(-$%TKF9(pNFp
63200 zFwb-j7rA2M9>kAEuEiOpK;Ph^2o~4Gl%dAGO@bHmcKW!dOCpQLJ?%Ye-w*52S1ffE
63203 zmSBc^8cXe%<#UcvKNsu-ucy?3^1Nbc5-#((76+j2#0;#!6>Tjja)&O>M{!{ho2nTo
63204 zEJ8uxg~i2vf?Bf#1+``=Z!;5xWxNe99LL-6!gAh*7giLp(WE|<28;ZYG+r7i?iaMW
63205 zl_+U-t9Uzsmsaz3YH1B`r<T_8c4}!IA9DbOVLm1=jPNmeVLcy{7dG%VvryQ`+wj6B
63206 z-i8;B=WTdlvx=)9r7bEhUfQbS;-wQ*T)cFmii?*{QgQLp$to^hIz`3BOQ%A|Q^pLq
63208 zZ+;H==nc-*ioC&jT9G$6A8otG_+6mhsm(9cioE$Qt;m~Sgr0hXk7z~S;9{-F8(f06
63209 z)5iGiR`1m2muf}c{4%Y`n_rHedV`N@Mc!bKR^$z?DDJbUDQ-!Q?2|+`fZY?q;81U&
63211 zvZ?oB(#j9<!>j(i8R7E9n6#G<^81bbdu#dqgGSOS2>I{cJg<7#xQhg-=kg89Di8Rd
63213 ziBZrqMC?f-3H8#WL<Y2xOQ83NlpZ4E6wqoSlM!?`k@*fHODzcPtS1rKwh`HjpqGgp
63214 zR}wivt~L;M-R@mTsL|GI1uX(yL*xsB9whRkogZxi5-0-#&cL%o!C6Eh;0@0sihytA
63217 z=w<@iO@KTTz-I#ZG@(xuus1>WX2{r#F`C~cYJuD>SA$*!;l34p+rX<0d?upZ#G8rQ
63221 zwj7w2qyGx<S}_Q^1q2-q0?QEEt^}Wz;I|UGTnRs237xG1{#6)%6?C;4d{)D!Rs-)E
63222 zU|9nltpUHau>D%-Y8~(nLwCcFV+4M?9^<Ts|Ex!w4Y1_~VAz1?8-Q;E{Bk37w-LNH
63225 z<6-FWVc6>tjQI%aABA6h4eh=Ldwd;p?i;B425j{hZ2K6-{}wQR8#?(mu8%{;$1&Ew
63226 z0K*gL$G;)}4%$2g{XPYJ--T@7!?;gF*H7d6eYE*LWc&f}`~W<E2w8s!oX-HukD#+3
63227 z!v;TrJ)Z@iXVLdL*yeeR^E~=IkMaw6{vvq12%r2J`u+?U{}uB6D|GpD;QKkS`~v-c
63231 zV7a$~9wkA1l>~M(Vm``-pOYXzNCIN3fS4+n2T8EZBEh<m1X~m6T@vh9lHgdag=?1t
63233 zN%T!!O+xxM5^`vlUqnJ}0`xWsb(fP+k8=H!BoyX>UM8V<2?-5bNNB{^jR#0*@{-Wp
63238 z?q>AgjQ*R^eluj=42)Y*w-t3;QMVO!Cp<>NiNJp%<U0v`PJ(<VqyH&ryAAp}4Oq8>
63239 zP6wVH(9;=seg@i}3I8|?e0HLKCuBMs@|+8K&V7M|^C0U5;B_H%x(k>tf(<_ceO-*}
63243 zK;}oGmv3M`JO<zWHe`DoV?Kel-vO`hLf79z`3K<lLyY|+=<LVn^AprRhxX5d_Y1J?
63245 z^6#OS-@`U<V{ZNda{K}O{|LVCfZoMC`4eRRGp>IDzxNOe-h=M`3Y;InMjzmM0J0qf
63246 z?@^3XewIXfl0@Ma62%=Pva3ln43enylW263Xi9+IAklmtiIyG`5voM%%Ou*+-i~(m
63247 zS4nh~NOaytqU#P4-ItK)879%Ykwo8>B>LYYF$lh)n@J2~tZ0VBnk^*8K=EB9CW@f9
63249 zH;~u{YOf`+12{UKA#oBgcP%1uGWt(J|Eb{D9Ry*_X^_1K*r#Kx-Zl~u8^r!)BqBD5
63253 zHrQhubaxtLI}Kx=2Aro|4uZ_5VXV`jpY6b~9lG8QU7ijMr^EI;&}IkPoB=xXQ4-I>
63255 zJ>Y-E<0M{*^2dPr<FNJBkm(b^@d@DhB%XZ=K6f2#ay|Op0NdRNd2YhkpGMo8p|{VV
63257 z525@1lj*Jh9J&WS{T29h3G=RmIZ#53!P+G5dyK^U5X<hz+<5?V-~p5$=mgCo@nOun
63259 zeF{9E!u@wKpT7rs8qdFv81n;+^F#FeA#gnNG>OR1#UG>m6O^CDynYt*=vm-<7JZ)u
63260 z=4ZkGIkbNcvFJJQehzc;dGLN7Sf0mxe;#<BN8EcJn12eqKZU>j6!?A$49M-p7l88x
63261 zw0p4$1bzGr{r?qweueq@8e-eK823Fq`zzYMk1^gy?815`9>CZKfq4`-$}bZWg2cp5
63262 zV(cVh(k;Xcs8gcEjLSefK{taQ1HDSjWCRsKi$FU-H-H`mp^sSt)q>`Mwh^<SzjX^S
63263 z8~EG7-!Vwcc_lFy>fN)5d8QEaVjS;%#C+iEdy<&{5@G@H528=-ZDOHa#KIeiMbJKi
63264 zF`_-hYWj)AoS<ikB~YIPjuh(C8Dbgm%K%R{K`aL>d0@&vO{@;j>zjxbyu`3AV#Rm=
63265 z=TO6x{{a1*SR?e^_yXt+ViRDS3D8Fq^wb1<H$%_O&{Okypl67+41-|1R*c&Q-L+jq
63266 zY$EhJaWx3-C!+5}@N9?8+8+lUAlA_aLc0$1>BRF%@Rv#Omr3xKF4(mT_C!9xx?rct
63270 zr(xLBFzjg<_B3o6{CFAW)-vd9Ids1qyq5#pa_D_I>X-9+jIjb^tbm`cfGjI8?h5E~
63271 z1+WeQ&&tb*tp@hhz_%KDTMhhcfoC0ftOJjA;IR%ohQVVPJchwz7(9l-V;DS!VUH2$
63272 zZUnj>fgVP{YXrI*!F(CP+*%L4uLr;NkZ(O~y#e~#1dN-2eKY!PMnCMM81_+YGcarh
63274 z=<PJL-wyuBo!EAiPY3?fq01e3w&Ot%?7su`J0Rm3z;g!poC!ZV3-X?YG0uV=&H}HU
63275 z7-uK!vlFuKgwBv>v7O*?Hgs?f+Mf%1oC|#CA%>g>yyv0*eBeJHK6XBQ`vU0h0`$G$
63276 z1^#aeAm5(}#Y~m%Aw~+-_vHEaX(InVS`-9v1@-~LIte9VA(0{*;NS>x202h@btPTd
63278 zA@u(1*mt~4w^G9J(1*0oqkW?1RzvW8>{ZG=X#W`6+bP)-vso=>laYgCqF|#rf<VN(
63283 zpI4FU>rCmi(bSk&%6bZMldUdmsL8uBUEr~twb2diuN0-FJ+`n_ViK^<a|$$PZpprA
63286 zSCNAXbV`q-F6#A2fHN;{HZVcQ9pQ2SE->ORRn6i$1D8OA0Lep7MF3|Ppb=9Wv2_N4
63288 zO4Qd(i3l_LauG3_bVPc-Qjy#lvH2#*;{=Dj%LBBc{2tui(PL$TX6_(2cNGwBZ(qGv
63290 zp_Iv8G^uJx#q86b07mYVk|S*QPcW!br-F$FZtJz9chN0iAAzm6Y49Am5HK6K#S2MM
63293 z8ojv)YmPf|Db>f<vgve-bRDKrk;~0p+K~@eq%5X1xyRM0a@+s?a%0x&a(~FQ{W}C#
63294 zJ$szw>_<LLbb~W&S4GeHGLu!uzFM6C-fWaLCmgw?=I68v;M?Hmh-*A3A9D2k(H$L;
63295 zZI|vuYGj-IPvj$(SC?O>&k9ridu);adu_3}Vv9i9JZ1}L!r|av80WT-Of&0pXK_>5
63296 z;e~cJxQ>}3-f*=k9%ZT<w#3}^5uhlS5i4G!&kK{8BE1WhP9oD@5+4*Ml_nPSSVCvv
63297 z`4l~tSeU5B68nE_{ot`Az+*}NnDKRfF@Ja{QT^^LzP{C~O9u}nV}8c5-ip|{MChg(
63298 z>g%xttQMm|k~!MBr4}Hysu+1z;t&=@dR$e&Q3>1{wi>E&IT@A$g=-(Esyzuyg!;GQ
63301 zR)g7XR-8twSCYdagE8PW$wr&(wfiFmla#hwTyA41WDx8Y#bcf<TNHy$aRtrHW^h`}
63303 z(dAXFc7xp{n+<mLy_cDu6c)k!bv-$+*(5Vjwa*cj&|D<OFp)cQM;Jl3!M3)PJ?n7P
63304 zRxHq&2sfn6%^{Po*6GM->W}2SkqQ2k%hSSLGBo;SdaC>fm>A=8|BwvF8h*?RJQaf+
63305 z%?-A>JXtGu1Axekxj{pE^vf=9)NJ$}@`FhBFhBSJeo%%V6sQA!&{7O=Kj=7Otia(z
63307 z*%@;?qh{HW3~`GZBViVZ+F?$2)b6Uc2ZGF*bS-rUy)dFV;B)%5-0XwVZy{{FK;5(m
63309 zIb^rZA2HeGpx5MsizgMqY&7|;lMUR7ja*Q-$!l>K9HZYdIu*sH$VP|J=rG&e4n?*E
63310 zEdkl(GuwkEhhQ)pY+mliDEK^3h0AD9NC04RnU-1{M%iY93T#f3OR*TNJokT}?GOS|
63312 z35?fio42j%GvbeihQ6B0CDW1;F6@=5pXJ-zTU-3CE$tlvyO>Vpa_N-(M{lG*A6zq|
63314 zXkh-9H{74McJ&3PEJ@gkix(G*3u`<<6|>ol=`(qX&#hrz#&*!#Qi43Rd7Q58$Hwf?
63317 zgut!D8%bP>9!EHojE8dJTq>JQD`VpDC6-HtX$X<>T&9ke_V$Twyrf{>oolkBy;gHD
63318 z>Puxkj$B{C<#9R8u9Mu2sgS{&cRLLxcA^x^7!q-J)MbfGZ!#K<bq>GPssw!=2nAbR
63321 z9<q5oIlE-H+C8?gZIbF!7mvP4=aj$w-;Hzh%|kd7!K2{3ku}q9sgCmeWGCUn^b_Vu
63324 zeyZgdlm5Snv9Su{-v?4ewsB09qmRhptSm93Wb%3ndBC&)rdNe22V+sMEvDtNpJ1JI
63325 zt#lH#(+t(-lkGrOj01102S#V}1c7nP{KQ}vF?Pw}&|8}7^64ZN*^2G+-6EzB*1n1A
63327 zr^o_9F+DjLs6m!h<1RKRMvJ>P<F`6Ivd!)Bc--*YLTkX5u1|6qf6taut+bpRB=0wp
63330 z9-}%cu?adn)nIK3v{;PD<#JscHW}?Uqs^wUHHxLyQ)>$;?o6nd@145c=(bu+ShM+e
63336 zAE7-`klgSci{?9U94*1q-RERQO608R{*=+eFogqG1Osfu;7<n?Z_Z<oMT0M4n`d)s
63338 zcwO7a;`zCwukz=Jqv~_D-S0oRnA~IS!0f>fF4j75IkwX!lAruEQMF9HQ9&@{tAij`
63341 z8PtI%b(mPGc22XaP-~C4)L~PT>WHNBayFU%MfwKW)L*MFpoOaB{Zk?$qXc4NBb<}X
63342 zvl-!ma~$eqW`vbeWV;dV@ob0(eU3^L7WYn{J#+ek-UY?_Y<g^|)b|M5c?Q!ERtL{Y
63343 z<m4F_kCh$yZdP#|IbWTtv@{v5c2hu-;vV}Jvl>vD=rl-1K@9s^C&xX`)|P%-7!G!s
63344 zXv$A0SS=ot!`JHcelF3T49Wibu-%|YXBo|A$rg~jcC*Jc`nYIt#?zAnftajhZJxS1
63346 zOkA5)5_rZpuj-wE<~jVGz+&wvC_6){j)IM1`q13<2Ygx@p^VeU6%OyBMN-JmLLr~g
63347 z?kv^@n)0$c?`^8-bZin$wT*{FW~;m{Bdv%aW~ZScCL5WQ4p{RwT~kevC|~e-iXrj1
63348 zjaDsxy@E}rtEDq24Ih}L$}!a@Fml843Dx|<-!ObOQ>@Q4XPaZufN#w3e}}2ZS$Exs
63349 znsi2$4cYV$x7zj9W>Ry2(~!-@C_>Xz>Ds~uEd9bfk4+TkAky-+f9p{azfizwN8%R|
63351 zk$-wG2qVI7u^@gOxa9p-9yf(N^r0n39RY<$k;>VRENoGZx7)+HI)~Bj_u8FKuP>Dr
63353 z+(g_$s`s_J>V{XR!XbawQx|T#&(gmvXIJWSf?%-*Iq%P~Q)q`I1An`!*MbME;QNgG
63355 za3mFGvMQ1s%Gm-ADHIDaS=McR20Imdu^4g?dA~fi7IpXoF)^U<CHx|@;BRlXrfWhq
63357 z7HJYzRyj?iC&^nt1-rB+biomAhI%{>yFfmVJ>&>s6}JgC^)*yVU#Zntj>tEb2$^bf
63359 z+R6cuIE0I+LJ?`P%_@-FY4zEBih(SGMb`b?qhisr2o;G6L?}#X$u<-x<XzT;)6Rx^
63360 zrnXG!?`)bDtcmZcNnEIof5zxex~TkJ<TuSUv8N>jT@?8FxH!)(@FWbQURrgcpl-qi
63361 zLP{Uy*^H#>A+P5S?c;L@#aBse_{z}D^w3c^sZKP<eLTxzq9`(t)xnHN^Av-tG4Az5
63362 z3c*amm@mZa7EdBFx>NRu2Fc<#yQkC_tlkC>Gf!>`I<qd(lk-}F9YwRFQ8YWfW}_vL
63363 zL=K_LBg(|z8?bU|^j4Z%eu5HIPXjciXHtMmC(Ls?tVl8k`lfZYHp(>nSc2B&BO$D-
63365 z8?63}(PcD*C1$fRqlZZ@drDH^bfJUH%EXY->uNArLJlScTsgDHV)5Gy=DJi^FguI}
63366 z*>j!ZQY2GUR8Z>?tqzkdB->=GN6oQxeLz1`RsCGdvWN-4L+;i@b7)r2Km<{pCrskJ
63367 zAVAKUGpoO6N>`ggv-!NhgI(}Mx&#|=CJw<(kV;~WSuDaO;xz_|a$?S)O%5na_XjPx
63368 zJVIS?iuR87Dvhb<r~y6s(DjuGH@HPt-sn_B8NO+NFDN!q#srZidm-v}26O&Ijm5Rl
63371 zn-(5!uz!+7>C&U0cUjROfmIpth({Z}AscI`pC6^wFEb8BCEiXy4y!r_>#+e+oZ_i$
63374 zo~h>iV|<nTVPRyO(b9yCh%YFaj3NJJq0mEeUCf{HSe(q@Pg-Z&+&qq*JNk;wCrQTp
63375 z!!8p)^FD&t-)8Rlo1>j{<naHr?*jg}zH9%V^gV<?Yet*t&GLHeJJUT0WCqyw@tx-!
63378 ztvq{Wv`faF;Zohnw_>X-srj-rLJ~=Q4_8n1wV8ZvMo}VqwB#vMt9sya^utYA-_(6p
63379 z$amTVSv}pf1<kVLbUU-@sJ-AdS?a?zy|Dr7=>4)W-N+0!yQh!~TAXGF<ENX!fLD$e
63388 zhPrX@S~Ao~egE)#mO|awdzOrlQN~VaKJ*>S-}Q>6v#a|kZ&>80d+ZGhMyb4Dfn56g
63389 z706Ynem{cy;$iPC8vdbo7XSGB3ZvOrd0zn>`nv<*Xg=aRyyYJ{3-3@D1?~-Ph$DaB
63390 zLAWPiNc^4W;4twq&cWRcm2+^&qo0FAp4P+8jXVCGXU6};^I~-lt7j{~H;u-hzc&73
63392 zO+9|KOblh(wD~;3itzh-QI=x=Pn^dto?EI1W?$t%R#KM(ejaP51(BY}haA)b<I&D)
63393 z|DETwJZEGx=pyL`rtq9m`hoThu=InmZ-6UjQ!%=#axUd^{&$^A#VD4_rfT`Q6hD(v
63394 zPlk_uCUtFFyVGSl_K}p;=lA&zKau+Xzs2}pbUt*HbHo2B-!uKQ&Q0}iCm?@A^|unZ
63395 zZ&dHEWb+Vv=i>fc^;}=SCo9E~b(kN>CxSMGSWBV$1;3&k@!?0H`f-!uH(G*{l+I2+
63396 z@_Uf$<)C5?8Ss$3Z*(h?Gbs6;?$C`#ekBq$`XtF7mV$P-x<A&xs}^PTzs&PD&VST(
63399 z%N@)GoGFVTRa@g!+$p8%hb~f_iEcrN8AJYL!eutP%%Z6+hosUHwHckcB-ZYPfTh-G
63400 zH26ke9sjEsq5Klo+l!?P)^Ow#X08L_Lo+uoc{4dRbDOBY$giYrT)bpmS1J);f-CH(
63401 zEx4NJvZCMI-c^@G?rDfm2o$FC|EO8jnEE^9e`H+s*zMmrHvHhX!jI?-k>{_MsB=rd
63405 zWFi&~27De_6R%DCjDrgpK%%H6v#p9(sghJqr@j6F#AS9-Ht??<jfw)-<(})5odPph
63407 z9u{i%+PNok!-RHL_uu?Glge3P4fma@-ywbY4^2Mg=SJK7VZZaJr-i<t$8yZ$!lRuJ
63408 zZei!sjf}5#SE)Xv-(w9K=5uatDF~M_o7Im)02d4X*p0~7dj7cTr&A-UAjsf+H2!DR
63409 z+Qb;T-|ZQw`og2K9%zTPpE3l)wt-2}j;Nuz{iJrYi=D4zjgpaXT21wmLFSGN%=&L7
63410 zf!U?r-^|v~`O*U1U#;fV`aSl%DaxynBZ|D69XU^9(RvZKR=;X!WZDsO<$F0kUGr66
63413 z{&yVS-%2G~DsB>uSPdQ6A@Tn@QZr4W>BwUj(@I)TkM=x7LXaPO680D@EQOe;FmbC%
63416 zuIZDfcT8-V)QVNJzPZqx&!+0qb@7^TGLj7VoFP}pW-&TU4g(`aP%^T=AYd!4p0McG
63417 zR(<Q^^BVM;q<;N-?^{zkg9=OGig>){{Ae`(IkVqutr>l(rY0fO$6__37xB_iO-+1s
63420 zA%%a@u%6I*$%6SSj+?(`!J3%^-BZ%ZXxQyE>dTdOUZwtB`EiJn&*^hO4eI0G1*xY)
63423 zQzj)&UB2VHi!5Dr(>HC5#La1oU^lg;0!cTMyme8F61H2thQ=kuwsRJ>E{-p|en(%!
63425 zKN*yEA%+-a8saI4B#V-Iax0H0f=n{s;=0kcR{PP&_zp0KB(o#h$IyPlxb}opOj6|P
63426 ze#%%sQoHrEX+5-`|Lj69{QrVVM+j5ZkH)$UVb5$yWzxlDHkmOhF*Wi9^4iaUxNX&q
63427 zih9_mze7_bzJb<%x}qQCpX*NKT6-K#&Tz&T2q8`Enl}FnH+8oaZ7kqTHH?mae_)c?
63431 zS+qN@8@+q<x?S#d3!_u&vTeIO$wF}Dk|m8Z(jC(bHU5UVqPwwX#-j8VdHGU*UA)fb
63432 zHgWloNg6f?eOQ;0bf>nuHZ2;w-ziAgQABzyTEWJ*7Fb#R`me-}EnY<J-;*LyVocmV
63434 zR(-Xq=}C_YLc^V@Xrv$QT;gou46`A8!szH*qrd6(Zp(JW7i~%{OePBh?M+Soo5Vs(
63435 z%Z#FLi+oW-+#RuN@oh`_dFdA6E7)JR(+YLHh7x4{(<=rKWbkK+;K&LVBbf}yA^Fif
63439 zxS4t?-yd5L!G(EAfz44rs6PCxzH*k_)j6@%X`>#Yr}F)=0fKO^=7-6c!`hMf*#EUN
63440 zT-B$wIIYiWI}@Jiy?SCU3we}DPhD8panZ$RHil~*u7IM%T<Q5?v*7T#C2JxO&c<Ak
63445 zFkmN4>c1((-}-5Xmxq1dnajp`;u{#l(O&gS=&_fMdCffc`ecs<v0Sn$Mu%iI$fBjY
63446 zcFNL_-`cQZUe*s)afEdXx7;<&oAcN+Zg0lyuJP0)+vZ7&PVG{XEv|tz{ZoKrT6t7V
63448 zwUs~Q-@gdb;-Lpx^7&lUphT*r?NGn-KePo_s(%NESy&PMY@h71LUf}&Vlgmg5S^3S
63450 zCAcPe``7kQ<=-0t_Rq!rl%*;6ISe9y^&eILF$n#qU)r+bs+w`4{vyC4P&&y!L}uy&
63454 z(}t%E>|8kd<4f8bYG(G-x6B&wWa``)y|G*tz9wEzIjZf+n$)wfNZ7}OIT?N?e%N_T
63456 z1tB<d@%);(XBE9}tHl}(6r05<v7o^+sd4h)jNW-I(dp{E<o}%t3;aDtT@S=OST3oO
63458 zw`_7ZG}Ogp+11lL)nqVBcC*)<>yP)@T-p35f3?t_cDobi?1?+KuL?HZb<T~}fF))2
63460 z%9YA1UYkpqvNCS)hb%^KYuK9!qm9>Ui#xs98pT|jkrr$pTu{Gsr4nrN-tuqLolT9d
63461 zx(oZ-H!bmd+7p>YwXN%Bs=xoCVc7f2YD}%A&Yp=etWMnB#Cbu@-ulZb)f*+%8+otA
63462 z(MUQOsg2gwW(}$b@Rxk)RAs*K_cN*-vdmhv_quAr<rmJin(c=Cti+UjD&gx$wAF;Y
63464 z#6FYwGIjHB@te~D3vz-E{zG|fw^a45kNO!O|A7&I&CkOalNRSQ`C?oTV%jMl{;$7~
63468 z+Ld2<rX`7b*2y^p)Tf;DR{gmahLCC+RK*Ud|8-_2Y#sNma;V1>j|r4X#hT(x;ULur
63469 zHF}`ZzU*w%Kk(E}HMEc+=UY0|bwgiExU1Y<*X(Va-z4~AHq(j|TwZruHj%d_CUoU(
63470 z-u6VIr)ZBk`j)tI-I>`Ry>z-LiN<u^Ca(I*>iSKET#Lgs;ryvWYh$)`Yl}1Cm~n0A
63472 zZQ9jpS8df+)siL4E8DVc*~VaO%eY{`U}K1>Ht-1nOmku|;RizC2a^8@B$N;W1Si3e
63473 z<daI0PYhW4_r5nXJ6j}MbRub2^UAz?&UyEqd-}09bTlWrah)r(p{p;qLlLi3?d3tw
63474 zKs7zNJ*{Mex{V9>8-3wm*_+y)=JgO4a(o2R+ipJ?aLi<K+r|=t;qrxP=&=Vp?vxRY
63477 z-68s5H91rZX%pjxGGEDz-!^<r&%TjZyKlsP(tU%t^u7TZ(SFHoV{HGf<FjbjfM}(N
63478 z@E?hnA=nV_jr%2*0=S*{EfVIviD;2bbplM-6~hOswfO)8e^=gm?AU_LQc7liG_tFY
63480 zB*ESb--lmEJl6?==pEZWnhLok9{bab-awZ%ej#Pm(Qo9^qt%i}EBOoQU4_Ja*b&oh
63482 z5pf$&OLr?aB)L~JG1%U-2Ku2n*De9<s*uR)s-sJR{tO@RF=EI|bFuKuXSsln#aH;)
63483 z^CRLGd`KU0#k`~*k;7H<NQ(MsbQG!q8skOY(u3Cm@U`3)W-}8QH|A%7TlEFMq>E$v
63484 zNBFLgpJ5}hpAKs&B5`QClUh^`*73TlfZYT`_<(@<im7-qkOuU9mcwYTSsvktseocn
63487 z)>pq`v*U{I-gNDsqVGR=VG^Duw*nUPowi~0q?u8ME8&{K2Ly>>U;&Gep&1V@WUIx{
63488 z&x23jb=M~-A^zjhL<g2v!v9M;P5(NJVWBOd0O{KX5)$F>SFY^qJCe;74))p8#d1cx
63490 zB*;(4fApW$vtkIpgXmc!V5BwZMcjWd>$4-pi5NnAFFC&=+;n3YsdfzGKr`s~7+?gB
63492 z$PpyL==o%-pyA-S;j}K2tosxBBU>W}`p2>qj6kYVch8L3w;jomQF6XNluID_qu7^X
63494 zjHYP@vP21ND?#(9Zf%8aqfggQY+`5_nrSpK{l*J+gQG>Q&_u!ntrju^4fG-3&uR=S
63497 zzxCx?7yrjYHzj=4w|x5Avw!lADxMnxdd?zx4xX<zYwcKOc|-yiM#(SlJeot_cfI*d
63498 z^ACL8S9|o+%QyVVJFC8(=l}X6r~mA6bL|2Fz5#4`{<YietX-ki`pLg{;W@|?G^{`W
63500 z{dqklsjm;b@BM)fyg&H<4}{)-I{5zgcmAP=Rlp|1V{?d~xv&?mmE>^|YQIjjy_3D8
63502 zU#&WU^@a-g9HPV9&6?qu`vY7ed^M}2O;$-!=o(t03~iEzX_JPw$a6lANOW^9_jt~V
63503 z6$Fh7r@`NY-#2sa?H&G&xlA{L>t>fvEf$^0FwJi(JuK!6ny(n))O>^}Pe-rE<aO
63504 z7VZGw0!k--)ZBgzwJnG_$Q_bc+q5I=U?_^CDQ|8l8+$cZT|T<i%`-8F6q01wm&=-a
63505 zTorx_e1-TI6CSf3jgndo4s)%X%VeD~KgG>N`{1YSt(cJsnduh!k=Pb2FYZS;od=(=
63508 zOW7#pP8#t+%O^ce90WgHi5F|GN?ApJ$7uJo=jOxxH)SYs$X)!<r>42Nkf89i-Oe@#
63509 zXhCw}1>!#c5?Ce;1VagogEK9c-?U+KcxI0c)cYtLdV)<bUen)j?+Uku)KOfj&Pi?c
63512 zeD19-Efn`>(ssY>$^;x9$r1D956>QcWbgTxkW$Te$~zGvxmrfcYSGPRti`v{?;pW`
63513 zLlWoKkBFukXOT&5%LLeSXBu2dC%F|{T)U^yKEBks2*@2)>|_uGQ>g@wo$T9)23-oQ
63514 zLQ&uX7J{pwmm{tb3wAtDP68DQ@Je6+y`^w0v0|n-fYCP7TUtBQwtZT5Q1*#LJXi_3
63515 z{BFCCadN7rWK@4H9^0`!EaqxXyXvOxoJ(=Jjeu#p*o@}-4~XAJPfg;edcV)qz|8^8
63520 zZD@=ypxsh#Icz+d?k2YlKn!cAjL=FIsdJK{Xc3!(&inYuCh<0VEUT-50B`4=6(uo}
63522 z_QRFp;Gh(V&k+s>F&sHNIR3_#qj0)(%O)-rf$e9Ep=Tsk>Yz2Pox)0lz;s!b!ihQP
63523 za1wkfBk7ef{D7Nhm_!^B-kJGG{EDmad_%Cn2hek@+5?76<Jtp>o>UzS54#3Fc-67d
63528 z*Y6|SrL&-e*y`KzMAA%bBuJbifdhN)LA>9(jJE{;sw<|K4(FpD#pO!PgiN&{;aox3
63529 zkw{jRqwIz`pf|OO<1j4rE41tsLPjR)uWiZ{iaKwP7|~XG-~?%iX|FRDp!j4Wl|dUr
63533 z1d*}b2!KpUgp-Cy@5eE53g<Fo;!ZiBU=xKU^q(Le)uAYeopjWxRZrnWZp~8w>w=v}
63534 zaOe?$S0HEOx#cy_!fB$@=CjaSJ@->S3=?3!`!E#|!Oq$2=QP9@IJ<bqPxMS20(t~3
63535 zQ=|~!NF<2<-62DY<yne92Ly&=1P%}7ushmAIn1HZK;-Iy%n=+scM3RcqGJg-9Of_%
63536 zbC}{r!%!01(pX5amm0_kt#G&(Fih*JH6uu{{rne#(F-4F$^6r5?cO!BX`sJc!ujGh
63537 z9)Nv&cOBY&Xw%}%Vr#U2dSJR%DK*Q@d^S-`7DEAd+!J?6ykRrYeCOgw*UUjI+~EL4
63538 zqZ_7UnrTdPPPKyBvUz1yG$dn~@lV!e9N}n{c5@Jhc>`tvkfar-rcsjJW^i`Z=a~|-
63539 zQ3vn!$uAoTW}Kn(-w6#4W&eQpd0jLY3~GNVs(uemIt}AW%}xs(R15jQ;INIhg`A>-
63540 zzKHJgMg;RNI$}rUap-6OfpKkD{2qpK>IN^$4&Lu|F?=wfMfyj4X)Vz9jb2SAkX%^9
63542 zIx9~-#pI>LzFp%E8NyQFij)C~xojHEu|WmL`th1>PdDSkem>Dm7W)14wO7mW{rfk&
63543 z7*^tnsox-J8-1wk)ziw6<D60ojh)z=HEOY(GwuzS-3O42;Rh!uH>D#9_iG5+6i5>6
63545 z%xyYtBYA?BB7Th%Xqk$fppE0R|5BKm+%v|hCw83wZtInnT-AT!8&sM67jO*hZ@FS<
63547 zjvUerMZ#IUZQpt~greg*>-twJW}p`KueA3BQ-Cy7D+;k5v+f%tTGuZszHpFbOG2}3
63552 z<k7JRc=%=bCy4%Gz`;L)51>yWU?&a}D#7C*P!J-H5FES!-i<!1=;v+VG4KX-MFKAP
63553 z2$~E!kcl1et>}A5#Up0TlnDa~dN|;NMB8eDcrkGkaV-&t??K}w(V2VAj6@m?fkE_t
63554 z2C&3arm-SJe3E#QcpvdN@fPA<fRoa*#HX>l6n&DxJp2m!#9>hdJ0`&vxCNGA2K*D)
63555 z4+>~$2<Vy(U>~*i-vsOYWnmpfSihu=bp%1|M>sdIAs6_6Epc~U2JWd}D(;?NBJSh2
63556 zZ-BOA4cgA10PQ!RdlUr7W9WGjP};}`e*wrVFBEw!1#NkPM|;iNfJ%{+N}dC0cfy@c
63557 zoC6s)%Vx6Y`eJ3$3%vKC+XdbxEc+b<?{gMOE{sG`M2!#?4lN^mNu&-gYtRLB!=*0=
63559 z5JkrV+S%BnfMuO5*2Qpk`){oSlS$G^hW@#M%UIyT%Z66m5L%ic7@GLGL(9-{=CYtg
63560 z48Qe(=YtmHviWQ-|8s{L=3zGf0)WOL`oDA8K>G#GztjQU0e>lwdlBRx>q73*B+VuL
63561 zj4{v<2G}%cXg?1GLI{D6{u~ex(TE|@{<FtqHTY<!Z+-k%7<>Y-8G`LaqvKdVR=_NN
63563 zgKl}Li<E-UQjFyQ>|h0g7^&b-hE(ed>+y*sB0pDrE{=%|+!6eCf*_I(Mt%~6mb!n&
63564 zZzkSNyc<4){_aA52Vg%8KtHH~Dmwou^XC)9$B8G14-xMm-cH;}+(FzxTu)p>EE9W)
63565 z-NZIx0X{>t@DC9s!bFhp6CxoHNV$hUg3rPq!2g6_gI|STgnx>j{#o<qUGSao?eH=9
63566 zX81<<I`}ZW1HKgA3SR_ohG*do@C-Z+uZ5@J)o=&g24~?WI00J-szn6bBCNwIMhPZi
63567 z9Qu)#7l2LhIq-kL{{o)^p9G%(?*#7vZv}4#uK+IxcYv3ID)=J8<%{Tl7U;O>e@DT`
63569 zvK{YQJLhvHfhrcm`a0}@Kr}mfNOcPUf@LirdQwR7{cCH3(3hx=b*XC|mlH-F58f&1
63570 zSMA*0{#tJyYc~&U<+q7+PlL_2ov0i9iGG<dZ&WA?u7J>J$B0{j;Z{4(-U?=V=Q|x5
63571 zw%sUe{-ImoWty>8J2}=j-Jw@q?>SmiH;7*MP3BIW7KpZ$N#Z3c!Y-{n^Wzt<J@f3t
63574 zD<o(RcSsh!K}{P7${|TF1}HMSZTLmRQ-ravsHJ6DH8dj>Oow7&mPXK|LmEYs1PSe`
63577 z#N{h$^W-*Fa?q?u3k=Cp#Ir<fEJsBLIlGg#i9t=CYmkI55f`XT{$Gzn$cJO@>iB`N
63580 z9G-o)FfqAnj7z-}+d=1Ez?mO?VD6UI(o?4hgV7vn&1-XN$w;Cc^-FRgDteO9=<@bm
63582 zPP<_j9GvPErdxJZ=h;wIaztYxyFY5Ti7rN#?a7qS>8OX5kRT}sKKs$>`-vABLfP-|
63583 zilUK8Wh)`K<VvNCtoHq-2PQeWG&^v0_NJFy8;K_ah7k@(Q902cpzSnAes+DSr1D0^
63584 z1WOy8e70FXTD$QtKe@TSy)_UhAKBp(3gw9G%6M&3*b8wmSfG|1s>~Ky-tCfOa(HQ9
63587 zG%;H-RoyyBOKz7~Zn(WN$?1~XYJ|3zCf~C2z|EUd4vM=RqkUvm6}R(;))R7S)gAp8
63589 ze_<LS#vcM+K;wE-=;wcfKL#HI9|i}&An@aeVF19l!C!&jMpvDHHHD-93;rBQX%cWD
63598 zx$G==?B~C3s3!u%PmXyX?4XWzqt^E?2lYb9dkz>0f8v*dJE-)PiG)!}EXO^B8?DwC
63604 zw-eil31S@9U=92e_($+X@MmBg;4D#qu71$`d7OAJ@hI_D;#I^eh`WiqOn=Qu;skM=
63605 zI7aLtcA+QiN6*<$Y$j%iabhca-c}+{WQh!sBEm$-^y3(WX8Lkyf;4?O--6$S-++G!
63609 zx^t|;cPlk(y7e4Q$3c-utyJ`EyMrjpr$NJ>lzX=AcIr926zuphWW8PBht>7Vbz_jL
63611 zVp@S@HGNab-ZC(z^9@(sOSOA7b(~J<o{hX;o&F*?d9Am<2)%K8mMGKlxpg!Cnw|ED
63612 z2&v2R?@Vp%v4B^sH>>~nz*;{Kys3OeD%Ysyw8{Ayj~=5)nx-J7MpZ(ziKV`1LE>DT
63613 zpol_Pau>W?Z)zr!0Z;uM2Qy<C&gP(F^`bZ1=iv!?VlXxv@W-9i(}(+)>-%m$w6LW(
63615 zzCQr5@5Wu5SQ<l|Mz2hl`)YO?JC10Y<U%4wl~(g9f1iSJb%{2WMZf(iuT9c;-6vB)
63616 z_qL*>+H|`oASw!PXB^JLXj;rxy*w1+%?$72k|UN=W!LM*hVnL&V@cDc!j(373-@cq
63619 z8Fb?YL0rg#8w8QQc-#(C#pgCtxrIn$oQOnYH8tYS?~^kz=iFi9I~VccJonG*$7HVD
63620 z$T#uV>&@!Vy>Xo*=logLCgkD+%SEG<Puc~KVjJJPdxR~W-Nx9L-gEER)gvBNFa!rL
63623 z&fTcfwM~=i&=Egl-}j#T(mN*8s>j5Rrf3FnKb8t*oXqkbM)vU<&C|3oJtCz>XTwS;
63625 zw{4qe_^{t3?*22bz-*#4?GM>vHfR&|l*bpedkcP{d}yKIacB0=xjl)P5I0<5GP{0&
63626 zr}9ao5-q0-et$#rxSYD`Fuv??MmWT*8H!d44#UB?{W{ID&%IjrHoW;QItz_LD4d-r
63628 zzcl7^;1m>yE2>}-j3fxN#){dui6nMJ!Vr{;;rYnCTL&Q+!iCPDnR(ORKv%Xe#KU2<
63630 z9Y1-ap3r?>wYj%Ec11LnX3-cfg0*XshPfFJ-TBe9(b_>&sPNWl#hEl%I}_mj@w{8v
63631 zG&3$mWX|VjnXKrD^GqZ-&WL`2OUaP4MP`Px+pd~V&W|~%{7der_$P;w$pmFgj_00x
63632 z=H@FWuR2)fS_fk@+d}DJcxzPHG7Dc*nHlVlQrgt@`_6y5ao4>!XWfM$+-k@J!>Uy4
63633 zm!b-lKD2*U;WhdE7v-SHieW$PbID0c4a&ii=;5U(&VmObus!$t+<(vw-~#)Q1a=2_
63635 ze@5cpGf2q80-GK1a0u)|ce&8#91`mYBwa&z+B90LIH?V2=+jeXAh!T-Hv_O8FpB<X
63636 z(I-2YhdWIJF$7z{!{7lhfLkq^P|R7TqMtEr%Fhfo_b(VW`31xF3kJ*i!oV_({<!Vg
63637 zmFP(vRJn6N;{;9<a8+xX#C;}79rvj-)7L}<-!f7Vc)N{X26h*;F9DZ=q!|}nMi2-N
63641 z!K=-XzdI3gI){FCg6&`iOapg2>~Ed^fixDgYDu%b8DKCi?L)CtF|#n#iWX#;>P9k!
63642 z_LcS8#pOlYt-E`5Z_sw*fVLu3vp)4|X7ROgZ&ukvD~^yd^*k#k5Sn^Y_hw7!>Ne$F
63644 z*eF7zw6IG<QhhYTr8WOZCfJ{y4v^I&CvKjNj=PjfB?TW_|6oE`f9^-p##+kxtJmLq
63645 z*UsB#iseASH-6LB>FaZakr+jB45aNe#c(ujQ(PMD5=(n-nm+x_Q}2M~`~Cd^BdmEM
63647 ze-zY`nZR(wt4LZpEpU*4nShQ<n-GMJa_JiHEKlSVk6UpCL*lBIyeBw^$cZA$ytg-C
63650 zJ?0P2&IUZwv%b^cxQ-jzHm7OHTAJ7QJb3EJnSQxaoc`7;1>MGTiVKPTUfJoRMLq9c
63651 zyz|7K>=oB|tML<C-un7GOQHT4&3YR-v&^~8p8IjpcC-=;&~$PnbIphLyk?T)45ys+
63652 z{+~nlEDfr$@hs2tLHN}*{f%$rTy}wXa*X}2SBEG)x<TK`r_t}Hz+-41Y+O#obB;#)
63657 z1WO)NTjd0T1vd-!dR8?Hwkj4{pv58qpX2~}n5Wl(*9#pkppOkrR>(4L<j{sR5x(=J
63658 z1?W)3p)%e@hcl~&n}XgSuD$;KPj(=dxgnqK=mM-q+|Fn;k!<et7sj)ynRkEweZ-H5
63659 z0gwRkRwTd?n1pNI9g-a#otpTtyDhX?KjPW-PCe(gbq%@~ZWzth{r&05UAaT|>{1M9
63660 z_Zu3GE@;L3-*NtZt(z7O{oWbjl~+vct7v1#Y9nXls9ab)Fv$3>z2V7;hd;8bT`&Fo
63662 zj7F0~CueFmU~soCe&R)KaIZbS{o{Ahj4nqbw|@Kg2D7;~oI8m>165o-9aq^d$r4AI
63663 zZN}HP7w?qj%xB%YLjYA+U4ay>2V9_;X-D^WgYiwWc56+eS+L{SD>q+r&7Tm-TGbh^
63665 zk|xkLkz+$8**~7F-h6Iq+nJ%)yoSHxUAIkRUh?G&pMWa-9Pr{^xVCovyO7xnH#JI`
63667 z@~c0+@D2D!@byUl9%$J-X2&_sY?6yviqNjY4V@5i6lrZ`?xhbW3b=rDClR7!Z`QSy
63669 z#ZSM8;5!Q6wNhJ?O<5@i);q~j;ceSmk`#?OgULgA-}MPY9-16cl*z>${pcUY9ARs2
63671 zNo`7vczUc<&&Fb%mBrDs9vAc1y)&=75qE-;BPbmn;JvaMRs4}{CD~OyOhiX^*Q;lH
63672 zSLoiVcKzYfEwjm8MI=J*CGCwWbHf$PoNMttZ+TfEmu;_8Y8x>DhQR-_s?Qij$dU#m
63673 z*ec`*v~YQ9-VIr}#b;ijHn`F*N1wyRh*^SWmvPZMjwd;sH^f7N@1=~b-P*f>Tc6R)
63674 zjb>H<GobxVq#kfQ#htq77nfQ-2paXiQX!X0#G;W<FyQkb`VPS%VPh6&mb$VsOfZR!
63676 z*6_o*yLVTYPR-L|HsPFsNJx;PQTq(b1&g;n^RdC*R<F4CQJ)|l2PH6!XBFa!6wRU8
63678 zQe_q11Gk-y<!Kik@p-n++&Yj<Ml;nn?+n!pVe;g}aro6Mwrx)Znpcf-&NX<ak1w76
63679 z4oT2t;=s<$NpE8N$d<h%_2RGmW^I9ZI+aShJPV8MI%VpGr->cJKO-%^31(YD0QW3F
63682 z0xw7NQRCp$_&!hb+Rd!%z~+alr|NSfTF{X_elRF&+-A-#xw4w%Io;h47m2?^Z+*Nq
63683 z8dH&!-p>%Y)df<5Da1%t+FaoJtxLGQEA9<Oft?W4t3kh8NAG(W4zF;LZg(5Y3)R!&
63690 zVRt@OcAq}g|KMBSD%)c-LzY}yZy<Ta?n%|7ZokSa*(kQE_swU|{NZ4z5OAPngJJ&?
63691 z5kc=^0L-^Gvyh}!&YXN4Lm;Vw#?z02GzD=SEsYkkg$`?>Q!GMI94HRdDw$Ly?DwLH
63692 zh+YW41~J2ue0vJmRjei<F>^DAjc(gM9iAFJy{n9HtX01{{nkex8cb-J!FXRi#?uV#
63693 zFM3Dbb@iVTMt?G_Bt3Omh|LUROr5rApI7uG-NF9Q=85b~VPb@$oLpS3?GBH@u}I8Q
63694 zP{L|BwjzJp2?1nrO)7&U2(w+?MXQiU!(KPSD+{w5%ASo4Ul+r!-k+Pd-IQ;N(Rj43
63696 zfz>Q)oy=m%$+(0s*}btVZ|Y)>mySO6&-6{Sg5-cmD_Bl&X7R373YoRbl56L)UJaWP
63699 zcjDfOt$T-0#nL6MI~Rh~Nwnu8Jt=$<JxO-r?R2%C)RTGJPS|Z%yRyt-?%ija=-vDM
63702 zL3(3kR(Y)~mf4ZKQ&xb-I?Qr;oG_@7yrfGSEwD<n=2n78Yt7q9=qi^sM6hrm?Ax^y
63703 zKHFNFZlyTSzE@v8bF32fAW>bl?+oAl-u)(`xaQh(j}vziHv<N$Cf>daU!pVc-w?mL
63705 z+QLJ-FJpJ(w1P$2x_mo`1D&Q|c4$v9m$8dt?r-{M!*Xi5zI}h9*$U0)6SD{IIXeE(
63706 z_L&!z;er2p?ED`VZLB?-R<sHCuCsx1)V6)6Cs~fjo&cKF1Y_e6tD_BXpHTokIDZ)Q
63710 zG&bE+%N?oM6cDW-_5h%9=LhPX+4y(eO}Gs!NfKwU|AC~tTHC4Kn{f9l2(sx^0x1@L
63711 z*;L!ui&>x=-LmCfJCA7<w+P=c_5?$TTNbAue$|VzxjB`SIhRL`84hPg3q>6^Rh~aw
63713 zqK`dDOvVjn&sk&w1a2nVp%7NfLjWf!(>T)x-*<;esMWXOrjn^Ow=q~8!*y?wdV;$u
63716 zSKID6Pi_JpP+M*H1n}Oj-P6`Ryu~zlY6|c`Psg&_jw0)nRj@YOf4PO_d4hJkR8d62
63717 zaKfJt<(}U8$ZflvnfW}u?duPePQ*P3u)NE%Nqp(T-xF7ZXFvd?T5--~Wo;g1aVKk^
63719 z(rAK7T7;8roP&|2`hjK#j(;G&3*HPuAm7SpHUa~pnw!cxU_6E-;?RgTFsU{;LDF0T
63720 zMmGeGdVA}r>cQY}jfK70%<}1D5n51q*>8LE`EMF7-maJsv348H%evi8kPe4Pjg5Bb
63722 zHo-6f5fmwq^^#7}$q#Q1WRn<<f4}f0_-3L7QkX6d6Ap9FKvNkV;HiuaSOi3ytk;dU
63723 z*c41zz^u&Qwe|e1;`Z2-LpTG~kg>IyDcOSlNLk>6S|(jk6RBOz$&BAA6-A*o5i}YR
63724 zPttJ8TGlT`l#zU8KD9VB(ihG}lm1{YjOiB$V;ZJk0F2C~fmDt7j^}|gza`u#b---f
63728 zl~j4qr@4%YC=nakRX=HJ9Vb3^s;zaDH!lQAXQ$!|S=z3}b(Y@&5vvw-DH^qfN=|=i
63729 z&j%j8JHMyB7LR~00UutA{KeLyB8vj<)ox9#-le$0pzu;Wvnf}=D^b`!zvV6Wqyz!+
63730 zrz`Gmz0@sB9S-Fwg*hkfP<B>4ZZv-B!e_vPh*w8&?-rFJI-UL)BgbMNd&j3vn$cCA
63732 z(gU-<F;U(b^cGCsh{lIrG=3HoTe$>6-|D8SLbH}JT4rn7M#myZAtpC~u49epiq`7@
63733 zr3jI<ISol;WxZK(E1|3s8<*`tRjaLmR&VW}YNgod6OYax%tqYFg3A}nO?!QLi=Y2F
63734 z`u$(TdvS-0C*{lZ>!EEJ?KNa~8#cF@dMD7$RNwI590D$07m=D3(kK$id^9C`g1IVo
63736 z#m|@4UNpgVLVyin2;?Y?VyQP~f!yfSGU_-I+My9KB!*$Y3;jsiCP|y_Qfa0>lS7Kj
63737 z;UF10GLX!vM7<f@)8DtSIm<+@oj-nJAW=~E9XZ(T|ME1k8R_GLPpVz#hTU{zU|qxX
63740 z;vgOldW;0U8s^o6?M~*H34O)m#YK2XqzY&@raWe-!JJYkb7UH0;P=;!qETMlKfu<O
63742 z)20sOB$8G)ZKIn<@WYAY{ehV=Z>di%9NIK}{nl)v(o`Z@J%6-VpvydGxCa~2O+jB^
63743 zxG?e-#757~H6DEYfOF?fdy<W%T5);`adTB4(x<j>i%#wHv*Kxji_`{;oKJ{^)3>~A
63747 zP?tj|zVAyau2?QVH5J!!LnfBlC)fJRcAMX+9-5;Cii<{rhF7u|x3&G(kHgm@ofpY6
63748 ztM-~TIy(fB5PI`S*QGA~=G(e&xA@rxuYA+>TQkYNLBCg!3?-Zi`h0_Ztv9z{^m`9>
63750 zX7{5vg*1H%`;Te#me**bk@c6?czaB3sZmQO71?2D8O)|FZOICws#<9-TBmE2`5rq0
63752 z1$Fzx>G4LunfDs=i%~rx)_+SVc)V4I&A)4jccs}-wusi25Ng{m!G(9h1K{OA1GhYh
63753 z-sWaYio+e)0CBX_*WHRrl+F2TT>+g7k@gxu8vuFEyaDuFZ)x32cqb-KSoQ9aTKQBY
63754 z9!cUhDn`fm-rWN*Ayic@`@BO@V?d3B>tVfWB>E2U)g69+z=k7Z<Rq?Fap74Qgs%rW
63755 zl00@i6=2QQR$HDZAdp<9`^jpa-t|ejJ118ftCLm-?Uw8|khT(WN05x9L!IvEab4SZ
63757 z*!rh^0ZjAj01y6+<X8OMYkCgct<yYdBWPzNpz#7Nu{^CG-u!H4d~#olQ?J~1{%>Dq
63758 z@#D4)t^nMK(CEayc!$Hiq6(m3HK$grRkvc~wfa-^=4N$2he%46gCqG{7Z^LErVM+&
63761 zzxc8K_`-Rll|KhmFlZIf70u2KXj^QL<1+1ld%I_ewmDO@BSBe(YFjm4X{y(0ZP=8&
63762 zLew3}Nnu_f<33-3Afj@xU&!{eMk?s{jukud&S&6XAw7J@M+CD)U`L|Zz{!Orii`PE
63763 zOi@i&9d?Go8av$yPs8fLMs6>Lp&}{6T@Kp=(Lh~AN@uL-PJ}&UsZiXNON3oYA`(mv
63764 z=S$oA#&69<(``NFJK#HLy@p!>#U-qZA9IR$@sS;4!D<x+?Hp(NwyF$`l@oq`=RKc!
63765 zb$Rgh-}|szand4dSt^X&s5i6wpyf}xFnE3r{t)&7FYa?@t`9WaEeX>bLw2iab|s|t
63766 zI{2Xb*l#YXS+%@lbKK#H^+$qbBQl<wd;R%2-=1gg4-b1sTe>KRhZ2g*cVP6IkDF^T
63769 z@d%XDrnz(>v}19T0;R0?-B(||<(@sS_`~V8?{(V)2lu>p=ezDC7#=!RUX18DnWA`+
63770 zXTv4w)ZKUAX~i{J4rLrW@NF}8APX8ecECrPu>-2PDl3;0J5aBN0w7CdJEo-d&a0l#
63771 zfsS>gH+0}@lLwNN)GBH9@VdBxnXCFTzE~nUDU?S>)QKaJfiw;r2oN}Kz~-6Atb`3H
63772 zhvpuro~kbl=C#BX^-6-V^UQ=C5{;N>#SQevi;RHHtxc=qMQHRoX^Ou0(h(yA&GN|e
63773 zMvPcNNbB>D+Yuw({>x^>$V!CZ)gLPA9>V3Qik0-ti~EzwP`>__-Tpp97(Y369DcQO
63778 ziXP%Yl%2KnYcK?>aO}J{gi#koTL-<L$$Ps9dhOMD$yY}a1a*nGM+ppLr`Mr}eX&;D
63780 z09O&m{E6$joUrREK|_K<OpQF(x!r7ZO|H8ciz7K4Cr9BD>Da?W-f_vVV2kkTyK%|7
63785 zc~1))56eM4<86dh(FpHa+UBiaRjFKCl*34yW+}bGd3Rm=lJRN6#-%4SQ?Drb!X1B+
63786 z2Ykcwqg~Wrq$v)2j~^|y){|zwGrYZ>Nl&4-Vp*xnNAm}(oM_{V^ZN@s-J(rW+jeS~
63787 z6e)5}mM;!BU6B=k-W$Q+BAM`cZRK9*y_BsSiK9F7;WiAjZ+c{0mu)uB)+avd)+MbC
63788 zfV-L&-JB>lcjMZH+J!H{k08xN2iLT9ZJ{HnqgQ`!jb`mPIgu%~A|8Z<$8&89wxwAI
63790 zckQWngSTK^>ccjkxJ-kp9oSbHR827r_sR}NMNOH({juF1YH<quw;t=y@vDO0HFY%m
63793 zECIeNzcaW-OIwCz^Df06*I9uiNt$ChzhVmRTx@E&mhm+X4(%CC9N5)}`}XZ02qfHc
63794 zAz)myXKs5gpnIn>tn1L0`<BlvjOMk<i>`~;ACr7>P4--G#x|SyzK`5t>L>G-V9-%d
63795 zFuG1N;TaOkUFAeKO-Ac{N~TU<t3*OL9+6rVA+aje)B4v=sa$Q<W!StoA<I#jV(G4a
63797 zOiXPG?k-jig*@K3Q(7crIE<mu75m8RAPE#OVPPq+V}X|r#S-ld4HT$Qy%Vt7>}ny{
63801 zZ<u5JJ^K9}cn9!-;g2A^$;%wY2YluzZQg>XbJy3{={3U0F{i69&k4MtY9viSiekfw
63804 z=be(@8}b{iB*_qJI^@I=981$jelwrNv3Nj+-z6xJ2iaCCDw}3-Y~J3Cm(YD{Gr8jF
63805 zEQw$-ZO&E_Ts!8)N)fkIlwN*?er6qVK9NlBS{!pkj36t<<;3u0(dkWw<(MooE`e60
63806 zD<^N2ZS_q-$8cbF$99{cMqSWh&xa!!M%4tQ;7DPKm2AW5EAe*dHtl6MBA6#yV=fzl
63807 zIlvGkk+$*-+V&qT{BM+8k%*zyr63V45A$7<m$W*^pf{0omAUKCtG9nss(EPl-Hnkz
63809 zN)dh#O~#=QyX4E2BRW%f6-P1c^_@v<O^KaX*w8)<1)BqL6_%uVLSLA~bD~}r!hUbf
63813 zLF7yOedV9l?^~~CQaHuX#(@wSy13tWrHEdS=hx^6MO~lo-fP@JF%wG;WPE#@zJZ{p
63816 z+WW~t9G*5b7b?VM)uFbMac^3ai^T-bO8n$C!CxsD9)b^|`5kKcIfB>#h<56Gr)m6}
63817 zHr&14rwC^-;-1KhN-z=(8bi5I#c$K(?5N?52?!RhKjj+>35M)yrQ+U{rj86qw7??C
63818 zP{|rWYrTE-!k54Y;TJ)8#See6m_pTMw_!tKC#G;+5=!q}Bb*a{jdaJueG1xpYV}22
63819 z$&9C*?xLt1&klwhtd#W!lOy>9b7x=5I#|xh1zp{^fY*S2P-tc2JaMVOfLO#OfqvM(
63820 zabQ4ub2QyQ-5eP!IH21&Y$ZUT(5Dm*ZJIfqN@XJ9blzofij$<GHHXSd9(VMb&57MB
63827 z#$lZ9#&lHM4yKL5a~%Zlj5%XPIhli6BvKZz`W?$_wRmD`M0WUmkmc2-0&Szv)@^Fx
63828 zxvBK_bJ<+p*|Al91O7I=4GEC8kK%~RV!Ipw+2hS`+x0qx$x`0Q$$m-l2%$zs_0q18
63830 z^WF{Jz4N}YD!`Kv!u?xv>FpU7I#m}nxILz4-FOAqMi%!bqBWUk;<+g0?u+S-n9+{6
63832 zEy39Ol9?enQOK<LhlxBqi2H-D(6`gpuN#oo9>PI9p-<j$eal-?lLz*NkzyVW+jCoE
63833 zH*TFid-D98um7%hT$PzH@^e+RJCu|Ft>nFnFS+iaD=j<2(-;1O$iWYzJ**6V$BKJ4
63835 zRKOjpp4d&KS!x-PFfM=)E=S5(zDBbh?W|naAK#AMtgP`lV)>-fXs*OCvATYX8gn>2
63838 zd+&QMTxM3OOWk6av!jzoQdZm-`R;%J`}_a<H;V21{pHuRT2a1wx^3h*N{SO75b`GD
63841 zeQDqbP6Ue%(aCWT!_<KTGwh8R$lA<7IReXcbREO!vhMb1Hn2)Sh-fNnl?Aa{SAhwa
63842 z5uzd&0hh3Tv{8Q`RLz7|zX<Nqe?T1wQr=g&vAd+BI=oBN=-TQ@(Qu|II?Z{{S<I0<
63847 z2jGj9&lyQ^@63xXJW7}WPu-nC#$f=5F_LsgJB};EtV6SW{wF@R8kP+fXH`Zjn@_#<
63848 z&2)y;`8fB$cP`H7^Af=przOJCU%j$2;)&<cUj{m5s^5Zn7-&yp*R>sECM}=^B4wBP
63849 zaSv=ClS1yv`Bx-ds|M3B)?6=5WxbiGCu&NE7P_+!%Ob^!)gab&^{vYE#a?yI%1h~c
63852 zt1xG-FG!Mj4`AjezBG)zVqYU3N7{f#A_u$a;<Pr}9xqOdjgRp%m=qOiRN#jvNq{BS
63855 znAw-^D5ob7CVV+Gi-r_{ezcW1H;@FmUU9ZvX=xa$FgoLu*<k+iMsW*H{$wOosQdM|
63859 zd0<VAoW_-%tDVkWXF7R*sx#dtXw~oo(x@BSk(q_<yN<0N=}_v`-S6&Ro7+As=AH6G
63863 z1D-SRGq5?lht%S8=6ncYebO~2x;$VpG>ji(_Yi4uHEf?5{4+4et_(gzu%ydlb{c$P
63864 ztq@Ffc^m|8$c*LAfGiwu6;L7}w-qTxg=B!d$LW%7$Q(R&zj^0oVfv1vy=TAwBUAUB
63868 zcRVq(C9k{+miB$9eNS)e<dk*Sv2x$d@Km|XXLG-z6l6Q^h*Gv%jmGxcLDpW}UY8fa
63873 z*~~H&IOf?0m#ZaD7jvR{q8H7GlCOkH<!G?FmOtSKSV-#ZVqitAJmtLO;oh;bw+*E9
63874 zsqcEceQ$5`QZv^$l{ZVg)-WZFB%h>ZN($tHUu?#JGQc+3`x)f7Q8-=H>}$?=OvppM
63878 zw1kfZ=_ZU*Dg`GQyj69nv|MU=fgfa-8o8WMck_#-<dt+kd-j&Rlry%Y(5>kDMj)Cj
63880 zysTduz)>Kus}X-&yfBW5!SjI2FdQh>pNy=cC6kmp)}uZ<jJ6M_0>Nl<w(d5M>m<iz
63881 zJ2^3%S1Fa{9QjO}GTH*&UUr)m6wVvx$`zL(GVBFj9oP;39-Bt~0?8v=K$E)A2tEnk
63883 z6%SN>O%Sc<_$!Yb+nU`~$a<U1&&c(PS}!?yLt$1<9XG9oF3D2VCNhTq6#FgAfHx-K
63884 zpDK+6{wXm~fw?gXISk>Syq%pTnG<of$(36yn?gV-XRdCW%Jf{<kic~$(P~bK^b`e(
63887 zgQci{@gdSS&SKbnsiiw|v}`nCt^~aAE-E1*^2Ma&?uMu<LVQzD5~lECz<mOVQCA>b
63889 z0QMXDN~tK@tW0sHD9BCCGc=ahMWtkjAuPpdw@eZz=&TqPc-}R=8HE!Ebt32~^a9}J
63891 zHz8Q;85~<EHI1U_8=jNq8qkMO26#h1mYi=Ehv)k=#2q4@-UmAb$3}SY+|x!3<d8LR
63895 zYrrb|#xrE<nw3F;1&~{7%pDJB1e`Ot#n-;8K`%dX)e{`v?;37Hw!Ot5(lK%2SZSu=
63897 z0+3P}63xU?3MEKj0%H`KL9om<dO}Q=5fmIjx{!h+LMX5jwoD-VR(ml<)&A93ydD<x
63899 zFpvZK%~0}82vCz_fC$y2rY}3R%9@5>c9^Wy@VxrNw92&Rpg4sk=Dwm-RnZ0lRjiav
63900 zg5<(B#$Beq0PLjWJg?-fx}q3^8dK~O<ZmJtatD;GSK@4aPk2cR)6U*<@$Biq&)#9*
63901 z5n~2cMspL#>fc6c6lnkb?Q-Ms@kx}dcz}qAp+{w^y1UG)ro!0*16V=m=9kV`@(Z7i
63902 zF*-b#!J+d?lBS@~c)Q<!T(EcsWf(RqyGNS~$6F3faX5x$2)5N|1Pv`}WhrrHhq#6I
63907 z+--nAFwSi72Bpe6L%^ILnfkHa5j63bvIhI_Wiq<BRXL(i0yEIo{v2AqB8bcFMqMeY
63910 zg{XJg@(}e-D3u)D7K11oL*99VnhCUz{xjfb-r460Ok86$!UnQqpEH#PPfc=fZr^9v
63914 ztyAK*<2M2-Wpr-_S7+><dOZ=-NoLEdYn(+;JZ<2_(z30Bw_4b7*5(C@T5jti9g2D&
63916 zZd5-|#hmPJqLnUYoGSPq*~IWI6Yk4sadHfhR13=e0wHAC^D(9Eg4c~}N56sm3i44z
63918 zIF;MjYKbTmdO<F<MXk^yaV%e0ERmuL{yXMp1Qtzw7n%n?<OdVErNH<J8prL)33-(r
63922 zDT{K&wjE7&*X9&HQn+$)VOLSJK$fbC+s+xoyc7Cmw2Bmv+lMi-m;TC0Hi>7)vq_@>
63923 z_T*b91Xrx0tGBG?eKU?@Dxy@jZClruE*4~8wA4tUx2pb<UY!FwkaA!L^|D&eRxM-@
63924 z+xb=WXOSvW?MFHtBPYP}9dHevg8wxh<k8DD80fOn>ZP$b51c45JE%yb(wI-Sznu$b
63928 z^jL;XK;O#?-f;U<4eIf)J-^ay5B4hjgJRaF8=`ZC*(p75H^M1r@riR!9=3tN6lT19
63929 zy+1v3ruo|6`#0;ir8RcI6ZuQz%fP0c?{{B>xEbSn5B1=|^x`ZkK0m?riAOFgv=>-7
63930 zBk^|87378<RNahXD3;9YOjHXnMpZ32ELd{2koHEF(C-2=1$f?BAUI!o$jLHdD;7wV
63931 zA>QBtD;B&hu&e9ykzdA%tO+dG4e-mX&X&82Gqa^)<5ZgzEan`BE=+fu{*mcHeC$#1
63932 zrwhm@QgG{$4giED@5!JfDUl;^>-~yg-y$#ZwGYt-6APi6edrpJj5U0`5=r8QV$yF^
63934 z+4Z=`{cFHL_-^!hq=EcxVt4TQG_GJKafN&uS1?C$1&Av^W`^+u6wB;~3V>e}ArP9J
63935 z8ifhsaKa&rA^Dof0E1xPLolX*;`^TIPk-~}!z(+1EKrWZLg3q$rpO}Ttp?f{A`1+<
63936 zrBZ`pFzXY>7Aj*JtRm=lee#)U514kcpcHMtVzY*06-2*zP10LE)6*F`2-vS%EMMO&
63937 z0-d2SM%co+T8sP=N*?EV)1lrM#}gp!XYqF+U1S~h=$7Kjo17cR6YSXaOX6-Q{`BO<
63938 zamPP6ti*Y3rCJ8t>n20eri+Kv8Vsfgj&-u8GKv!MXq31G`>nlt_vmA~*)$0X4$Q$a
63940 zn!UI|S(n!GCmX9z^!ojBzIOjT<z9|gSn~UYEWbXl2zMhXUt-^fF%S{%IpHPuTEhuG
63942 zkd9W~arKUnVutViDewXz@+032I3HdTH=a9n<#5>i5tv~-oN6@dY(JRczK;(N%=#V-
63944 zv8D_Y5i|bAj+^MG-`{%y+Xc3Eg#7r6p~W{DB9Nr>3kmB_4ieZ$lJa%d98MQF#mvwo
63946 z0FvNguv*|$mtT(?)<(P%{bS~plqQ4r?78dlN-RbIyFB*h)kmiRyXd(IcBvPllhvdD
63947 z3NTDbU2jh^OmSMx=hFQAH_(TW7P8ylabc9`q-Cl&zDuD98JjaOzXo1Cle{{NZC@MZ
63948 z+mhUalLdzf+z~ipgdV~_uHl1G$-{tgWu!d^kfrmjp3YZhmIK$(6~E#zR<_~#^;b%I
63949 zec5zO^+b*&)Id}>49{r!8;d1H1(Kb=ocRJq9#@qGR-qY9p)^Sw`Ys<qei;c~9zV;r
63951 zCy__~1jt@s3*Y#~plF3KHY`1IrOIh#-hS^dg#rdd4)yuX5Yia>fWQ}2D>JqkW&v6A
63953 zP?G5c;c2g_sL-%dmF|>ZFox$3-`Rh8-g!uAAN2?CoLYm2y>Wi&bbIoJx8B|c)_bI|
63961 zX8|X|pd{eed30WwXgC-ZASAZH{J3?O3;`M0zx6bStk|qdv%0YCDte(Q8i2D5m=Mww
63962 zvEl?)XWln74zRLTn^{aV$-qdVworE&#c9CbK?M9hv(NLM5zH5dJv^v{d=ALlhfaK|
63963 zl;pnRoBvc&5dUOa506dM!^ia)<I9G1^ONhw0-Zpnr80QfDi#+nOh$Y%P0@^+rd~I5
63964 zx}b2pQnqu3rf<(^a)%~6t4p$^$Sh+jPzvvQ+Mo{x{Q-0n@sKwq#ft{SW*-f1-ybs{
63967 zm<owYL%_>~l@V&+eqfW>HkvCh14Xjr%Ao^%?TmT3<INO|0wZ(0>*Q+e>T$!-qz%Qk
63971 z9{i!@r3X?>Ef^at<2JB;zlFIY1*C8g24;UZQ}UxkLgT#73MhryCdp+Cnt-!ld4~0r
63972 z$^#G*rd-vQYrnPl`Zd87=-O=;-x#(pS8H3&(sbI}jeIZmE{K2lIUd7q)ZFc$&Y-z_
63973 z@IF>%;%zXFu}zf3!XhLTki{8Q1`>dD${ejtpI`V_+uwhR);8O-S86-2?KK*FCeCwz
63976 z1Rxm=VHpxE#e$$R<p^Bz-@bh|3oFbbKr;#>ft|-%QTe`Or!ZC&yd#y(+0CEYe*X#h
63977 zo)3P{-P`_=Mr%onXKe0$eedtF58zKAZCFKAi=%#7Iga`j2ElUlkYM@srn97FYWW<U
63979 zzXzuTR&_$_)O>0CmeuTZcJa1zjm*-o|KQRcy~T1%t1dayyG}kx`4fADxD%NI{F%Km
63980 ze@>xO`}y;b3a2qZg7{~^vr$f2>*Tld%lDaLR$y>RDBinXJ-6K^2^z;U7@-?7a3Nz(
63985 zhnTkQU-+03Dha0T(zWS(;`^A?^?exGhPkVaxT?>8iMgw_m4!J#ifwdzY*yB{T)y|x
63986 ziu7J$C0;_GkCJyG^N>E>m_E)+q|bDxQA>>Tee^kS`Kcr$kt9|R5XJQv5@--XR+}aL
63989 z7-%h_3=5nE$up&mHrG3He651cGnga-K{j`PQ#V-X9H9cwYZ6r|a~V?#2(!`eE?+#?
63994 zVBZ&ky=va9y$Z|k_RYy#BYG41YGC5e_!i(%3@8GPv1Nl~fD4M@oWuq9LPOuTLb-qT
63995 zOkX~JBHSs_`eV0FpDQk2*a&XFl-OmkUNi#szVofkNdz|RIGSN<?~lQ0U}2$`Yj$*K
64000 z#YY*U<i1V5xrkQ;efG_7eKeYG1GY)rj0`ZDX*Q>qUia(=ES6V-rWZYQ{xiqE|0HzE
64001 zp7_4omz-e9Zf`b>G**KAJM8xX%kHCF5iJfdaBf7mrik$Z*U5__g>qyeeuLO(=X^6;
64002 zRaCVDSjKY9BW*ob@;<-w-qX->zxu}0^L}B@4`%(GlGqA+Uql|jAg!#v9*7t|dJ{m0
64003 z;R%kv#o%W!3UU5Eiei`y5F*9I-@-6L5op#ZX05F<?V4`6U3q6phpAO*{{ER_le2g&
64006 zVi-l>LRJSZ452rx`%Iz7yq!k#;q|#&FSIjDKmT3LOGj!GjR#3x?vwcaU_Y1OeqhbB
64007 z_EP!|U@=b>slq+&8}WIg?Let}#v{OP7#!zqP3HvCXq4e5qjomKSNl-#zDHSWcb+^l
64009 zS%Lk4k<i?10yig<Au&R*p?Ar*XJBZq+hxPYV7z1c!VI-^@s3OW;_c_^ndM)4cJ-lk
64012 zD)HHv!?V#4G=9woCYnCJ$<dUGIS)wWCfX!ZjJ>&ZLi-K(1EllPTVH=~P;cu%li{)Z
64016 zp9{5E7Q-x_kceG;xHBh)xEl=qI5h;LPzGQW!;v6YVjv2*9ax^WZ-D&p7$-NAN^Zp}
64021 z-NAxMC?Sb4J8LxTWB<ld{K4W%xrw6$fukA61=56T&BigExhyUfD*=R(qqpv8b+?WF
64022 zR+qi}=2dFx%kKjse+ls5^w~~6tj`28lJ?ep5w-AF0w28FpRNEhO~+Hd%o`x}KtTvS
64023 za$*e4Bd+%A-snJv7Fx3<IEGATfKg4NxL}Wo_^4%NP=)1vUADG7U8${hqR5|jgpCX5
64026 z94_n<(Rh%_(lq&@Pe|8$!nocO<-?!2?)^;?$ODm^viTqwJ$C~}2Mj}sjAj!Q8&9*z
64027 zP`VIb-03DDWZ24PGMX&aB~C8R$kwIxSHAmPFYB-P8DOWaJ+uaurdtw~mg4|gUf4T=
64032 zjiyA*X(dTj@!zGrm0LE<k|75YrU#t8Ts;5KH-3|*7t79qTV0yH6rF$kmR9w2q}TNR
64033 zTh`ZcajKv;>|nQk?5g3f-@1MD6-ORf9STOH<p9aJw+HQEoFG4mm9c*Vh?pT?StStq
64035 z+7|j|yM-Wg-PTfj3H;4wSSyz!cG$cyFvei@MVhEjG5zDJsuTqx8k=`&#&dWYKA+`P
64036 zN6B-!+|lnj7FB}wwAy%bIoJ0zLH6r`Ttv?|Zadj-IP<SqVPxnPRVs2IXC<N*U3x6?
64037 z!js1qrP7qF3Det-$p61)Sl4yy)Hz^?LO*RdPu>Go+;E<}|81BjUy0Ir@*e8lc%J;h
64039 zajubdyAtc2zm?HzbZBV}EuAQz_*%b?ejKSGuTI3a6&H-fI8;x^t-X_#9WDZqNMISn
64040 zurFb>1RDK^fBL$lpaTjkRY^uYW)AbiW|R7e%&-D4306P^q1n7&a9SRn1wOHA@Iufs
64041 zMVsesQTO$k8AGZ-Kp|6~D$SB&(I;EJqDtmMog+vpFgKPsnuRh7)+5ZIpFl#Sjr?%p
64042 zsX&-5;Do`3)C2|y+5_-RsfnGJ=?sRGuuJBt@dx68A>*t2jT<c_1`I<Dd>Xq{0(MNh
64043 z)UH<xeu}CTqT$#i%-Qm=(bCYVxS|L4FTf7=OlHu(0VExCvw1P+>9fJqY=~zF;G^0a
64045 zzxf$!otE!HZ*6kM+Wy2?0^J^;^?~tfRE(X-0@_d_iD~l8{R>-8@8aTUvf7=)$!gBk
64046 z%QIU_{oFKVJbhdH-tOA*qrq+W-0F{ps%@;r*soA#{tEd%AXC4T$kadmqcn5zM{(vN
64047 zjSpel==UL=Vb4?;_e|ydY|=9o#ywNXum9usOx3I9610sBE#|=?9?K-Ak2NZ<ho={g
64051 zFF4&=@9DK=zI@bm@~CIF7kr$0Mi1qgWv8rEtqhRnMlL%0r*2tQ!-jrz*D1QB_bR&O
64052 z0!hx>cb%m*6=w*kR+Ai=*H@MyPXqr6do}q%z|;SGoR53-h40*ZA?4~9Vy;eNo*ze>
64056 zA#Ns4@7VdAz2ofQiLHz8w{-{R?%a!n4oA0S%B*g7=e7jV6&Qjg<>O0>=WR)S;qxyZ
64059 zrFzho883&)AGBo-t5FRLIX5<GfM1^3FE3+@X1_@@5R>Hx8o83MP}wXcuo^3}z@njq
64060 zj9HeHg?#G>6pqd1YEvh~f}hEj1;yaZg&K-;T({7k1vG*F*1se^0ci3c(){}`?%^p-
64062 zghXM@jxv-pN`ef?VGU46hs2<iqWs#+Ug$wu(7djTtePvzBA=~DY`r*hNs?Xn4dteR
64063 z3k9E=b`+hLYh|0{xG3y)k)b~S0Qob37GI5N@v6VS6`>L@iHb?Fw}-4C9QjJ(uaPqL
64064 zqiJo#cki7~>2-dL&)!V_Yw$f^PQK@b^}WAJ*Zfs_=Mx<LM-ds^`D=Zy7)SKGEcS9j
64065 z>8r|Szg&vPqwlCYkg>GNWc@-0zYezkp=C$Lu<`eeqBPsNt0R~^g>&xZV;A2E1%ope
64067 zsyNLAeZP7(nz`&Xj|IU>fO{1=eB%W*QVAT}m_PNl-Q>Lfc<%-5C&*_3oxh%**OS0M
64069 z%M*M2z(es7xUD7}-rihnEtX5gyk*2iZw<7;PR?@}c)IDBiPX~_G!{(wxe3@OP+Y2|
64070 z<ax)Qy64`R(!kH%Tre0x7qsduy4}1obaP__P+&-z5)lR~SLcA6d+OMN6m>$u*K_mX
64071 zxR(p)`nA0;5hnS1K-aIO{QDpGekP^s&%|`a_kL;b1@zPCr;z|qb_sdpITnIyr3m2=
64073 z3}`^J)bz)OQxnI`r%Z-tHF5FQYhj^WE-xsGSogzA7ems^@kA!uy?p^t!nW&=T2*y+
64077 z`LNj2cv3^Lz8V&gF4`RiEk{|Du|h5&<%Z*k#x0$(kco&jMUIgg23ISxEHEuGlBH-z
64078 z)oF<&h-&-jMyXcH&QJMQ*7|2G3V0dZ_jZnEkDn;H<s-|j4o%pKzp3e)v(m;bjklCK
64081 zO=UMO%r#uN-}VcCa$vhTW&d6w5Bx6r+eiyYji;VpRL10S1g-)F49IJP7|L}7aee=~
64083 zNLURzQ)>OmmHv{(k-VZs$`*P{1Bl_eGyC9%49EYKYqZAN65&jlr|yf~@H7y^;Z(?z
64084 zvf^{CF9JDi=+@4y#K1qrj-X!va-;?9j(eYz<2Lt~(=}b3uSDSM{V<BC36!^#3X{(1
64085 z*m#ls0tEU~O4Ih5_w|a!r~<sxUTx;xTemiw$7Vg(j6BJcNdBEhMVVOw-f6{Rn$W+>
64087 zH7O<vf&-a}4`gQ2{6D0?sOf)ox!rUfRZj5JsEK^}{J|ZkKiWh*bz<YV?9GC!5)^NF
64091 z7S8t>UsG8EL0{tRcHnqSz`n-!A%$zEDszLV!o*<GnR}*AaW#Lc>&<Gmzcc6G(ad)w
64092 zOuu8Nv>aGn$m@;T7A|p`8qxC`MN?KVUcU8sG^YpxJk#Ia`vz7)e-`2>0L}MspH+d;
64093 zP(?`s#-hqETV7#prCEouIVQ$npa%00Qzu|{-`OVy)s2o_#OiXBqVsbB$q*{AAo74r
64098 zmFdcKs}Z;`CjrZr>9KtIzKldN3n(lW(|Q+el$5}vwzXModamBhw|gPZalTv-C@~Z4
64100 zKLT^;6jnoN3PTYF2mE6K)~IFBI05q{(4Q1dQjmXGlx9%+VZa3pf-%=Pbi87#jbwmf
64101 zo_P|%Q51jT#XJSsv^Vh-_>6(b6BGmF_95SZG4~)0#z0)x3V3+wn?8)t;Mv>2S0F5d
64102 zvXkEcoAj55-#`%8`33@f2Lb+g@)g&{zM{V}dYZ(Ex82<1NiBsB`+J)8Y8h6FLeynV
64103 zRV1E;qr&<9V4D+-_{PCT{PM_HgMc=s(Q|7LOa&IJ@+-i$&9_7Y7d2jKXqqBb?7(U-
64105 zYiZo<XZK!{`ZBLc<3O-)<!j_+q>TL^Nq*=XpGjAICdm&C))2o0zUMpA`0(%TwbNDY
64106 ziTK+m!5suTE-(%LrR%sdQZ6+PBKx-S%D9qCbX*)=3#HmS&Rcbz?XGk(vNEgM9?)`E
64107 z8=F2_JzKkbw{jc?*cuyZS;KWxLGg&0+b9}&oG+iQ-BVDsG_G)(+y;C7*_a-WUioCY
64109 z2Wx&MJ)hs-yE9#L=ZLP@F8T;kfw{SOPJ$oj=CYQS<mUW1H<$eSqH}Y?Ki1q_Sj^{K
64110 zI|21fV$EZ@xx@jw!JLG6uK6pvnyCPR4DqhAR?GJ54>Jneo^i7}LkP-~@r3iKEt_S-
64111 z7RFu9d=bO3;{r#@4-WkQuaI8{XYzlg@w#V$u@%Qxqcpx6$4+hXQLyG$(>1@j_gs2z
64113 zuZv+d4q0-e1XZ*@L3RE76qPjnuiihWo2t)B6srj;NyGe<T96c;&FQt7yI~>x_7Nwr
64114 zDUwo%76J290w-ujqc@9;)1V4yp#OKKK^3XqWRfl=!rCk58I@Ii4p2e84i$Ee@s3~v
64115 zbt4}nLmIPx9r<p+FP}?e_8;8)-IQN`H{q#x%^LZ6u;w|KBPL&kjB)~BA-(|q{XeI2
64119 zq(Do~_sFx0(-P}Q@_JjV8#qHsH5e1*a)a6-Y!!V+f+;&DgYB$7E`yU_$7S&3jGDt`
64120 zFp$sG#6%n9u*Lgi@Z>{-IW^an!TXk@R02LU@z6*HLr7WAu?$7x*d!CcjI}BbZo`-m
64122 zbDCM;bFpm?Y5!G>i);Qq@ce=_7K`g3a5g*!Ha5y~WRlq$ap-LrY#Wkf{yI<4Dg4dw
64123 zIg-f0SX~Bs2^q-GZo7r1rGO<s9yop+kfw<?$C4z2Sx`5K&rOyC#^X4`FsmAJ$f+f5
64124 z^W8^ERhT6yKiS`&(?p7)?MMh_(Yu<rooHA5*#|dhIqxr3P(CU-GGVvPv-d}Cc<R`q
64125 z6m&yg;Gz!itA7Y1bgF&yN>UF9=fCfve}Vor;NLs?Ox`jD0*#62r)g4%-9CgrA69Am
64126 zgHMPg#*bk!HV~|N!m*@M8-l1M95QUrnH#_k4`)YJhQWvdSVX(JlIv`(mX%tGoj+=X
64128 z;H1F%zW)Tcx`I3d^hhGxVm)$jWEg@zy?<m_lIXquI&htDwB&W;qr&2%qT#5peW-Gi
64129 zT4Xrhxd5Ez`a;o(SkB-KlNaf@)T81S3o55|W}IjX4t{XkVUuAgjb$*XLuLzEp}bOP
64131 zMUya1wOk0YCJ*nyI=Vi-TW}F#yp|N0E6(tQsheyL_+!+Nom4&+dV$|+c0+%mWEKJ@
64132 zzv}CCR-|07x>jtfZZT(yWnCmVigo2$f6i;o=CxoOQiV{fC2uD0^rp*fsi5cC9IbWo
64133 zP9SoI%+_>9ayTU?mDd(>(>-6z8iSYt_AdN&KpSo$^?oIY^BJ~^9g@)Kua$}r5M|i9
64136 zdT39X-fBTBa)h4yn&R_D-H`3l;`(6U7x5n$?AyoU=?(T_iJbmgF+Z{Iv=aTB=W)jB
64139 zed^dEdLJ?cF<=Ye;$|%w&SyCpSBSi8%pXCZDg-<-g-rRbp$$83M%_<sES75tkY+kC
64140 zFX_$3NLG-x=YzAS9WrXk+``Fve#*=$)5oT)tz#<^YOdDU#SQ!1U2Pd>+;)Z%bZgNT
64142 z0Vl6F>l)$<!|3Qp3MSDQY@p-Q*B?W5sLs^;wc8rf`iZdE(X*S6ImdRvd&`k0ck^~r
64143 ze{-M#iMA1XuHpkToYNidX<jusDyXZh#W4y!JsYICq`T2SL`pzv#knL{0}F@e+(a&^
64144 z)5`g9YApoArN)DHX_$M`7YPrD?vXz-_#Kl}U7fE~FFza>w6YdQy1ngMbY(^_iEUZ_
64145 zk@BvY3q3QR%~mXwc=+g}`64iROusEqk!^MD$Ny|D$FQXabVd}HrWjV^^7-7aYIV(7
64147 zVJ0As=g=tljl2SzV32!o3T9i+!4&mqIUF$e6qP~>4<8~2ecD(0cD)7>No&1&4;D{D
64148 z`xmyBF{#-%(1h19e`9*hkD0!*EL)6fk{mDPX|t~FzJ0A4dYzureqv_1B{+;^Y5#ZU
64149 z_T$Y`VeWwqr6Wm-k`tVOpmogeTDM%RXM^42>v~kRD78{}#w^t}#W`^ik8MFfBUDE|
64150 z2%OJz31zIYHV>%b-ZiXIbNBUdjDH%JJr)98V<^C45gKLEG4F6U;l5p)69IzH29Zt6
64151 zrV2JHWf|2Xfqs`&k|i+$El`<;)etPHQUF&p-4@M5NF)^Pl1tWXG2O$jA>Tl1$Xnpd
64155 z(-_6n8~TDH2t_@-aOQ84AVpx=jmJh23c4LfC{+5vKkEf)fFhTJ;6DVP;S6CAp|G+K
64156 z?2f_{{^f~WdlXxBH(PH2<21e(=h=tzBCeNbpQt#vexwGIyl$AC5Av5^In1-qpRHc)
64158 zaLOcE3KnoBx%PjYw1{gC4$wl6l*Y1>G5<QDg`+z)=Kw9H*K>!^f>vm=Tjb>-EhO#A
64159 zQG&7#p~XONZhcF76Vl`5(wk!xv0P=QFs3-WwM22sp0J<|6=#smR<kJnaDLv3+eH%9
64161 z>-N#Wa>ulfh6|SMu;rOW+X!{?yY}_b1f>IgG?{{#+fX^jGf&USCO%A^!$z8<F69&G
64163 z-2Z987J7tG^r_jbV2Q>;onZOM^GX?x1LqItQ+){i6YvJGa`UO@bd(x~Ny<P`fQtoV
64166 zU1-E|rE1YVIP?j{&5G~Md4JvwQjYO}zQMH|r%FGZJ$YQ`?TUBz8ZF4Rnh03Nz8dSA
64167 z0S%+Lw(a%Lsd4Cgpr2pvN)>39tSq&gg#Z?+B-4B7{n%`W*2LYIZiQ=4y>oezYPE+K
64169 zn<e9|4gk`nKVvv&A_hU}-um{(BfCPu#$KA1@&+73kP$@lV!QmNAB3=U`Hrv81VY6z
64170 z8fK$S$;D!8qwBUVW%at3&d;01NTh{a>NBBZD`~9wTc1@1W1>kp>j05zer_-qc@!s}
64171 z%;$>)m8oQCZS(!_o-Hn|R-B$&?J2&S?W#_2e8#`p-0(1NYoj__bOP(QERM{0Q-M)w
64174 zyCcf9%8PlL&+-@Ew^Pt9w>9szAD^l1S}aL1q8!LyLVqE4t@88tZ%BY8@>5-d6IoNo
64178 z?wPZIFhv!W*m|L$n>Z;3a*^dciMOK7Ik!<Z>_|&#;-i0nbp9cG@*qe$pa3}-&oDdD
64182 z3MOUDsuKnp!_c%YR;ELJ<NIRrxR!oo*K^vMt+Nc;Bzx{`-V!NN6U!}MY|p3(mOuJm
64184 zBl}yHtA&cw^PE{HD$zh6bhpIz8ONS6S!OhY;Fr<A2D}Y)LS$#<R3`-AvQF?_%ShOE
64185 z65Q@km5{^71B>yP!s!cz>C1PoI6cQ}D#e=JRc-g!ywWt~POmMZRH5mdn%{k9<y<_n
64186 zP-Nxlqiwyeu@WT+5!2h`>5O5i7*DyOzS>y2-3ilu;$`%cz_J<OAQa>1gYTs{2*udg
64189 zH{%Y1_awCWhtbi!E^Nc-ZuI(%TDj!fF@0vyS$6XB4S^y?_&<r|InvSx^t1`?rKVjz
64191 z*^o${Ah4;*?f2BI#-*8=s8r4B6isP@XtDkmpvKm+yO*F(GPuKkjCFv`4s>?M11uw^
64192 zIy-pTbat&$2rPrnz<lr^RyxK@$xQKq+75?mds1(wwk(w?`;x9{cRuszG@~%Z*=i%z
64193 z-eRak%MCFyS)jh_dW{F_n^p>;e`ULU{8aZeh7$^xD=n8OfudKU(y8iM*3yfL#5D?$
64196 zbHpd#hdu`E{}-#jgKvlahMmZs6YFo_I8cYkr9+DH_LHXj%KIxy!!%2x637b2%cMeQ
64197 z%4Wqa6jVmAO>fytX(QDlrS3XS-DX)>TtRld*?d;Wn%=w#DT4#L?BNmm`$!F$LyjPC
64200 zy0)|Hgfc;6DCQ|j_CsoKX-1;G(7SJ)q~mrdOXHoZX-yY;5&f4)9&p(YB!zI!1SS>G
64202 z2TP7KB$7w-W5sU!0jbjV4-p$C0pre(Fh3X2tncbwh(|?mTu$)nbH^8dZlP3kY(bra
64205 z;Qta=5P~4@g%wcelY5#Bh!eR4a(c4l2@3du5jQy^u2K=PLT)a~)-<`~k0!&}eli&@
64207 z9D(Ibz?38RrHbk|SV!#76&a-xk^-24KN<E)wTKx8F|XGwl=KRXftSHHh1J{LR+!h?
64209 zCNV}i3tqnhU=27}RI&h{B)`xppK$-Z_yod|!=4$yCuOue&L@yf4xJ+yw^+r~4wt9Y
64210 z$dyR*mX0@DaC};UJW{Yr^OjwQun|^RWTqgCWa}=W3W22*8iL5iJOX3f---StQUu=1
64211 z+xr|1Y;K4cpFvLyI0edZAc+(Gh9w-3IfPTLzwRKXgutH&J7K3*fip=q?CKb&z%7q6
64212 zN*vr7bd^mA78v$EvEB@eYTKQe4(SY+<8nGBQt$ewi>0D#irONKdKdGH<-3cTwbR;O
64214 zVQ^*tvKTWn?IkEx%GyL7{f!4kQgMj?uG3n@h6ujNNgG8V4Fub_L$dq-vG*RpvYmN-
64215 z;5nyH>XUQoa5|mSId|W_`S#7>-4~@N=}LMEPhljDn4pOWEJPT>zzj2hfg#wYfHgQQ
64217 zbNKyx$MB@1YA&`QQe%NKNYt#-WRBqb(Npkuzcgm8aK|MqbbV<KS1c_I30%s=A+Rox
64219 zD?hG4+rWWKG=Szp3&Aa>=AMD;J<q~7n(?zIkh?fB1#ve*CpPvn-291)SK~mJal!#>
64228 zA-MAq@_{$FIiwv7Arlz+Vv>STsxu-?6Bwln-*G-=QLm#&eN-QH+kPRR%cKk~ymf|J
64230 z2&4Ek&#I%eR&&dD^NO+4D{N&{F4%K`c2DbnmMhvVC25PmBB2pYz768>&g8(K$boyI
64233 zTfoZHao{z~?OeWe<1$5JIIHV&&5}#DKt|%4rzNOX-7-_`3PKCKtDZ4^HJ?ew<kdAT
64234 z-tbbX=`6j2eiA7Ge`zr8QUN9|h}0*YWEl2!vDODTPIuGuytdb_4NGlu`g0ffEXHQ#
64236 z)ISG|1r%(-o6!3G=m!B`9gg<`KZlO?U1K07#NXo1YgOi%33l_e<K@0qEw};E(W|#B
64237 zqUS7_HmEXzX*+$)5L-OmbJq_HV2a}A4LGeT?_X`@CU@{7=<g#9WCh|GuxKLc+9AUZ
64239 za#_ksb?|+oLT3PPC~K6HGHo6lSXG%!@@N^DK*to-5jb8gWA+_ZWAZEcoB32}zYSC)
64240 z-zE|$Dpab9o8u`4EkK(n&}ljEM|bvj(O2QllJTAb?kvrMJ1f79JDW&2Ok$IZ$GwlC
64241 z3s)e+o3jeqYQ=0Ad?~eP?woYaryHYEMyX3Q!?t*`?-@N?$Oukx!5vM}wyUdr&J`&d
64244 zg>BbUn`<4uq-R}4HA=df6Un5Uml%a%+`c>5lhR#tbs6s121I!o{UHz*JvrvG838ab
64245 z9&^-9=(b@Ypl+~uEH;i7y%LV2orB;OQN%J8iJ>7{(6rMaN;n5);^^F=LtqMtT6=eI
64248 zuJYi`Z6Ocq-bKk<FN<Z9RT;6~Rs~9B>3rqcs+8jDHJuN7s2bv+aCqwmW2yy3WNUd(
64249 zqv1Lb$K@C~CvmE|m1a~ron{Gc!rv|Q&w+ObX<-3cuwQ&y43I&oQk$bi;M85z1~6gk
64250 zMV_vo7K(1Z{on)Rpo+kkWN&S!3yzW*7kIo>Sb1e7-PU>sun*T!HG^CBj&25(0|gbh
64251 zdOlZA;8G>U2^)rY;wf1!YatOozl#1+$j@$82K-EXvG_Ud0A0ey`FWzeFJNg?z-oC1
64252 z-`fQ&?WF-rrv~|s*E)8U>W4nLQtH#ZlKa3;#L`ANmGNsnd-JP~BmMh%3<ug{ZM<AD
64255 z2=dq9e1CH9w=fqgg7X0$ESt0QO-6j*0S^Y7ETju*u=EyWFEFsYW;qXyIWJwW-rSy0
64258 zdEmkD@|nB|m5!iOPPuHsyEoqbfNNl!kYs>LEg#*u8D2Rnf-A2RIIkNLD;0$FxFWL1
64260 zGCqPLB!QCW-Zu85F_W;X{M@@I-Q{N?4p|9KO*^ps!X{zBI`LMc;o%9M(sblxzWYEn
64262 ziY%*Fh7~i+Rs8n7&trA;Cy^|Oeg3B_KQ4ug1Ac4*oDPr_L!L&-Y4Qv%?8;Jr)Zn1O
64263 z_<Zm_WZ_-V2o&JEV3KO~E)*5725+54v!&Ua;4E@5p*{OXa*}jA8=E;74qv<NTpOAP
64265 zRj#%4EK7+TI6DqEPm|5DcJst{yvLrnl}b6^lXr7z*{KYy5<lrPfc*J$!5sd-4%v=P
64266 z2VM4-9PsAs(O-4GEau$|?2Qq5;8K>+a-1*k%a(8jVs7<X>+~pP0-hYySk?kO$)#J*
64270 z-;#@#&u0Iv#BPkpJm5Ml1MFPW?X)EwH`e>t3n-r3z|u9ltQAMufhKDTmy)EMn9XI;
64271 zqU@T!m-5w|j8itpXDjNcjRn#;;kVb(3Q|Y@-IX6#A-`n<4s*1S-=>cOepBC!-<-F^
64273 z!*DVSG@@Zm72;Ax*W}vc1u4Tap3F8}e;~;Mm1L4Ts9N{%pVG#PY@1BZ)F-q(MO~zV
64275 znvkOH=Nz-zEh&u3G+RbV<N-zf!k+6&keo{0BcMDpRGKfFA?5_c4eO(S3g|gPUVUQ;
64276 z4M%sKV4O2R>nBn2W0OrXa0wkONyobzrf&*Ib>UoZf;fwPBAD1E;4o4!u-k1{N3~HQ
64278 zc>Q|KX<R9)Io5&-?%=>_aMy|(yG}7vI6YVqs||*i^I3T*t^awo;%ipj*Gp1zN}n87
64279 z4v?h3YRs&`(sks-eTj$!fwz|it@ZYL&`PZWp#yGSa#85Q=9vXT&6<tSMN$=0TGMDe
64281 zNZAZXcI9A2@;WR>C$F5bG9|NUEudP%3#c~17XAd_sk1Q$H<%SvE&(@fhOUP(L-m*k
64282 zUrfbcxDbA^f>ez5dHBVkIky}D7U+65F&WqhCf52-w}q_06}84w4o#{SX9~*)$F8YB
64289 zEawt|TD1~@?Gy0)dKSdnlNhhYF+y2xzx$bjb#il0rZG;|8A{BaJ)W;(_8^--s+AvI
64290 zF^jA$>iq_q6jc!Hxp|ACaYhqyg7>fb)#H?%p5FV<qd$-M$PnE7;7fb&l``C0SRPh}
64291 z&^`u|;-h|Y!8Tr`{DO-<cj=*-bfDH-0uti;@XlK=0~?`QPU%jONAH3gFK4`ydT1a*
64292 zg9$HuV|OAQfraQU>AwiBTd|9+iA;oh3O@?2Yz<SwwtA+9(pVc!(y-kLK1hTQqE4qK
64295 zU(^F%bnpd!(NvbWK$cSD!`T;+IPuyS{7un5YZn^oUZ>TlmLW<-%7!@10o2+Wy2f9y
64296 zzcJ=0!#M2%DCTp!94S$fY~ao@I=kj5YN5&ND8_4o7{Jk2?2O$WrFG-{Qb&jvxQjZg
64297 zC`Kk&ODq(4BV~-E<&M)j5c*r_XMjyR`J88ni5WVw9F>3(?CAtLS%f_)3uA#{4qid9
64298 z$S}8&cFOi}%3J^`owLm*&{1Z50{|6tAvGWL{B4WoN%eu6(-vt`vp5}7A9$w5>I|yY
64299 zG_|7E&&pR}Stq3#Jz&!ajAKZFViaJkfwhuJ5L<FuSyO$jxubef4d6Ajhm0^bY(-^!
64300 zAeZ%tT!IIQ`d_?U!XMI_iq@h$LW06i{da-<!UeJm#1Rg$x*5l|pvNQ!i)%*cXeN-e
64301 z7IiZwj^@SE7-StFh_gO&wW^_7lBO9Oj;!Syf)1EN2coEHqF8oZ6N;jqBzS49-;{-v
64302 zgQAiqcxjtqcAz9CXdsCB02O_k<0xU^Sg~2Q-$y#gmCyOAkeE%f$uoChw(xh+Q%FRf
64303 z0uRA2!{I_a)=x6p#78ZxT%N=Yx-mfpnjm{&!L-!7j&p;-&g0v~8~Zwq^E9n6I%eD*
64304 zs3nQhlPIYPrI$ZEJo?~M!K_q@v-92kE+Hxm!xbb^lM=L%1aU7=7aSq8+1ro${gFPw
64308 z%)X4miPzuJx6OnzkWC+!Z%jj16*)pwkA!m$%{MNYGdt-oiYEMLhU_b8hPq_~(F9g9
64309 z0gYtYWE7gOM51XxgkRR=Q@se{H<C-70&?kk6se`5U}iKa%^DgqsncP7^l4-T`SOrC
64310 zxmw-^mQn&yY0%J~2hv)zfhB~`Bql6u1ySqQ&%tjXq0WPSzYxau_3$n5KjX-Jz~c`q
64311 z?IobYOpS<zh|%;_D-ku1gf&;a2SgbdRy{VS76A2e-A7OSP9rO%Sf;;!k|SA?CUi;Q
64312 zlLE7Mx1V-6I$^IJHjS$C(37<!oetpo)OO$E!Fvb>$C)IFCY6Sz15U;{4iKB5h<Yz0
64314 zPH5op*Wa<tJ^Vty>73C$iha`;%MBj(yX|JJGIN6!iNujHI_BqkUgzd_L-Fp<{NVGB
64315 za3tYnUVH5C?v=JuskSCaJP>mwSWMD_&aj{gqMqecNh||zxV4hfjU-K54&K_ST>W8_
64316 z;cBj&SGA@oCm9xc#NfD`C77-ddBl{aVrgH_6(@E1KSED{E&gc8cYHwwHcjEM0Esdc
64317 zK2A&?pM`I-!g>d^+$eSiUFHa*GDK+(HqPP^h-G39#4-r*fwN-C0yNyyf_A)9ENJkH
64318 zjQ1j@WzZ<5lv2uCwQ{?~y?n%&EKP_>Qs))IxAv~=n&2m)>7&-*p+bGfQCd7*tSekb
64319 zRq_HZpbYCtoGTJIPzn@=W8JQ-76c_<%}!@86OW?rMb@XXT?Mk;n#eYIkZAoilx_E~
64328 zo}X>DmG;Y<eJ^bm#=y3sCx<t#*B$>#6()JxG|}2vlU-N>+1z!4BrhxjnsVJw@jqX!
64330 zOmxB9kk5A{+`Yea(S(8-$Ylw3UP9|9OF_YYx@d1Yy6{%Sa%K=l&0#iOzL`%OBF}9&
64332 za5uyE`x*2K(m-y$0gU+E-aFudCeC3aO`pD~0_7DIDTD(dVz5;)e?A;y2*zokvpO6^
64333 z8VGo&5Vh*-zq$Qrtus<sjj8%5D&bmD%FuK>o5}4K_MUwPqE+?eQMEk)&g-a#vm`1c
64334 zard-E<c7u#C(}0@jvebY<d6}xRUY8a+FvVM^;c*2WV2o^mkQZ5i1vVY6Z8g+(9t<t
64335 z6_q^ti<z7Y5;;+UHn*M*`-EVK2hCN2*EqRs2G%NTHAi_})1qpvCnsC5KC5W3VQ4qZ
64336 z<rtFd0du8q!M-8Zo%IcU6vco&y**}%fNv`QKjNFed^H$cdT{3+Oy9-y;Jkw}TGWGY
64338 z`30npUOlfT>I-)4GU_MAB)q#ym?b`ccW?5!7WiCu_BkSfzV_BW2&H^9ci#w#V>pVv
64341 z;jcwQdT@;tOuj(C9So1gDZufPu&<Gvd1Uv2i3yXeB-!Mx`dUFPJ2;Kw(Fkrngo>%=
64342 zGWDth{6kvkB&qJf)lxM-H<Xt%GIniP!6}>vY6A9*U_XQL;4CZ1>z^G7G5l9=f(<vp
64343 zBAPCcn;*%pExr%jI<VvC-W?8RHybE2>^D}LE2U!CVis;pi!F}pO%@HzcWj5@J2dP9
64344 zHU}YB%ha{?QbDri9H-T^?XTG_mEqdB`YUVs&6LW6Pgq*Di|#efPFr<n^se=!1aVSY
64346 zLZKM-;>7=kCr=<`G`mPoW*2MsdEaz;k&dPpjb;Oh=mh@GdJ)Kk$IL-&+=oVC8GnvO
64347 zupP~*XF94a78$c?ZoW45=7=O^DtS4N-h$|Q5shGbTDiPsiMYFBAD#gsogS@-r4Arc
64349 zmJyU+r%MSJ7nokKm?bK?#wiEOuUbECv`p0&a=et44!-56SaI7OrS{7DcvWQy4uo!7
64350 z=%aPOT{Wlw{I&#F>I#Zb$=Xsvuc!}vnU^YF1N>F&6gfgFTjigDD+x98@DV(|(-G!~
64351 zzU#9qe`z}%VfW`~*jj6^O?KLZaC33dyp(uxAinck9ZN-1PBA4`_0^q^?M=5j=GQYi
64353 z?|%-(`p%DhOJBBST*A2`_3RJb^!;32u9&U&_Lke44YW90Dt!+9=W__wwVeWMXau8S
64354 zANz!tD%=>`b;T<ij0ysO?Wq`g^$b%KqSt@x8yZSZ>;Hc-Wb5}(WNoFl)!%H?Ahc)@
64356 zKf8!4T4o$cP{bt1aJgms`U6v3QHEy}iXNoqQAKC{>}6yLdG(Fqm$p~2T7g-+%2IV{
64357 z+Rq-ryu4XI`+eHk57QU6vp;(y)6+Qg*DmX3-$}*0*_X6oaiN)g*2@m(cV2yC^-D_|
64360 zw<fQEx48O6{oX5?G|Uq%HhUW_|B-Cwe7CooaifgUe5?1Y&$|Zn_^WR$e`)!oQAd$}
64363 zFKizmOtg1e<$k4KD!3U{=GjT2{ro<_3oQR->i~rU^}-KcuN2Egr3`F-f3s-Y#C?_l
64365 zfX{sW`B`utMFzdR3uOkMx`?BoStv0-_72ZHJ@RZ<9Mu54zlT!<2$P8<MW<AamOx;I
64366 zVyZN{JKS~Bsaq@EcjYUO-Ru`qqoqQAC0{qNXN2<p^1<0k)lBVHDd(Hs%UeSGZf|Gr
64369 zTGc3ypc97Ndu~(loch_}op$@l>+M{oTx_-|5RzqFLa*uNXC8VnSE*;6y$Yq=Ir)~s
64370 zi%WYqgq-8Q@VwV~H<qb2Rnah<E!vLavZcf@*z$D-(Jm8cHkc!WYmO%*fXs~sAu9$>
64371 z8TDP;v!|!6*Lc)=Ex`B`#-@dwM_kZ+Jx7Iz1~5q<EJT|T0q6?Z<FmV-T#yqa<S~p+
64372 zP@b(bGC^b-PweEo<?@3Me&|DA*LnJS$Jd5kCzW6gQOej9<@9a2?r3f2xsR%i7lxGg
64375 zvMLCXc$z9UUZ^y3<#O|bU$fi2dFwg!`_@~ZDu{z8fxj;~8NPh2EI)j(`-oc`6<4;Y
64376 z;t%|dFMn}7_H+K7X8*7yGBQhkyJ75&Wd14S-o1Ojb??uxpG|xKBZ-#+y%0S{mXTfL
64377 z$+6(0z#70-!P7hncWjmbX>=q)9SmCvV>?4<&(AszV>tLb<64Dfk`%04k(0svfIJg`
64378 zh>$ultubSl2sXnD-U4eoWQ})t+p)mEX^r!4?Fx`u4BVj&{t`<x7=fk>)feimY}>v*
64379 zXnpXozuWZDrcsv9ZgmGw!r^^|wlNF?F#-{i?b_YVUN*CyrwTvtH@@=u_1$uIeCVHK
64381 zW+#ro?k9E=6Elsr!g?x|1iBK(C|v026i*}*ioEpfYCXSKcwuk+RF2WiA9DA+)h(-#
64382 z@~-CH7B4h94c^+Siq%5teGm0^rS<ny>YbDCX+1sMJ?)rJ9eZ0TyPZkq?0+TaB|GN`
64383 zqE)GQfJdUU0#D(^2^L<kBYqV*Myg}K5S%@I(W>-=y|Ra_qO174D>YS*bM_&=B_1xi
64384 znr=)S#ka(pRaMJ!TrHgp7pCJ(a&b|-VhXj4uzYa1Dt=2o$w+@%JS?7Nvawz9qD9jp
64389 z5{$CXy@&-X5kv^JYiI&DsS88m2810>R^^1{Ah?k;@Zn>9i$<rEYV}Lkgw^4LM>Hvj
64390 zvLq2$GK-qN^r<3Bq_oTxKi!gSqF$6ZMddRxL2`_gNx3Z09tkXwqokTy*fV8|=0l$N
64391 z>3e^UzL@9-@h$MHvar1gVgaC&rABYhuY$$|9t{uc0z+!)yjcya0dZ48PF@Z4Bt>#r
64394 za5J+E%mM5+pP>#%bxb3OG@!LW7G8z5D~AZYZTM;skU*mX-EA}h`&x;}6-N`;G-N@h
64398 zSlD(!#6=}@1YI{Pww94~t#q^Obb+CjNs-Bqb1Q~nF)WoB;H!2oPjO<_)mMu81b_cy
64400 zbFGqL6;^tE&u<l1%Q!<~0!_GA+OXH-raBzv^r-jv7w-Kp=u_yYK^)m0H?q3M;;@e;
64402 zV&E1|-&<7WHVxt+sb*CltKhN<2<j)7$H5ZER7>kUwdP7;k16aC^U*&+3c(h~?eV7Y
64403 zc6L0ktu*WDRM7BOKnqm-1Q)J&4*rOlB`RE|GJVt#3{~x>D-XX^D8OC4*08pG%RB3p
64404 z-K<O*KOknslX2R}nRe|)Ze$&8dUDy!wrR4N$!r+!`>(++QT5=8Q<SJAs-+#5FZ>>G
64405 zz{(G$S;w-UJH=Vb+_oH<KSQGZ=wtMEK|Blh(7b0X?`>gtqLPHw)>8w*Dut})0P#tD
64408 zS?Co3_a#%0!;#dSX0N!L8AfM-RdP2lv7p;UR`0vDO<76O<L)miuHpHqveGZunkra4
64409 z!4gf6Lni%p=#Qb_0esp1xC8t+tgLGs4vqF@d~O-CICExwf1257VL>ogUW#S}CZ=}U
64411 z`!P;2SZY{M@`}H%v3%54JUheR2E4yI#WL(C-v*W;@KK3)C*8%6qQ(N4VeDMqhAXlq
64413 zr^Q^F^BaQQaq9V^JUM32LyqC-y&xyL5BHW!!NQxjvA2A8dufn!H3gW42>E_?;z*G$
64417 zZtw+5wqm`Nsd~?<HuRK~0ou^6I(bbt3L6GZMXi+b?$tdtC$k-V)#>F_$uIB*Gwq;^
64418 z-}f@I_XXYe&Un~=C-)s!?Q{1nvV4}i{Js;;hL>)pjEtG8KOettv7(zz@oQfF@^10c
64422 z(2q?+332|p4@U#pNh+Rs2oD))xfn1)Y$iKo1il5r-HNe%cSR~F+9227R%lYSIUN&s
64423 zD(+UA)stAgHGZm4U0+7?PDhaxyUeB}j3$$EGN}Y8Mj}lz!0*SnN^AV6lPd|+-rz(R
64424 z{X96=mCqGbJ~7*-{dVWgZ4)?!(eY-h;}ZcaO%(l2FdxF@$H6S$3%_#HJ-xnbq;@u&
64425 zM3ORjj?yvp)-!cZOJd38TX&kH2ltBypEen8ttk&z2NKSSJdxCf0wX0txCe}*+uKL^
64428 z<*(Aqa&Oh~fq%yJU@s6!TzmDa2067<)1my@Nrq^?E|1-c$vIiEp3ytS1Wkyws%Xnx
64432 z;`_?vQ?QqWPEaph@|kqd?MmRlAifgp4SC;N{2=UhUAp*#2$c-hUS0Tc1oFaY_CXv=
64433 zy!Mtq8T7g;;E5j6D-=sbIWN~dmU3sn_ECl>&Hxv6xRN2J{i=?USb|81q-h4|AP|Cp
64435 z5{Z+y1~D0;cBUQZK7|!^dOj?USUa{uxjgGX2zc34<ffrj^_(X0T*h}8-EKIU#tX8d
64441 z`P{}g1RH4k-FCH@ZrC_WB>31kj*(Bcn&2G&?%u=5Pa>Z}Y-H~zbr7T<hc~KD04^d>
64442 zi|`!Q?AZmti#N1VIRPxH8T>*R?nQ+uJ^1b5=f033h*Vh>?NO&YN=O)1{ZU+XxpGq#
64450 zMF{shOAs#)35KG^j}W=8RQKyuwG%-82EYH?(C-D3>mj>i)>WZgMhpf|Ab?*BW%R`f
64454 ziBF9-kzYn~vD^pqMa_ML#v6F0IW!j=O$nqm%6(Ar62fE(I;$ng3{BKijwhuV*(h#l
64455 zsx+B+mMFYUtd@%fnvrX{tUTrCe~A1Fl81E@;V-Ffl1W+M9@ykurD*DfpR1XK!(*B@
64456 z%CBw}tR$VI$huKU=_%Pz-Q#T?hyq=+ou1<ABt9V4tZsqgM5U68WB}gZ9rP6tEq*YB
64458 z@dmlI9cuZ(E@QAXq3IM&D+Hs`*1?rs0~M>O-D_1|ZE7sIXH#3*wA)2INui8T_XtWL
64459 zQ6ecMscc&+ceA`Y^kOvl4opHu$m)1hx28Lz-Xv{XDx@7vnXF%#oCI!Pxoo2scz$m8
64460 zQ9}^<+8`yAGpSlbYBaQ(McLVKqnDZHlS0ZF2)vtHIV%qLZAEU=tZi-YI)qctrZ(0(
64461 z!fdIRD-jgI8hVYXcMN}=uAfvhN-(qkt0;y3E>c7~(1WI?`|4n33Whboc5T3uuaOt=
64463 zS-3FS6qI2HD7%fFbaK5=c%b0q_oD4|fOW1t&nHng*vL+&WSEtT*P1+}kBr}Tt!Z<;
64464 z(~4?M9_qb$ttniXbKhc<B5A|yxnh%1mL#5LdG-h8oOHaAHZrEun5#DtW!v4g7wb)I
64465 zS`-xl#L)joQcjj1a#%;Vp1Tn*IR!NMRrH529%&()$O+s<aeN5)*QchtD6}`-MKRt&
64466 zk*$;Q$!J(Az$8|D{_o97Ng-v_iNhM-MiCU1D5K4qe%HQYI!T>D8%eTP>28TxE3N6}
64467 z;_Ys}rAir@mj0=0T181NSvfBMn-a_ML!WjZ2Mp2L+)bPN?pB)7VXoEPK*PF{(aTk~
64468 zWQ9(q8;05dQ3{$<vxc3Qfq$HqiKNYQiYPn6YLg4-1bwkTL4OnYk^{gie?QFKNLw3#
64469 zP6fbV*r_65iIY_D6dr%-EOgiGu-gv0G-o7^#hcE;?@9-6fG>r9&+JVBAW>M>3w?fA
64470 z+`|wY3nQGUIqht$FAY&-I9?jJ8oBIj8G8f=*pCWai(5e^_b@sStP|Y;#07LUu|pfM
64475 zM#KxL^-T$oe|hvzW!JKEGN67|<WoFnN`l3w2PPNge`WO7fN$6Z8sYt8ZG9C2`UCx!
64477 zhK`rYnW|E!g$JI_X6%e=_@##jU;Sy|0z)>{xbkmHEYA-;+HGyY(9v@G-bP0z^J}PE
64480 z%6ReZ=J(UFi_8|*?BQ4B%4}9oK{0IvJhmz3%#5m43b)#PS}<;=ZL0veENlIjq-yBL
64481 zbnfwFTj8C$JBFVEzcsswO*E=o-IUcNos>xCE2b=#lDUix9L&^83-TANnY;(f2KMF(
64483 z?3Wiv7o%J-p`Jh&?b5W_0kB$GP&YsE$=6zdF)W)fc%U00;Ft(mj?HKX&vd@_`~F9a
64484 zN;{#PI(+Fr(5fx8Tsqepn=G4ZETuSI%Q$-(!sG#WWVb@pF<_c%TVj$?G8=;&ipW_j
64486 z^;HyEJz78Nb-dzi<^25e@esUik&=_;<MT2L3F%MtUAT=rceT3lk?L}$ra(&G>Kz%X
64489 zMzE;uGYFAaMx&jTonEJyp8-Xm>z_GC3+j>v8Vc^qPB-nfId+0N-|&kM_0(>S6}~-f
64491 z$lk&pU@^c0SVazyz47+`E)Z-l@B!b-F0wTgSv%M`81#zy3I2mwn0gyaGq2+!-9#;V
64493 z6mh<x$Y?rlJBMZzH+1_HS7JbHsR$;w+~&f*jGshrA^!%@r8@S@-ZZ~+VY;MJuf(!A
64494 zWq-22H#qMsnG+_YqFfG@rAUFbyv=I{$&;GUTGh0Yo4ei5^`sn3=A6Q0j+SNgMq1z!
64496 zily2mOM)(F1e6QX(tG#ilFC&xm8C*oaWaQXnLG8JG-kZ(+WNa;kJsK<DyRvblXX8i
64499 zs|Urjx3|{XmK?2J&ym{6P$~<%*Z26wqy6-@M;WjaeYLmlw2aK@)jXdrIjo^hukt@}
64501 zGD_|xWY9-T3ZR10={>x3n)Zg-i>Q#zSQG<$doLryw4d)2z^YB~gMA$s`kuy5@Ppyw
64502 z#N_c82S2#zrX5v6R?rn<+E+6H3&-a1gQxkWX)<QoGzElM)i=&I^qNjC-|h#gCb&|Y
64503 zRuimBTl-h`4AiMu<3{(yQJX<49gu0W+!zm?q>@Z96w1iU5}g!)NrrI3y}Vk`bYEnP
64504 zMyy{D+Wvb95B<MDoCK#>KJtbMp^+k)FCjRIl5pcFh7crd#z-I}o*+ZhKb@VeUjDYJ
64506 zE2p`Y?OYLs9Ub<dwtOpp+NhTgUaeYL^ts)$reoT0j3xJ6rfc-qth`>;nGwqHtbx)=
64508 ztH7`S)}ZJA4Lz8uOMyROZs;r=1OQ$-(3I06<9u|P1_5INIAO2P6(VE4>$#T~{jDI8
64510 zO9)A~)L2zAOhyxRMp>%!G%c8{=dqSO-D&fS=m5zh-yG6G4yJ2U;7?%xXLNv6Ko*z3
64512 z@+Rje*m|LN8yca3Q0r}jQ;T&~GB}d+i-W<m-u6@I4Wxv;`WJW2S>SU7*ghq+M8?5s
64513 zre~Z6B)&fx3CL%cinZ0e<0s{m)5&QPYxBG*T4FNQ^fD<g=dOCGme-&qL1(14#;Y8i
64516 zB-ch<uFc5NosP`TNCBg$6rdA`HSq)<o2s2sB6sf93ki{T9b1kOVlIdZEVUWQwI7@3
64518 zUD>rYbz)mnC{QfO_fBLx5y>__lWluCwFEr<vv6i9pv=u^OKuKM%A(-rr*FikZ;XbU
64519 zJec<ZLFMa!Du72`o11lt%{Ya1I=G6RneR~!DAHdL^?)X^9_5-NHoHcGV~rNjcDlq^
64521 zg}GwhIjY2Y1rtkYHpSa(t44z50-|Ul&=8cuNx%*)yJAXJT0FB`0m?En@{)qi%0NlT
64524 zs**_&bh6OWrWmFennFC}{ckeYXHBm2++^RI-}LMTWswbPMDa1UK+xl}d(#Vq1=&`~
64528 z>X=Q1agd6AVbC7kwwr-^B?j$rzO`+N?GZRq3&<XV!xMBO0dzqwqf>A@7pe<u&yIGT
64531 z#$%@~3ph+`FCA8&eb<v-p)Qh1a5pONUQgZqx~oE(PbNgZaCdw3Y}HFLG@)u{rJk*6
64537 zq)~9(yIYl;`%Pdp$ON9wq^^|xSHB-3c&KXc>WVsUWj1ovtEJM7TJ6C~WhAW-;I!2z
64538 zmWoH)T~_pWH*bBk-`Ur+S~}{j|6cqy(nj>LVxfS$!z>4E^uS`h<RQ*LbaNN|aM%?=
64540 z{H@;Z#-rc8mF{M2BZ`f%KgNF^+zH^%rNEDL=K1q&x1SDrtp?yva9uM1o~cV1ljBR7
64546 zH<VOKkeiMZ`ZI}J`0oJw@#q^nc|L%@VnUM-6+!}wyEGTj?gFxflo@ZXE<-zW4*Fy?
64547 zn3Kaf#R*f4=eRQxPuX+~xo!>zLIKBs3?>MTHyUPU<$FE=JH<m0^-ukRuhIlVpeU)=
64548 zJ*aZ`*D%f<w7sebSF1E_tt^#1-mPGrlLt;re=ol@Or?h(e^;ne3za8E`MpxEoXMxQ
64549 zKIHECg~Rm{<l%Qet-GbHRdoVC@R56`$Qkls#D+RYis>91wc|Qx?u@}XJ_F)6MUYZL
64550 zBdb}-Ow!PtR<+5IKPfUYm$y<DmzLQ=foNYz`Kna3xIk_mxVMkJivJRFjNBRv+t5Wu
64551 zVTCC_#npH_><jN_bA5RUIYy81nd2PdvCItG<mca?fy>hy`dcEUDqOZ#w&BPPxFk-K
64553 zAN}&j8;$Fg@|EJ@v5*OG=&50DujEx_K5Mo={nRGlX>dP7#WFWnR5fpMQ7-OZpbk<%
64556 zm|2SEO5#&8Ne)iP3@e;rr;1{_^<2uV4ho8#a)ZGbQ$h`82L%cS|0!*|R5I+y&-^ga
64557 zK(0eS^Q8V}e&*r+_7?CnucO!R>t~*KCMH^7Q4N&+;U&IiLtp`QXq-@as5Ng@s<+C^
64558 zG+_geDtme~AW4pZJ2&e-^f!;PsmuILpcppthtFmFgIxVa**`5756dgzAc?cLzr=D4
64559 zzwybJat9ke<hIS>6Oq#y(q@zRC~_6j=D3og-;6fnO<6#$qE|!OgylU`i_RORwrAo8
64561 zwdK-CuXv0slTxc`sn84G@IUa)-@!H;XWmH>PZ)Hg3mj2P(+0OTGHdSs*EB!;MEjN9
64567 zGi8*-Tss@;MeGOhKSBD)>Q4auH@z2d&Zn^n;-iefD><7yiNF#U10MB}zL$tMT3r$j
64569 z@dMs`8Jtf~IU2pxEIhn)^vsRM(KxEVV805^)&*y?-|pGENO$pUQ$J<lT(f%&hKsUk
64570 z5>`AhEL$qvIsKat%nqem0-gYYe*zeMr|hf;9b;yNE$zPl;k9o$1&sF%$CD#H)>Jd)
64571 zqIKiWqlK-9%E!%2W>QN@p!k19dSA$ydPr~XOp#7mIMsw9<M#!zD6NhzIgFm5uwo8K
64572 z(|0~FiGzSF6+z&JK?Fe@SKO5M42%Xio^fRV=D%P4#L>y^{jWb+nF&-;REl!XZ#>-S
64573 zz5j*s(h@SMnIsSb?s*-|>j(t>*i=U_(}y3PD2EQ(NzCu6UK%b9E;`kW2@_Z`Kg<q0
64576 zMj<AuE^-;m*nQ@3X{V@A(7ruA1}r9<bb?GINC<_f(IU(Bd0tAYHM922sQqNWcv#9T
64577 zrBmCFZg$oRDuoB;4Dgzq)~QM=clBgdxPIt%oBc`d<adZ`$To~kH-p@X`wnv_Yb(Qk
64581 z!b4B{W~F-Di}X+V3J8T1K#gSJ`~c(VwJegWjG-3#M&Tnb9zJutnXlidfM~I_Uk=zC
64584 zgJ-X7LML$eZBIra2VC>FU(WBA@*pluXK(fG)!gpOTl2XMsLya9Kbv3l+~X#?85_3j
64585 z&D6)z438=1A1>q<pcc&Mm$FZY1O-Duic>&bR?Y1^_@P^&<Xk%`my;xgN6Cen>bGr@
64587 zpT)1?e}Ei8xe57YrcYD^4bJ&oRJWS-mEDJ3V9-k9$Ps!(M2O-Mws4$V;s8|_g%T6M
64588 zu>c2U@Y?I|DK&IG3HgN!(k_+8sM^d&rs4Fo-~k~@5Wv(;5(=%pNu&<CqxUSmZ^vXf
64589 z*==V_-QJHJJ%7CJHiFQ>Z+p!m!8Z#)+wL6ZfMQ8YRlE72<HEsu2_|3~+ir8@WE>vG
64591 zk{n4etO&`q{CB=gObJQSPU@_C+P-!Y=p38^ml{R)^`1p2SKC{kN>DtbI4o;Cu;qO4
64592 z?COih%V{WM-+DJ3*oV`fN9CQvKn<I##lo%j4wSH_T3K~E*X%+H^3)&R`*ZB~2?W_g
64593 zJ_>0CWh@uaiVcQ0U`u5pXo$ZW;^g31ya@mHg>cGtKnnNJJz}xwzH}}xZpL-?xhNJ=
64594 zlVP-q>3}#KcqPD#Vl^q!-4FUO=Ste?N@`rno*oZKf+vV5c&%%#|Bt=*0JH2U&xET^
64595 z&N<$kbL!jScAUPQCiY~FG&7n}4vauTfnX$Ah#-tv2?GWR3u9vp4nzSW!#XVX8n7Q5
64596 z=LKW$dcoM(>t~(tZ-b}*s&mf0eLKu(Bw_FWKZ|BG-RGV<=hmrH^?vUc>iZIw%OuVc
64597 zrkO70CjHe`cD=rI)5$WDWmsL^UkV2@SBcGJ{57Pq3ax7O;d9NCA&&d{ROZ;e$S-i5
64598 zo&-}!H%mNwzrYln8u1H+Pk%Wzen2k+x4_r~58qQBD?^Hi7mdX>)_9N_fa%Oli?!n`
64601 zg$(u}1S%aJTY6Qb<{-{2P@1StmCE<Lgb)-taloj1-IE_!eB0iE3jw{xV|TXBHm!Kf
64602 zmiN#8%*?rb`$#rdH3zu5LR|+IF|N*pu_(_ESFxBuZ*~zbZo}1q#=V;q-VIfQcRc>X
64605 z3;)Py481Ftb*>D}*M<4~-IgfhqKKrR$*E)U+uv}+wYX6q3rm^U`4<?ih4fUrSk|SY
64608 zS<5VD6j$US&kHHTU#X_MR<`DGEY78d1q&kgxt5}-gt<63HJd8Sa?ud-S+;w~Ocl(x
64610 z%wtS`jLssNy!Yun&vndZdgEhQ25<9$Oiql--+{>3m8xtTDL;V*YGsC`8I~N{JE!iP
64612 z?8>~M<&ucdb*^46;juAP??7?)vDuHtW-<L7#|CSLn8-cT*hGUvT}qf<er%9b?FECQ
64614 z*)&Ea4M~Lia(988p-*ucE>pX>kwWgaQybcj!~<_Orz|%bB+`b$5t%x5U|%h;dPoU9
64615 zvA2TVWtiR?v{f%-*lACBq?$7es$sM_%1pj!Vq)?B$5Y{0OdRPi76Yq}n$nYt`M^z<
64616 z$R)1()y9c_X%->R*s*pdZ#QE&BQxCi{f*BPJ!%T+x?bO&tHlUv({#E37lx+OT_Ov1
64617 zv*F;sVdS101h)2WW?2E@0U-|J3(f{)VynfMq$s@APZ1446f{N^-IWrTu;Zmx`NoIR
64619 znd%o<*WW~f!PbBgC5{?Uipx2P!`&D7(Hl*Nwrxr#A;~a-o2}|sTMMWA*z<w)xm-~Y
64620 z@MMqlxqQ=SSX=-$shjRf!YViT)|gzViTB=m_T{JRNNaJ+)!xx*OslY7mo2GkCeg+Y
64623 z+MYGMeJ8Fu7{lh;O#VotvNx{9g{+l)&8>*H22l?2s@1-FYPc7G_yYCwU;=ZrvA|~J
64625 zYn9`NN{`<?6A-cMG2N)x<F9;m`P7JUXebwa8nGpC=ILI7`1hn>yJF(*ma<I(mY*-A
64628 z6q($F!Ff1OY&zh#dXRd1=*@>h4`FRVLIm!FB#Z5gqA-L=XEXYq*0tv|c~dsBDa<Kv
64629 z>Q|1fwrHNGNgQ8F$&!?^-KriSJL|@r)wY$)C!Sh;Y%PDJe$|O&T9fo_iuP73*H7j4
64630 zFOP{vb7h>9-Bz`IG?SV0<5NkTtSH347f>HU^1s=y&7ft!H^9GLciUmjVpGhQM&dv=
64634 z$bRM>DI`A!tyJEr9I2FV-%~kU4wpO{k`WDKYU1299+0ua)qwOADt2U(`5JW}=wX}8
64635 zWFQB;e|MWqr&X&UMLo)Zv}I}y>BOjQYd2mU7-Bk;GABZUGYn(0Tzl^;r}5&srQf@u
64636 zQR4ML9ZS`%L`~5QI<&nMAhCZuvp-WjcfMRcUMRl}jZ=IXtEku33V!`Z#-l(?Q`0+%
64637 zWBZ1Ao{0BShY=TAeR|4%PP}k@tXaprX$vpBgg5UJ3i>83Tx!}r;zgD-A_xZBIYko`
64638 zIZ)8IGD16b$GA6@zO8=y?1)gf4lNoyL%5ipK08;~H=Ex^219xH1pV-+4<+&M<wF@7
64640 ze)PKaTJ=cr<V(-i7Ad)t#p2*9Bo4fzuf3yoe7U?uNQUvBU!tE3eFXD??I!g+eJHcj
64642 zu9IG)(AF=UermaKH4fJ5E{}JY$NE_BMk6wLC|R6HdB;{)Zrk&MJ)2&Wz-L1ICjAbu
64643 zhR35HU`OJ4a>#|b-Xt22HMq9bXEK-<qhm1={kvmwgie#WgvQVeNehalruxIt5I8nv
64644 zCHJjOiG`ZOv51I6JV|!=PFk^2;zaMJ*WY-gcI?o|pa|ty{^Zelxzel0VrP$~_SXmG
64646 z>Q~&9oUuiTq<P8Kw07Fa8`F1BchCyrwOIUMd-hP><3`pHw)mxP`Qg_s)v?9T%+%cG
64647 zn15vI%&TrXUaK4~S~aWx;Nl{Q#>mg-u9@hcnrZs}sYh-K#wWD<jUDJDXfhZd>^u1!
64648 z{V3uh!Ti}=PtV<Vg69v%44h0md?$lNwLPI;sH^VcXxj9iEZ;v?-=nf3!O0Zw=@YpD
64649 z*6?E5@|VixIj39_@mPhC)`9PYq)Gc!ulK{D`y>{3S6lW>;o<j|*4Nsn%K`4-!P0Af
64654 zWped&x{)_aCSK>9oOe6>{hD4Gi}AdK#!YFphau{wHV9Eqt{E@=;Hz(`R}UA<-9mn>
64657 zR{m^H7_d!P%M{PoSKjs0{p7-_rKJZ#aFh~S@tUjG<IMwN?m(@6<5cI=N)VZPpf}*0
64658 zIA(mAw!vW>GrsnHh#6n*&(98g0Glf7RBu<S?RGA@!+N_VY}}ZhNvH-%vmC{^hTcf%
64659 z1%3LSP>dkn5o?;UBCj}{h^N;89&z9}<+f|JdJs5n7BZPuTFX@z)wOGHxi&X;wo=-c
64660 zwyId5AfemNAtsXS+Uc5XmfhS<>*=-XK<G{yp0zM<1;OJ(zWzgW39Nv%kIyFr^0^T9
64665 z)aKq$L>-Et3)cIBAE3MmpWD{Zb~72rn{&5q4c)pQ@Y4H2^_<R-Bux`cF=nv}O_*Bu
64666 zmg%j#LQ9oyC)gG0kNH+5ar{Jl^+mI+egCbkn<n-g*uE#!O|Sk(?SCCO!>?rjYg`r>
64667 zf`YKl^OxTL+HTZq;r`dMX*aEf{>%l-xy=68baDaB$q%Au{UAAw<iZR3f*$a{GNd*$
64668 z0fu>d02S0G*^z!?$LSr}>vU{>w9O#pJrV<3vTO_zv9U~)-h9_M5cJm$OML{1yYRY9
64669 zP3Fd1<tBO~I&bl@lC^&#HWACMB$SxUtA^JozWA8niiR<h)vdY235-x$%F2}dqN(d%
64671 z4o3kH+vHvp6OFa$<|IR~c+01m%Ul=4K1@gcnA(Yz2F>#n0p(aVHI8-YW<@!+oLoQ)
64673 zJG!7Ui69R_KApMl;1eeY-X(i(&s2dFM23X5#ms`L#S*S2I6`+BP2Z&-Tit*4Y82aD
64674 zxvpnS%}y36wXtvR?3-SYnH%^A-bvkpR_Jqho(V9qEmnQIm*f)uv(VzvP;n7thBfp0
64676 z`Qo9{Jhs|wY;3#+_4zH-3{iqbyl;uV7mL*`pFg?f^FIK9D$(x+CE^q41D1Xvd~xu3
64679 za@6L_QJc^o`eUfgZ-#9)&RqO<*yiH5qc-7Qle<uxPlj#4>o>j_-RFx@n=sb=i>S@#
64680 zqWipZqY$+z48ALf<^Flp=JVn6B7Emii>C<GAUgjCbR3<3e{_$3-gsGbkC#RF2;+S}
64681 zgxdU4(B{q!4Vd9w%wW(^n_&MaJ%`#n6}7p3<6Y5x-WA;^j2CznYV*aQFL(Zzzld7=
64686 z;!&G;@MV}E|0wu3@HD7^O23$gmrZY3Etf`W3k|ap<u}R1W=Rly;-e{!_nq7xmtsjl
64688 zSt|~r9URU#MXck5IY{t7j4jQt9l==K`{UuBjY6f3vsXs-F{gsk3d4H1<xAAV4Z)UR
64690 z90`6aXFyG;<uWyrqB%7c7qyJW=t64RGiMiKjlr`$N%Yb9H~Lj2(1$NotT^WBDoz-+
64691 zJ#uSuq8ybV>Ww4|3nV$ACdbq6kzTbeq!QVV$fxXTrD-`{X}z~vO(=+iixbN!cPi_b
64692 zTvfMg2`y_bG`j2M*5S-VGt<bIVyR$G{`1CHi5KCuMhekfdUWeri*m@mhmg>^7z2yA
64696 zyE4|!q&5?SjpWdM?g@0==~ic=_>9?e6W-tRh9ZxbqU^banOtmo>_p~@Qs*W#IpLd{
64697 z8kd9Axq%%H&zbAMI4D0ILnwmCk$>#;Ct$?epN8RPFdqFFhvURn^VU`>w0o8h^p-{5
64699 zm9x0IklB-5xUDl;mzC&Qz?+HJff#xg<?_!GgRz~@GHRgP>@|_k*%U*NEG_sWovWR!
64700 zt^W97&RlLS-QBtS)SwR-EB+^Z3gkelALjz!+vcV^2oO5tV2&J(Z;fiJ3^Gh@E*wJ5
64701 zFIMJGnsO$SPIz-QD_1g<O3bZWFKc2@m^+wm7IaIomWqW~#nxM`BF}0(XYjMfQ&|7T
64702 zb3I1>5YoPvK&RhK2D+(pS?hB)jl;1A=(RmoY#0hOs06dc<kZ_-+ClG=jkY0XU6Lj^
64709 z#IB-=OS|p-sBp@<f2)bAJYF0Kr|ASi!Ar^~N>}3Ptr9A!iwRk>H6<2_s1Z!fUJ_HY
64711 z6IRJXVr0vk-c~hkP&6)xR61BZ)w=FXCo3=+j;VRocqSRIc5l5p?d4>-sK<|07MzB|
64712 zkmK~6-_07jQ}oSBn1d1L+C2@Q1SxPsU-CHY*H{+?V&D~b0p4N(!>qDkw7O+#aE97F
64713 zZzgv6IF_ccG)Tb|J!0?-<cw`?3o6VerwVH_(Y2YSMzUcivm9Z1LSiYCo<S>R@v0Zl
64714 zzI|e*(6nNjP_D{(ceqa!-UJndH=i1~ucEY`NDAQe#RPSM8NMkwsAxzN_!N3cxZOiI
64716 z79x0?g`sw28s4nST`F&?c-hocAy@Ngo;F-06irvw%C78-4#)7KUzF41ndEFanPy}*
64718 z{xFM1ljCs_avl==SzL5mgaROhJEY;rNtd}ygv0B=w##s5I+yx38ed5Bci<O=ue-2$
64720 z(XH6a-3r%&KX@g#LYD}5if{s&B0FwN3O53Q6pqLHhc<7<QuM>m>u!-ZJB{Q0aJBec
64722 z3(AJKdkNd&I8oF^SB`fxnVF(n_XS}Y#%3YKik_M-vJ5UAE}{Q?Eg?Eql!NMCcntBM
64725 zt7f3kZfV(=S<8@?m{cT-%((5qpN60D)$o&`2s+@EeNlh}1J_;1z(e697CFcup2QFs
64726 z+YpL@hmf41QP0DS?(86=d+jpqhN<1zFtvN%E|mZ%bxNH^4SjKODOM@-!wm1eK?Shh
64727 zW^Kr*0B$~)!zI8%bpX+1&X#!7IkecYOlzUi9m|sxrKH4^#VYLU9-k@X5>qpVjfj($
64728 z%giMArgN=*&DB|gamTTV{_bDHMIj66d;yIE#;HFfM4aykJn@Mc73Z>v-f|mYcLKpY
64731 z-hOsIX$u0!1#k|pZ=5~UDksNpTjDf~?J^=Q8s)W|W49LL`6K(M)%1j^NwOF~{9ifw
64732 znr--d&meduHhvHL2FNuumnXpWeKm=MHBAMDl-!|%)`?aNfs6DJBcUAe(Gx@aV~{&K
64735 zlol_b=`}SS@q&#F_&4w)pbAz$nKeZ0c0yAq83YDJh05R~L!Yg>^|O}+&RW+-ue%DX
64736 zn|f3j2^tjMDVKv9-FAw=q&wPLK*+7kRC?-$UbbpYWZFvx$C$ok6UJ3H*F>8q>aG3_
64737 zx$68h%w}f_UcoLBNOtQyZ!~in$(lNYIFwXr_0PsK1q?*E-sQ%3i8A~Z#ErXP1-!d2
64738 z7?36_czv&j^(vF26+<A&Ach7<DvN|MPv8G4BtaRH#f3&KpR-L(;W^CFqcS9+nHN`I
64740 z^sADG(xr^TIYPzd(m9%;84K4vAN#w>l##Dn`wsd}OeX!zFA{0n?V4O7W-irPrA^zq
64742 zq9pTIP=O-ig`+hnbVW)i!x|J?QZegWt5DQ%wT++(g`E}^X{5e=6W6!*kouYYe$}_n
64743 zXVKJPF=o<H<&-O~aIf&fGuOCBtLKWU+y^=I;1bfPOW>m+xfNZk?BpOFR54Orqzr@y
64747 zX9R_mtqUw2)OOuEFhv$U8+uv<CL_&h)Eta9?$<8UjvRmvGXNcTvygQ*87P-gA?vZt
64749 zT*Mke#vLO`I9vV%W-BtE&~rsJZhwdd@AH9uXAb=6CuWopzEVLm23xrv9uN(TtVrVR
64751 zJD1%PH)Wb*JvpHoHF&UbX1!I9^=_Z%H9T0YrlV5vad-WOVj_PS5tL$EGi7vpyP}!i
64753 z##Z6-kx09uXrw>IO-mF>#7|7EchlrbHXlFK9fnse&dG5lh_4#&DCM>3y=P{sZhQrC
64754 zk_U4qJMEjg%d30yFPy9%h;4>gP0Jaq$Dp|apGLf-46gZPHg4b?wd(^mHpH5(fwl3`
64755 z6T1c3yN)b{^{IwtmR`h7TO=YXB!2CPsicWO2G?9&ip%X6-kkFe9$(ctLeg!4Ra0lq
64757 zBA$Vn?NTzr#VvKH0#uyYTTFHoua)-8w&bXuZf1N&V(0Oko#>Wb&F0Oin#c+9JZFg4
64758 zM$h(0P=D-fUr`V*Gm%{MgG%hrXMa&TDG3a<<y8&4J`{$V(lDB+_31)sZ!%v`*NRvS
64762 z?H8NY(dE0Ar;=(T<{mnkZ~K!!ClsCJtR^H9_Q4*jm$;H|lugSOJJ$#<2-hWX2HpVX
64763 zhy#&rtO7ZrIk1hP1F|`48*3u{nIRbJUcdm3XSfSHjAFsiY_*K-xM+t-Y}-Y+BQ1Op
64765 z8k)NMIo_y)ZnXE=-3SdnJhT0FL1g*9%^NWk{m^s1)0s^}+ISb6(#pkbIuVa~u4C#l
64766 z4sM-;bMp2SgOObqr@jiUX`5EwZN{_!qXQAl8JzC3rr_8a&yaL0+fZyYzie#zMXRhF
64767 znA4KBDRK;@N>+6&kinuWIutG1dJ@LxAjyf2o-RsG%;`%KLs@3Jm)rEa+yh^NG|PSc
64768 zRUL`bxPZh_4FLmzC<wK_X)vQBN<wY1XhTpcq|w)_5_T#xTb#-me+RW`Lu4BvtAqSj
64771 z%}#U+8Oy+AirwaLyNo@I9Rz|5&0=ogVw=ekG~t_xgf*UNP3B3G)RJ0OW)((~%F{-{
64776 zmHL<$7g~*E;>u#2Mm&onF;46=dzX91D(5GQbFN#Gl)qd$T$1As8tbwLZ^=x%m-8&=
64777 zbdG~+T-Qpm6eJUq%{(v0UFXa);nRqu)oPJfIr3G){|0$97Ki%0YiI;69KZft5+|e*
64778 ziiAgFBymD-pfI>23i^;#=`Kg><FVO%uAiPefH+Atm13ERT>aXLThQgA&Zt7RpP6wS
64779 zZ+a4Sob8{cGh<r4RLfi4xV?!#VXeQ{{eP&e-{8r|x0qZ?<<Yu+nF*vfdR9>l>iT6(
64781 z&ca+i3&!Bsw%DD^MDL8u-(5p@at@M*G(q451>1vns+GMD^l!*qCUQqM^~rMX?A(sn
64782 zoylv<%Wc1%+%0ftQ|63skva9}B6G&!_?63?(v=DwSxm|<&#NrOQR7RM%SoM-Bq5Dm
64783 zWYK(!wYo^`jL4lj(rNei*I1lA1nIO_Dt#Ia2pZFk>24>R)KyT2^-<|_InlFI_P7p~
64785 z;c&PSxibr15prCq76~5`1ctRd(&}q*B!loL<Vb;Vbc7c$mP-U23Z{7A$V1Z~n-y^r
64786 z{OhRX3X8SOg4t3Li!b_$#8*%wd?>xHP<Z*~;WLLc(w{5XhYq>d*Ap@J8ATVT8b~*-
64787 zk7>N`a9K}_OPaDxJ`cvJzH^-F-}iCC(QeOboPro4duxE_6%1AEC4I3ip|RT6bSlQ4
64788 zt72C&SgMS)RWw@Nq{2#!l~V@8wMEWPfaPZ$N7mo-{AK(V3i*29H&fz3$Y(vf=s@a<
64790 zkLn^))+We)BU!i8Et*zEv)Uaf9P`VR><TzO$F7u-j*;nQLmB^9=$~8ROOcEZEPQxx
64793 z-@&uC1NlgQL+>C7lS2n;<V@Zg992e7Q|37R{4YE<PI*og9F=h_=676)rt8bO!tn+b
64794 zH&MqMwq@k;mM~Dg_<rI(_+})7(*1->5!(amEE5YB98hQCFX$C|f%gqNXF?kdrVb<7
64796 zE38P#yx}=MhXk#XPS;-Y(7ojY!#=(dG;kkd%#J?#E@;3;*vCM2kM=T1)HE>U1|f}u
64797 zUV3dO*QSGh9?a{G$hx$OrZAGP`%{J+byMKvq84<t5|?ei<aeBd3NJ&Q7fh-h6LdEl
64798 z_H$zcME?;CIUCG{Z=&B>csEFcYx-hBB)%V$AzF}Wn5MTBWS{Cqb-r9@IJH?OTXfS#
64800 zel(3%-2t%MdMi}wc$ZPHJP5YjJuG@;QvmvZzapuAt5mw`<RZp3Rxaqp`IVO98)8gf
64801 zL-R$VP3`8DAJT<VVyvXhCx_wBiqyztt29sRVpG(zDys?em79a{{xmrao**~Scrzc<
64803 zvFUVKk}`awZc!A+5?bBC{O!Z=Q{WhJJCK17-Vla<rt!N2<h?Y8D&p<{T+fcY!+2;B
64805 zdcL3<ITwDanzvh-MyVQ$buC9%EK^1r7Z1L(@elN`GjXs0*1<XOLhvf^cJMy%8So_}
64809 z)GE1bIvMj#9q&W;(D>4sa!JPo0S8l;!v*Mu$%+C<bVF1`pLToUJ75Eoh^?^<#Qy9-
64810 ze6{1?K$tN22SX^rCX7}CleXi~k)pzeizsqU(KxCkfH}OdhMqXG8-iZw3cx_n3w-Ed
64814 zkH77!zxmjsKlWq)^-GUF_UNPXhd%`AJHPz?d2=F5Aw@hEqiIdfR{UOhty|4VNC|^}
64815 zTv9YD-?h3w^E)rU_}!;ILf__BSZlnL?Z(*3M+jcIvs@_Yg2JYnor!8nGWAlSe5WKV
64817 zmbd)LpT6y_Z-3(VzxKAb`fq&WZ~w+y-ty>UfArgrK8mq{Tmp|%CxC&pSMK9QQ-%b>
64818 zBQ}T!%14-lXGs(ugl)V5soI870xRgEltgN;C=*Pxq`|7HDHI_{6w`E(swlDuwKSg9
64819 zvbxEWU!_QvBpF67=NXb#9j*33nMSKbujCPc38cz2gaF7ICT7@#-Zl_!esbfJ-~jp~
64822 zC{hTr-}Ll#?}Z&m{n|{dqUtWoru6*bm;hDVprni&E2i{#-caIZPIYqrv0wSUKmLkK
64824 zh)2N^es1xKo?Dl}60sCMcQ6Nr&mAU&ddA0QD2iB^d-W@)r!wfN3s3yc%kTP!@BHPj
64826 z!$8O!2t{5FJuE>JfPNUz6hTuDv5=vd*I}BD?Jz-@>7l1|)Up%=z@z3QQp<wo<gj^U
64827 zwTW6|`(0z#)_|oLie(-K4D;Hp*Wh^SZWv;Z%_9IuZ{l<c4?V+`IO_8XF9O?x^bsZ7
64828 zzjt+cVQ#X!X60>;jRm`{Lk2W-*1AD?(ZZI!g}I^Pfw)?*5+YR+ryfEt{7J*Adt+l<
64830 zDaN#PQz+(`MD0iT@q<o-raaddc#7pIE!SPCb1KW5gb<rhI7ErZ64ON!X-gc%Fl16q
64832 z1P*!v6C4*GQ`p_GZEs88PNyI!=2NwFO;rRAX+D8>I2-bsXxBPBg-CuOq?8m*QRVSy
64833 z-xAK^1e>Rin~g%J(d+78g}?O8Z^DVAXmO~gF23jDchR4@2hGfQGB=w%Hr2Kl_a@8x
64836 zabf6TaNI%E@E|^E6C}eG1;g;9fdw8BqdULz=}-SSbK<A3oj-Tt%<S*LJ$K*z3%%)O
64837 zMwASb=2_FVl)d-QRPtV_YS?S%XZQ9Jagz3?d;O2x{ioz>rfynqxEaN5dx?c2#T9M4
64838 z?2-s9C;~?!*L*)g^Bj#9V#3o;9H_eKmHw1rkL8l8B*wkOxZ8w+Q>dDn!ONPlIEL|Z
64839 zIL>`=5{+~6-+7!@mLOO^xO8&m<V3epig{?9`>=n>alYcA9>2n|?jmM+rNgavu02pk
64840 z<DHmF`jhG1#@j)Q?}~@qbj_J+U=l@R{^$JvB7Os$2X}phxn;F~^CZH09zu>-@3d<q
64842 z9-b4?0Dpu5t8{K)ib#=&=?wPBN5dO=`$K1cARR_M{KM?);oy&ky&^y$<{tgE#TklZ
64843 z;xByUN2dQ0{`_x!=xar%q{I-r<Fa*U8mZKxt7poN;M-nKPCDyd&1y_#4BeYaCS6u$
64845 z^#*hEIp(0Dr_xD7qF73IrE)25nh-+AamHePP17_aH=?mea^o9;9J%cA5A@F;=$}8(
64846 zKc9#G`GfWIgZ1-+_4C}<58U`w@KP`j{tity=3@f3iIl^wT$AXPj^npM(+bC^yk4f*
64847 z-t0?hnPp^-b4z5__i90Y^zVWU{3+m|>t%d>l!Xhc{#XS}k=RU6SR}zSB*hu5L~@90
64848 zNHnRG)05YBV=m>kRVYp^FItmplYxEv?dYDbL-)*qYQK~S{9~>ZWP^nVwp-=nzGVaz
64849 zZbrT~Nc-T9kc=<_deOutZkAOwksu)@PZY<|h%N51B?2<2L)o-kK2fVRscs&U0__!Y
64850 zP3p{EO3UceYc1Tb`%u5$h5FS2cOH7GjJM5Iu+4fs7x$E)^cZm<zT-3Uz?rbIiTN-A
64853 z;rI&6l`F)am6&QLyzzZK{QN(<@o(Tk_&!htD}AvX<fPD;AnR-Piff;i@_73o8DuOD
64857 ze(>D+>Y?%L+MUyR$DOUUy|S8&g?`kRZhQ~i4Sxa@@myEAz~_fRoP-DS5FFSZqFAjF
64858 ztcR9ZXip5Cp#k5HrhzqZQ8LU4nc-=I(%O1GU!YlD?^M;EsUzi_LNmjlpx$5ei+i(z
64861 zl>|>pu5|nUYfVb)s>b2-SI74}xG2UI%J-S(*{0Ubt@2y?Tm#L%koRystRx!Dpx-+)
64862 zW1&lGpcY^V?&f4~&^sy!??kgQ-=fO-u%|ytB4OicvlT`pHK=<rlQeXWfVxQvydRI5
64863 z6d~AxR@F&LFl=@r_u5-ji-PsV<uSHW(`kw-<|%Fdz=3%!-iz07uj4uSpU@mQhx!`_
64865 z_DB?iptq<R<ydSipUi4B(l=Q`yh(TYDJN-a6coo6=50-s^O@YC$?UOxt+F!7rM^N@
64866 zCvv(KY>Pu<{04-DZ-c)Mdf;GxAD#<INJ4`r2yzUULtKZDIxz6;;awI4h15)HNAjt5
64867 zvsT5S;;v1P0$n)(1oQyz=AOs_{TSk1DZ=%2lOSo17Br;9;sgN-S)7Q=k|wgOW*FIw
64868 znJKdd-C0a4F%c3N^OSs|aComXR+nuKI`Jf%o5?f0A=)%V9KeaSOxWpXD3*1tsl5{c
64870 z4L$Ih;(NHkS$y*g(RnJevBl{i$3Bk0N7Djc7{x2>CXL5}t&;V4-8O*_{UK&e^#W7d
64871 z(AtgzLh!tBBWhMIV+32Rq~@Bk$?;25f`b-LLSU1Unvz8+?I=w*)vBWzz4E{wigtYt
64872 zuHMn{=O%NEEEp#Z6Q;6CW}lyJpH7XT`SCEC)31O(16tU(Ua$k-I(13kda>5PzIFWm
64874 z(6Qs=rs+^LuWJqkIaaqES#d<3cB+b@RJ_DmIJaN3@vjI!J`Bde)qSyI;Qjc~7Q9-p
64875 zCk=^fk_ZwS1uGLo5-%}4u}csm0-AC$m#t|5AeJMlG7&vyV1gPg@|?$Z^3h_XM+}C;
64876 zdpa{xLKZDHRxmi8VK|a9B*_sJ%FfzJJXs*c@C-E4`)jp1EwfbTB_ZpTItH7vHJhX@
64880 zl;pCUNOOoeR4w<UXfv!RqeIF!1UIM~`%Q#h9&8{6z<f;G%31N>si`e_!x%!tn=o-y
64881 zHAzTF2nD<Oa0E7wkR+j~3E8cfqATWH22zrUdhT@9>UbgO@5j)0-Hg7gg5|pyaM^@@
64882 z2`-yX`R*u}MPnQ}Qbs8sUc6S&v8IMoH4-#J8l2~!lu4QqB+bhq-q&nWG7XVbC8d<Y
64885 zktS)C^CgNUb%<e;6a^h~0G&)0bW<^X213+GO{=NKbVtj{P)e}8!5T7TWrh-HiV;~?
64887 zCFYcjB3S%E(CJ9HDLIH-ks&A+^4US|!BNt?8Jxb2^^T*@saD2M7rpXannSOcrv+xl
64889 z0sdgHD|M6jj$}CrJ)QB(u;OSd-6gMApZR+G($`=1(r|~F8S(Ojmf+bfygZ82+d|6`
64893 zs_h4uH@=7Hjfb6OamcetakQNlX`Udl$gyN3X-O%YWO<sS(7B3lvlJyd;?z-JHfc)E
64898 z;|8A6mWcFzJ>gW$LM(@<4oyH>>WexJ9YwKqny`-7j9AX?Ri+kZ8X}SpYU=$Ik&Jty
64899 z7|2HaTz4YTGy@Lx_s0YxB=#oK{K)RJA@-eCy;dn@)1EUz?8}(G;WuSP%svp<`Ay5=
64900 zkl9<7izVEYMnDAYtRxaNngx)hQbk2@SdNw@g-7b36=Myu(6&X53*<4ERcEeGt40da
64901 zzJy?rBC{1kQdo@^DOS{UUx(S2hdyR$qcmO$@$nsqPTvfxh}(C-m!q1}A-8W-<%rwo
64902 zwtYx$a{K5Qb9;QLhT%9M_4Kerm>0ys;<y=#A-0{%1&BE~7wCAKZ35Px*gP931<`qW
64904 z#fZGE@V-k6h$)juI_FZ=Q$3QC6^?{cYh{17N+Zg(Xz;Eps1rUd(auVOQD{C~^Y2D;
64907 zmeijB3w`3ku$F9cGxcYXV;NieaHAV>vFa#?-WV7QbO2mWmL1gq0^A*j%<NPF@T2c#
64908 zXqwS7p04pa0|iDfB_55T&fpj)P9haoH7N?)!fDl>NM~w--N^~8XUc-?N;E?14l8p~
64909 zTvMxQT}WGY%Xb=K-L1Ey`F}l3f*i<xB9o3Y6n<RqQq&(a|G~arB-_~GZV_y4Kyb8A
64911 zbMON21z3QOAkO0UEuJC=HO<jU1t^#$WADNw7FK~R?pKsXTCL_OzT7<X1-;@4PBTmR
64912 zHLti7)b;@1+_(t$6F)^T;3tFQm!RXn4UXR#94~HMByz#=PX)(_IuT-U{O)bXKN}q1
64914 z8A(#Hm}B@-<s|%M2@MRd)pC?qcJlN1d*kpPc%GPoERevjU0eYCM*#fP#f7kj3F?Q3
64917 zc<shD;rWeI;rWeI!}DYC_u(Y**XViUU<&?Lcpm=N@O<LpJHeMWj-m4kxNqZhI363P
64918 zhv#D#AA{#MPNMTF_{_%1=={me@wzC0-`F^Ybir;gUS(Ip1IAoxz>*;O3<Jhoa>Nn|
64919 zJY*Mz;gID8UO__^D_L5>b#j_H?gxGTx9_1opFn-qz~?qjL}PMd_)Ky5Id~qaNG#C7
64921 zlReBSaIF-E9em*64_M~iED6g3Lb-Rd6f6mNKk~&psjJnzb;CG`OZ{a#YI>5sTFKit
64922 zj8j&{>My6#;X8((fyH1B{5^Qj#g|0=eaYtYT>JnmqxHywIq-8x1Le^9rzY@exN#%d
64923 z0B@jbi1{t{=ZgiOB!eAq1h%z2%;4-$cpraMzk8U-6JX^u<cpO;wGw14B_{&c=Xjue
64925 z9!-gypc0C08HnM~shXmzkcjN)-+*5MuOYq&YM|Y3gmT5U26g~+^t$aL1B>%IMhUaL
64926 zRa6A#^I_>^-20)BAY__CT->(|S!78hAp`;uKu+`pL5rz0fjR0|porkn%?fHME{m?7
64927 z5NS+)O(|oqDXOEWIm?XpseR+(XTWPVKKdWjXI&P#-TQp;Gb4SL1pm@~CJ+vP3Ve>Z
64928 z9igKK-hx;3|C#+N3ex-0TksT*V}JxDW`GzYdsen=S-CyjveIl8f*mVaXSidfG8t@G
64929 zF)i6fdi+xtA0YpZvBBfuv*1s`29)3!(F=6?r7rjoSVcp?02X`#{32RPC-FK!$KM9O
64930 zhd!6k?=J-BK^~_oLW}=jz_-9Rz@LLZ0sjsBA-aY@pWcH2&OqmJ^3OVSpb1_NUIPSl
64933 z@<w!L3TIzf>S41IcsqC^FfkNh9%f-0CSe@15KC|gotMB*BZl&m;7Qc#v#9N7!2{qG
64938 z#gX!E+hHs}A@SV&q5NI1oVl~8!njgPCimoW6PBP-lM^vHZ4_j=+9+_gEa^h6QLo#g
64940 zieBI)>I-to^HYrIdY&t5HK(YGd?LZI$pi;CL<V*=4jsz5suO2r&viYCPWjz$6gtgv
64945 zPun!wF|BOGgha{9x-!x{cmWY@)L23)t)Zq0lj+PvH<yX~-+LQXdi#CfdJAK*eyh#%
64947 z)8NhE6k3}!LOB`ycko{Wyi}34a}KRlTu4C&e+#}2z6$;b{5JSa@FnoeXx-wZ9}j}N
64948 z5TZKhHw}rJJj_5o0CW){Xc-G%w6+nu2J0bkt^=B(9|0mdA%cf(j7%IPRf0T&zD=i8
64950 znt_B!ZoO&$<SzGPfJ`#-g=gyP_S=)hjXc)BF^bNBe**sq-UuEGP}D`z1zi9&sDST*
64957 zNq;=S@^DOLV`-X&|H8ABn-<ud%Zj<q7|Ub4l%-bds|YInOrbM&@y@evz3;F&IVqbd
64958 z1zQ$5)>b)Irf5@8VysBhor?O(hhKK_0gWaT$=fF$Jn)uVxil--V!`jabf#|jnT{vv
64959 zWksrM-93mmCm5;LDzT=BpmEQSzpX!UG&aSHqISA*|B;{kG?CFcF>X$E1lmfb#dvoQ
64961 zCq(e+|BI54WgXEZjC&@_Ni0d|YTB2ZxSo4lvXM4ws;L-{h<S=j)~!@B4Iw9SoPi;g
64964 z;UB|q!@v7~*?SK-NzUqC^s8K5)s?F&cFwscbeKFnX=iqKHV5r!S825hs~kZ{LP&sQ
64965 zM9{rpOf>oVVPk?w7A9S60~ZI3jlni>F}@DiKk&QP&wy=$rtkMvRrmDl&MXq?-RJkv
64966 zGBeeE>I>&P-#P#Dg>$ff$2M__eX|z_X5ro776^He+N7cS8-Z>L?kU`xy~#TUicrlW
64974 z=OJT^h-944V-esg5%+vf%MwZwi<?UPJcy;t*hbMR5GF`P&D8m7qC!ML#*Svr*U}}z
64975 zCNbdH;CvZ#92DouOKRkwp?luXqW%JAf|zB-&KEHYHo$tO4M1l_UUbO@06|uT4Irad
64978 z`0f|6-^M<I{U6vnU<vPs<-8wz0(%84>9w%D*TT~7gJs?aOS~4Ado3*WAT0YJHi|W1
64986 znIjAtYZvU3?B0=NLRk`;mE@$^O2l0z*2xp=LTfpEuw$jBXO8f(PQf`z6((X-(v_FA
64988 zc(^)cT*-0MNB_!=s?!Ahv?*g<S9P#Yop{@U*T=_G?VL7SJ-PfK$&}Ad+_^75W=&2y
64991 zT^q9xw(Ar|OH_!`Czdv=`B?&&1nAn43^96r`<8MUJI|9W4IK|YHZ{R=T3oVNfss-P
64995 z!oiM{$XMi*r7pCDh!%547riEbrhK5<T~3Xd(Y)458%}cbZ<yn6JMe~hGug>&)1{-?
64998 zXGxODhIla@*O!u-<wi{-R%Q5*uKu@#)XYW|oTj;u!5i^d5*@Is@sy*<EJ14MG{|gi
64999 z^J5b&XT3Ro`!r6G`KzYxKG2NEv3nNCFl$iw>}I-Kl#)vNrq*4vWah?uZ!e8ZIo~0<
65000 zFl*U+Fg53j2_Z5vT{Nf5pYmn^6>fZ{G-XHXX&h%6-LbP8LCns7Ov!}_Y4f>atO942
65002 z<@3)Uou)$AU00pnyQh(1SeDAtILWNmae^e*eVj85pj~|wuoQ!{ccCp#z}(?QS-vBT
65003 z5jY_3fbfpSC^qC>uLt-kv}JZRkHFI5Aeq6;g+)*dI#czG%P_ozpZzi@mU;LmC<I07
65004 zoBJ_^Pz3(arAq0}?^Xas5)VCt61)SRxx4RPTf@NXUi-3_KK_!sf9dXDdhF4A@451d
65007 z(PfDVhn1(_hwq6Mm&;ckZXR^Uqh$L2!^cjSR|<&(tGOfH`wkp>PWMRuz}n^-_V#0o
65008 z*Pfe-k45Z-Gs`!xttXDoM^|RfE-zg>yAs{AfAjs=<k8tX?%cos&O2s~I}RUV6#Q1U
65009 zv^LQmZ=S9nPG{30E}dC9eY!c`UfYnL{$+*L`LLKx;jf``-OBux&CG1HwRrfB@z#}d
65010 z)%hIt^i3T8es1qberCR~_o0XO7UyR2%{`%~4;lFTLf!n@?A(Ywlc}sMSC-c*GwjoM
65012 zgU-_WGWX1G4Kfs%!{&$!QrirMv>gQfo+CQJHNwH6q{vqKZ@Lnz=z80>(@8UI@*2*i
65013 zigqS{`>}jc7sIg-AqWI+oAr$o=Nwxltf~~^>iP6#lliJ9tLjuaS>|aDBb3tVW-6Jz
65015 z9bzk2+}5$Zd?Cm#In?i=j-y4}aEPsFm9dN#Huwm}Cz@5~!E0h^T@_*>To6&TBx5dr
65017 z>jzLD{}J}lASLKE!|_dN&%Te7*yQ#;26$}uPQt(aHF26}shrT*U&)LaRb3-kHEL=P
65022 zO7Z%gcsBhG#@8J5d(i0%<KYF-$cM%kK1SQRdgq&K8~G?~GZ8wzzi^<CJCxx=3@g$h
65023 zOcXGzVa#M-I5C6zJ9X{c_?@^Vy1Df7EsaGj0{grF6)TywOnM>1bMPI8WJ_6+Xu>hR
65024 zYc%NWi3g6_y6(@}f9rh}KTEs-EP~dDnmO;1v+Z{`h{x-7mm54j$LpskfJJPv-%r0s
65026 z5pr>_t}Umkf-Ng~UTv7;cEplO7AK;E`PqXNDOOIZ3!|x=p^9+|DlC$WJ9gW>X`-88
65031 z0T0^4=_j^?Ihesda-jQ15`3W2sdUV6F&4{ns-bAmbB802hm!H5r9=7rdM?Z|QD4C8
65032 z=5#LWPwC7;ImEM;q881%m`ubL<fxre(z0yOVO4fGUcf^%AK`M-69@8Z>C|ExO1-bx
65034 z5Z;+E?@KS30XqA95FA`yoSP}4v(NoJ+S@GIfN8rJv)~F`kR2+YZ{Q-qMmUDExh?Y+
65035 zv&F2rlYv{fB9Y6`l|9*FTZ+4)RMD(h*b!G~%&yF-5$N0S+?Lg=t>^TLxs%<SI2O-T
65037 zzMZVb7T>&Js|dPYY%TNq@&;#JY%Lq-YRhfJFtd@GzFCrYGMnkebcDBeFq_(HriGYf
65038 zItDVIL-unYfXZ~qiyJ?l)`_1kSop&H^dvg9j_sp%H?0FE?Z6^)8;=aVZ)dA7SXzF5
65042 z*~Yn0tnIcNrBr55u6ew3q16u8lc_vSQ?`h>w({chanFEn+3y1Y8fIV4M$-c`uA}3t
65044 zk#qTj<4DZJm@b#11Z(J4Wg%{<7g+x4xyioS&s$3PVzVFaIBg5^EiCX+4L4$<Y@}-0
65045 z;0|OT1Dpiy?)bWQ0T{>d^-kU*z`mUmQoz4Xf|IK&3-jcUMF;_#c7_N$@yQ1a6h-X}
65046 z819x8Rip&wV#JWyS1fg;goRX?oKVz~jpKU{=NFu&B-IIm*%d$BAj+x)i`)S~DCK0b
65047 zKzUP@<M_0JcaK2yq@)rFFpMQmf|>5*DwMr-bg6Z{nf36*t`g?!F;xL4v6Iw}AY%(-
65049 zfJ2RO8pIpp(@_s?By+J$bO*4(jYlUD&vcuV6*5<MT#008k|7c1==Fj%f*bHWnTKp-
65051 z4t)XAlzbZSiC)>K>6HT-U+=yf(v$<5eLW_iVFDUo&wLfqRD!x*yx9usY6UdjTp~|E
65052 znrcuEw)td0^JGBd%gpB>O)V&A-)1JD$!zQUk04DwpqbyiETFk;Ti<VmG>w2}dh>Gu
65053 z&F8lD{f{BdNYI{-_ew#(O56JWen>MK(CqJp1Df!*zW)`Z84K!qY;!WGYjRuP&p?{-
65054 zpd4!RsetCGi~8Q&x$l8K`T+J)Fo9x`C!xAA4T-p9F2@Nl5p{Hxyl^H#<>PHkF$J_>
65055 z7{|?RN@(aG%J5`fbyefaiSjfvEllkzrW+AU8C@HREUwNem|9P$6}xz-n1m|C5{l!J
65057 z@D`V!%0?rEclo@_N1@)xMsRe)_-B*`s{=ZTxNYg`wlr9CBuapVl=N1TFte{>$blZ_
65059 z={U>NL?}NJp?Q)HYa&a{PAHNg5ULfmIVKzuY1+Hb@ll{-*AUkO+rK@^dJ!~A@fd;c
65060 z^)81Km~Y8(=$vNKkj##ev{}J|3*s$wJ-nZ<$4@sfbWsZvaEf6mno!LM6{12o6=KK`
65062 z>#y-JsDdeoap$_zx)(ybpIDdnZiiwdg?Sg1DBy)VMtkHK1%-BXrPG41R-?HF!`S|)
65064 z?8KExNeL-f(OI6CHQUniW&7xXGh>1fW=&p;i}5<z@3f_)WYw(GcRms;$SlvN(psa)
65065 zB_?!9!|bdRHkCL=2-&)mP`RkKu)4-2^O~k;97|EmssF9{V>u85?7*MM>TLDCL%Z`w
65066 zV2wV1n9*3+;x6V-3i3y}B!76O&!2zp{Sp4#xB*(w=Q|9Ry4{285XAEyfG|}Y-{)a^
65068 zcCck1?3DOB_-HfSz$h*<HDR^(whTR1R<TNmolKZTr8QC%wM_nsQsPL#u0@Jv+hj!S
65071 zZZXE&->3cH3SKfiZ=t4-s{+PAA<<gnkwT}sxESGtm>g^Baif?hnVeLv#EvbFc49me
65076 zAI8&Q0o1#dy2}x`KYBa+7Ykq^5gW4UTfJ-dr@wb|br6yf3i#GqB;$p49~gIMG@HBY
65080 zaaM{;V!|L<k}BV1Hgi^jfu=VMCu>n!xITYbg403-Lm|^m)w@Y|%%pibW?|eZITN+&
65081 z8i6T-m2e_PLC(7&TcJ22jGCVC?#jOw$RPD&Vr;5#wz{^GQd1lYWK5=MlorB^q%+Xs
65086 zb*-{k%dbQ=biZNdxwm3e>Colv_MzpB-7dtl(N?OsR45-hJ)57*id;wxnTnjWEZ9Ee
65087 z*?b<hzltJHW*l1*1p;R=?~=8bAo}7ZH<TLNG8hUaBcu?|(tctE-$XElL4wdhcNi1}
65090 zdC8>VJaTOKqB*8mDTa0`sTP6-9$Zw$Oo$URi0edq92x`>$3~W~UC&Hhe)w=Lejpdt
65092 z9xh@OQNnOqRcI)IaK=Lbv=8Okc@*83r3vahI-`uy+ZfLTjIWmSnHW^?k^tw+I5y7u
65093 z?9b;1BjAaV=4D)J_aov3rx6Ect+zB{SJlYK-rU^mWATb(B;9x}8+CJ8Gr~J&dD+dT
65094 z46!zs+c%f1UuEzyEuJ-xF1?Bm)7Sx$;|PLfEjN~gPCre(QPOMs+pRMb{+KkpRO7FO
65095 zBT@tF-Mx|s;fe{nT!EO*({BD%eZtE-gf4bL!?po`k>DB{-E%vVPGO)_NY&Cc*VdFU
65097 zo4Rgc#C4}9V^ccT#8g?`bI*w@-*6ggF-fpz&mVS-a|b)ubsLrH;@k;Cf5D6VF`S1#
65098 zzKNq4t<CNz?Zp8yu)%VU=Vf^^1_t3-;cG5%Q)ZE(?Me{xwx2Z}3e~tDC>>{*m*}lj
65099 zY9*Un9D`0p+~%#78*Vyj9k?lTcKXF@Yfr3*A&3t1Y1h&m>B-H%dt?zoJ*3e774kU-
65101 z=JUAVt6}Zdi7DMt#?l8`&8ru#JG*asZpnUVB`-;GF_$i@qlIQHw)eoYF;XnfrzTt_
65102 zr4%l&SNGPAPE74d$GdZh6Q{8kr(&^+(MY-_qqwyBP%Kt&tmQ_}I;}KhAzI=25$q$%
65106 z0S^pt#1As`6UD~sYC;$TaKab@Qq4TZBkUgu_KJdN1HOKU=+l!6&GGJhD-vNwT$4Vt
65107 zxO(W&>iSWqFq?d!JB?y_^*#yPwE){Cfbvrz7HTRgh=H_Y0A&FP-mY+~Z#_M=1K~wj
65108 zpDqZpLvOMQYqBYm{&Fnspz_}e%fA|yp9in-Pq0Bx6B$n%UFJl|zvbW=N4eIaF-6NB
65110 zBqAP<nVRm#RIL)t)v{GNLJ6*1D^MgK9WT&Caw?syx{+u~Gxc0DF_{-FjvzIe(Rkip
65113 z-*<Te_T^sK7ZYN>E4#deVwWL+g|82W25L$QMNWl02j`(-_OsH(FKws2wJO&$)tQu;
65119 z4}}386jdQ)$U(?J2JsX#0L3Y%?n3&WAW_hjK9C?hg+IiyEFvW+^5IL;c1ydHQNT-o
65120 z=n)fMJQp+SVj!D#3(-PElc7Nd4(70fU9Qd+CZU-vMAGi(NHGkul}Kc>b6Sp<!-|^7
65121 zQn6fdEH)D7M4Gn^OT!~{vADWguJR)E-6xw$z2J_-;v6d_;wgE$>FJ9%L0+AMywbsA
65122 zz8vui?gb~6F%-sDRFK>31))SA1fj-dZ-E$2rt{l%<zNdG1ykCJW9ME1(LhE({|;8K
65123 zr;H4RV)XUnoo?Y7hFMPT)$@@G1NFZ<I+B-{;|==k6AZ(%suT_h{2T5_0HXIRurD`z
65127 zY;8A6+6$h5R!}boC>R3pVj*-*$HqV+W~ZIBhQce+z``unUlR<>LMMnQx&@;HrdW=n
65128 ziF`zfl}RI6Z_ii97BVwhN;ECqpu>XBu+vp-q%<<Qvai0s`kyirBk5Atw*}Y2e!m%e
65129 zs~3amr^7TTj8a6~9!AOZukZ|m8b6*C*4mS~Y<2y}v3-d+m(8r@=;^aFSKW5^<=5Yx
65130 z?3}EgIsEQ(C%k#|PT0Q7uy;V8|CwN$Al#t2ePtkQkMUCGNL_@}m&UFY9m-LvQFimI
65132 z4_-jD+f}lfFD0$Cma-%6RJOJ-Hf_W?t8AMk#ek0a-gJv58;2^5xwKhVY$Itm8kGa%
65134 ze?34wRDgOEDCKd-(p4Y#&_lSV4|^^^J-#D+xTD7M(e=1h2pj7OH=j4+?cDgxeyNx!
65135 z&(a-Ji(Hv1lU$sQPQ=nF$Bc|tr!$ySPgf_SP|k0FeR~TWV-qC6*{+1v9|V-hf$-KJ
65138 z3-C`8N-ISZclc3V{56c5w&n8l3r`?Ah*T~?R`x8uzb0}?(r$5AsteXmyfC>KK)FU7
65140 zcbyhR$JX>(^(4bkUm`h*Vnib*Nd$S4U7VU)g|c%K<oRnL&mHIi-QU&vm?!HklOPnd
65141 z-)BQ?hb0qo2*zZd!IDaVUot5-AI&5D!m-=&i|74b1Yfq$3$?FU(#k92lPO)ctkNWz
65143 zQXY0OeC%SvE>j+MF?{S2`MF>hv?5~_eC&b_(gX`K!w3dKm@`63FIBX%Bd0Yj6bh-e
65147 zgWA`9R^L$3*dSj`(CMV7x*r=NfG=;L-CwlXLtrRtbTWbFYod~@*rqCjI2LDuzI)RZ
65148 z?d-G%_+?mZ2hq@z8I6mCHOdYtV`jv_qT}<cwZ+tdL**lJ==iW0G}h4s&5{CZVIoda
65149 zj<p<5EVW1GlQ*88ym9e&MA2MbZ?{G&-WuR_@V~#oe-kME+#{Vr+mApWgl&GnpipW#
65150 zR!Q0sMxYona~)+~yZ6>wccNQm^;1V~?Y<NaYZ>U!D|;X0L;_-8y{i;6I!96fspIEB
65152 zNmk7`gppE`<KB~;b}9IjXv!&>m9kMHl2+m^I3%!r*xQ5lsa*-Sjd-SQ+r2fHY=JLR
65155 zM`KP5lEfex^mCbY#(e<@sUgnfah{|ZiOrIn!8;UefD^6~mx-<@$7NO~v5+ZFD=8^U
65159 zFL3~t*8nk41mhluiYbK)K}C-aj$Cvw+!K^)p`0cmX!3%t20Q!cys4j{ba<(|p!)$7
65163 zO*;)b<YUkt$jA4ivk$$O6SslqkRO2aFbBF|Klsh9*uIgBYpDuF;CrBrS!y-vP?e&U
65164 zIx7P|CTZM-W(j`91YeQsL869q-|#}S13@B1K;H=(c4`Aq6!M)Y@`&3V0W|d3XyReO
65165 zKv=<eS-)`F$6GtTveD(Mg+i%ND5O~??#rLvm%qOIQD_G{RZO6+3XqBY^Cu?lfzM$t
65166 zS09A<zza!Tab0)ZNM~7rO4>qJl|l!?e3*}h>4)7hGo68-C;ZQg2}nE!zd+xUi_vCG
65167 zbUK!;6=Q0Ih~+q0GE<Bwu|h-;-e7B`DEv5@haX#Pv>6qhi6s$!!?A*h&S?f?0LSEm
65169 zkl>J1zC^r@jWCqrl9sBw=sc|d9^~^=9-m)Lyb?T2YOov|_DdK1c<sYwF~bi>8HeRv
65170 znk<yw;8y|vB0kDmBqhcuN7mg^P@S#lE*jUMd|2Oad-eSi@d$iIfzmSII#1uKnhIx1
65171 zTvrH`ya-L3AbB<fuMpwh;Uy^9g4|~j<UZ<l9R%eb-SNwf-^x~Vxq*iELb(i(9EvrA
65172 zqTrYXJ(vnm@^6xzkkd)ng;+()K-q7K<Dx_Vv7;$@)y~VBPP|C57$cgt&9oL{gsRw(
65176 zb2mIAn&r*UfX8}0SXZt0@!s=cT{QrLOdQV-?g0E)8k8rOI0)_~j{^gw`bat92o&i9
65178 zCX%Dgt72-(kX==!1Uh8$av@Gq;VW1rtYOewkWrh1_CS5|`=0;*Amr(zWE3PJFPq>Y
65179 zuZ5PS;W#$l$fv>(p`ZlH1hGzg*@#14o-njBc!zhWci8_w>-qmj{k%eGsblBwH@aG_
65181 zixlHZoD173!AThcGwsXq)2z<wxrtcp8i}|*K_Z_?kIFP-H4=)%K%a%KsyNG*qV7qI
65186 zxQ-_0sutsoT~IFM-=BK6^Aqs-%y2yfIy=`wHMBdZHVCSgyn51wpq^~htA}`kq3ozZ
65187 z5)g-mVLg$kt#8#6lnd+mGq0Yv^h_|<``%VP<}>Y2a@X$sJj?wAEceWCxy&==%a?X#
65189 zHv-$?M#419<3=K?3%Rnvs0`)AEyz$?MGZ6^6E?7BGygAWAJIDo+xK|TzFELMH8G0X
65193 zXe-q9-|(J;wO0828{YF9dnCBA_i>CN-vzKAe$q#SKm25n#|(m@&2M7g$8Lj|u?Y@=
65194 zKk2F=h>%(s9wHB{EYFclsE^!>9E}rzLI-;u1_VhF<U?L?V~jcvLM+CFm}`N*ExZ58
65195 zF-YIofu0GmA%=Z;>pj4R*#2wX$sOJxLlha>;YEfGT?RrS_9|4uA+#@9EbiO8(4Cns
65196 zHjB+dzL_nwcqWQ22M`FgZM(bU-{(ks_c_q`<c1IEn*Jhu23^$3Z0!=5?RF%hH^#>;
65198 zNp9&-A&g<F7GGN|uhy2QwQyF)B$wgD>^qZLDP<~gJ)8Z4UC{HBX)9SXa&ky0<w(g9
65199 zjfRH-LGV8~#&7V(I9U6J&+qb{-`+b8HhTX6$NV>X|Ng_LgE4=4;7h!hI0ddFzKuZ{
65200 zfe_g9S1|uetam&3A$Sx!0f#2iRUyV6T<!>g5IVw9C<FkQeuAiM-0hNa%l=`w#lQ(Q
65201 z!UyZ1=fG3oSFjhtS9DP5W@YcbDJsj0W`(YsV$b0?063k~QMu?U5-}*38T>^*G^pYm
65202 z@UIu3zrqh-#X)t?hkps^FG@iDI@9|H@Mi1>cplaZFb1fwHJ^q3!?7nn+wb2$L0{`?
65206 zkNS7M`}d*xm-((HFj-kCa+*L}5sBjj6z7IuaiX@uYoX~(c1E+~G{>^_u!ylvbHqLr
65207 zLp*w%I1cN+2P8lh<hz-C+GI#CLe%z%XBZH8kiZfsP!zFk-@!Y3<2~zMt}2=?403P7
65211 z%KMvDtjzH`M;H!e(yy2-;d(jE5ExF<6to*SMZu<plzKwfoU)_k!fc@u7kMK`nHHCm
65212 z7cnU+DoI%uu#hE62|1f&V$9|!E#pi^8aJX)jw4}`O6NE}?#M}%)oa-hbS$xuAct7i
65214 zG_ZH^wllsp^xMLn7^*@=Nz!1T{ibC(MTsKqPL}3a11oh#&LpD|${-Y;R>FKj$?YXR
65215 zqX`5TBf{a3PKG5;awSgCUhC#Gmt>-{p-8q!C^?CdStd;J9Fo_2p>BPIe7$$q8uqIe
65216 zC(wbybrZw(d54TpU;x|`-QXrE4%*Fh5>)Xj>C0|m5LaptJt^n|GkkVzXmH`*rRbQB
65218 zOerau(FzgXY#O{qF`+un$vPL}j06SsU~i%~1%4mu&1!#-b}$Owy~m6n8ay*>5Bu5f
65219 z+wJGG>GT?dQjH~S7S=6>J8Uk)#uE%1iL-K^VF((ROh(G;(5_`>L?<j~bpaBls@24n
65222 z7>mUwW0TGCeC|>c*q^~ecww-e?{Sd1Vdn|!?=C+HF#?xKvmq-J;-e1jfd?fi%5&s<
65223 zw)UO#8rpY`DuaFJ&6|y^91=@eN^(UpVUr$cP-5X^)#KlLVBg+DOyGG8o!O+RJAByC
65224 z`x5-|>(m>;G77+tqG6%y5=U2J+arj99U_RKGbkGue%Ze?fdV@*6j;WV(WQw@5M&m~
65225 zJ-HP(WZMiD3I7j2ypE5Wy?b^djurg0SQpHAtdb~ewWu2+(EOn&L(s>f`+j+^V1`3j
65226 zD8yN^yQey_x8|@64~Lj0xmu-?sA##G#fW38*s4rv`Pqh+6?j_+VH7EkCMWmmOc({I
65227 zjk=x4!E0|mSF9h&jvY-L`#+CKDVY>UQc_w^A03%JHZ|gy`=_#JCY#GjWfZ*<E2*`U
65228 z6A-XRa`mNgy{JJeOz5$&GnJV=V6uXT*QR>^gSv;(ATIeX91)tj=jp!-qQLy!0F$9O
65229 zFz1PXgk$w4Z>(+sTc6)TUI{;cofp^To*(^FuNu5v9f~32)4bj*{}zbiSV-~Y?TEl1
65230 z?>AFdfetu~#=Gf__sWFxQ;zp&qf&z7-N8B+jCZ?z!FYQix=<bgbYtw94ze2!Q8Z2o
65231 zvRcjRZ+wYhg;`t~ed76L)qu80uNKg_X6qKCH1}ZL9maKPZ-n8{Ai2>_^l0boTc*0#
65234 z2p?__?&Sy49-b(Dj_u6Isu;7Byp`c`3NkXH%Jrn0Q77)07(tVTPwIBJuy|OGL?x04
65236 zBC+{X%X@BExn*_=@^|!bBbkZRoP<nRm*6p!XXwd7_wOK{$3NxE{L_!2-8dxCc7I<5
65237 z#c}!q)r2&k3}{XQ+NYuWG+*yMO?;Q?LYm+8X*Qn+eR_{Z>C^mG?-Tgl)D)!od@#Sh
65240 z&8N9-nC92XS3{aV^J%a(@FAb(Lwy<~%fCh*fHYtB^~Um0DFKgPOFay~|8uX5JD+}W
65241 zj}H3eGZ_anfTwOI-vS}<HR$&Ksg)wjQ24%GH3tTk7G|equ^(tM=S3<&QtM0hK>E=i
65246 z*=hW51Do+ry-oam)H;0k>%q9ae)IFeyPxmJFYA4hG^h@w`ASg!=H`b3nhy`fLHiDh
65248 z8I<#-{@lPH3Cg(-JmHt~M86!==7Z$7A<gdu^Z74(p9;$PR8S7;`#(?s()?af*X_M8
65250 zGGte0ya<`=^YNcD66@4NbIcFc??+<I_d|*fOhntmRNIY15T<ZwV(e-bLQ+nsFB>XP
65253 zQ#I&$p8}_U>p-^?^&%*vb7#W9$OhLP9CX!mU}O&vgJ9|xn_tiVw#FN<U@Qo;=>>op
65257 z-QLLW{6^Q<+4tV?{)dKlcDmC-o=AUqx5l*H_eTaJHXNbqLU;u~({>(XN(^Z>$ubzl
65262 z>6Th+Tvx>~RFJdSEIpjfq#psuKgm7}ql5TAa2_+}&{8HES|2u;-Yqcre-8rBC7P+x
65264 z`$pnM$!RBb!Au_CIOMdh9~--+t|VoQWJqI-b&lV1|H2B+vBjm*^5YFRiDQhO87t12
65267 z@^1w=;W~7(1W9vr7z4b6`~jr-NI+BW1vskr`Jp-SCmzjj2Q(*oe;m;K@fMCEF!KL~
65273 zh<ZJW`-c6~8_D-VnlA>tVZaxBnlJQe5a#_Fc{il_Qb6+{^cp>ySN5?glrQ{`s5gQY
65274 za3#X3U2hHO*q-Q5xdw#nEL0mS*a|hIHU`nPx8YQ%ez(l*1uH?jLa9`$9iNWMG>YoQ
65276 z<-_}j04rB;GRF?h2*pmtaV|d`U#s*%RlKUH6EjwtxN27`i+k%1AE#ap)}T-9@f!IB
65277 zC-?e(LFy;=3lOha8mwV!)bJJlVWk{6&KG$GC{^b+jt`dFcIJ968>gG2i}#OK<|Ky4
65278 zS%C~$N;AE7<B{AbL^mNmq1y|E!n9Gy^DIw$t8wv)UKz6}f+8X(I-Td^<=r?>FaoDK
65279 zj%zO0Ba_*Oe=Wbh(l}K(cJJk7Z}mti+lhVE%A!-BO<Ttvy{>#@5wgCf6{j3JOxO2V
65280 zmPH)76vlyb=9Bm|^%6KAz6SZY3g_l~!9?qI-9PZ>#6*8ipf#ICDgq9G>%sA^yfO&=
65284 z8?nIFTtPkv$Lp^H{q-a827j#HFl>w8M4p2*-wbG`z{5Vx!&~cg!8$m>_1E%x<AF{d
65286 zuMTv&pPMC!iN6YU`U}9*6L0I_KGoC1cDhI&3F6|zvM>RBp<mV){IY`l8-uv`xAp$D
65287 zcTdotdxm4f6W<Tw;=}sDr@<qgZ+5QnOM0YVUyx5>5F7ut-bZ_9gR;(Ui;e&GL2UfH
65288 z!O`Ab0nJ_8V&hAL*!Z{iW`OJ0<qqMLfCqkT{JXI~g}TtAS-ZIZqn>TNegA2n;`D`m
65289 zAM?L|?4?0VUOE_$t-g<YV|jZpmRo&o2K_j@9hbn#TkO3O?_$3Oa$pqVYQ2i`=MaQ9
65291 zuX+aoV@z+SaBEr{hMCh1|Ij@I-q?naR^*gqx%zl#vTW6CHIm=c63n(4&tFlMYnB-0
65292 zHvhV4L`JOWsAIdgD+QI|Ns64z6ebi?w%vtkHGW^0def&fydBoc;{CRbVVV?;d-rLc
65293 z+>8?A*eK+}EO?+RPt;X(@(RV-SRWnmpfHpK2L%SD?t<<FMnY~-7jUDrof4{&hdoln
65296 zT-Okk<aExm&+eIjVN1)1`iOj=Z3$v36Z6+ho`mvaVGn?DFc0qN%2OjcL6C$OVtjnS
65297 zx3nKS3`J8Q?}7jdBkn-F*v_)-fCwYe!8as84_!#M(dE$gY9m`jaTm;;#AwL0_~EJh
65299 z^2JNB-Nl%ki%d<(ENdGnCTzs2*~+ZKJ7KNli<&CM;{M&ICpS~X26hIFfEmQIPE8%~
65300 zY~<&|v+2p!cq5xbJlkEs2%lZ_GZZg4i)v?EbLWz&g9jEO$z=HS!t~Xn<&A-K6-;Z~
65301 zO*WBqrG}-;m6Nv}z3TP3{NiY|p~a};NadD&-A9JROG-lV^5<k8%YZR32cFxNCmUOH
65302 za%{k--1eC`K#mvA$ijv5a2HBA9}&QOHuLeBa?GEQR>Q7cam%7&>a~2l6^$)bp6QIt
65303 z?k}!AXH}A%Rz^4N6WxoaB$|&;;K#8qf-YDGcXs8~*{%85{kg~%zklz_Qa*<!q;;tY
65306 z^u8-+6!V65ExFcs7NS@>u~w7BYtq)K)g5gE2C>Bw_#yT?zyaxQg7$JLz;5lmFuX#(
65309 zQ65l@#-C-yrf&3W_BaqzGNY*G10f8>zw~%;<K5RM7}~G<q49-@<(60ZFDhBb#n
65311 zTE+D-=B_jw8(mEjQJ_E3mTZ;=0wxS4F7Z_liu5<QkwB!Ik!m_I>R1Ien^p9*@q6`x
65313 zV9=d}AGU+@=<VPf-~WFe`I(<b{ttT2c6S-t`RwO~GU?}x#lDBlgB196KiaJU8G{Tx
65315 zFLWNtP?iFzR5n%2F^oHugmxg(gIps4xKeULajKPw7BqA$c5y_M)Aq<-kvC&w&qI6e
65316 zS|yiS(89EC%JH0OmG`X=-T8sM{F@!`hXiNZ;qyOx&%rrb`20QZ`QFX@z$3jsz-ch;
65317 z@isWW0kPG|E;s9~97nOAZrwOI<Iu&rLuUuK9r_ts>|(aS(hf_<-f6+pDnZjEWs7bl
65318 zYaW@(of?;1?{JTs=^Q+8-b%0})CB~oSBu_p(1t}R%{`O(icZ|D&0c@#+LheYRNCCz
65320 z36w&ukZ<p-uW%N}NKRbHhLkX6Xd=t;;}a%@K7RLnY05};6w{?RhAH!5jIl;4#$J@F
65321 zqxbdRkMK_tcY_JA1g`3ec__nZ9}izoVFVnJtQRDYK+;W~_w(5e_5$6Z&%q$w-Ow)J
65322 zVz*r6xex;;u!$f_Y$3o~NGWU`%_6pjW?)-_CH`F74~_~2xGXq=?O5<9tA}$(mqep#
65324 z+jH>j+*mv|lVZ|ud;Wvh&ny+<-PQcQm{S$GFhjhAmD&74B7QZLwhkG^pQ3)vi|-_$
65325 z^X%AGcI+*=qOmoFOJ?;}w!JI}uE>%hDtY(D^<<QD${B4mH8v-TjzDTrp?2=z8OW)x
65326 zVxPdLh@y9g*uOt?!O^qe-?uM3IL2tAHZ$=c_K6EmeT7U>?~L38$M68D5}&8u2n<*@
65329 zJznfmroYMXs*8)A>?#b0V;7fPZ_5nl<LKYV-i5sye~EWji}iUO9Mc)JnEnfq)$D7+
65330 zW|+YkS|}<;s*Jsh)f3i+U<r8G7PW$;MbTO>M*Jb!Bzx3HATAAJ4-UzMNz>b0GvdD~
65331 zY^#!6%gGKCLK_1_D9jaNiL#<4bh62$*G5W5OKOHA7>N}n<$sa)-tkox>BIQ6a|!9a
65332 zCxkT8jHwhwCE=1pAQ4CaV}lC>5(o(<p{}dws*5hVwsqA-Wo@f2c0@#0u^~3Zx^}T4
65333 zmbEQwTTR~QdCuH>&zzfecfa4?@ALlg5@yak&&-+fw5exqY*cAZZdqJnUb<cP@#024
65334 zTTKYwFGh9On&aOVKQ_)&-w>CYoRw^aTO&Quhi6@GMT#3o<aNwS%*rkv<%t=AyVghL
65336 zwE!Kylq0MeFaZw8u>1I={;&AI5MnvvUkNd_9q)MjSawi7-FG~Wkot<pk-~}{otYFn
65339 zCdynLjuMy4Q*=0*)mVqXGWW6-Y%S|!U2F-|b%5otDwsW2vT^J%3RS^h4r_#Ty^x|C
65341 zv6b}J5_on)TpyHL4y9vFj)c;WgTF=y`SWq-;?LtSS1$iaxjC+P=1|T1AyqH5Gsmb&
65343 z``7}47lYqJHRvGN2mYy0t5XR&9{gPR`=8UJi#X+@7GbH2Al-6GvkY*(RQ~W>Z>Cyd
65345 z(DxS^?+@tr%SkE+Ak7i%aQItIf8~%W*tT-0Z7-xf9N-Q}d$`WI7ed3oz1&rLFbCwq
65346 zN~jA;PaDYx(z$`s4-h?&wgZq0(z+wS3FO;CO&hzND<QmyWD#4_NoiYww$tHx9F^K*
65347 z<UHNT0cr1+WR%ZJ(%b*0W{c=KKsI6l$-P}aJ5L|^_=}FM#Q9bT=dgN$5yE=Rg-{!7
65351 zvn$AUms8!k;fZZr0`W+Bywh9QU-A!aVpVLIf7U9TX5d}iT(NoF;vPPNhw+g-oJa6T
65352 z9>t@143Fh;Jf0`;M4rTxc?wVEX*`{0@Jyb?v-v2V!$<R6p2zcf0WaiZco8q=CA^fE
65353 z@xypIKb%+aN?ygQc@3}SWBE8fo=@OM@FV#|eiT2NAHyf{I$qBwb1$F58+apc;>Yr-
65354 zd>Wt5n|TXAj?dsT`7GYb+xToghtK85^LBm$KarorPv)oad3-+i@dbP#U&K53V!niT
65355 z@-DuVFXP>OIq%`Ud<8$1_wjx{z*q8Bd^KOg*Yb7z7yLB-OMW^(gRkdj^0WA__}Tm%
65356 zelGtt-@wn~=kwq2jr;<BA^$DEh+oVv;g|Bu`0x1T{P+9{ekH$(|ABAfSMzK5wR|)G
65357 zBfpMc&u`#2@|*ad_|5zl7+3z8Z-L%A7RHuGvtwXpdkUKmJ$xj;jo;4hX7}(r_?`SN
65358 zmc#Gn_wcPS5{cvY@@@P+zMbFCve=`12Y-NVW%sfN*+c9Wb}Qe>|H2>S5Aj|6Vg3kz
65361 zfASysPkfLM;ZK>sj7bV5Ea4G2%^WGhMTCeHQ6gHzh*%K^Gl2w=D3V07ND-+bO{9wq
65364 z(JoF9CyJBA$>J0-Ps|rSu|O;oi$sT5ES88)(Iu9OWujXw7d@g^tPrP)KG81*#7ePB
65367 zc5#QeQ`{x)7Was);$E>$+$Xk+`^66NfY>SiA|4bEiCyAh@rZa-JSH9&yTub?k9bl%
65368 zC7u?~h-bxK@toKvo)<5O7sX5BW$}vmt9VtsCSDhBh&RPs;%)Jc*e~7{?}_)t2jW9<
65369 zKzt+)ijT!7;#2XN_?!4#d?CIRUx}~9-^C&E5AluoR(vPE7e9!9iXX*KVo(gBslbB_
65373 zeCd-5<U+YfcF4tYiR_eJa;aP<yXA7(BYWivd8+J_{c=FAl&j=wxkj#)>*O!wY4Vry
65375 zd6oQw+$67-*T`$-X8A{XoxEP&Aa9g6$v?@P<t_47`DeLB-X?FCcgQ>CUGi>ukK8Kn
65379 z6{Vt8jEYrpDqbb1M3tnHRf<YgX)0Z1s7#fmvehV+qeiP-m8bGmfhtsERFNuHC8|`F
65380 zsl!ycI$Tw#N>!z*VJ2Ox#;S2@yqchnP)DkX>L_)zIz~-Wb*f%XR$etlHK<0_q>fcn
65381 z)igC-HLDhNoSLC#s#&U4wW--^j+(2ESMBNqb)q^+ovcn#^VEFhQw!8WwMccS#cGM_
65383 z>Rk0}wLzVy&R4%t8`TBsLiJm9k-Au2qApdJso$x~)$i36>PmH$`h(h}u2$EmYt?4;
65385 zFX}<{klLjlR*$Gh)nn>$wOc)*_NXV-Q|f8;jCxk>RnMt?>Us5odQrWkURJNDzp7W&
65387 z|4`qkZ`F6|d-a3*r}|O-qz2WH#Vl?KOIpgZERQw93bRI9;Z}qdX+>GlR*V&E#aZ!I
65388 zf|Y0`S;<z4m1?C~=~jl7X=Pd2)+j5-8g1oTc~-tvU=><ptRkz}DzQqfGV3s=ta9sc
65389 ztHP?Zs;p|Oh9$5>mc)`-3QJ{aES+VrOsm!!YmKwUTNA7!tRt<7)=}2c)-l#3tIn#o
65390 zCR<)>iq&8>T20om)>LbnHQj2qTCC%&8P-f|mep#tS+lJ<)?Dj&tKB-mI?+1GI@vnK
65391 znrF?oeAWVMp|!~BuohcOtWK-TT52t`x~=6_kJW3fuuir5tbS|2T4}AaR$FVVwbnZ8
65392 z7uIRkFRjz9GpzO2nbuj>udK7JbF6c%Ut1fj^Q`l&-&h;13#<#R-&z-07h9KDms*!u
65393 zzq2m4es5i2U1?oq{lVH~U2R=sU2AQ&{%BoiU2olB-Durp{mHu7y2ZNH`m?pgy3M-X
65394 zy2HBDy34xTy2sjT-D_>L?z6UA_gg!x2dtgeU#thMhpb)J!`36#qt;{A<JNBL32Tq_
65395 zr1g~bwDpYjthLvA&e~@^Z@pl>XuV{;Y`tRr)q2%>&3fH>!+O(t%X-^-$J%ebYrSW^
65398 zJei&>Pqt^2C&x3|lk3Uz<a-J{g`P2<B2TfW#8c`i^Bm?W_Z;r2@Kk!LJk_2WPpxOH
65399 zXPjreXM*Pl&yk*qo})ZRdyer;^3-|iJ(E3N&lFFCr_s~oIo31PGtD#I)9h*S9Os$g
65402 zmevF#y`3V?Q4#%)F4-S%LvuR%be_=-y({~I3E~|I0*wozbX8;gFX<!!SjUfO_AOfE
65403 zgTm=q-rw2VHvp*|P)8r6n(OQDhE$PFzUAwD{st4^FDDpN*D%iyQzXIBb=|(Ton8I?
65404 zzHZ-g0y`GBu3XX4*VWsn!DD+CYjA|uw|qGi7e2dtz_+5KzY~Il8u0Z%Y=dv06JzOV
65405 zqo(=#`w&G>LdCZ9_VzS(uI%aYHT(LOwX`Ogh-v+u%b}=<S-wSGzV2=xlo2({*9m2;
65406 zw4sPrMBCx8)=ryD5fJF>7?|c;3>>n<?H!#neEppRy-<AX%4I8in(VhRIMuff8asl*
65411 zOf?`}bU+F0hB@@Wjt{5;ff2Sg*sU-m(Js%g1^QjTBG|<T`0k)7C2^!i6|uAObI*<p
65412 zNV#22hvXVO3}RA3#o57&ARKQ<QIPU}HL|NoN@Lf{uRnHfMBu7LNCku=gD_-m7+||J
65414 z4k!fcAh4m9cCja{_VxLe`PSO?_d{-`IqFFQKC5GuLk|E72!bsrm^|Kr(B?(fO>d?F
65416 z--51%BOz-Yf`;0m2&%9h4oBYlgI%lqX<NJ2=(MdJt2%mgcuLoj&H<gcr7MszX3^m5
65417 z>+c$gIZ!AJGOz;}iF_CV7<`VT3^5cnqoZ$OM~}`h8ldG}-Q7CVSO6<490+@~RH=tl
65418 zm6Z|AT|J;!_Pfn1y9c^fbg#9+NN?Awu0{I2cyGtTE+FiT-Y$PpaZVJ~61tJzmHob+
65419 zMQCC={PdWCy0nNYU$=Nkr?00gx}l?U&9OaQ<-IEh+NxS2?7oCj$Fz1V?^@W~-K&X}
65424 z04buKz`R-$tTDmrNZrWt{@%p{BeBlN>Aq-9i}D^w+PgX)BbqxFmAB6A>ZvC=Fi>7X
65426 zX)XR30!FmkR1SlYkGB`e-L4r+2zbc@0b(n0FkA}{6i3ANiv%Pbsh{O_BQb_Z6=kT0
65427 z(GHsgC>UC3@X=;JKrGz6DzAz)!FjcAM2#C!O)`TSg3Q2Uq`&;WFpwUs)-t0?lS6CS
65428 zNT>*#2IZ^4h(y&pn-pz8^(HuNgl;}|gqR};LnXwtR$@anZQ(IO(<{z+djM>|nO}=h
65430 zW>@*T2b|@5tGp)IWP<H61~_-7sU34?M%sdddDqmN?>3w7w%11l(^iLpY>{Y&*|axh
65431 z)LY}Einlgezqz8fe*n@uGOCI3+k@7*p~_rq(5*JgQGw>>NG*J%n&AOpS$Jb07-`Fg
65435 ze2hP=<074KXo)bN*0>OYS4a8f8&g&~<;SoU-VlCzD?{pBS(zM)LSn@@3qeT>siHTu
65437 ztrKXkk8*&Ol~KB@wjsaWu-|h6?e*B9VajFxz?=ww0E|p@z{pT?Pa}<;q8kltWTP|t
65438 zMkD)(#$aYq&i1u98q-=CWi-Zsnw+h!bON;o37VV3gM$^1-TufR8QQ9xK(zyCt&DV1
65439 zE7}2oW*K0!*Gbr_rWgYP%jtk?%{Qrbdh}#u((ZhzCdyAQ$|6!jb}e-WM2)fgS%`D?
65442 z8SkfUpxdf8Xak^A0ia#xC=K}LFnYC4zE#JYL`GX-=3NzQf<|`?9g@3lttQ`~muv`{
65443 z9NV%4#-%|+=v3KSKYbj+Vh{eCoC5}@tQfKZI%3#^N|WoR%$Z!PHu=%)jW*zRr_d1(
65444 z9D`Pm&G0bI_c<{JPpVo>aW;A-Lze&uwiAI42LMJoXrr8?q$UGub`F`UqMMB2RFo6+
65445 z8c>q~wa2(vA04bE4Vs<9x%PUq3v90s5e>hz83VAyP*i(;!Z66t?5d&-<qR#*Ysw<@
65446 z_s;R6lg?fz2fR)?!%NOVq>~?zy^&v~lX_skjB!V0l(T@!C}#<k#`FX8ag<SMa-lLr
65447 zp;{|r&AvNS=h~`0c9M{YD%ZQAh-w$YTOFd&AxT1&zA`=pQyJ%eD+B{v53wHY?!u}P
65448 zLetcT3}--GgCuXO22*Q;4pu{#>`W4&0i3=%1)?h23AES8I>GMVo+Zx2)zRj_5NB;P
65449 zaX0Zzu{O)=8Uo5?#CuJ!-6>3<wN9uxwkcr!wVD{w%|>dk$4+e^+v8jo8l=LNX>~}F
65450 z>NqnAveT6YB-NFs%AEv6$DO1-q`#=Fbdd`N(jk3HQ>-R+uorZ+u{I&J6Kali%>^q%
65452 zdXGK4aE&scDK13FIHWSpjW9YfV5=*>D&CD~uXpDGZFOVZD&P&NNp<K-K$EdL(d@Bh
65457 zgpQo%pLdN62(GzmP-%j-(bJ4cVbnC|Tr%1T!F1a>;H!yrMApO`Q(0n-$F575uF@Qj
65460 zusO~|KqXvBU><28YNH(a+pG#e)lR6j(g}G3w3?%p-mGS`5e<_r1Dre4$g9SHYGcgh
65462 zS4K4&^3-VX+!+Zyv$2Nfv8ysNFspa2C{>%wL|$WMs41q=C3cNYv1>HVg0a?9>0T>p
65463 zb|HXKjZP6TRt|va=E6d=vBFbhtQFuElDT%^?jCEMvqzX47`q-`gIZqK9Nz2da=eBm
65464 z@fs_gUUOH>Yb-H%jXE@$b!c*x+T<#=$;{atdU+$A8xKyPD$+S%iEs?DBb_~Zgk#7W
65465 z;ph${9Q|OF(E&y}`;-U=wcV59(3!P+c;4n7#J0HyXl<cAt$P5}7P{uw7BZV^3!N@|
65466 zL#NB$kolB%nAH_;$bicmIzsk_479x=HE0U0K~qQ#nnFe-!!G$Wh3tPBdrg&E@7$@t
65467 z;I?;kPV@D5F7N8=f{r)Y1k3%qxDIq{$BGCC=-y@n1s<u-kF>N}v>!bZ&kxWkLpntf
65468 zJVzHc*SDIWAf66Bg+cxVDa1=CA-oM}?(18ya=<4csM<Qgn+jByKpuHKIIpi;c{_dG
65469 zau&p#;Opv9C<9h&C-@TN4iYSqz!Z4`IADd<*a?Xwut3iAEta6#5)@h?ClwxRkw9b#
65480 zPJe2Q;|!?Iq@~MMk-&LSKkPphYQxd~v!NRFpAhv|!GAtf!;W@$^epU-4mO*>V5<>~
65484 z&W`@B{$v|VM`a!8h-LF;tz0mryQyp4g0N-tT763w`8xfl{962@^%i5bpd~N`^+Ul$
65488 zy%-c;hrlk_>H53Y*y;LFlkH#!3b>uHr%PuTPGyi09EpY4AuNSL5q2>Y4yST-5DT)?
65492 z9tqX@>90p(V>KVf>ip_;J?j1C>-_3<e)U9$s*0+y`dJ%J_$k%%T3Vz0LHp~Zx<0$J
65493 z)8C!e_1RsW4eHlwg0I!sujz=|U_`AEF*X=6)`%Dvj2LG`j1NYPHzFnkBPJLTb-{=_
65496 z(GcWEgTar6AU_%mel!I6(J;mT#hXKb{US{=?Egj;Ca<%4J7J2s)~7!(@Pn-#E8?62
65497 zZ)k*mJzRq@tqPyq*W2H}z}JUgbuH))LP`El<7RdCE?=-xfBqWn_*xU*PST%unU#%q
65505 z+$i8>XtL(;Ssk6zdwW;lCwMvt>Jb|ZmeYq&F(#rq-T~`xm|RI};#{vZ)AuE<1ARX1
65506 z3-L1n2MCGcO%T62NpPWX{*^oo&euH<j_bSLu72#s{Xslq=;&vicQ^#PCm@QudjcEl
65507 ze9is}-Rv(NxImX_ceO?b>H5+>P-w_43XX5T{gt<~3;B9xZk%)E5jqxWuTKf>xG7n3
65509 zyn&$u8401Ns>D!SN1yB6fsT$9iJ_>DKC{#T7=cAOF=L~A-5rY$^Yz*J(*4VPXo$ry
65510 zPPZfDzYoM72<Nc~b_tX0a`@xy3U(FvPrx5%ud>%5{&o1{>`nF-gx{43jLS@!34XSm
65513 z5ME?0f^dhm1b<n8&45-#LA~)VN6F&gkF$9AlPm%LI7?)y5Ke<Xj<@ndI0ODT{-y|o
65515 zvpUwu6l-F~0%j_k4&i3_ldJ{)6y3JWp}uVpp3P2$a35O>vFq4r5dI}Q9l~d@Uqg5U
65516 z{7H5m{Bd?Z`wfIQvWp;mG4RhK9tfhoMbx*5?iSGfalpR<)K^4n0kqBrYK|g`Bb5c-
65517 zX9nS0)a`)3L){7CyVO<)->bGk_&&80!hcbZK=@I$8^TYhJrI6U?S=4jY9EB3S1&>M
65519 z_$2ETz|SKd2f3^8mM_3BAs*xJb1>j8W8=Yn2|V`@r5Vw91W`8}=-SF6p!Kh^7%Cwi
65523 z=f8XIJ>VX22sm@1zGZD8{`3ve^IRsq4b$7$SYMxS0ZRl!-ve@A$gH|qbvdlCp>7uV
65525 z<i@i{*sE&3TA|jfi_~Ul%`T|<e)XlrtXM0@s<0-FI4yPO^or$E&$#uRO}|zfVlOzz
65527 zu@Y9w%G96LZNTe$fX9ymho4r@QqHflcX<M(&tmi=8!U{R0=Yr#>maW-R;U$_Q=B|q
65528 z?2)Jc+#l4ZSKH}B@W<I8{BbVv=T-PfJ`(&`9t(aFhnDaHUI2bE2b;yqc`f+kIkbjP
65529 z<P*U^njZsx9S7^n8+jx6Q#sgRK7-E!zm0xU>LiZ8pRtrL1OE(uCjQO?2dU&2^UJ`$
65531 z_j0f){3Q<71aH9w|8@Qr`0wy{z<-y6ec>N)=neQs{3Gx`;h%v28UGCYFZoyCAL8GG
65533 zPSJ@!(uF_MCHe%&g;+1vgMYsG4fq#`3&6ifK&$b#SnzKVw}8Jz+y?$#;x6#-5%++<
65538 zmu$DB5dM;bqEHxVK88>uJQVUkXat2U2!&Ayt;t9VNwQ0VYzhOrEvR$`x-O{y$KPJV
65539 z5L*0b3PsXyNMI;}dJqhSQ-8p;UZZv%)Y|EXUj=xb1KtDheGYg#z=s_0%}nu12Ydy<
65541 zupx)oAXtu(U@`o6g%<>F19#sAZr=kwk?sHw-T>Yhxcl3__uIVnJ9y_e-tcYT-F;5r
65542 ze(uY`ZusxycHhVS0N9R)z-BxOwqg(1h`nGN@OEtf-PrGdP51z8!6#q?@D6O}{nz&G
65543 z*Z#Y&BmT`z*Unq4?K`X|1n#fK+p8yoU6=v(V1?_R>GgDv^aaD*AdUA&-$FM;-vw5{
65546 z5dI9FUxWK@LoDJ5KM3zZpB)))r;CiW@sY{kGBqyO&fEWv-$j;#tAV&9z)b?z0B*X=
65547 z%>s8kxKs2yi@+@fw_=$5R++HrV!J8LY36&8XAP6jhEN>gFAU-%FB|5)%}~#)T={Pv
65550 zh*~pTo1#vqy6$q+`)s@J=-lat!wr`v7Rrph2;2^EH^<%{yA__7gWIItb>MdEv{0|u
65553 z24p-6=p6-gj(P#ytKi-S_W`(1z<mks8*o2vh>aFd7m(@bFmTcTd3n)^KNFW849C2p
65555 z0`3ZM*MPeL+^yj51h);`PDl?r9{mWoJ>d3&dr9+FyXe=!?FV-t`m<=T%hB2{$GrD%
65556 zXfOzAz-GsUg9CdV1GYLQ6I`xe-eS9BiU0=t98&}C2yolMfjx<t1g^nBr|J4R3*7Pl
65558 z*srVqfgTKNM|K7EH=uV;yRyll_q!c=T<*YavhyH&W9Gk@^53oNyftW-h$j1N7kl<F
65561 zV!!#{zZ<Lj(AXx&JG%djh5j@41X~u}{TuO0_e&%zPWc$7-wDXne6znn*$UymtIu%u
65562 z7jFId@8!!?um4iM{-bh!hUT$9!bA{el5sE-jY|X<t)J=Oa=;aWD+33%8)lB_v<Ac2
65563 zyYR=^`|u~&hwvw1{)jWkPvOsEU%;P-eFc9b*f;E37(;*0JuIAu@ko}+V|X0P;)%SL
65565 z)(o-Dnq|!vJ8@-P?1I@Htt+YP*msPJzwzU61&1)P{0Rtm@x>6noV~`loWa)vW+A^G
65567 zHi0wf-@v?^^V8WS5dK{3#kus*`%vO^o&@1Z>`{2@3|zNjZ!laTTEI3zxQf<z&!=}!
65568 z8XAIdF_sRq!x`Yez$?K2j;{v)GLGvq4BH5E#EZb+NM-#USI0yd!xgJI_AK}nw3qP%
65572 z_-nWPc)-8Kv2LmCWbl*OiQq40-QYLiZUY~S`w!g5rqX(-1%409q}=v^zlq%leloj(
65575 zGm)wygKD*xEd_rE?q~6MYVU<ee|{o6oFwyO@JmRxcd>X}oy7HA-b8$iW$n~DY!Txq
65578 zaxSuY2g(>&6qK}QX$2PdvW{gyf6xk~st?zm_;z*+_!i0-*dbicZKIZYSw6}VwWWfC
65579 z7Jv->iCT*EPiNS=m)IGo7aZ4=ZXl}GvVM}ED**E%pH6GC_d|GywUITL3Gc?>nmK4I
65580 z*aZFvY3nW6Iz9o{kwre#2q}j2e3!U<FUq-m5_vr|H1r_tS>o>$C$T1yF<cw{3rT_^
65581 z{1~!4$Fc>u`aJXx@PA-qA@<uLl&jy_D|(m@KMeE+br#Z#BiL-f?_e`f28P}u?dv1C
65583 zz`qV{0!ZV-c8zK6Et1b?VRF4^C-fHMX<w4jjwENbP<s!X2(}=McC*6iw-V!MH!F#D
65584 zvy!3i>!9B`4frt$Xm%!W?^p0Qg`ER`4eZx!BfNJZ*so@g(2Ln|v?n-&_5^3rp5QF}
65585 zg(=obyMeRSC^d@p(>~yUx>?=KHmEIX3p-EUu5M@Nt2@=5>^JIebvN6nwyLe{0<}$T
65588 zy~+Nl-d1n3>+pAw*!8qicBA@8ea3FG=2||sg?0(=qut-_K+_XwH=F6*Y}~<CU|Bx~
65589 z>-HJgn`r16z5$y5z<vU14#8hK?VDuq5j=`zLVp~?@^~Ed8TmYcC$Ius6=j7y6>Mk`
65593 z4`r{2a1qX46_Fy6y(XeXG<#hnibVE?7$rurH^pc%n!Sa;@yFg4hl|76eo-rG*}LKx
65596 z$`~2Lm&qKN!@KcU==gG3Cd+uQESKecg{+Zd`KdTU;sbc%fUm^!1$-5ZmL~JncwT`2
65597 z4#z|MAGnLmzhMtBR@GxV@j19d;K07*U&v@vL3)_zPiJCT4?K^y-Lj3~E}^GfHULj_
65598 z>maTSp6kJ#3t=y~LU1`uEtv#vI#Y``g1g4yZUFZ+xX-}t1a~W>D+hN3xLj~Gwp)Cs
65599 zj(^0?Yw;d%`}K1#;9}wV5;&0XB@OUA0QK6a-6c#e^@3XfZYq;de{@u?jD+}gfIkV~
65600 z@0jW>g6CksNob2&4DUmG<kC5ix3b%?Bpj?>JhLQNDVYk-Y{+v4Q{YA{N&dg$n9TqG
65602 zo9RJ*<CDs3u<=W0(75w6=tsX|xWD=i?kNrZbMPzb7bnp89!5*hb5KfwV~A1-eLt%f
65605 zTKxE;wxSbU^?AVszZwX=J?aBzOwO%2H<+-yRC+5wuTfu`^c-`OE9H+lFk#9`4CEJ<
65607 z2>19yWeWfr(AahQxn4id)z6I~HMs=b6*<=!xSyf7&EK3mZT{N-N|H-*ONvSyvXHaQ
65608 zcz<WkBjE3KmF$3X_Bi33mvUa$q5b-KKtDfo*PpOo=X__tgQJxb9!<MxqhrmtMkfbC
65613 z0k|Z$0{pQ7cw#P4G`A@L&(8%ro7-lVkb8n7elhsnjyUMKavi-@F7#Bnf!-<i{9Nc~
65615 zJ{S6rTvz{@`(+^XO&-|)ynwyW{n3Q;!t$aGm@I!@P5>^<13Are{W^VKK)&;i&NJ+J
65616 z;d)ofsd+QNpW}y5?#lz)p0^+n-<b#UoHr1BV+?57n9cthrnlC)V58L1^Gh%KS8z$D
65617 z+kTt!Sp<?(vZBZs?G()~0-4G?H&EI}vwtsIoOg*69&?#lz7x*7!kvE}$X8xKzVdF(
65618 zgZ?JZ(Wm6?1owyohW;bZ(VyhK1nzYQydT^F2Mqm4-q+0dmlx<m@&@yv|Hu#b!}+oK
65619 z&{yPV2Giz)LgxqUeST4Xxf9mdBOKvL;2In-^a%Nmo**A=fBq>y1B30)U+RFt>gNaS
65620 zyFEV1Kg$sh7Crw$2Mks_|0?GAm%q8l7@d~9SrV{sW44UZ_A=i!a<cywfu$%pqR1G-
65621 z7F|?i*o&e~MaEb(e@l^J4~n)H?Qp^c_4#)j>9-ddHX#4OqJX~VKL+lpB16B6zAOri
65622 z`SQVX7Ymf%{8s|FH;aSgIcRBdVR4y}KlMir_)xK-!}&iH1j5Cjxy2_HgT5AcbnSJ2
65623 zRG@8mL8{TVY-ao`$alddEaYEtXEE4-Qaiq)U~DNX^#tP97fdXuFE++<1x>|Q7;sCm
65624 zF@`H>E50)j22CyASsc)x_6u3azv4Z`#(1sxrQ+9}aKZfIfIby0cC{za(-Z`Bx?oK)
65627 zbM#Y>uj+N%-Qz2N|68c%BZY>{hr<5xSN*Qx;lio<IYU2nA6FQdyJ%SVb;FO}3aRHS
65628 z4D@I2{<H907wnqV6kfty{|c{g!Nz>2@CGxscs-6^o%&VinsFB1X+YZwce>&qalw0B
65629 zu-2_Yty6_Bx#0b-^aot9YaUc+^ks$L6%N{=G0A4S;^;sqvDlEIlBY`c87XfqHriMk
65630 zSsL$zi*}p#x#(uozLy*<G3+VS#n5-#{uc-O+~UvBJ~-gPpnWK*!TzRXl9B)Bl0e@y
65631 z4?-mkCDV=gStWt_R2gVf$tfj)`O}zi9B-5u^P`e2C4v5@1hlB+!IH-Ub#?W3C9jzM
65635 zrO?-najh}9_0N&NV?K=kO2SJ5?*_*gI&YY%m7ZQ2n4jT#ODPME*Kz#rgir1>_2u8`
65636 z$Cyl)e&mMg$Cx5hKF5@s@;Ro)l%Fw2lo(^jF_Zqaeo=fw(Ef~>9;#1cW|{V6%<-l?
65637 zhrp+p@;zpeX}`uSHTB6UpA^5slt;IGjag;N)0optd2-8(Egw29P;$(MAU^>zX*tZO
65638 z+dY3W=X3t~pu0aFKEL4j-alR#^PnrmV=nk9{Tx1j8fA}p)Ai1KF8H7ecJ&X8Ep};7
65639 zhwgz&!E%;vDh-SQ=RvyCn@a=z4chn8t)<3%qI6fOv8GV^OsO%ZD}A-p7{ir*P-@zv
65641 z{9v}Xh?(sz@|f){iZt6>6mPb-DAjClQMTFMqI|QxMI~l?iz>|a7L7IATQo7)UibPS
65642 z;b{HgU+*8->kq+yKexUy?E1x;e?9;GpUiLF;~)3@*0~-^@$T`Hqdy<6e;mF)9DY1E
65644 z_xhK6y!qdbFH4pVGrs&c<2(2G%Q?O!_-DqagmaAFhaI1~#^e9(_|QH6caKNi{il08
65645 z=k7oM-FWQh`cL<Gh;R;l|9`E&2=3n+DIEGc-2PD6fD2ylg4g})c>n%x0N&_=FLA+F
65647 zdv@p(JW-2ZF0=cFJ_LU?kAQrh!SkDZnZy&ITiHIy?NeDo{$B7e9efMY>>gT-XZMC)
65649 zEC&hm2-cZnO>UQ8g8$VJo;g@W{@r{B`1A1uANza=zq8$mU$YLqIrJ%>9K_bKCneNP
65651 zw_weOz6Sq^A-rGVUIBIEeKH=xH_OK${0E7rch6>cDq@|8#PgLycxS+y{B}$~R15y8
65652 zbhpSdJXOls5Z==<^b?-G{5_pq-ijw%+3%@cpAF&N0dM2i@oWQrOUa{$CPMf%j^Fh@
65656 z-4TOxu|;wO(dQWOmr@=2=q&jF(fPJPl(d=Rci?x?-78h%Vek(d+J|%&y>x>00;Jea
65657 zc*?R)DC8iWGi7upw+YX8izfWmp3S8kenn@Tt-%{m8rdR<U8L}4fTa@8gx-qZ@AC)g
65659 z7&-fQIz#g|v=w<*f~SUu@ErGP;ycn%r1p0CNARx^c+&h3>BS2I=*IaFQae%Z2Fy2@
65661 z2mU-U7tgv%&^6(uI@~AmH1Wm!bMTwR8{pUQvnkJ`kcL0qfOM8Wk!`_xvY$}qzmV@!
65664 zUpk1qIFZgd9T=R1r<?hYK+kgdB7|E8@r#Gwqh#{=cnbu(QlW($t7b!*rxi#q-!AD3
65666 z^H`NeCy|@LPxz@EPmzmDiPumc5i3?w7%8w^LVB@SqU3Lq-$S@Y;@1G(Durab1y7F4
65667 zGWs^66Yys-l*xmGe@59D{071oh$|^g3#CWe?iX0M0@C+ysQzE#4Np*3HF8Aamjqje
65669 z8R}|@C(4&%%~_fp58)<(-+Y`Q@%9Wpcpmm~LqK!x8^qf}Y6ihp@I`}IpZSA$3(7_E
65671 zd$b;WGluz~g*N}e!3xN2iv;=%9U4O2FB-ZVWl3O(7Yfw7pN6nL;X`=u$`>dz{9Kg|
65672 z=|4r<@==Hx`d;Em^NZAa;yChg2&I&ttnd!0Ug|5)mmux@dx>At{28T`|CTte@TLy-
65673 z-VpY}tr9h5p~Np&sz}1ml=$_=eENo9H`$p_kk{-Av^M-oIf}T0cJ*B1=0QB|%72h}
65675 zbfrY?j+7N-pYe-|t>S6Q2UC7Hh}PqLbrz&~SAg!wNvH+t6{G`OLp{`|m=Ak@5U47~
65677 zhI{25kR};zg4jc?yL7M^H3(@gD~ML7Bfms8y>*Z@bU9grB86Y-ye;w}<+)gj`kpv-
65678 z*<dMg6DTZG6yCUT8A>v5BTKTC-tEPAML4!v?x!?^C^_t6nMbukJA4Y&uu$S?=M)QV
65679 z`&SA_V$Tj<O*X_wDe()N3d-j_i5h)3*^@;W2LDCOUt76jNUrd!nr6aWj5QR~6n<s$
65681 zAoci>#K$*>?m<hAoPxHu5O=VKl_c$#V7a1)?BO=D*q2}|pE$IeVr`0HZAW5QK1-Ul
65683 zk64dscq!H7De4i{qi)J-ED>lpNHj!Qy$$tLOeP7*L~WIOiFZX3zi0YP-ikVc`HS;N
65685 z;giI-D64c2Ooae0@UQWPB9<-DBJCGw&AO0Qat={!JnFLefh_!~0>4PB7G2Z}fWC|C
65686 zNV{_dNE-iuG&f1$H&w6FC~**NAd8at70z>{^}ofo14kODZw0F>vt%o3AEp;$FdxYI
65690 zR=Nr7c6FD!Tiv6!s{7P-b-&u79#A{gqv|pBxZ16rR8Og=)idf@wO2i_UQjQpm(*+O
65691 z4fPi2*M4<S{Y`zYzEEGPuhiG-A51`f?Qc!(8yVl_<xKDjnE>Ny{8F?AZ)6m;^rh%b
65693 z6F8Xh*M0zQE4b_6-9m6x;L^dB*{=3xaJTC;JM1!QcWJj9+%w=_0QV}mx50g*^TfQr
65694 zWbEi1jYIb%ypI?7^f6K21mQ4UCb~rJ${aXd2dYoHZr^aunJ#CT_x-Nw-#WWqnCH>j
65696 z8*+_X97pF%;^@>x9IXn)t%+X%KCS4+(YjC^t=`7bnou0A+-B2RgG^d=i=%TTakN4d
65699 z)7gvolaMm;)b{uRzaQTd41-TAJ=wHA6u%z*ETVZlowJCib=`P6QxQ*Vy76>+BA(W7
65703 z3ldJt*c<R^y*KTMG$=oTPFN?9>?P0%>I7QtP1sEN4+Q-LTJ=q!v&#vz;+sHwbP2RW
65705 zsdb68rkhCT(-LVtH<7e8k+e0Dv^B9l5p*<>G&GSkG?AnwaX$I9YMV$Jnn=2txF*CW
65707 zELbAxa>mr4pSX*B((6Rh>qOG)MAGX-((6Rh<wVluM3SFG(&a=dF^P0JiL^M0v^a?f
65708 zokUukl;iM8my<}BlSr47NSBjHi<3x;lc-inq%|3|Kaym(nlv$KP7+9H60PedkzOQ`
65712 z-X)XXCEuM4I+y%l8q_G6G;SE5bTFB8Fqw2PnRGCjbTFB8FylbbPbPg#CVfmMeZ-4h
65713 z!6$u8A$?3CeM})uOd(B7Ax%snO-vz8Od(B7Ax%u79y5h{%oNhc6w=2O(t?!v<dZ(8
65717 zv?-PJD3$am!^YTkAZ<z|ZAv9=N+oSdC2dM2ZAv9=N+oSdB^suZ{AXN}0r{ow$KJ&5
65719 zM*5OQ`jSTal1BQHMw*gFnv!PsS)?gxq$z2nDQToB*+h-B&FI^`VH#;o8fi@$^;T)r
65721 z=~Rad;$S-IOFHRGdPRB(`JgN5q$%m7De0ss>7*&?q$%m7De3dcCr!y9PNkE+q?4wk
65722 zlcuDfo(_7DNj1zOjmRRc%-V&1CbcV*TAD>Vl1@66Nv%#N&B~(Ev#9heDlv<6EsM&{
65724 zQLQqGUs*)YEV3|JM6oQQa~A1xCUGi@G&+;`l}Y@{B3qP2I-bSIC+*H6?am^aXA%dq
65725 zNYgVnQ<(HU{i1YeU-~AZD)BmtIFdzN&LV4&ezU{3sY>-vr~0Q8<<qI9=~T~js$n|S
65731 z+nR3cwXK`BRk1CJo`cxd#@24qO{Z4cHp<p|T?bnS8Tqz;+1ec+%+t0f+LG9o&9(-%
65732 zj@veYG}^FZw$7g5@aL2NuWXvrM%h-;wt)^?r>!e#y=_Z}v0b~!C*8Mglx>}~Epl2R
65734 zyf5Mo8+(q{uxH|`A-`JSUeG4;Z<Iek?AdrHHc!Tz*Lm8|n~ckuxCSY=OS~ayseA?e
65736 zxQBrE#It?4L(3ESA@Hj>?l~0U-l?36IkQh_uW3E*&apGm=VvS2GhB^68<M#5952R#
65740 z_>c?(Od*!e6L5{0O~xH&&au^O8^?Rl2E-Vs!~3-Vzk+T&zhC06;JzWeXKIJQ6}57K
65741 z=Q2(c$3n{I1fG((L*RLeh#|a5s)^&CKoikwpSXkJy-~PpbeF{Yt*UXqk!=>;;9pPq
65742 z<RIVKy?CyKg$ca<>S1cpPTXr{58y8eumgCT9y?OtX@aZpcMsU-;(p>3?l~;CaQE*F
65743 zkp=#E%z@oarylwRo;X-aXK;E2?jFn*xPv!Bgk!A)wyO?r6Js02DBzAq03XF@`elG}
65744 z@lR;omvoNiAzU?QZwtCtPT=0xLWMWJ?Z^F9kxZ-g9+XM`Yb=*<7AV8x1nw-|fm~*V
65745 zRP)#P7l1!p;3<X+aOaIpx8+kjiF8(2tG_GULrzhgcD#?I{kJ2CCO~Z-MLRPM7VeZD
65748 zg}0UU2+$gFhJ`IE5P1IRCks#6tVF5i9)<f_$?83<p+Y%)9{04xD1~})I-N7BP`D!A
65750 z0)O9#FB9+K&Nk`PYJn%Mz9!u{AdtexlU}@vyCVEBg?8ywD<0DCw(cP-u>-<?wJZqt
65751 zTex5My1Ey_Eov8O5ZcCHShzd=l!fOb{%%c0yC;gkze?cl)48}C$!9A(qw$%*-_SUf
65752 zPS$)Wkp81k0{Q*42R=dIFKKL|{l--Mg$n+E*t;8WE2_Hj`?J=}?7h$XK7>Yyh(?4&
65753 zNJiu<Arcv>8JQ9xA(AN)nGqSHDZXU*PG(AGW=2Nljb>zqWJWme?_-MQjb@}~WQc~u
65754 z+51`Rdk%24y6^k{T=)Nap6k+UU-LWr%*>vdJ+o$gelxRX&pb>2Qrk$W>j7K0*AUln
65757 zPgwp|+5tT$bsK?zef$;T0kl~gp!ad5$&-eD21tWzS^78f9_DK8WZHaPgei5sW{k(B
65759 z6XXfHoX8_}TO?zlzKSKjAs^G%c=gpSRo?DW@ieJhE8J-gr{w4sTi-MFwbqk#TNwEh
65761 zwSl-rPg7jSG=Heqm^?~;OZC~J*R3k;`dg2eD^*-gJD??e-wypu6=Sufx7rx4Kz_v9
65762 zkM(&Ut*-R1{yn8ji+qoz_C$FWb=SdqAD8oJW$<ll4kb<P`{GPW+8^~(P?TS~Ccn_q
65764 zx8e~yO}$4{DBB}-+d#EV_hFg8iBS59Iu<p?`=zesM$yjbAf7y9%Y&JtZoBa==KBk6
65767 z`IcVJaYD=9qxWJX>Z|4S`dQDmqt%A^jD8B3n5S!RF-F%v;#0({>^2pz&~>tW+}0)V
65771 z-|DCIsI9NtshuwMGuLKG{j0L?(PdTKscT48w>(b$ptsSlwKZa{UMf}d=o;W}`Wm=+
65773 zTH;+gCscFai*l>i*rQUJEAA$q&l)(2wed}zSE#x|+p$pRfvW!3pPFNTgt|-T)h}!D
65774 z#aC?o#HY!2mx`;j^5RRjs=eh3``zmOU|VO!2UvPt?MvDCj-@lMEtY<U()TRg-f*gQ
65777 zDV2Y>RdysVwX_sZ>TF-O>N2S^kePa4w)L+V-=v3%AL{pFyQPel>nQm@$KvyJh9m#1
65778 zqd3vJiIS<m@3(B-hT>9N|Guzo>tEMx*VB=v&V0lq>!W-x{jEQ*TTrU4tjpwEbsHA-
65780 z*WJWl5d$)cPB~;x%ZNd<3{^%3tv03`QoVak8v|8yNm>`YkJbg_X<aal)&(D@b-{_W
65781 zE?7wGg7auya6YXIelMT2*V*fB&ra+|Di2m3w4bn_wx8`@XK$$-um0O+@341NjLPsz
65787 z)#ldb)y}Rhsx7H4tzBNbzIL_hR@82-t*qTyyQg+vZC!1B*NHW+med~UUQ&Ca_H^gA
65791 z4s0FVI;?9(>xkCTtq0d{X+5NMLhIz#sjVlpp42+Cdr0e?)-zhqs2BC3bwTUG*2S$C
65792 zwqDkHW$W_R8(VK_UDbNK>Q=X|X<gg;P^;4#wH95cw{C3R)VjI#h1RXD+q-XVZM0c!
65794 z*LPjewxaFUwv}ynw%yZqU)#FQ9c}B|ytbt6k+vt=o^E@#ZA;s>wjJ$8d!@a-eL(x5
65795 z_Mz>=+efvJZ6Du$MAz*0N$tn9AK!jr`;7M4?WecTZ$GE~-1ZCFFKJ)aHMafQ_8Z!7
65796 zZojSlj`q9S?`^-o{lWGP?LpW0_N@KU_9xq)X@9=!-1ZmSUuoajAv<avogD+aj_DZO
65799 z$8??3Ij-}t&WW8<>I=K;_0`?u>L=AFcOKh0tv<DLdOfNa-HYmt`sVrz-An6RyRGil
65800 z`oZ0M*GJcHuOCuh)qQLC%I?GJGwX}H59l7*J*K|Bb5{Mv`kMMf-Q&6^*5`Cjsh?3_
65801 zP+!}9Z2ijaY2DN7PW`g(S@jX!b35mD&Z}Qo-&kMXJx`U)O`T_VF6vy;spipndFR!g
65802 z*Q+sBbl%#zQhjzv_W_-E*3am?r}Mtfb)D-wz4{@YN#`S-PjoNoe7bW-=d+z#y0WfH
65804 zbGpt||6S6xtn1pY8@g`px~=PuuDjIh-md$*9_(JEYLumX$IH9#>At%A`tB9{cc=RA
65807 z>aKV1t=F60CTdF@);+O%O82pP3v|!wp4&aI`|SVbyRGY9-|clLx-RQ}y8BsOQ>oXs
65809 zpvM=Z^m{SAM`t)E_ULCnzPq7+iF9+*(&Ol<8BaI$QFEZ@A`Wj3U>t4tdzw=F-cT-^
65812 zIuCyjZJB@G)W3@URXvyHvyGpq_g6RdG2l&2-FiCLZL!6HO?{r~9Zh|n?L*w*bYMfD
65813 zwL7{eXAOUeHK5NDoW*?CGzZaN-$`>{L+3E3Hg$&fRej%;nA_A@<+Pp_zO`P4Z4G_K
65815 z>N~pbX{wyZ_@!QQ@#Tg-(plNm?YOt{o3Yn5^z%ITY3dC8uRS_{{wZ7GmF8Rdrur_T
65816 zzczI{^d0=V?4qVVlA5gVyHd-q=l;0fI>seE`uJrVcgd{eoBl^bpBuTPp-aN$4Sj@i
65817 za6=zy4r%K1W-s^XBl@Qrx`Z64w}Kc+SsKZ@8rY+caUN!Bf7IJcZq#k_<-+Dg`Z!v*
65818 zoE6{GTSQK3>T{A4n)-M7%Z5Iu^pl1@w{v;pD!#AIke_Sl_U|X_`)Nd_sav~$t)X&J
65820 ztC+$D%EQl^x>f3C`u|o(`Id%0yLf1$RPn>yt8qg^ALp)Z>NAR;Zs=CJ-)iWyG~d;C
65821 zq=`>8^|#ooIgRP)tp0lXf3G=`?WN~_9M7#irAHq#&Ti-y+|TNDB|=KqbbYsw@lB?A
65824 z`^M%Oe8=AJqL24a<e9u@vgaPjJx|MY`4o;`tKt;BKE)>u-B$X-=C7IBbt-<nsh>bQ
65825 zuc6PH{;;W^)-a-}pIiI+=4A}kEyq9Hqwm9;-s4dl=%e66nf?S_a>V$?q3pBz?ES%d
65827 z)Xyw=dsEk+9r_t0^4R9*Db>1WI6|*gRSu7#{?WD8VQjS-P2F<;1G=t|pJ_g%kD8nM
65829 zZ>l3fv9)=Nt{)oem`mEMrKJsB!q+$T(aLqr_p&DS+IUM--(k64*9qeE<^t+`y~U5y
65831 z-8Gl>d6fR{s$}ZA>%69Z`s&_2y4?Om4;8miG7H|jx(ukTa~|t|ChPn>mRaA!F^{GF
65833 z-=x=!Sg7x_QG16zQ!!QFAE~yWE{*SP>Z9Oy>usT;zN2o7J~k8YYU*QrlRJtI({}{Q
65834 zuQu<dB<r(n`|DC+`~w#bZ|WoT2b=1s&=}v)HUD->@>u3FRM!ATch5H{vHHB?v3g%H
65836 zxh(T7M17y@OO&FfUQ5PKr1q)zwrdyUNUqm>8_Sk8w1an3&L`-)uK9FBueU*ZZHvx^
65839 z%V>N@FS)9J^mWFsG+tu=`Vvte(VK=oOV-fYjyQ@tHj<`Zk{>kn9Vb7b<h)I95#t5!
65841 zOVqmmXzH_bCTcv1s-GZF`%Y7zMH!*5xXE`>8@x)58t9r?{D8QU@AVn>%FCPIQSlPu
65846 zGPKV%^u2(WvVR>z?RT>l*|>!%-_-as`?wx|6(w_<R#nv``p&SIDYyU0r#3L=A2DS(
65847 z-}D+icjMiS_v<=@Z+Zi@;^2n9L-%$v#*2t+8v0D>M5T$n>->_@Zaiy9VVTbu(im>E
65848 z@g(kU^)ijOsh4H!qh7YLud%;TG2X6TZQOy=Zj3ZW8=b~M#yI0G#`}%K)VTV-n|+Os
65849 zs@HzTDe5&$seYdN+=c3OfU#7)-fmo?Uc-&c)axC_Rq8duxK_R1$<uB|T0^a&#uT1*
65850 z^C9bp){l)(>AQ4{+1B0Gy~Z5t=hj-|bn7?P24lYET9I+Km0E?d$a>6r%vfwaZar?C
65851 zXZ_y#y|F~!p<|qH{l(g9eARl{dfB*CeK*T^)ObvNw<nC>8`6B-{DWbce>9&{-}f@Z
65854 z*5T^DF8ViJ|MAxRi_h=soc}?mr&siK8~eK6_rfqteIMN-p2D$|XmHP}q3>i?aSc)b
65858 zt<G4rhID%--R4fWl6Y1BLW*^biuzGLdp;-Ra)yl5(f*Z+`ct}9*D?Pz=AG)OL0FS@
65860 z{+~KTD6y?b#n*r8REC&3+Bd2A@0b5#eGS0cM@Rc^75~-p-=~L~Cotw_9V_Rn*ndqX
65861 zLgj|$vnsxR`X6M-OdYL-D)z7Obw)8u==b}p&vdCN4OW@&0cxJ_G~R8DF%CB-s3ktm
65862 z_?R_}J0}0b`kD2B^(*Vw*29)##a3zk&U)I~Y`tV{v-P>2-nv!Stoy5(M17swhlJX{
65863 zgl@g5TY~CVpQ=u4xv;l0bW8Oc)o|VR^OoM>;-Njm|GRG2eEPp<p89Hwp^w+p9&tVI
65864 z&m^8oJf8S*wal&RHQdl!zNXfKzB2n0eg)*FrrxW6-rTllNJm9KyRdDm{>`1Xx>{em
65866 zfmEOTH)EKOn2#D=j5k1OYgBc6$>UXpFtoQbbUVg#`u^$`k26$%-GXwq>P}bhhpVol
65868 zqqd-SVQpb;W^Hk8a`is_Qp5C%PpVvF*SZj_i{4)b(zViwyYKM*U%I>ZfAP-V*WcH>
65870 zPQEi=E$dS%_t8(;`-=5~%5fIkGwoT%MfPXx)7AP=+h3}BM2_$6#5C1SSKTbt%~jnz
65871 z)t#-nMXFn(x<^#ERCSlD@l{!p!~43Sy`8vPb=RwIh3alq-AdJ|@+a<8-94(iPj%~5
65873 zb)%4XPd9$|U(wvDe@nsmy#7@vRp#`0<d^mJa-&Y%N5|&h%(L<KWTO5hs2%1s-A0h#
65874 zHxTCc=|6!;O=R*+FY^mTb==teJHPE?nA3^xBI@Z&k??*J@gw>PVf-q{P~G0huo-HK
65875 z-Yi4k`(HEJ|4g0`rhnH(jjxX)M)l?weM4vSYbPJz{RfHfH7*ky<pJVgu~w`WonoLE
65877 z>65!Yx0p{l`m=I~irdxeMsbUJ-L77%cE47OHR`oiKU-0at;Ujd5vgf4_{1jldO^K5
65880 z-V&nQ8J{i4H~DQ4!_qlp&B8p3T-Bl!=@yMD@|0uUo<n^XN|gS^lIC~&#_x@k1pNyb
65882 z#zNyuDl`AGajx+d<9y=+<8ot}amDUAtXA__qvo<s&F4Wir-%CHm8iKrqUQJLo;li|
65883 zvOjIlwokQB<3UKejlOQPuUqWvdjRwu0J{CZZq0vl-(TJ7`vCM^0C)BMuiO9Y*8dOo
65887 z?>P$_r}3T=-{{R(_TfGI59eA8eZEA+-Z6W>ajS8QxY;l#PdWBP<APJqIdzUPaQ>+a
65889 zeT3?2YRY^1NR_A6`f{1xK4!l@+-F2zt6$&F(@y)`*~Ur4Im89T#l*`_KXbvU#<j#7
65893 zC8}($G&--`d+@$@ykq?6_2Z@;zUk-%Q+G~VHe=AKE6*Hv_Ct%uEuOS^!Q$H&uU%X$
65895 z?!`MU8F|S`m(IL&-DSsIw&82Tzc&AC_kL~X<x4NW^YX1<uYY~`*AMyn)UV&ZY|OIR
65896 z%eGu$Trug2g;y-UV*8a3U71|@%$1F+hFvw~s@Yd9yK4Pak6iWqRXeZV`|43wPq=#K
65897 z)r+pFUo+vFY1hoYX5sP)H;%b$=>zi~*tV{7-H>&o)*Z5L%DNNRov}V!zj?zE8&+)C
65899 z>OI4H#;VuEo)daz_nh6ctY<~fs-F9Myq=9c&-d(Tv^EAeMl}v=Ol{0)%xf%eENiT2
65900 ztZLlf@ERK%&o_27TbqNMqnd{`r#5Fa=QS5Mmo-<Y*Q)0IO;5cx^6R6$$Ah|6nJL~P
65902 z&_B|v;y6QJ-_%cRw$!wjGnF4RR;RJIs@=z_Bjjluzv{De`d%Vw^gThGC*JG-cKvVh
65903 zUiKT>f9%Tc|9AD-{Vl}?W0?88`DgP5^DpKW^RMQM=HJY%=1b-_^JViD^Y7;N-9zbb
65904 z&9P3i=31YzPPaa5onf76&C{);cTeqHHMLjG9p*pGoo0{OFq>+@g-R$)%d%{%VpVqy
65905 z?dw0?`lL0(`jj=(I>nl0ecGCBok}Xqx)r0;als;WT(DFbHbou%O*5`md(aAFx-rX`
65908 zl|&cf&#s}X`n=JyM16v6HeN8cvfaOpxvSKx)2dl2Pq2=+PFCeeFKZ96L2R-FCeb3=
65909 z#0s&>IIj|S5dT5k$xwqRh>|#+_(|dn;-`o+iKh@}5kF0wO+3}8$X)x&Kvl|Tty0C|
65911 zvncU3rX+c$x?~;oPERmBlj%vOCzzgK{~O32(p##H-TPYae-*|Uj1;}&Na_d4nWSCg
65913 z_4V7-uiqc~`aRvR-xGcP9`D!hxxRkS(r?%N{<M33oBM|Uk>R=~xk0VVn~W7|{XMgL
65914 zzgPX6J^DMDu37f2r(OLU^mqQLf0O<X(|`BgaMmj0#ob3K`shR-h3w4{$VfRxj+2MU
65915 ziE@fOR!)=C<t#Z@&QoG8l1t=LdAYn=UN2Y3Tjff5r@TkrC)dgK(vyjNL_Q&(me0y9
65916 za+};?8fHZaJHQ-ds^dg+lsVQMZysSzGLJEjH%~NYn6u5(&H3gz=DFqt<|XDb^IG!;
65918 zR7)KnsoHIhsw)>*3$4Z0h1O-(mDY0WM(Y;qc59W&$JbbERTl18kyTh5txYQXe!<#m
65922 zAMp_4p~S<8M-V3vKR`T+IEi>PaWe6P#19dt5<fybmUtZT1meet(}*V$KS4Z+crtN1
65928 z5-Dl&TSUs6TtWOcky0e@B>seWH}R*$HN>A2?<4+#ct4R+C)X0!6DetuGA2{vCL(1<
65931 z98RR>v_}x%NgPR}G}_dSHs#HxZrr8u+#zpj{D#ojL1PDv9W-{(*g<0ljU6<0(AYs^
65932 z2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~
65933 zL1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0
65934 z(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~L
65935 zG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0l
65936 zjU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>C
65937 zV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(
65938 z*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#x
65939 zcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv
65940 z9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^
65941 z2aO#xcF@>CV+V~LG<ML~L1PDv9W-{(*g<0ljU6<0(AYs^2aO#xcF@>CV+V~LG<NoA
65942 zJoD-|HGV^A?4q%Y#x5GWXzZe~i^eV*yJ+m9v5Uqo8oOxhqOps{E*iUN?4q%Y#x5GW
65953 zV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v
65954 z*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E
65955 z_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(
65956 zJv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`
65957 z4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^Qg
65958 zLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>
65959 z(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-Jlz
65960 zH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6Cv
65961 zjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cv
65962 zV-JlzH1^QgLt_t(Jv8>v*h6CvjXgB>(AYy`4~;!E_R!cvV-JlzH1^QgLt_t(Jv8>v
65963 z*h6D)kH*KH^QOjc2#tL-_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9
65964 z_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2
65965 zeKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0
65966 zAB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^Th
65967 zM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus
65968 z(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xu
65969 zH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@
65970 zjeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!
65971 zV;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb
65972 z*hga@jeRus(bz|0AB}x9_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0AB}x9
65973 z_R-i!V;_xuH1^ThM`It2eKhvb*hga@jeRus(bz|0e~-o=eCAD!-w+xHXdIw%fW`qD
65984 z0U8Hr9H4Q4#=#zqC!F-A#%~CXLo^Q2I7H(RjYBjJ(Ktlo5RF4L4$(M7;}DHQG!D@?
66027 zMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE
66028 z(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfk
66029 zG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<W
66030 zjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;
66031 z;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|
66032 zI7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3f
66033 zPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8W
66034 zQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop
66035 z6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~bt
66036 zMdK8WQ#4M|I7Q<WjZ-vE(Ktop6pd3fPSH3;;}nfkG)~btMdK8WQ#4M|I7Q<Wjnh3E
66037 z54!eEjo%O&XK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej
66038 z8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s
66039 z#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+E
66040 zafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3
66041 zoS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8h
66042 zXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B
66043 z85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&O
66044 zhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#n
66045 zp>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xC
66046 zXq=&OhQ=8hXK0+EafZej8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ=8hXK0+EafZej
66047 z8fR#np>c-B85(D3oS|`s#u*xCXq=&OhQ`?*jl1QW8owbl&e1qW;~b51G|tgDN8=og
66058 z9F6lm8n-NbQ{y*;#swM|Xk4IifyM<I7ie6dae>AK8W(6>pmBl51sWG<T%d7*#swM|
66069 zHgkt%SQV??8ek2whFZg|QPx;%ymf>%$vVb5-a65mVa>Kqx8_^tSm#<7SeIDKtZS_s
66070 ztedUdtUIi`tb48dtp}|QR$yh;qt=twGuHFgi`FaFPFvbFyVD+M54MNdBka-k!S*5c
66072 z-fX{MZ?(7Ejfz!it<)=fSB6v$sEn+Psf?=}R+(6tQaQFVtunnbt1`DTuX1)}QDsSG
66075 zw|al|!Rm%;P|d23R-ddsQ+>YrV)d2k&YG;%YMr%#wZXMvwGp+^wS#Mi)F#v>*QVA^
66078 zTf9{a67LWPiqT?>I7o~Y?-2)!_loz4L&TxtFmZ&KAU+_D5|hNyVzT(4_>h<?J|d14
66081 zJSCnHe-h8DT=7M*O}s2#5r0=X<E!EyVyEa4O{pq;Rl&E(4%sQYR2JDS2gtX`fpRaE
66083 zi*lj-lFBx}EYFn}%4PBjd6m3YUMH8!Z>Y@koAL(vEqSBLK))@2q%zQ-$h+lF<r?{O
66084 zm5KgB-Y<VC*Q$K<w=$5a+$5iof0Uc$pX77$dHHAgg8YlhPX8)jlz)?3Rh^^j8e7#d
66085 zRaLjNs5+%h)g>LO4(U>LN4Kgo-lF!HSFIf?KkQQZ;a(~~+}GYu?Kk_YJn`-JaQhu<
66100 zrn-Ony8d=w|KxT3D}DWAo}g-|z5E!XwfEV^Vs`iHzGtEC(>HAN?qQR=ukRZ+q;FV#
66101 z_pp)O=k^WTx9^#%+jb9Y@1EH=Y-r!GM|TY~UhJOOH*CMYVQY5}E4qjG4I9=s?AE?v
66102 zrg2|)t-Hohxob&{rMri&s6StSzHeyXvKn)D4_#6Z>OtSoT}wM<_t07OyXtrK4c)c8
66103 zBX<v-SiiP@ZQsycOWbM<VyG|<FhqSm<LPc-eQtej-?+n6F5acGv~B+~Pa7rP^}1Yb
66104 z-2cUF?Uw(AeC=;<z>IB#^-gP~b)Y(4dY3iYdbjmHb=35J>k#Wu>oDtZb^P>-wf+Aj
66106 z*7q1$-(%!RkC7wkcs}te;x)wO#2*va64wz69p!#RrY0v5PbQv5`~s0FD5rFMfcPBo
66107 zB^_<1U>~Sr#q8aOhV<_Ba*Fw2-(EkacdwG;)cXO{VDDD3Q=BiZ64!_yi?w2%+)qxD
66108 zC(G017vux-CHp|5V(ohR`407&iN+?woHAAIK_~Gf>!XYhsi9NVdKJd;>LpbD{BgCu
66111 z@d5dOUT5+-_5LOKl3r)_erov+RNqqVXhxUus(MM5L$Dlz<>*}k!4e3Tpm*NAa}~^0
66112 zFjv7`d*{?UkKU>4=VgyICL6oz*IiHCK8R;h4>CsgJ&}9YbGZ-d_tg76;~Gq-f1f?i
66113 zSs&jg-cIw8etn1W*EIfN{_ZvXb=S$1UR871VLr-myKk5@>S{|`lV=;-#0V9YK-8|g
66114 z>Qh}0_Li9Cy=6ueYJD8EyWA{S>-zz<o?lYy_dqn!>(%`K_14$hVW85+WbNvwo4<$k
66116 zA5;6#(W-2GT-8i^KRRCRFVpQ$+B0nZy!L@=J9Vk;F<9-*2dI4JoobIAV;pWwP}4rn
66117 z8fHChZMI&rw%I53o5L~2{z?`t-K$EV?cx>L5T6mZ%SXjsN|zm~uK%TcQ2s^Suljyo
66120 zZ9J^pULd}&-1)P;KVuJ4vVTror!0Ej9@cN{3ymX{vInZyAm#RNMPR*CoS}UEwTK!2
66123 zyVjrF_OI8Vxt}@A+}}LFe7iZ^e1|#0e5W~1iTOUYW-WVwUc2@v`|#J6ES1N+Rpmnq
66124 z#c*+-m?{sE_lSqZaQSvQT)kf)KPMiMcgTxvUCIZtq`iBx-l8Y#`u?An;x*fFk}*^~
66126 zjLuj8MNP8&pGwrfSR1b^O-C5}sKe)@#RudSVuH$%j!>D`&sCoDEtQ}AhukVQh(+>5
66127 zd7vC6PnBoNkH{8rs=Qof3cBXp=XK?}cmDq;b02NIMP-dURX+88akt8`R?An!m&G6C
66129 zYCcD)Y)a)(a<y4i^Sexb+#G2hC}*2v%u(jM%y*lkRR%P=-%=)OI(0G0>{8j}baQ~J
66130 zqz+Zt={@QQzSHbh8J(;0w7-kX<?-f0=2&@(Jj;BK`Cj>XF-PT8@9sC9%Z+{I7gcur
66132 z%Q}}<x#hWHw)~RHqkklRrZUt;DnAWmC|?xo#n<G=#I<s<{ItATen);q-Y#!aS)TZp
66134 z?5RU7$^70LQK|D|y=~<-wRfuhvfotNm3(`vqmeVU-fH;|6lc8V*l{QhKlPe^gX#B&
66135 zJyWqFRW3eif3)9pM;QauF@&j(P>xVX3fHU5|3-Bzaw}!<%v~kW+MzQ&wchkv)9Y+`
66136 z-`aYPwbXANy>>6x#~bQ6=R$R?F+g^yqn;m%|KRB3n=1SNwcH|}HOGska;kiX93ej?
66138 zDp!8LJ+0p-CL8;yqbPl5{*&sMDpE&RFDPTaA$}qrSI0*S)e+3E)N#tos^0~2iabCL
66139 zm7kQKksp*5d8@os9aX$bO=rLVQ62R^SblSm+G-!RkL$O5LydNI40wu|sgBaFr(WJ&
66140 zE2}Zu)ttwOd3rvt-9E2dC$@OM7%KJ?!^HmTxb|-h`Lpp?m1XTP{$cD?-~YwemB6ov
66143 zZC67+rv7&QtEs6e?V5r~E;h_K-I&iOq|x@eDVX9ndak?2JVMQ_cg)t;jj7MNcK3}p
66144 zRxQ=wzVTZ0Smtm0&f%1tY3TnsVRrW0I|nwKuh~~CdJNgWo@-TGT^)<-If?^cGo;h7
66145 zRC!)3&b2?G^T*zD{F<#%SL<x3v7b8TUh)61_dW1&6lMQAv$uQsd->aInx<)*rq?u0
66146 zuStrb76?#EfKoy!7)rrVp+-Q6h`bR>38j=!3PuEs%8L>E!-$9x5hEf-tQZh6D*8r5
66148 zztA;Po=`<I#S_R=@z#xggRCPDStCCm=S_~~uR=68S+ZEmux3B>_mKY~_tPl-A^EHR
66149 z9;1+bn!&%pdI<a0az0`ePVoXLX*AZwX<?zI1<SLyOO>!vO-9ocsZTf7bE%7slbzou
66150 zpW)xXI_{od<C^_wJd$~Dv+SeJqm4hs-=FoF+5G+k)M?SyYUOk;Eu@9yT6zI3rgN<M
66151 z6VlE8K0`jka;%w@Zu%p-m%c*w>PL|4=sH?S7t?d-hv*5khyFjh!&qeS`KT$Lp0I7g
66153 zrFM&E*56917&f}duj*M`#Nz&0Pz!F~m^S0%wh$YY{-hZ^V$)g4s5RfgA~v1JY5^Xf
66158 z_B$w-!|!T6BQ_VDZRZ>fIq7!JYRJj7bB=|a+;`n4^sf74*f|Z56R>lRf*fM!90@rF
66159 zugMYcE{%V_iv7PAa<c4i9L~yS0lL{(rL|~xvk2q~7JICwSJ1ZtPa4DY1^SkLdB6-5
66162 z7W1gP`8>k&Q0t9M))V+F!rvh0eH;h>V6V=xUIm_qSCl_{6Z`CB>m7f-{f^5p`OX^O
66163 z&SLM*<|R+I-xbi;>4a9PKcPRZ|4tv(U)A4Y_NjtB_e8B(-xz2KT%c{yF5?pZ*=`r2
66165 zuXBC8!k=$FdlqdVJ>(v(n%U73W+NjkW@#f#YQ2f9B#q<@y+^-Ce}J4vF1Ek9j{Tp?
66166 zTjvOl&jPKI`O91A5PgO|$Na!?<_eV2D(!VbNiJ>Cx9Dxmud3wVpKO}~@)-MGlzx_Z
66169 z@HRVwBl~3jsz7_fdKQa-dddC#d1sIzhUE*ic5NrArgbdxUPVsiXccw0Ui}$fQD(iZ
66171 zSeu>4w9%p6%=-JC+8x?GT&m||Qh}s^XpoiwQs#m@Lb9Xc^tV1vf9vD)$KSCL%(8K@
66172 zzG7+9@_<gUdw_UXNOJiYV9fz;VtuVmyF%Nc-OMHJ*B;ZJW|n+ZdsUl=!_<2n(u#Kk
66173 zP#&`t>ug)G4s>K`Kc@MUY*d_N*Yp@Jr>H5|4K_MD-toGh6lZVjcf9VgcLeHg-FY5+
66174 zwU)msfmcEoC&gI<@lLd7tiM@y(BZjgR~Tg`^9GhZ6KtM!%&gH_Z-g^6>vxP;q$9ks
66175 zVjd5=%}?K9&%F(B|LooK)PJHc@-cvWX3P`Vz@9s3&sB%nwTKk4e!7S(Vy~BwCG53x
66179 zR{mc83&(xrKK8Azk*~4xUngH@Wxhea!JhH}d4PTEo8+6!+j@{Z$iDS0@-6nQe!~1c
66180 z@(_7Q%Ou|=-(}wwzma^Oe4kw(B|osDGx9@reT>;qll+MMh`oNCJkH8L#o`v7Md(AZ
66182 zY{-9@gzu1dv@{D$T98HbCiD2xXquMJ#ugR}(kxn_1z5yi%JR$T0+v%w%h_udg=-ns
66183 zOa}Y3nl5AI#jgrAl=-@}meyM9VCZ|<J&&MAu=^iHk7BQnrbn|+kD<q~i0fF&+MTXp
66185 zQHBkAHa(kt`hNO;_N{a2xvczVx|x;SLbtFoAEX~-Wm;(~D{~ROh)Mfl`e9b`657UU
66189 zvz#B$AFz8qMjvC>AJZSR@=wwy**$+kf5Ptn6#XfC)-UKU*z3RWDB~si68rAU^kr)$
66191 z^n5L-7w84-^?ZFXi^JF$&t5OrYgvAsUZ<t&EA$oY^<ny9?9+O^UJC@?3B1F`cVaM~
66192 z-MW#MY2+F#nl}mzhC1taYc{5q8D*?YxlwMdi7_fze#D5d@{5hdT2RDC#!_P``?T7q
66195 zVW~9_%cDdJTHq0xv4L4*YjilAM~v18{=AmY<HjJ58!eyXZ|wCe>@UDZz<;o-6-g4V
66197 zkF(d?$TnM#oy_iv-z<go6~A1DxHhf0^u9Pfrg1$6m|c97<yeub_!Tq2HJHscsB;bK
66198 zT!XpvYI-$8s};doQS|_5Q0E#<7rNuoY)0UDHtGuu5+2zKou)gqnaQ<jYI~Tkyot1t
66201 zX4G75Hk%ij9p<fOulcY!WIkt(2Qz}D!Mb2$a8s}?xFgsdyf-)yd^$K9d@C)KR-RU$
66203 zkg*}7HDhZ=SH_-<{){IxMlxQ@G&74cqnWESn=>!U?8v+|vp4hM%%RNZGRLzrvP!e+
66204 zvKq5CWwmAP$m-6zH)|m4>8#PLx3WXo<=OSwYqMLjFU#)Cz9YLYdvErz7W*ZBGP2zQ
66206 zTjs-UnX~L?9B#`TpJ%${8IHWokeBXKjyUqpg*+j1(3W|XotGb%M;+zPi_6Q8%L_Ql
66207 zeIPC`KQ1rmD0gyPUVdC&noGGfmvW{{In$+_;V8E`E-ybWFWu#S=`Qypj&kS5<>kla
66208 z37t;P-K?|q7qIoW&em1H*3~*&F9G|x>uepw=b0{fh9hq?<fXfmBalbny^vS8<y~vb
66210 zw#?_-GN;?mINz2zKF@T?GaPxFAurvf9C75G3wc83$@#-$Y?-rdnUAq$&bDPf#+EtT
66214 zb0IIbg6`d82Xz@IsLPl@U2J`Pp6QZjIPx}YPJ10+jyUq-ZS&-;euFJ@jxBS8Epv`7
66216 z9A(QKpJ%${8IHWokeBXKjyUqpg*+j%=`seIE@PnSG6tG1V_<xq>5^wS@-}PEF)+Ry
66217 zapaw=Imf}t-)@euWzMu^KEjqc)0X)NTjosr8AsSM$LE<Yd4?lzGvuYalp~J3b0JU2
66219 zmU+^5&a-8n^quqUXH5Fe@p-08p5e&btT}z>_;SRNCw%7&Ev!}W+3_ar9PJ|Q3awL%
66221 zNaLOtuf>4<6zl&~$f0)5ddKgsR*#M4TkC4F>~}4;bk_g-Ip$*T&UVZxmuQ!1?If(F
66222 z&EBbNvv-O=eMGlb%q-#a$xA#|E;(0h?#F6Pu|kvAG=A-Skk2BUakI!DBp=i$p93}=
66223 zv%l2wOM7e;x>)@zW+=rh-B;;X<5oFO{`UU5Mwq1543;%h72q>fx_*Rygr?iS$yae*
66225 zw6S_xvnK&QdlKNYCjoLLxl%Lu97=%Co&@;3Nr2B<6KgewJs0&=@(_FdFnO3=tr-(a
66228 zkY3ELZM2PDx6-Zb+Ci^jCA(-BdwnOplU=_~?`JYt^PiN@<5)9cKV;V*)1R>GPpQRG
66231 zzQEIlX4DuL8NJ5K=3(ZEW{cTj-eo>zz7?zsUL3qXIGz?tt4v#$c3Ik<v|pvYoNlI9
66235 z`;Fh38RlwpoB3$a43-902G0rZ2tE*eA^3J$IBiwh=CoVV_NG0P_G)^5dVTtq^efVD
66236 zPT!OMQ2I0JZ)6l_9Lef`d&XYg^F_U=T`!IA9}u~gl-4hjqPAL`CX9D!Lg!_SDWzg}
66237 zus#idzBImv(OE9&saJ!S55B7<g73PsRnml(&{#XXyY<rd*?K|#-E`NsPxpMH^{q5$
66238 zdyTccJ9aYn8$0RzKAD~<%-p9W)*Uhcg&M=4H=?r-7}1&hp4kceN%nqAXx%Lf`ia&5
66239 z-0v!<|4m|Bk3;<A6LfwRlE-6N=Y2Q+*;8?>bI%~Y-tWe)&iCQC*TN0AI`_NWwdsyk
66240 zo$usItS2v=>fCEe+;-mB)Y)D4w}lenQs;iu{vpV+VgW5Shv>9ovE0cPjXi_#R(W@O
66242 z`#;5#iMGYjiZpI4+7j22)O9S{GNm=C>sYkqT`fuzjzwEsT9qaoi?(PQJllw?-6p7A
66243 z?32mbZL(`8K69(xCP(dJrQTh;O>wmo<r39y)0Eo9zTsWFSS_d)n-71tO$~V3)PQRr
66244 zjJK%)*Iqc)rUnxBLu$`%P0B~@nYMVF5i2<<v6ZX8D|b>u#I+XUbKUcEW6B-gT}NZe
66245 zJrdcX*bI%g4kpX$`z$*Z10<o{a+cQjQ96FF-nBGDwp&r3*uTT#qHAcj*waI^XoN1J
66248 zo(NJnG2nP-PFOpoSX{?65Zl2V(Js<%CFg0`!5%VB11#EmM6V0>=wpE`foF|eqtJMi
66249 zl`M1Au#N1RMlGo$j*s%a%ooL?b8AL`UCZ@_9NFbOo;LYvvNRqso9x-O>^s)#umE5A
66250 zC8GXJ9zAF9RbA<PC6`#4Mfe&k3hM`cKz_g?X=`;=0M=EB6;;-nDauzo1(@t*T9C=V
66251 zK+EE*nJ8biM0o@()*Mm3swe>KfUNaCL0H{mt<Vvxa>V)?0;>zkc-vB~h_9c}dE8AL
66253 zZR~2r)P&wlZ)UGQPe0G1<AqG4lt;uwuhOg7>sr0eY6-nge?#A(w+2@0olLu3`b*>q
66254 zEfhFRi*kEmfE5?^g2nDy8~fJ9tPfo>#fFK`OfAIX;;6P-e~r)X8SrQFyNOaCfjhKu
66255 zJ7&Q7C9%)kpZbvmPyGmgY8`*-HqWPCn&7FIdOY>g1W&!xdMdLZo3-uQ9a<l^IY!)*
66256 z%_$mdWB0w7eb&Z5bC$G5Q)_>UwF<k9mAsghZ1bo`o1-29`%^vc4)3mE8-FeK+FK==
66257 z?Cc|^F@`KJjeRtM#y;wyv5zLu*hj6WlHJx*$*(-0dRc;}Ugq)C%Mv{GG9EpInRRo{
66258 za(qY=r%KRwy%%$+t?YU`^92jFXSKt$6Pe|?K-;F>qV;%4eMthTFY%E2k_1v;q7nPg
66259 z%KM-u*0mEYHb1*T)9ez~=N1~H+8S-6c7@jEA?3$hu|pH!=3^eRf6O7fZhsoPlUt2G
66261 zm1gZeeU|-En2mjh{ZUfDz7gQxnaBPP>^mlWr%YSG$}Qz5jl8Qg>+S8@E-jZyZS83|
66262 zM-wMth-ks8+y8K6P0gd=nZ|O?gi`T&nteCo$T77d$0s`6(bB)}z_OJWe{#kd`}t=*
66264 z_Kvu+t9jYgyzFXT)^YL>X^Sg+94~tuFMAv>dz_=}>bSCNc-b|)>>6HnjiYQhuI%x=
66266 z*|m<ct#M^f=4DUjWl!d1Pj-}D6<78&UiLIz_B3AhG)Gx$Myr^WtI(==A3H-I)_={)
66267 zSmzO0-)rLEYvSK);?bG-9=pTg7fgA-Ys&k3ro4Y*%KI1N->*!Y^1gD)`xB?UcRrt4
66269 zoH3FynlY9!o-vVWW`;7unWdSL%xGqPW<zFUW>aQ!W=m#kW?N=^W=CdcW>;o+W>02s
66271 z9a)`OU0K~(Jz2e3eOdik16hMvLs`RFBUz(aV_D-_6WL~VC_9{8njOiGX4hvoWH)9v
66273 zBB5xgKGYCu3^j$CLoK1!P+O=y)Dh|ob%nY^J)z!EU#LGc5E={(g@!{Tq0!J-XgoBL
66275 zaL!21XwF#9c+NzwnH$Ot=a%M1a-+HRxed9ExlOsvxh=V^xox@axgEKkxm~&4xjnhP
66280 z!Fa($p;;Iz3>TIbMhc^a^@R<EjfG8x&4n$6t%Yrc?S&nMorPV6-Gx1cy@h>+{e=UC
66281 zgM~wd!-XS-qlIII<AoEm%vqsX;aR1#BD12i>Sr~~YMj+Ht9e$-tkzj=v)X5M%<7!g
66282 zHLH78&#c~AeY5&!4a^#xH8g8@*2t{US!1)tXHA67a3~xOmxd$ZXt+My5N-@Ng`2}I
66283 z;nr|lxINqv?hJQ@yTd)<-f&;IKRgf~3=f5e!z1C*@K|^}JTcpx9hx1UT{=55J3705
66284 zcEjw(*-f*XXSd95o!vIOeRjv}&e>hFyJz>z?w#E?yMOk;?7`VXvxjGo%pRRRHhX;b
66286 zMZ-lSMWaPyMdL*ibIduRIpH~_b0Tx1bL!_b%xRp{G^cq^%beCZZFAb^bj<0T(>14i
66287 zPS2d)Iel~b=M2mloHI0Mc+SY2(K%yt#^+2Fo5i8xaB*pIq&Qk!U))gKSlm?HT-;LJ
66288 zTHIFLUffaKS=?3JUEEXLTijRNUp!DeSUglbTs%@dT0B-fUOX|^oEw@Oo?ALMGB-N6
66290 z?nH@M5-JIol$JzFq9yeu4JC~wO(o4GEhVibZ6)m`9VMM5T_xQmJte&*eI@-R10{nc
66292 zdtT4H-g$lV`sWSI8=N;ZZ+PCwywQ1M^Ty{*l$xcX(r{^MX{0n-T3^~w+F06D+FaUF
66293 z+FIIH+FsgG+F9CF+FjaH+FROJ+Fv?QI#@bXI$SzZI$AnbI$k<4-<%(sAD&-2KQcc$
66294 zzkYth{KolB^PA_l%x|6FHotv-$NbLuUGux=_ss8|-#5R1{=odf`9t%E=a0-Eoj*2z
66298 zQr=qLR^DFTQQleJRo-3RQ{G$NSKePfP(D~bR6bljQa)NfRz6-nvCv!?S{Pnfx-haZ
66300 zaD3rJg;^1*2v?L=L@J^c^%V^jjTKE5%@r*btrcw*?G+srofTab-4#6*y%l{G{S^Zh
66303 zk=96Cq&?CR>5Ozmx+6W2-bi1hKQa&*j0{DFBO{T~$XH}NGO^fP99kS+T)H^2IJ&rg
66304 zal_)q#Z8Nw7q={KUEH>~eR0R)&c$7eyBGH??p@rsxPS4$;=#p3i-#AFEFN7vws?H;
66305 zM5S37sti|_Rz@nLmGzYkm5r56mCcncm93R+mF<-sm7SGcmEDy+mA#dHmHm|im4lT-
66307 zNzanrC4Ec!mkcZ!Tr#v|c*)3;(IsO`#+OV~nN^{xa8+qlq$*lfU)506Sk+Y3T-8$5
66309 zerdzf#-&Y5o0qmMZC%>7w0&vE($1w_OS_l$EbU#|x3quhz|z5`LraI3jw~HrI<|Ct
66311 zL)F98Bh{nTW7Xr;6U)qHp=IG^rOP7AqRZ-+H7sjf*0ij7S<AB4Wo^samvt=bT-LR$
66312 zds)x2-erBu`j-tX8(cQDY<Stove9K@%f^>YM9pX@8jhAmBhhHIKH3m%j5bA^qb<?a
66313 zXj`;B+7a!Hc163RJ<;B1U$j3u5FLyTMTes!(b4EwbUZq-+*}@79$sF$JhD8xyncDZ
66314 z^2X&&%bS<CEN@-jw!D3L$MVkQUCX<d_bl&S-nYDe`M~nQ<wMJdmyawTT|TyaeECF;
66315 zSre)W*Ob;oYN9puH4Qb5HBB|mH7zx*HElKRH61mbHC;8`H9a-GHGMVxH3Kz+HA6MS
66316 zH6t~nHDfj7H50XFZKyU}TUr~bjn>xJHq<uOHq|!Qw$!%Pw$--RcGPy(cGY&*_SE*)
66317 z_SN>+4%80T4%H6Vj?|9Uj@6FWPSlxop}KHgX<ei)T327!P}f-3RM%YBQrBA7R@YwF
66318 zQP)}5Ro7kDQ`cM9SJz)RP&ZgNR5x5VQa4&RRySTZvBF#tS`l7Rx+1b7x}ttX!-~cg
66319 zO)HvLw5(`d(YB&}MaPQH6<xx+Tz-W}Ybd0fM7lz(oYUU(vPf6%5$O?4kp5AmM;-&|
66323 z?-M1Ef}C9)BK>5eNN>r46x!)iJtDmo+U2$yNZ%Ie?VzXIL5|NnD$+YH73t?ABK^YC
66325 z*&)*Ji&fUzUXbTU5H&qMF48BT73ohdhxB(MeG26HX$GYCh;#^WKlF@9e|C{be-8Kk
66326 z`JE#D1(f>*)c<MF%P*mRzr0(dzXJJw1<(CIkYiXA=`(<r-*$`icTnHoy(rS(gIs@v
66329 zpNq7pPo#52yO2_Wd$Pb3>B0e#MnIk=qQ8*pts-6C0_htft=SAI$WtrqBB`r}RN$Vh
66330 zI0w=(ksb#3eNP#rP_7>8Uk`dY9O}2S5>k-wz3|-kf*h-ay&*@zu7P8UA%*%Ld$CAY
66331 zgIsGwe;_A__9Sbe+$pz<bo~aAo(}hGu7DKeJX7>HvQgMGa#kUv&`z6#y&-2qyPUI9
66333 zAjjqKypO|uwhDVqt`_!>Tm$X0L*SlVzgwicV7JRnAWxU*FXR?6o{-yweImDSgY*TF
66336 z2=uo{ggqnQ6LyviKs$ZE3Q}m7M;{UC4*=hLK~H-@jvv7ehsU8`J^6r0e+vEYry&2(
66337 zdPt%EKLfn|9B}q?VW-G1+eJDIa{LCK_glEnh_Kh>Ps09@7oc7K0=R!EB+{1$MfwWJ
66340 zgr7%C;C}O~Ar*4cGST1Y0%6Z+c?qPVo#;YgZ)k;R7rIFJfi#i@X*Z-G#}Z+`X|?EA
66342 z(Ju64fqU9?t4L21eiS_e<T+FH7rIG|C-fX)pXmE{LMr?|+5+;NTMVi2yXfY1kcx4O
66344 zCdL)|5s>RL(I4plKzm*R<*pLr7rk2ed2~D6?>b>u=uVLH`g}-*J)@n%&e9v8op#kh
66346 zUHS!(V-Gy<Zn)2vg}tWt3j0UD2JLb`;QpIok$y|~QS>2@=ey8f2E=$me<17=-J1rf
66348 z98U>*Lw^Q%dAbTxsP8YuxI%vgat%X&_zkq@@1Wct#P~&@6Mi23Gu-b*uq!WuoPUM>
66349 z_L8t?^lufALOZ<-_U7-<E@Q$Eq^|(JUjaS60&=`2>^J=v^s6_-PDJ_^^uPar{QnXD
66351 z`aB_zUMBjBzEF%O`XXVU^vKPS3cpWZEacHE%OMqhm%ii-NX59NSBY^)UkdkKD*C-%
66352 z4dtpu{q<!+FM1T}7Zu~Lz8vIR4$rLtIckNy(N_q(==H)*>W4#pS89-gTt|rhpf`y2
66355 zp4SHVxm4I|{bR!Z>Fv-iR|?$g+e$^+A^a%)T99X_=r8&WVm#4z3;U$slnbfw`}CVZ
66356 zo|}c8)<3ZZQh|HDON?9kCrwD<zPGG|6v}-H>VGTf<yNTQZO1?g^4$*4{WQq&X<={l
66357 z&jMclw+>RM@10^?(LWDzeF6Hz9%#=mLAiUx_@#eU_<4FC-0vGlLJD#|0R8Qo!k+05
66359 zAmD8faQ3*cQ~Hy_-_@T2IerGudm8TZf5Kkt&j|ac{}$Ti_kjC9iuot~dErOtqae>;
66363 zIm(3n4lES?DzHez!GTKA{{l-u{v{VcD(WAo5_k(NErC?nsX$ctyMbDe<1l#M;c%b#
66365 zC+u{fc^#wz_klCTxE0tKf)wt1)-jMmxlK_2vq3LsL;cP<5mJ!v{qWotkfTM|o4^MI
66369 z$nya7mv4#jB=8W0RM_XhcLI=tJP+4FD*Ud%cLDd0Xpo9=C-6PE@ApK%4-7!L0jU4?
66370 zK`)O&{T>zLZ{P<Y-(Gm`UXbI5!rlaa1bBHu*vY_;p}tS%LJD&I6#B!@p*?>I<%Y%h
66371 z6?jJYd4b=;{YJp9`~l?rBlNdF3VRm#ld!Xa=b)XQ2Yd4Zw95;^4-EVn@I4B88U;E2
66373 zy*3PC|BN)zE=H!ny%7@gPe!irql^L}j}aFA#h4?;6Qe}fCu3e2q{8nrN-H20cG{SK
66374 z2BZS_MwuA5j0Isx;lAZ3LJH*;iuxNBC6J2x8H?6K3i3tZxr;%L#lqegRRS-@vel46
66376 zVQ-8RMY|X$2|v(STMa4b>12@O6k)%O^`c)Hr;9k)Xr_>Y{LR8YG0uegZ_I~O;LJEn
66379 z#%_@BCV1{mAji$Z-WXkgmrn^hY1|6+y{!mRkgFT|!{?wq?}Tz+5aXBeMd9Zecf<X@
66380 zEbNML56Jly=x<*U_RP3f*jeMN&`$RWdt-bJ+U0A)4>bA!-(LqkeI4X@K-h2NThOn*
66381 zE#hF~Vd#I~1^K@#{1f95sQ)8?x9<VYz9;OI@u={3jUR#>gYdi`!+o9-_SzT{_RshQ
66383 zE#sw9Na4PJgMR-vDEBhd|L>rezeD}THbM&Wy#mjD736po?9D#`FXL+=h5G(mj4Q?)
66384 zAlHAOKm1p;r>Ti@rY^=W(-eN5nJ(^UW}N}4kkiZ-{ml#sduHYcJ8R}<K`QKxnJ3!C
66385 z%ol#3S#TJnLQiI)ki!fM`)$q<{mLv6aj-c*1JXMo75<4?ChBi4D27zv%q$mn%3LJ;
66390 zqW_sYLH?b>KQXU|`d<%t>ja#23Oi-qDEwXXW{~5P@Vr~$KA#r$+Wd^Lf94&~E}sY7
66391 z-zDas%ss-7GQR}!+ynjPt71Gc`-FWmzg`2W@cYdBL7w}Coi@L*1yaEM17h4VzZroP
66392 z?)%_INTJ-fp#J@!mwu?<w>Luy@;wC4{SL_S9bs?GM*uJ1-vBAp_favfm_Goy9)tey
66395 z9Paa`u-E3>VE^6`?Ghvc_rZXee+mYL9~I0H@&vO*e+lM_@g!JK45_fs!NL+qg*?Go
66398 z3`m8Y4IU-hDcB(FP4MU{NQEC5JVxL<cr57YSde3lu;0NGM8682B;w%UI??}vr-1yY
66399 z2>&G51odwccnh9-B&5Pl1vdzPH~2n~V<SB8Y`9O0u-C!O!u|!%hjwWdxDQ?^=AVKe
66402 zc`KCrv>3mFpA~*y@PFZcJ;JU8zW{Q6LG-uaUBaFPzbNc%a1XT89${~S{}0;bZs7+8
66403 zzXbUH66mQH<oJrP-@&g!zv>flaPS+@|Gok8Kad3})c>1+w{HT@9u#&e_-*0u2EPMx
66404 zJOa=AKHO)ou-CyK3Huj(0@~$C!2M6f{8RAf!jB66666_%{_-0!o&<ka4ymxu!QWRv
66407 zOEdBz6?Qhw6z!B26!s=9tq#(+tz9`<Y?n@2`lDLVW~^fGvtEze#gkUj2B(L>`vs-(
66410 zihuv)=J@-)@@V|$Z(SOHzlliP=hl8e=jRz2hsA%Me_s6OmBsO&*WMogdE;a8pEo@l
66413 z^}PIgUVeST^6Pl{b-esKUVdGo^2SE1Jiq>$U!O5HCM<szFMk#<e-<x)R>Ja|c==7d
66414 z{3c$0Q^N9R^73c$@@Mk$XC^Gag_qyL%WvW3t&wr1R;Wey^N-(;wfz3?w<UZRZ?kre
66416 zjr@87zpmxillgTWzc%sfdVW2PUpMgU>DHC$(7JBq*R%L_6Tfa@S8<wINV7cTPq2R-
66423 zXz!<4G)p^|me8fzW_~v5rTiR~k8(bk%jg=qPWu>bqNi%x=xOu}&Ei-8fVP94Pd}t}
66424 z(F^H?+HLg1^ds8soGs>a^h$b-b_czd?$W-<&rA6V?V_L5?&Zu)_t86Pul6<0%JdLF
66425 zG4?yOkKV66%+DtM9zT_IfDY2fwI6ZDrN=qf(i8Nj^yk`->C^OS?Wgot^bgt){S$p&
66433 z(7kjoyRKvL=Y8}M_U<KyctkKFSak#+sI3;h+*;<%m1}G1r7U9oIsIeYY|H-s27-M8
66434 z`-GZ(B4*Xk&?4FymSuOf>IWtp;vMmRsAeIjYt`2?o4%g5v%jfU9kGsB_xHS|W!0@!
66439 zu)oXL|6PuFPzC)>MSU{XW=~gxPW-j=b<nEguPZ6|J1|S;hQBK~0#(Ofvi1f{7k}XM
66441 zMD=l)teq><#UZR`&^9r-wz0oU`L&(>-|bk>pn@KqJ?1j@cQL=-k+dFjpqez;H>@#l
66442 zoz}rdJZs-rK<lz4JM_N(Fdv7hRzgplj8*wKY}#^Rq>7QMnvtrAJt^<;8|W46?=Gg7
66446 z?WNB!Em*U08Hjd7`wT)mk0;_!)|nDdAaW78s(L1|c?U-{>DZl)(In#7A2>eHwM-)R
66448 zv`(#CyHnf4{+^sNruwNqQ(I@RBCRvMH6!t@vxm2jpIc{ghG`e;-FI^~k-N304r+!;
66449 zt^RYT_Lw3qG~M-v@hv3U$j>cg&-7@!nLX%be|Pcg&_T`gq_$4)KJWM@>obXKaSo1?
66451 za-{Owccz98k{zST<D^kTUv8W<sn(b`Ck>7bI5w#5lgr|yL8K$nRY!VaP8vioB3N|<
66452 z%i^S(Rsz&_#cK9QJ{W->Ow721e*6=xykanc~x5$iK!-g4iZH0Z4(deyho-kdau
66453 zU&OD<*4K-Z262nHRXrj+*x&XiIcX5>h<1OVJrO4jq8L%^4;0Jcq(QtR-c`rDOimia
66454 zJK|k+yid=*dvVer;t}zxBVG<Cjoh`3vN>szDV;YbjY>L6{_1M^oHQ!w&z+M-4Gns6
66456 z4kwLDdi3U`QA3kcIcaW+anc;{+Nb1l(%cj~lL{kMj8v74RJ}QAZi=0Ug=-2C?Y>{t
66457 z;?7BPQ;d@)MPo-|P8#P3qWrlu2{>t{Z%I_+q`4_}VjEgHv~tRh>4`aMZi=1JhdaO!
66458 z>oW)IuADSZtfLQ$i1)V-yDv_fn_?%GBH9t{GXm}IoHWjO0+EZzRn;?z%{zE;(qJ@+
66463 zB<7@<j16#wHsW2ySx9-DG>CP?`plTO+&3o;dh3W@^)0nGCk^5k@vE}+_2Q&K+#+sO
66464 zj|dO;xBW>@8bmvy-5+RA#7ToFMil!4#d0`l5bub0)$uNqlLqmQcvl_o)3fhhoHU4d
66465 zM7-*Vm%~XTcWt9=PMTy&=gmo@l1`Gpx>`ObjY|4+=cG|XgI=68D(TOSlSa0DvN>r~
66466 z(%+%j8;}f68kKbD#Yv-v7QH!XRMMe4Cyg3CIT0s~N;*6=J6Dp!Nu!b;y*X*r(BxE3
66470 z%s{*wCrzqnZ}*RrCe?GZvN>s-W2&F(<IYKw`qq)lN#obn@#dtN{tS~^{U^prllm5t
66473 z4Ql)3vN&lF>4<dIk)D{71`&)1Rvp2zIB6!ajyn>tPx!k}B<7@<j16#wHsW2ySx9-D
66474 zG>CP?`plTO+&3o;dh3W@^)0nGCk^5k@vE}+_2Q&K+#+sOj|dO;xBW>@8bmvy-5+RA
66475 z#7ToFMil!4#d0`l5bub0)$uNqlLqmQcvl_o)3fhhoHU4dM7-*Vm%~XTcWt9=PMTy&
66476 z=gmo@l1`Gpx>`ObjY|4+=cG|XgI=68D(TOSlSa0DvN>r~(%+%j8;}f68kKbD#Yv-v
66477 z7QH!XRMMe4Cyg3CIT0s~N;*6=J6Dp!Nu!b;y*X*r(BxE3n(Z-8ngd?@lw3}l?Xfed
66478 zFjB=xRoO_@o0DdH>^v-7Q;2By{i+ssPMYm8PMQ>r9f>(<oFj<x=h7tLq?x`YQH_&k
66481 zvN>s-W2&F(<IYKw`qq)lN#obn@#dtN{tS~^{U^prllm5t%}L|e7D~iPGyRz!)i`Oc
66485 z5xweLYHv;qAkW$Ww3NrSjW+^QZC9_(-Xlbke&c0{{B(4L5s22qSC_6LgPaMB>&
66486 z5$~$wT_z_D;vMm>I^L&e-@Q0#5b=n3)e$d;lSb~^M%kP+$&}8UlSU<-B!6|ad`=pb
66490 zbFF<wAMOA{tj`#%yK>Svv5r10BHrIV?7lc@uC-4pMYJQ@X9C*YIcc2n1R@uatEy)b
66491 zn|JWyq`_zsaqI^i%j2Ypk3A9bi1?X-csEX(RL|b-A16(!=VoPd(m2OdKh?*blP2}8
66492 zBbSrLudU<FNi+Q!CbjxcjFTqyEhL+h#;+}uh?8deGd-$t(p<@Fv09Q`2g^w#TN<xD
66501 z(m1h>J}e^M-#+ZVIBBl5Pbx*UBid&I+TA&6obd!A7m=%~XA+xt@ZzMwXcBSk2OP`e
66502 zq=}C`5%GxlnSppWPMTED-tHeKO{(W+WpmOv$5cPn$DNZV^{pe9lg6*D<IPDk{TU{;
66506 z;0kTTyNa`r@;GS_>xlK4F>kqVP8#&q5xweLYHv;qAkW$Ww3NrSjW+^QZC9_(-X
66507 zlbke&c0{{B(4L5s22qSC_6LgPaMB>&5$~$wT_z_D;vMm>I^L&e-@Q0#5b=n3)e$d;
66508 zlSb~^M%kP+$&}8UlSU<-B!6|ad`=pb^ykh=qlN~(IB8VUpBpEQZ24q!(x{}rL$Nm?
66512 zuCY%lMYJQ@X9C*YIcc2n1R@uatEy)bn|JWyq`_zsaqI^i%j2Ypk3A9bi1?X-csEX(
66513 zRL|b-A16(!=VoPd(m2OdKh?*blP2}8BbSrLudU<FNi+Q!CbjxcjFTqyEhL+h#;+}u
66514 zh?8deGd-$t(ro3mI8KsW2g^w#TN<xDim~UQ4~#yrnm(`$P8vixqFi;9dvnqtdJ(<;
66523 z;|WAAB3D(<BsTBh#YuzFB;wc)IF`pr6CZmb;t}yP1MzO0G^w7w-9Jv6RL{-I=A?0s
66525 zxek_-Mz%CwdlX~OK_3`>U^RVU8JskTazwf6DEH>1LG&Ve{mDs#$VKF;`m3H7CyiXs
66526 zTNWoxa-{Owccz98k{zST<D^kTUv8W<sn(b`Ck>7bI5w#5lgr|yL8K$nRY!VaP8vio
66527 zB3N|<%i^S(Rsz&_#cK9QJ{W->Ow721e*6=xykanc~x5$iK!-g4iZH0Z4(deyho
66528 z-kdauU&OD<*4K-Z262nHRXrj+*x&XiIcX5>h<1OVJrO4jq8L%^4;0Jcq(QtR-c`rD
66529 zOimiaJK|k+yid=*dvVer;t}zxBVG<Cjoh`3vN>szDV;YbjY>L6{_1M^oHQ!w&z+M-
66532 z-S4Yf+&O8kvN>r|Gj=5Aq;ZZQ%AZS<fRkqWmP9p9nyc&++i*-rE2rw1o|u#7D*KE+
66534 zgV7}7*bg|C$4L_(dm`cy@iPPQZk#l!p1s{aPMTED&C2GaagM2es*gJ-P3l`mE+>s&
66537 zqsil>QA1yDoHVJ{m^UX4jtw|AsO^)>;-o>OBhpnzdSXr*L@**)bp*@eq?yDz?nuBs
66538 z;qN|?n3HBQHoz6yh<6odA?0z>Al4D<Gh^Oz-<&k)ts{EXx76O8G>Bisugccfi<1U%
66540 z(jejy@v0+U4kwM=wT-elX_6_OHz$osI!XTOYWbWrD(TOilST~<dU4XIq(3)K8rky6
66541 z=A=<ce}`gkKr%RKRMMdrCyg3f^yZ{dNrG-~wZM4U7#>G06(TuBZmjY@j-=A=<W
66543 zVon<82%`MCGzmCqrf*49<D}VUpV)?DI$AkZ$MnRUG~4Vm`fvvrVtvM7-IbHZiFNd0
66545 zBjRTU;@voDQayXSf1EU_o|~1;N#h(-{Zt=!PMXxWj$BR}zqXDyC(ZO{nAGY&F;1G)
66546 zw~%a38o#zsB2Jp=&-AFqNweGf%s5k$TnEcZBU>7;J&LjCpbv~bu$n%w3{DzEIig&3
66547 zlzVg1AbJtK{^X=V<RWra{Z-G4lSZ!REsK*TIZ}D;J5xgk$&S(Fanh)vFE>t_RBOze
66548 zlLp5I92?a3$z^fUAkq=(sv|uyCk-MP5v)3bWpUC>VjXuRV4v`JpGeF}GZ`D;3T?!@
66549 zinEaNIB5{;i1nE<Z@F(y8uZo?z3N+PZ%!J-FXC5a>+8iygSbW9svZ#@>~H&%oHU4b
66550 zM7uxGo`{nMQH&_|2a4rz(jeXu@2cZnCMONz9r3O@-lu2Zy*OzQ@rZcU5if_6M()~1
66552 z(2J8s4J~?e(x{|EcTO5LdU7I88kKZ-Xm+k7hm%GnJ$iG}sG-TJoHV;*oHPf#_9?lX
66553 zG`nMGQemWuk*czhsy8Ri?$~))xTX-%?)z0O?wmBcW1KW88aonm(l|#D<<F%_z)3TG
66554 zOQISl&F<KVZ8)Z*l~Z<1Ps~ZPJ9b7N?f^rq&m63~a?&`ljy^0R-rqj#zBp-i$4)9m
66558 z{;KE2Nh8<umc>bv9I3qaovERNWXEXoIBC?-mm4Qdsx{`#NrPhpjty%2<gz$v5b20?
66560 z4SMT{UiB@tHzy6^7xAmI_4VSULEIv4RgVY{_P6~>P8vizqTL^8PsB-sC`J_f1I2PU
66561 zX%O#-ch&JOlamJVj(Arc@6)sIUYs<DctpJFh?m1jBX@11Y)+bFO6Sc<qmoXNzq(pJ
66563 zJvk94jY>K^G&@(4!%3r(9=$nf)X?NqPMRGtPMQN=`;=TxnjNt-sW4K-NLATL)ti%M
66564 zN9;T-TvLc>_x-9CcTSoeF;1EkjU9<OX`Ca7^5@bd;G~(pB~gu&W=HJAHXPH@$|*ah
66566 z)ia6BJ9u%@U^Iz1_5+UPani)co``rv{LDbS8z)VwXK(k9lP1-3v$8p9oMWn=>f_Ey
66567 zlls<?%Sq$c*74?~nf?ruTKy-+Nt5~(lFdou*A_~|Ni+SK9@RK$uH&`XAW5!+<)o1<
66568 zjn^K<*mKYaMju#BA6Nz_4Wb-Tt~$!SIcX5Rh+cnk(jamXxvKuE=fz1Q*YlReNs}C@
66569 zy!M@`p@U?{X!1B|)X<k3Crzp~=FLfiV*`#2YWw7}IB5{+h;-GFo|uyc5sU~{9l^3V
66571 ztFra=;-o>`B5qZW2oLtR{Yg$5L_4D0A81d+NrNax6#E0kayV%a?}&HR@h+2-2Jwz~
66573 z>CcUmMz(yiIcZeV-=WwWkPJ>5m2~LENu!1qy*X)A(xE#ijT${U5hsmGIy^KxSCYd?
66574 zqmmxIIce0;<Wx?Y>ugS%16})+Tuz$n>@%q_QpHGB)kxKwljb`6JS<#Oh-mlwsup)n
66577 zj^%OE#K)e9ctrfnK)f3#O{!;a_m7h%)pN75Icc0@s-NoP&PkK{){)Ce<JZ>l=A@ba
66579 z1}6=o98s=1%Dp*h5WR?Ae{#|wauK<z{;KE2Nh8<umc>bv9I3qaovERNWXEXoIBC?-
66582 z_P6~>P8vizqTL^8PsB-sC`J_f1I2PUX%O#-ch&JOlamJVj(Arc@6)sIUYs<DctpJF
66588 zPMTED-tHeKO{(W+WpmOv$5cPn$DNZV^{pe9lg6*D<IPDk{TU{;`cI6LCiN{Oo0G<`
66589 zEtH6pX8JQds&Ud>&1=ypNv?zCq>(L+*B-^#bI=DyA6QKvSOzBzq8w4KI?BB{X%M}L
66590 zUVn1ZAaW78s{X3y#YrRA^OnU)lN_nM_MNGrgJj2O@;GVK(3cx0O{z8K%}Ik}1C9-9
66593 zgD6H6`vb*tIB5{?h<DZTE|Zf6@s4;`9q-e#?_QiVh<HT2>WG)aNh5b{qijx^WJ>4F
66594 zNu!cZlE1oIJ|~Sz`g7-`QA2}XoHQ!w&yABtwtTWVX;jkRq1YRc3{D!Abm+xNqlOl}
66595 zIcZeVp*tsy8a+7?Cyh!vJTyC3lEX=(k{-P|Y1Gi<R8E?!ZBCj4UHg<=PMWLjGpR6A
66597 z#5Nq$(aNbhrYGj4x!OLX4|jke)@KaXT{&r-SVtcg5$|swc3+${SKB9*BH9t{GXd@H
66605 z+&O8~(4ZG5jY|4+<D`)-pKMMVmGpNg_68(_lSU;SdU4XIp+#>_8kKbD&Pk(2Pfo;1
66608 z#m?x%9bky{nS*s#P8uiH(T7FE``d@z7bnfG*h!^`c0~J(K)X99jWeD=<RWra^-N;(
66610 za?<#<b-X!gra!}^R{x1{(xkqHWOLH^wS^LK(oBD*M>S5G8+k1@Ns{YeIca1|<F!XI
66611 z_8jzq(Fa!32bRG}gD6LotB!JSP8vinqSv3CG>BY8uByN4d2!On^}J<q(j-SJuYG4~
66613 zjs)xz{_YcrIcX+i16-kvcvo>2QXVG_VjZzQGv+P#%}ImaI-*y7OYO}`gZM@Ks%(9|
66614 zIB5{Kh+EYo!h`*7f0C01(T-^M2ig;H(jbZv#r{CC98Ma<JK|k+yvyXILA)d0Rmc1E
66616 zku9HWP8yZ;cPRD-B!iPiB^`Qk(x{<DZ%!JObm-1Wqef3o#7U!)4iC-FmE>^JsH8`4
66617 zP8u~dIhB*<Mw^r7K-WGcmy_m3`%Ef~R54OjHB$BFq`A>P4-3~6BHI1Fs>Pj?=0=;7
66622 ztB!JSP8vinqSv3CG>BY8uByN4d2!On^}J<q(j-SJuYG4~=pflKnmkS#HT31iNt0@g
66623 zd2`a>*nne$+CI4~P8viyB3*T)C+4I<1S5h~N3bkTnn|qVjs)xz{_YcrIcX+i16-kv
66624 zcvo>2QXVG_VjZzQGv+P#%}ImaI-*y7OYO}`gZM@Ks%(9|IB5{Kh+EYo!h`*7f0C01
66625 z(T-^M2ig;H(jbZv#r{CC98Ma<JK|k+yvyXILA)d0Rmc1E?7J5y4I&;9uR7x8aMH+K
66626 z+bElpCYjQCbJD1!ljN_imd{C}lK$K|Y1Gi57blHM`g7x?ku9HWP8yZ;cPRD-B!iPi
66627 zB^`Qk(x{<DZ%!JObm-1Wqef3o#7U!)4iC-FmE>^JsH8`4P8u~dIhB*9BgRQ{z-yn9
66628 z%SqD_JCh0{Rg6@Xja0okX*y!(Vd0uWM7!@-wYYQAbi_DmQZ#lX=A?0sAj+RhlYo<E
66629 z`j$jBPMVI`iETKhqm@&3Oi#>7(-AwP4|jke)@KgZT{&r-SVtcg5$|swc3+${9kG*2
66630 z5$%Zf8G&|pP8w%CfyhPVs_L1<<{i8^X)u~Z9Qy&s@;GVYV^2gpB7SBd-i?zc)w8$z
66631 z$4QgwxmnqqG|n;APxW!<q)C12$mOK*YwLJ((oBDbNv-}9<D^M_3(4lB@oNhu;-s1W
66632 zOpj`uG}rT5td}I$!E(~bmd0z3V(dBS1EUYDrVlKGlLk?aC|4cj-kdauUPP}yIcX5N
66633 zh+I{F)$`({k?VQO;-pEAR9^ee)X+h)V>Ef3G-~L}jguzT8uR9)!Lb3y2DN>1S)4S8
66635 z?wgYay>&#d`j*<8lLqmN_*L2ZdU4VqZV|VtM}!Ca+x{dc4Wb><?hmvl;-o<oBZ~cj
66637 zT`ixJMkW2ZbJD1xK`%}kmGtMvNh4c6*_<>g>F-eN4M+wjjY>N7;-pbSi{6|xD(TRj
66638 zlSYl6oQRV~B^@4`oh!-Vq)|za-kdaQXmTni&Gj}X&4I3cN-ihO_4b)m7^z~Us%oU_
66640 zR2|b3bJARIpV5aqz!2**2J5bzG)}Ce4~vNRw-387PMYiOlS&coi1wL)c6Ux1XFP$(
66641 zMdYgLnZ)KDyf|qvnnWD?0mt$<Y2sr~L_8vXW+2{;lP1-(xBJIQlj^xy*_<@aG1X7?
66642 zap$B-ee1~Or15L(cyrQBe}+k|{uAS*Nqq~+=A`j!3nk*Dnf^?VYMeBkycX*u$#t-t
66643 zG_s}f+M^hI4*J081FPu+%iyFzlq1SjN4YmA4Wbv(>rYM^L@pv%)nE0zIBDd1-m*Ap
66645 zSQaPEB-U|90`>`i_ld-uG?TFbuFyujt2hfOkCO(mj#!@=^OpPOq(N^T(W}0t_U5EP
66647 z-VyJr<9&Me-HVe35s!#h9r1EFY2>bLl+8(#OzFHiX;jil@>f^O=cG|df9{+#YG}}l
66651 z7_7T;(m1h>J}e^M-#+ZVIB7cVlS&coi1wL)c6Ux1XFP$(MdYgLnZ)KDyf|qvnnWD?
66652 z0mt$<Y2sr~L_8vXW+2{;lP1-(xBJIQlj^xy*_<@aG1X7?ap$B-ee1~Or15L(cyrQB
66659 ze+`T?AM2&Sn}N5;%goa<$r$&s-ef-39P%Hd#8^htnMbvX&b53gx|nJFINn;6w-)8C
66660 zMR{vc-V(&o5`?z|;VnUUOAy`?gtr9YEkSro5Z)4mw*=uWL3m3L-V%hj1mP_~cuNr8
66661 z5`?z|;VnUUOAy`?gtr9YEkSro5Z)4mw*=uWL3m3L-V%hj1mP_~cuNr85`?z|;VnUU
66663 zEy1p=CD@g<1iP}9(1_I%?8;h#U0F-8D{BdMwR#1$+Jn8`!e?HsK2*xtk*wE5`y~7S
66664 zID7R;_WyC7H<_!k*Y&hSo1L>OxF>C8+F1JS8EZ4O%+9PMvmVG^nLQR-le5eE3+)a)
66665 z3a`d<SRJ*0u=brGI&05d){bE^n-q~ntQD7%Y7!;ONe!tbbz}u=%a!E4WEE>i)`qMF
66667 z_5Yu}w}Fo$tI~(-o_p)FJKdd5y3_d}<ckaw^4SSV2qA<JvdAzQ$S|1<6C<(=A|kSg
66668 z$RZ*lA|fIpvMjPJi-?HGBC?2xh$Dl@A|i{3h=_=Yh=|B!SVVkJ-4vv{>x{bl?tl0F
66671 z2kZ}cy)k6~fDck206_>rDuf{o(jfv-$bcARLKbAB7gRtcR6!i7(HCl=4u+vOG{OjI
66675 zQj66m)WK?{TCWa6?*iplGLBW5uY)q0IbL(F*w@{}-u0t6j^b&{U>TTKV=RXIc4iNt
66677 z=J1i22>|_Q6z;dM7AzmlMq^1UYsJ>aV1^JfL+I#V<1q6-#h$`<$FuSH?$ekvRP?tA
66678 zih({i5%)VVe+cxwNw|HEJ%=TotP|@$&z?twU91cF0{s!&L65{Xdsq+Fc@ujRwl;-L
66679 z!B5R(GqL8|*xRtqBDP2gqqn|KNkxxcqJ+?E-;dw*LH0q!`EmAf{Onq`7C-d~_6cll
66680 z9p)!MZ(fg|-GEsN(5wFew|15S^zBb$&24NO*8B|n43=zX+wr?T%RY;3?qEBxwa>B7
66682 zJB8b`>@0rj2Mqh37%k`V8!xa6SpFmSBP_qjE@BHm#vEy21pNf-{FMC^F<)g@5yLOo
66683 zFR<nfb_3tN$!=oJ+fE+6i{J7pdlk!jSufUqjlG7g-E;Em1FZQ6C(GJ5Zt$OCqJ}V(
66686 zVT2FI{YGd+JQ(TNW-~P7{wNrQ?~aDixP2OsmoWAxVEJ?K93IP5n5v{<E|`Ju&V-pt
66687 z7_-70tTPwp;y1n%-ihBe59VQg%o2Fi?}m3{$pTn_?=FEQSo6d1VQgU~tVBE?fsbIF
66688 zkHSZBy9U<a7BdOf`2>6dKeZ0lVVzIHC-MB)Gu`<xxBMN}*#H~x-Hosj_df-n!up?u
66689 z&ni*OIG@9kU9by}>kIG&MaAs%Ma9Al)W=%;v9&M5m$A+PIDqed1-^nMn3WLQAvmOf
66690 zeJ2h-`wF~*?Vo@Xc)Ta!B)0H9_#W23443h<SK%st>gVut{1j#{EdM3^5=(Bt4cz|~
66691 z{0jFmm*Km&;1;&_8~6>jcH90nI%c-tVheZR4u01?xQFfEhx>|(xeieI;XmBR7xJgZ
66692 zH7wD&t^npgL$Pz9sc3c{#1cREW1SS9f+YbS!2KW(V*L;gVa-&YisfM*#_}|trkFg=
66695 ziFYc~_5I3x{S@kT)V4|(bF!kW!T&+$?|}1ny8Jus@%sVi??>;a$-mPdzwdYce)N8-
66696 z{5$&i?~wdE<?-LaL{!Rr+3VY$gepA=Rb~>Zv?NrqBvh$MsG<(4U;?Uslo1DI;#o;?
66697 zofQviZ7JeTL>)>(9Z5nROhTQWggPY&bvOyNKM8ee63WnDbZ)~*C^M2!rY50`CZP-_
66698 zp-fLg8Aw8zmUM1Yl2C{LBGhR~sAEZ}!%3(!l2C_|P)Cwb2a`~zC!r1`p-$^ZEt-{1
66699 z(WOim_U|$iQ3sMxrzN3INkSb?LYeHR$$lC5i_TqY5{hUNick`YNYc3rB%w-6I(I2a
66701 zE0&V<t>L6|<xfJ9oN1E%DA{jP{-P@uNkWm8gd#l&MP||!OZKCTq$`%3rK3q#EIDgO
66704 z$~e4!Q{`_EZBAv6uU=vce)(S7<M-I(*6jUsS9!XtJnAZsy2?{r<^5L&P_vCygjgb$
66705 ziq&Ep{@tTY!j~dPHT&+L2sx^$%27>Cj%w<1RMU{7nwA{Z^vO}p6gjFHmZO@va#S-<
66708 zs`+L)s`)o^RCBHz)qJNM)to0sHQy^oHQy)iy?j89YJN<PYOa%`nxB-Tnj7V)=BMPS
66709 z=2khXxl@j6eqN4henF0E?v|sPUy-Al2j!^dSLLYYVL7V#bvdeeOy0LSE=M)LEk`v^
66712 zcliyIe#4~SFzGi;`VEtQ!=&FZ={HRJ4U>Muq~9><H%$5slYYab-!SPnO!^Ize#4~S
66713 zFzGi;`VEtQ!=&FZ={HRJ4U>Muq~9><H%$5slYYab-!SPnO!^Ize#4~SFzGk_cjfT7
66714 zq~9><H%$5slYYab-!SPnO!^Ize$#)??k%`|t8?e>9k{jqhDpC+(r=jb8z%jRNxxyz
66715 zZ<zEOCjEv<zhTmEnDiSa{igqZ-@oG4_8TVshDpC+(r=jb8z%jRNxxyzZ<zEOCjBPi
66716 z{-EtQ*qcGWQMhxj@HKg_5dB7Bw%@q!6=E;P_8Z(r<$Xi+8{9tW+&!$oE&2^^<=sQY
66717 zPBijvypx*@B}W-7OSsHb982wci(%(4hJUS*_Y&=wz1M+fe$d3Jk6ym{!3nWY&X$Q&
66719 z{D1ymmh(~+UFlO-VYz4T+y4yd`;Y#qkM}furAg0!^e@wS+5hYwdPKgLru6kFBG_u0
66720 z{FEk-%WzuP<euGb3hvumRkm!%efytZ{@r&j>|TK(KWAa7j%v@3FT19#dhAaL#V2cu
66724 zi~UM<>VzaxQ=Y**JU6MRwF~hK<)F2{GXu-grMAm(j!?+63etyy`0~lKW}mlweEH?I
66725 z?c3UC&ydPBU0zkY?F{@>D*heD|2}*tTb^}}nv_dy_7SHdraXCtV$N7j-+A?6xhc;s
66727 z@(lSU52VW$`pUxi%66gYyShcv>lJwoEO}l`*~3(wYoI&clp^Q-Vvj$~<kbnvE8piW
66728 zX|hH8_$+xg`h2_p+qmQ5x;*x%Y}JyA-gx{ScAIHf<I#6L@<dDaLzr{6xkP1qn_V*?
66729 zqfe8^tV)meOAit9JoO>y>(SZm33-m}xbJ(%C%=hHPh!py*w-WEeE!kD{y6;KfB*Z>
66730 z`w#x70sQ~+pC<X_5oh(~?!FAr&pX1!IYF6InB41Ql|D|f{~7-;a*g(1d|XUf#j;QZ
66731 zx3TWVJ#22{S+=6_9@}g`+kkzj-VxKlKVk(GjM#;}qIQ@z;w~&~iou$uM%dmo1r9YW
66732 zgELJ#;Cj<Zc-VBCr;kh@Sv<0ymyGP@%_Eoa&XL<j?jL!4<b{zp`K;y;U)o&L+}7OH
66734 zmeQ7{mI*CWTjsSaZ`shYz2!j5iI$5kw?-?Y!=sBv$49r0?if97^!(8)MsFOwYxKd<
66743 z$OR);>T5^t)_06NGxGAtJIzXSxH+#mt{-mh)Xz3AY+lj4v3W=H!RF)57xWv=4`nVX
66745 z0%MJ_!xQ!H`0hW$F*54I3KjJk2~nTr@k)0th$Q5KERUzTGemkqhM=-kjL1^%yb(?)
66752 zns|U$#^by#-pRY;3;EpmX1*f+GT$7(#`jfQ{6uwmb#rwGzg#_^_f~Hd{_4Zkr>n12
66753 z->uO^K~0IMuW7HDQZu(^S<U*I9W@6<d(9;=Z72*)A6h)Le(1QN-9u-Kg+td4-8OXp
66755 zH@9wC-TJy6bqDK?*IlT)UU$FVsL!e|t#7IyU*A(dtA26)s`}0KyXp_upRB)Bf3yDK
66756 zF#oWuVS|U&4r?8}dhqttTOOt2RtZ!-jgt8^O6JojnNOo+K8=$3G)m^v2$@eKWIm0M
66763 zdS>;4>Xp@-s&`i(sy<bHvHDi^gPK51PEC1DBj&~Kn%OmrYF5^4sM%h#Pb>H2B6oJ6
66764 z)OVCr-%(P1M@jV^CDnJ7RNqljeMd?49VOMbJ8y*&O1*d^r23AK>N`TJ?+B^BBc%F{
66766 zWD7yEg&^5NkZd7Hwh$y+2$C%r$rg-c3r4a9BiVwHY{5vj0Fo_$WD6kK0!X$nNwzRa
66767 zwlGPy2$5_NBH6-6vW1Uii);^D^r>3#sOfdAgf+8HHj6D~8`y4klwDxAL4zEK!&vBn
66768 zd9V_;z<xLhSKuBG@FL#8C-CWfQSoiQmha$)`B{ELC?fjA5>fiZHqj!w#B8xlY#baC
66769 zdj{8tV}rZIMR7+p)LgY@@KJT#;Opv?C;jStb(OmH$w}&gCl{!vp4_Bfee#HU|H-Rb
66770 zsKn5UOG>rIk_lQz$-I)~B^$IEC5N=dC6~2zL&T8ikikQ0hm6&B4w<DL8M0=`)*<_b
66771 zygcOWkSjy(YUfI0+Rf6&(s8BTr87$xm98w^q(kYE(le!3OYfA4vT#{ZS-h;Ztg~!J
66775 zPVyxu`I3`-$w|KCBwq@WF9pe$g5*m<@}(g8QjmNpNWNqwUow&}8OfK7<V!~KB_sKg
66776 zk$edxUjoUOK=LJ!d<i690?C&q$(JU{mnO-VCdro}k}pFfUxrA&^pSk&Bl$9$<jZW5
66777 zFM}jsGS@YF#Fu^L^j#xxMQCEVxBlaC?g7Wy+yOV)iri4&ICpLryPUg-_2zB?f9_Ez
66778 z$h{8r1O3oGuo9*XoCFI8E*Q9S;3ilz@Ca-lcoh!i8F^WGrFl(x6W~nVJh+~>A#Z2i
66779 zp}bRhm-FuA3wW46n5XBD&+o~flfN{7UH<m`1H2^vV*afHr662TR8U(mwqSC>tb)Y_
66780 zYYMg&>?=4{aK7M1!Gpp;VP0Xpu(hzWa7N+6!c~Qv3-=TrE<9a$rSNW%Run5LDQYYl
66782 z2HhU?usBqlTU=S(R6L=$r+7~B;^H;Mn~V1pA1*#we4+Syaj%DG-MmG`XOxW3C>fto
66785 zr=F+t65h-^`K+96d}+>cz9Hu(-_4Km3j=ES?Ezgv8?Z>^4A>CENZ1FnmnT)&u?
66786 zTParNPRgC0yFhHo-6Zzs9uX&Vujcj+GzMl3EEQJ<P7wD7&KtOV;D&)a2Ob)DYT#ux
66787 zkSEllyuo=5dE@hX^5*0%&Re54<n7BlmUlkyM&5&bD?cZ{B)>7gJ%396-27$vYxB3|
66789 z!a0SDF-A8Q?kL>viJuS|KM^v1f@J)pC&UjGmz3U#l6ogf>YXU5cOs<TiI93HLh79e
66790 zsdplz-ieTUCqn9-2&s3%q}~aWdM8ZkoiM3)!ld2_lX@pi>K#tzQ%>enPUcfi=2K4Q
66792 zh|H%UGN1aq`854D%ZjA4%1AwHi*&Q@$dbs~$Tl`Na-6M*++>@hp=d$0CfXM5V*8?t
66793 z*oo+t=-%kj=(*_i==}^oyPQ$UdNU?vOwU-5u`***#_o(G;Lo_4(Hk>jS+UYsQ*1(P
66795 zYO}^>P0pH?wK!`{*4C_jS;w-@XWhtpkR8a*%P!Au&hE&bmOVdvMfS$*UD*e-Pi9}p
66797 z16B{%GGO<BBLhwixIExiu96$b&C4y%ZOk2)+m$=rlR4@8!*s8mzUNEp2KwGC-D9S;
66798 z0DWJSj(7T=Bprb+#tq+LZD~=~oz}qSruDEDX-nDWwC!wP+6i_d?H0S79!@VxuVuaI
66800 z+5u~#^P?-G8>73Thoh&XSE6?_w2W9rNk(Hvd&ZQExf#nc)@SU<IGAxV<5I@$7{t<J
66803 zm_H{gXK+q!POFD;-E2qYu_&3xqGTS6l6fpj=CKIrr4iCgBczu`NG}bOUK%F7G)#Ia
66805 z2G8X+d>o&`=kry3D?h+b@vHp42#I3RC_2Opu~@7VJH-)kPTW*Mjj82nE7VqXvN}gy
66808 z%-Ci7ywRO;+n9?!Ul6N_wZtabIn`JZ+hA;t9f%!^osV6M-OJQ6W0}R7^_gv%UFi4o
66809 zFt4u3+-&SKP8!!u#f*9UHJ$X=Oj04HkzO22@M7w&XTMiO6MUOesr^0}N$_||rS```
66811 zcc9&OGU?u<`>rQ-2RcmNfew>*pu^-HXtzpDeA3X1*R4|NC#v1gA5wRq-P+ZCFO<3i
66813 zWQ^>QF|tR-$Q~IZdt{94k-6`tCO)g^#Q<cF49FfCkUcUWdt^ZN$lOmQ(ockhU8Piy
66814 z%p`kcCfOr1$sU<W_Q*n{k_nMYCPXTk5UFHBq>>4dO2$Vj86T-+e58``kxC|;R5ID5
66815 zlF25OOpsJEK~l-&kxC}dqhuaEq3FHW-1n=@<ZtZ14^7{1X3Fb5O&Ru-uhQ<ZEIo%+
66816 z>dmZ8pQg{(SLhq{U94L_&F1QN4b6xdB}SvsZcJe-jAd-IvBNlsO5&1n+XOS6?KA7m
66818 z;+y1~?pxqn>D%Pn?K|Q-<GbqX^&9>yf2qI8KfyoMKhMA1zrnxLf5?Bzf7yR0MWjSi
66820 z;A-GbPz1xlqF_AO8te?t2+j|#2(AzA2<{Ia51tEN5B7$PP&70+R2ymyb%dsbW_$Dy
66822 zo1)FtmTBwRT-2o}wM*J<9rSd)Sg+T|>D~HleTlwS-=^=^kLwrooBBf|WE2=RMw`)P
66824 zwdPsNtqs;r>yUNIx@_I?318GV*w^42@9Xi+@-6nQ@on|(^Bwb@_ucT_^IQIyzr^3@
66825 zZ}(5}&-E|yuk~;7@AV(?pYdPy_of&rS$O>$<n^DCvM^;;%I1_^DTh-|rd&$7nes5;
66828 zXw$U$+6rx>wo5yVeTggDU0u^-dWqhsx9d~%x%x7Fy}m;~sGrm?>9-9q(v4!H-WX?e
66830 z>%4Wty63ZeF<*(V-Z#$I?VIge;#=$6;@c}@_OkDeU-+Z`B7d#F)!*r#=AZ9h=3npM
66832 zK9euvtN9kbmmlTl_;u{d`9-d%6fI(sm@XEGm12|Fjs3YZ;;QIX4K+(GRh!fa>Qr?e
66833 z_UJaKJJmz#DfO~?M-y698>}^G<Fy`bj<!@=r)}2`XeYFb+AUqt!+McktB=(u>$CL5
66835 zFPgV3#R^+RR;|@)bz0M``PMRPy|u$SXdSmM$h>LzvSjRx^-cE8@GbPM@U8c4v#*2a
66836 z-1gtIDP>LAAD+tQvE^(7+sO{GQ|vOk0|NWRgP{S&Ll4Y>rLYdR!vQ#f{o-4gUc$VH
66837 z*YdG^GM~j4^EKEv-p7ye^ZW*XAOa#!#6_#<#QyO@u}W+fd&JA)thgrbsg|0fmaENb
66840 zsgv)iQ{<^r<f#+$)QKh4iFhzaJeVUM%n=XfhzE1TgE`{C9Pwa|crZsin8O~-VGri8
66846 z!5Q@63?|?VdT<64a0Wd%g9$i;9-Mg|oOww&ne6%Zw~^<;n3sSt&x0{90b`yAV_pKr
66848 z&0=F3s$v8GdtO-o46|qbEMjkFFR|(DEo=sRE1SjM&StZBusQ5+*j)Bb_AWNxp6L^n
66849 z?uXb%*ebS~eT=PPpJJQXR`z+ei+zFZW_#FPwvYV_+t0qt4zRDVgQ$oPvm@-NJ)bB0
66851 z@C;0ZPIw-=;02frZ-h6&o8cvR3%nKH2D9KD@Hg<cun^t@i(oOlA3gxf;6wIoobdPX
66852 zkFW*)341l4K^^{i*bV;-d*N$v7`_fi;G6Jm_*eK2oPzJd88{2yhjZ`)I1fKUwf<wc
66853 z1V4e_!CiP2UW0#!2k-~%5!nly2%gR(JcGx0CeP+Md;lNF^LRcg`$4>z59Uwu5<Y~N
66854 z@-kk|D|jWZ;?>xT8Y-R=uZaiZ58|QtqsmlJxvJW8aH=V4sv1_))u@`GW~xuBCF&5h
66856 zd$S_&3crNg>1;aId<%OE?$2=Ma-D_Sx3jlno3q($EPn@k2bSRV$Njl%F7CgRy%XPk
66857 z7kd}BIiJnPl6SLrE2>=0Bn7?Wz4-28XExZSiXVMtIoA9T`w+IUf~~-sE7?lieuRBQ
66858 z(a?uh;k&EZYJB%&>|^+;H4OcjZDbo2!}cuKys^7*iynsc_pm*<|3&siY-caqi|yE}
66859 znV9Hz`|z{>!u|y@>}UJ24*DSOe}#Po%MY@H_*r|-S&(zi3TMt)d$w6FXPf2dpWnuJ
66862 zSZ9cw!PZ`>Bq-;x<#HZdUCv{xW6X@fk~U~l{1`odg)O`R-hd@f!Be<>2A;tdCc;F-
66866 zuYoa-9))rLF|29N!wawp{sGU)X4s5J`j7BWSh5YaVQZg(&tS{jVLR^ItDJ-$&(e#Y
66871 zQ#8zTWmr<q%drIW9qw20D%`i%MoGckSB-UQcn!8Wln-@gC|2dH#PDcVV(|dCe-M9A
66872 z1ZGD>F8(O~s4&cucnFv!RRvT{)f78l8j8T2**9~sUokLyrpWn=!?;a%W-*T9Hbc!&
66873 z>?aFi_^C`a6Wg)pH8$-0iti3lhv2)VYAL>3rj{w1TwTSK^BoJ!ym72wtyW{r8np&%
66874 zViv}dz8R2HSQciV6BzqBY^qYD+)~CX)09QZI%StLPN2$p;T~~(|MTi}Iam7TC-s)U
66876 z=~m_`s~#VXNumR?+@2?vK3m-LosZ_UpvqOn@U(Bw+Lx!)KOWVgKF40CJw_Zy-%PfB
66877 zGyO5Bz*wxX=h;?jFl$C%I%3=pL9{&geDR@Df5o-<s=8?NoN;SjI%2<`n__Rfw!Cy?
66880 z@A`M-yz4)d+4rKHcm2mQ%U+T5uK!Ht)Ejc%^<T;P`b{}se~O%=KOpDm56U_ELvoJ(
66881 zn4F_OOU}`sBj@NJDCg)elymeyA?N5HEa&JilXLW!%Q^aoqK3$lsxKf_pXpM4rt}-r
66884 z#-Cy2=#N({xQ_dOUOgI8J^B;Wqa9b_|Dc96VGtCfB6<P_qkc%%lW8tJY0CICF+N+d
66885 zX1}ToI;wIkjK%UkZ8;9cDd~>FY=?Gizh7q>&;cEY(^i{7n1m6oNzLg`(3~&Ai}<N-
66889 zv{^h$vHpy*E#L)M$JV!Ig1&u%KY^_!t6bwxs@#xNxkiG@t>v}Y&R?!|?J3Z;zd-T&
66890 z9K{<@1B&kG-ZV80_y4^5^}UYzHKh9WJL<Pet-{v48hEHW6cM_Wu;<reiN6(tY5l(w
66891 zLoayP{|m86*Z5Mtq3_pW{I<}Zn=f*n+bH5<tmqN*#L7-hZ0Rf!`#amkNpVHo!=o+g
66892 zJg7EwUQ#DK59)Mvk-GNzaq5oeXRC*wU#p&de!qI-`3suz{6j6;RiKr2wP`I~GrJab
66893 zt=77__G+`c&S}fK?!VxFA@_yK7h1H9FHG0=ys+|xO)u<z;m8YTUby-~uXb#5mUeM+
66894 z)8q-0r%s+XdHLiGlXq%&CZC#odGehX#f#Aw2fx_x;`kSPUYzsd(ihjgxc$WgFP?bu
66896 zjk-$Rt8TeVAJt8Fl}22vV!2Bn)lGAi`dw>bxl2<#M`5{+Ej6Lki`Q};TPUIQQQe5E
66897 zG>yP(xsEN(RT?4iTCQVr<Ly5-e?n=B=O|3qv4s*!y?9O6u>})Kz1PA_Sdq+K>cwli
66898 zj?JG?O5yE4ihjJ@brivbQZF*@I*LF-srRh&gcZ`<rCwy*h1ZR&AFum4+z^35xbV7X
66899 zHAp4Sq;TPNKb@OKU=S{3ZVdg%+|SmAh;L&qWbRoFQi-#}T*%x{+@=v2m<yR3Lq9V2
66901 z3A~1@-ToFdR|^4GX)1vs=&I{3O(ojZU3FjQSJM;^K3$T?gijyj%}-yl*|3ib+sE;v
66903 zVY)hD!b)}egxwR4OgN)1n$WARotUNWnAkLN!o;Z)=S^I$9-g>UJv;H##LE-!bcl{<
66905 z_WZLqo_#PWFez_Rd{XPA&Pg*SEu6G!(&kBfCcQlA?4)ax?mcHcm-AftbIs3nJU8vR
66907 zERriMk}E8dD=d;LERrisk}FJ-D@>9rOp+^1k}FJ-D@>9rOp+@&$rYUB3QlqbC%J-?
66909 z3Lv>cCAmT+xk4qm!XUZAAh|*#xk4kkBKV)<3aZbP*kkJBhrZsD%?$nhq&H-#4eErx
66910 zK9agaJ^TjD`)@d<-p~{+s+DRj;~KQCaXs4XaZ9yj+D2`Uc1*iC?v{4vsjzN5RjcRf
66911 zHTt-x7VA@<+N#fg>X^RjsT=y%@d5q7__%&*e5ZbO{6hWy_|4<@jDOh(jlX6TKW!O}
66912 zPnSR4{B+0D)1IDhbUeM$nDO-Cr%yk9<>|ZaT6?U$#8}+kZmesc+rF%Qefy5~gY75V
66913 zFSXx(2A)ZOrudoqXU09#{mkrVmUy_r-HYizi<z#{{`g5tD1B5n<|<7iIjG+k+#D1k
66915 zslKk8K{8yWRA1N4AW>H-)z@`1h?|+HzOG63bxpFb>t-7_D^U7{llp~|`h}DFg_HV)
66918 zqLTW>AoYtu>KB95F9xY!3{t-sq<+yz{i2cjMI-f#M(UR!sb7MmehHHLMJM%(PU@F1
66920 zYtg#2*)4h6vX)kDW6KO}Ps=LpSj!&mV#`_WPRl*r7@ec%j&8Qshtq3Duh7Sh-lb0&
66922 z+s5o4b9~H&F*nCNYzws&wAHk=wRN@4Y+KZ}x@}9_-nOG{=R8Wqtv)C=_mOPwBiY<X
66929 z+n_bX#Fd6daj#)Y!`y~t4eJ|rG#qR=sRkNut3|`phZhg8A3kn)_wd=nm#7WHw+-Jv
66930 z{P^$-!*33M*cfUoXsl^$YwT*A*|?~2b>o)Cy^Tj3&oy3eyg$M}B6mdPh?WtPMob^E
66931 zV8qH1n?~#&ab(1q5m!g_HW^J>O{GmuO%s}?HqC2V-n5}<XVamkQ%#qf?sz!f&Batc
66932 z^^y71N9I!>nNNLWKJ}6L)JNu1ADK@rGM`#xKDEevYLWTWBJ-(5=2MHzrxuw{O){UF
66933 zWIi>?d}@;U)Fkt%N#;|N%%_~pr<}~EoXn@3%%_~pr<}~EoXn?!%%_6Pr-IC<g3PCa
66936 zKh2xtcX_8=x2dtZy?P3tRlSTat=>_6u=-^6rRv)?P?OF#)YS9ca?PeCHEV0O)$Ff1
66937 z&X3mIta&&zG_+u7&Cs@?T|;LMT{Lv{&@Dsv4m~>b+|cVo?|as=+f=)|_DJoS+N-s_
66938 zbw*uQU1?oY-GsWSb@S?$*KMfVS$C-JRNdveJN2SIT0gkHL9Syrr+#Vuy87+)2kKAM
66939 zU#!11Oc@p)Ry3@3*w|r{hs_$cc-Wd@TRr*I-3Or}+eb#WkBn>|8QDHEvVCM^TV!Ng
66942 zo5_01R)fE6FBHf%aPF7;%X6W=yan3Jr<X4%Us=AXe0TYg@-r~4ycZT$WL1<_G*wKf
66943 zm|8KfVmYj-*jaI?;#9@uiaV8}GFmyfvY~Q(Wl!at%B7X-Dz{f2s60`5vGP`xQWdT$
66945 zt2(D|P0Z?P)$^-YRBx=_)xRcYO{}IwuKng(6SL-I&83>#iECmGUGiv6OiyIHRSM;$
66946 zKGI8lq?h_gFZGdLYLQ-QkzQ(%UTTqEYLZ@Rl3r?(Udl-?<)oJi(n|&DrR??j$JX;t
66947 z9%Y-KyxxD`uA~bJN)|zV$(H`RcSHPeXh<cT88WHw9^Q~myky7`-aO<g?<_U=tkP1x
66950 zD(+QUl{uB=mCcnMmD4KcSFWhsSh=h6aOLUBE0uSvw5nKDNmXN2d)1VxxmC-m)>rMQ
66951 zI#_kG>QdG1IK<QA#qs+1xOjJbc6>>EZG2mNfBbm-Li}d@VRfjwz~iMs(o545yp-Z9
66955 zmDqE<&DU4yTlE7a2lZ1Wm-MScK)-K<jN&2VjK(3ejgBE}jTuAs8;gfrFxCxuXzVO4
66957 zFD-8>pHM!vd|vtT@(rF$<i3Z{e-^XIOq7_P9@TX}6VacEXnpJ+Y3RSRK<6j-GZFoF
66958 zq3NvUe#U@$hQpn;GF_$AGaT-$<$flDdWOTD%iJRk)H59J4Cls6J;UM7d+uips8Jtx
66959 z-ix_PsZk$y-g7?_L5=#jv!Q#Wfg1I3=SVkRYShP_Io;0~P@_KX%$eaTrAB?+`PBVP
66960 z1U2g8&a&>225QvDoqOGQsZk$yMs`1AK#lsi^K{fzN{#xsv$y-12x`>Fozvap57elS
66961 zJJY-IQlmcZ`!4P$52(A8Zmx*9N~yb)ZU%8bDM8((bn}XPtb)2r>As)i#!KC$bdOae
66962 zJ}Kcv2BbCvQkwy(&4AQqKx#7}wV8VaBk}nOF9wy=W-6)8R8pI%q&8DYZRUPbg1)a6
66963 zc9l}v%pkRyL25ID)Mf^$%`{S*x$mN-x=JZ+rjgoABej`EYBTrPO2}18X|o`y&4Q#h
66964 zbC1IWU8R&Z(@AaS9-VQ||DUYQ{zsHmqOR(DYBaC8PgU7ZjM{oC@3g)u@2;(>^i%p(
66968 zrIc!PD=W7Oqg10ssz!@cjTWgIEmAdFq-u04t3<u!#p_m9iDN;O3Zqn`NvcMZRE;L7
66970 z+$xMxje=B-f>e!yRE>gEje=B-Ze^9Ix4d}W%8DNSa;q>(H8N5)GEy}%QZ+JCH8N5)
66971 zy7g9~3iIN1>n(Z&&aKTT)d-|&1X48usTzS)jcyf|sLi~{+$xM71#~MmN;RsaYE((p
66972 zsFJGDt<4e@n-_yyo6#eYZXHLdMuSw12B{j|+Km3KOW0LPsYbVAbL%)tHEN`4)JWAB
66975 zJa*FD6uWKiHIJK@GV9H|ncbF^xx~uL+-B8g9=FD4-n6D>g{%cxHP-5^uB@3^i>z%~
66977 zs+2aPw69wqe$rJ+X<xTKbZbdU`&y*-wMgx2k=oZHwXa2LU$;I?RE=J|Zhe^e%T-EC
66979 zeVC{ky?EXFF!6V?l$NBluOPLrAhoX`wXYzxuOPLrTOTH>MlW8sKBRwX>(-K#_GP5@
66981 zR*m#;i`@#7(!MIGeN|HXs-*T+N$u;_l8Fk_i_EPh>EAcIbtk2L4O06Wr1mvP?dw*U
66982 ziMrE^!L2aq-&niVD5ZThQu}J8_H`>vdQOnAtCZ5dZr$ltqm=dylG-;&YG0kyzHT*|
66983 z>MEtQuTE-Toz%WMseRoVHRLL#v~QTyzF|`Px|M5+tMqk$ho+rmbG6%Sg`VE0YV|4X
66984 zvc8P<>N~)%pM(PaHq;yG&~DVjG@~09_N~(eYmDQt-M9&d`q$}#Gv*?={&=0P>*jsS
66985 z4-c(Mo^DODrdtcFmDVO}w{?V<SXZrHxjs~>ugN#TH`O=Kx7@eEx6^mXck1yPU4#7%
66987 zHV5_uUJjfMTnpR_TEU!Pd9XRy5u7I1)Y}-`6+9d~9lR2}8`46tP)VpU)b7!<?kA)u
66988 z-}RBc>mz;FNBXXh^j#n6yB6uY7U{bd>AM!`yB6uY7U{bt>ANQByC&(oCh5CwZASlk
66989 zivC46{fr3x%O!fQDf(AK^b;PBR?cf=S$rC+<f~X4-^053S$>V*V{=6wTOnH6=Kl4@
66990 z*gkQVok(17j9pe&u-?S=#=!q)*BkqvSod&_Z>evcZ@ce+?}YE7@0MTjhvoWtWBrr;
66995 z^;P<2eUJXKepbJx-!m*D$0#?NjSgd)G2gR3V9YEr8_jleiaFO@X0A7Pm<P?1<|XsC
66996 z1y;IMEZ4E?wq{#PthLrQYrk9@@TStY%Fm-bMrGGWXB%AEmGUCLt6o|{J#hI|e@Vns
66997 zC*rB&_tfzx)v-L-Ezi~OtCyP8R==nAmn7r1Jh&|nZp(w)^5C{SxXmQo;EIO+l4Q)L
67000 z3?9tj!3-YE;K2+Y%;3Qc9?Yr-v+BXDdN8XV%&G^o>cOmfFsmNSst2>`!EAUi8y?Jt
67004 z!JO{FoSuMLQ5d_cyoP<ETfCP)6q*Q#sK^z?qFmIXf^8G+qEqyU>0-8+FBYSgT`ksQ
67006 zT3xShM$Nlh-H*MhW9ljOoO(&UrruI})rZ)>3TRO+S1Z=aQ3p3^ZP?T5)Oxh(+H7q;
67008 zdt~$V#rkr6wZ0ye^LBkV_RS9K$MjSBIsFo9=v#U(_R=&XU_^~vqZrk6t<i-2wRWS^
67009 z=rN`nvr$(sHkM=0ZN0JC*lz4L_M^f+W}L!4+$H0ham(m69-`I`m{IJ_6`SQ|t=VL@
67010 zq3Z55d$3<O+njGMHkX^LQGahXw_^`)zj@d^W}Y(7p%TAl-ZFd5hn8jqtf-ZXn!Mbq
67012 zSL`eI)%u!zZN7G2C-x4f`)2#*`xg6_`&RqxF}~N7Zz*?`hm13mg;<0|Sq6)-LF`FZ
67013 z!iHdfsGL=>N>;_<teVxZp{$+_V-2j4HL;Ow6!w-zvsN~S{S_O>o?_$K(`*8p$U3kO
67014 z^&IPD&$BM}0-Mab*&A68dlQ?2J*&5|_pv4H{p^G6<7_Sa1Y5_}vkmMY*k<;R*yH*%
67019 zhimW)_$AzcU%^fIHQa*Vz-{;~+`+yjaL!e(ah)67<QDf~Z!?7lc#wy9Di8BCjJ12>
67020 z-^G3GO$ODF8c}o90qQ_CPt8{g)IzmL9fT411oks4)p~W9+JNf!Tl^S5hW4&wANE<s
67021 z9cwx^<k*N~qmIpRY|OEP9Q&kWOB_4Iv89eJcWi}YD;-<q*tlb>9b4nrp^mM0>@deR
67022 zIJVKTO^zMu*invcaqMWvwmNo<WB<yr;~e{xW5+x8X~#}*>_o?QIChd_pL1-dW1n|y
67023 zmt$XW>}1DwJNAu^?Q!gz96QCaGadUj$G*?8OC0-t$9~YUA9w6p$9}@G>m0k@u^Sxw
67024 z502gJ*nf2F7RP?tvD+N`8OLsS>}MUj!?B-p>`upi)v;f5?AIOp4aa`dv9CDxxMNQ`
67026 z*n5uscgOzTu@4;k2gm-g&teC(&oak?V||WIacsb`LB~4r2&s+@J2uU+>5g^c6`Xhl
67027 zCtkscSIBg1mSeLW>%=EG@d-|Rf)k(M#3wlM2~J!>tz+vP>%=DvcdQeiFv77;oI<l>
67028 zoj3(2KEa7MaN-SSIChR>=Q{SCj-BV&cR6;xW8dxA1&(#%1y(xtBaZ#3W7jy=i63y{
67032 zoVXQEyb32?g@aQSj&<5oo%U2Gp41%24sh&1$L2XU-?0UbEp%*=V;!DUiyixfV+T9d
67033 zi8s~ZIn{|HwU6hRQiQ#^a-~LTP@0uCWxUd%bSXW`G-akTN13lIQkL5HT==*6_fg9O
67034 ze}#WbZja0Dx8?SP-2SWFo|N0~$n7b){jS`emfP>i?HRfKH@Q74x8GO#)}9Qod$|33
67036 zO0ZuC{&%UsV)29+ES?l4Vu&aeWnw7y+3G~S7$zFTaM37Q|D!rl9j-R2Be35#Qf*d8
67040 zTFDmKt5&l2+N)M#OW$VyioWz6e0_j@m;D>I`h9keeb`=|l6{0-!q+Nxnf;7?)Lxeo
67041 z{p~vYC3@Vi@byW1MOXB^JM4G(t-b6%`xN#sAD{<5#MeJzAJbx6?X@V`F35p$_64Yc
67042 z8g>Nxk@f5w&;SkWo7kIdWJj?-Ig-5sEij&a%U<u5oq>t)7Iqfi3V*|XWv}bX?!x=w
67045 zMGb#Wj1Z%Fw-_T{<$rCj-6zt;?^P}$s;UM=uDyz@7_3IsY*A{jttaB@lWK*iw%2bJ
67048 zd_ei2vP$`w@^)o~*dcx@elB*2-C~c}EB1-~;($0P4vE9!h<I5X701MJaYCFFr^IP-
67049 zMw}Jr#CdT+TojkYW%WgIQ|(sYsJ^83D09>|sZ-SH>YFjky~!C@49I)DsY<4jrDQ8P
67050 z$^a!-8K~qb`AUIOh#WmgDOR3P1}jf0CCU(`R4GHwu28C!xKfSWU8mG5!;ry;D^1Es
67051 z<ngh})5<f-dz2-}-piEb%14zoB3I;z&x+59o#ON23*w)}7sZ#vzlbl3uZXXTuZgdV
67052 zZ-{S-SH!o(x5dAT?}+b;?}>jC-xog+KNLR_KNdd`*Tk>IE%6(1Tl`ks5x*06#j9#3
67054 zpTt~lXYyefu`jXd7-w&1v)Mb?JJ~$;E;gUN8{=#-M(GDIMnA+>U_`CNcv{6)V{hkC
67055 zmddkNjO10kS{;vQ>hOG~$nhxq`Ik)jY;QKc7@pC5+!o@C$+OAuY?k7-0$&WzWDRcX
67056 z@EkIE1{t2eXK?!*`U68>ScKd6p;s{Uu@B>Rm3@EHJ_-f!IAZpF3ihO;<MEU#!agP}
67057 zx7Pp$Jf<1Awb%Vs<%+++=CC=q|1S1!+_%^C1-Y6p$Q7pnk8~w&?e%*5R_X=hn4j4F
67059 z6mGvK&f@lm;-|R%x%fG5Z;Cs(eO0`wF!a$L+`gnv$72L#^nd5sRIcMIh`y1k_~e;Y
67061 z58>8cIaxzL`!Lo-U&DR-N|=3D!XC)O^B&--sQ>M=@0Y8Ua=BWmA=fG8|Hap1JbJaB
67062 zbXAuBw_cT>;)^T2_~ObR@x_sm4QEyL|A)Qzfzs-@?gZ=K`}4i;Pk;S~rfC|~G%e_E
67063 zS}lwa#-!DtRtsZ{F-9$fF(C+{7DA|(Aq<N#CWK)ahOi9F;cz&Z5SBv-LkJ-ph7dv&
67064 zLO7&D2qA>9EXy(kV}dau7-K>hhHSlh-|JUZ_kKv8IJ-G>tao_o_xo<$x^=7S*1c8r
67065 zUU4}tXXJeV9UyDvJ^G&1R9GLrst-?{c^%b<uj<27Z9k)G#aFfB(Qndk%2Z)}c&a`;
67067 znyIs-8U0Ht;}CV0G*f3uM<+)MIW~V!{vDpS&eS>UOpeMAWUbe*8Y0vg(9!A7LY?(2
67068 z*bp{U-ka1Z&&^Esd(}Im)0|y(j&pQ^v#ZW-cGaoP4x7&A$ot3aV~K?4BMbH|wp{)l
67069 zo@?wD&Ncp3_N(&m-)0A8?%^54Opd;X<vl!Mov|J!V=X!Q%J@p1Da_a<_Fv^aJPSCG
67070 zqwkO8-#=#mDDTg>Y%jcuS4lh3kM|=^!DfV~^g8N%UY9rWMu~){@w(EE4wrv_j*pOk
67073 zHPXX7EL+7DdQbX7)zS~|kTtV_t&*PgLFqqVVfQ7Ea6cE7y^X5)gp%*b-ZxeL^&J(f
67075 zZZNft>UrB7BAyPy(;-kI2hGPJn4C6hQzw*x(&|)$D#jQ>$52W$cN@j{ItX8<2w$5v
67076 zMr~@JKNPN5BNj>TcsnVRV?vnDRd*5&X{wyDRv_-nH1&Kl87;<>iDHE8Q$*2(`z>fe
67078 zv(n#gmY(xe>HV*k8ahHQkh?Mlt(Lw<Tzdr6eT?XJ9Aja7PBfHgk`?_W;*v7-s&nE6
67080 z<g}#E$%v_ybjql1ZSTwyRl5_2jFYI!Nfc0sQ;VJ{-08)!U+gqo{o-oBn7_rk8rQ3Z
67082 z((b0m`6^P8?oM~R*WFwGXn$U+BegK74K4-C((UQ?U|(=4T^arr(#Uk9r2iR5kI^h(
67084 z*dp~B#;s-QU5_gDMrE~nAGStbRL19ZB%DRBm-nIaqAE70G8X?id2f>!mGStO<ozr1
67087 z-*CPm@4pbvSU4XzAE<i#@=sYWMKnVGUS8!Y@+ec02h(E1bRjm3qQcM7&&l}l75a*d
67090 zsQn+UE%8s{p9-F`+v_RIHvF7g{7<SDnW{yPRLENNR4p=9i%iubQ?<xcEizS$Ow}Tj
67091 zHug11AJ!#Pb;(p+GF6vM)g@DP$y8l36-!2OewO?|UXF?@Q>u2Us$Ht$N=i#;iLBlJ
67093 zHMd>f!}yV^`lIx>=x@n-m3Be?{k!yc<=;nTL`hX$QWa5B6;V<dJDirk{)vn$X*mBY
67094 z?|)AJT;9VNlgb$LujD<9E~$zxIsGpEu56><qq4SCj7h`!UwIEBO{yZzl#Db75-wxR
67097 zshE_8Gs5!z=Q0|l;f%1nf0un%-oy4y!x>?D|8FuHrM!~M-pgN*aVRfDphNjki8RPK
67098 zlo#UAcveNmp~`xBD)yu*_M|HI<f?}-)kB!-Ax!lUrg{idJ%p(q!c-4o;*Pi@`Goz1
67100 z&&WnH)w`JLT}<_^aD&(!x>$~h)no*jM7qc-8HpYy=g1xDTh`D~MjT;#c1d&q{W>g-
67102 zojs6VeowDY5&*x-#G=1^i$+I;8VPBE_B$%dk3B;j7n&yoy*U$$p0Ws4f+gOugXqD;
67105 z%-WA>1wyN1O22d%{V@DRdQQ@>l##+KVwe~sE$cY(h8QbGh#{g`t@*Zym&I`LIkoot
67107 zdQy&{x8+C@tyv#aUiTldlWNuaPuUrER*oa#diCAjwdx<UN9-TiWA5=lJdwV+97vsV
67112 zp3>8gVokAs?9~-@@^UOIcPiv4Hb9PH@!EX7(pqD$-d<Lk>mtM1Gx`_opJW62dmj2m
67113 ze@*|2{)ld8SJ`=Xjr|w;9d?QRpX@UGzt|P_|F9nRU)ldnw@Z&~m-J-rNx$d!oRLn-
67115 zR;3Qh{3G^Il~0yVJS(&UCP(hLbd6HeVQE^z*<opQ>!h`tEPKLva)E}Cv@7-c2U24{
67116 zk~(Nqc7`eJh?-gd1L>iBpM78c9eU$b(!3x?^3aP8`%xb$aWOyePkKGNXuaUKEgvc3
67117 z&SaTFPw7t!p3<KyzbKxor{bCNK+2WZQLSdYleuoH>_i|-w16zr<^s6<yF>olDW7)s
67119 z_ip+*ztg`c=|3p!-H9UgPU*vcBwNb2=_dLe)%L?y@JGGvpod<R{oq!iHT*K$q_v31
67120 zQkd-`=?{OYtVPrV9-4iCSMWa4=j_L8_y9hT590OwMLtCOoFiqM)LW5|{iLkWl0v%@
67121 z^^PX1f236$Le;7urF-ZeX-N;!LxjnEDy4TDuCh?xpG!|st+G(%<8qm+jDYz_K2quR
67123 zt!+9|pMNCrq=kBg7TQC5!rjjFVz^hC-josREg6e2t>sb`2QaC3nTzuMnezIn^7?(P
67125 zJ;0MS_m>j6!|upbciCN;>OQ+KfBhl*q2wR-k3iPw!$Nc{WX(R3lKcbv2g&m>dn|eW
67126 zqwGE54knLeWo-xY9@Yd?HNj-950v+?CYY)Nrs{wdR-c}UXN9QQk?laXbJ-Rs@xt~X
67127 z{}zr2_iH+N8BLctWrg*qsCQD?MrviMI;V~Z*;a;-v}`X!Nk;YBK(?EvLi8<U`)QUD
67129 zOW!Tb52e-mDgPAfbctS4v+8k8JIrOS)TYl;Qv2bogb4Q-6;?2riZ_{xE}4oenTi}4
67130 z`zHIQq**Q_N5;O*zAgX$H6|?r+r@Ut`>(TKm-pXbdl4JxsP^F$v4Kux1J&wepn6P7
67131 z)>b|7WM6%e__DtaDXdE}waPAlwRDu;oy1y-5p)SXOz)FE()XXDb_eYxXUTmU(0b88
67135 zGICuj%QcbAQeOYm-Z5DeD8f;`iZqbc!g$RKcrqVgKBs!0MQ=nBt)u)OidQx1l<{&T
67138 zQo)CPLHPr$FyHwdZMO3F=<gNAbk;lL_?PnjSK7Q|G`_3(#lpxQjp;qCM<VCdT-_x#
67139 zR~L=2&(!=}xbK6jeIGoYCkuUcH5x`cHK^LDLDfzTS{NDos(G?#)C>1zg!-@g34G>I
67142 z?-G?1X6M7N_f^P?NtwcLL-v&y(^g&d`FeZR<t2G<Da_hOGxZZlyy|jAUap##cgf$%
67145 z#moOCdGX%0r$zGba1XH{|5jRBPQEEGLB1_7K~~6%t91;n)-eRxL^dh!y$>muHCai@
67147 z=SZpA*_kfrE1X3Z%7%tMp-XFMO~DTobgtAcqu-+6l6geFyYkBmzG<h^soMJMWVMuZ
67148 zms%CSB<uAF^=XxqwUthyvr1b^7nZIp-Bj9II;nIPT}W3HzD{*gMhUm*Lnc@yYha_<
67149 zL^hLktDR8?q(!^P?nnb!CVjG2K9$eqOZf)An;+sQ)tAqrZ&Njh(PE;QDHezoy*4-e
67151 z#HL{uk9gmNnZ`tDVVq2IbwI8T$knlOwbR&$O+yRgFE1d&2t%-VhSWwe+87ZCM}cw_
67153 zO~Wi6@rsR^#za1v&@!QO!niL!oZwEVes9%#d*9pq-lMrSbNzRQf9~E0GNNKc!-&Zv
67157 zee?c!cYMwG;p4}X%gTc0Xq_ChCoJB&c;Dhr7GGF=bMa#m`OvIT&Y^?>Bv~oYF-XS>
67158 zeyo`iVvsKMq3g&fGD&*vOUU}(mS#)EQMqgsqh$r}7?TdBhv-LAgW<lqs_=V=@2-A#
67159 z%e(vD{p8*A@7{dt(p$IRdP=8vK7KoRd*Ivc?^nGq-fw=t_5I23&v}2z``h1NOXtz0
67161 zQD;V79d*CGvb~|bwS8*)-u7ed=h|;dulG88z};`${Kli1!5d@VnDoZ%H<rAy{*9e)
67163 ztB36ywxuv$>Aqy#8z73&CKyB0Gc<jI>iZm{=alix0Akl|6H?zzXxnH)+eQ;o-%V)S
67164 zXhPdY6Zv}U+}6p%rnDYy-8HPMqoQL-$Cx*+ym7aK%vnEY`<w%FPR_aXg>zrH@m~JD
67166 z_TjfrzkOxiv3Y0aU7dITL-AqdhfN=z`|#R__vedus@`dOr)~b!`E%wkp1*ef_W1|q
67167 zpOn7RDd{WSA<t-@*0;CIwllYVY5V&29qoq}b}wA9aO1+=3y&^5v+x?xSN`-~pCI=7
67168 zpxNv7lnhA;F-X@ot9{nASx07_X}{Wj?+w<ztG%cF@Vj&0UGna_cXy25H+oC+_T~f4
67169 zCz~%dKW)DKR@GZgZ?(OD@cm2gpM3vGSEj4BYh>4quJQA>%-b{X=)ALUU!Uf_{ow8M
67170 zQbVmDPWf=|hwDCEB7NTtGD1E~dSs+<Pxjt2S}(m?=|9p%Ryi6$$r=$2G$I;k1SM-k
67171 zO52ENrO~pWO~kgTO$6HBCIW456R~Y-6M=TNi9mbYL^e)-`qkW5>t^1Z`RM0^$!jNX
67172 zn|xsM$;lTd-)=b9aJ}JSW6)UJIHGZU<IKiIjcXdWHy&y{-FWpE&i%r*U${S8%$_=X
67177 zANqUfVcIif!pCbr-v05yk57Dj;p1B$Kk3eN*OJ&bvwMq)>AoH8F?M=}rpM4?wC29;
67178 zI42YPcTvm~Fxp0^1XG6Gkg?YiIachDW5p?YIozu*W4F5AH%L~nO>B>h#-i`|KIQ?h
67179 z;my2F#!6j$317>%^Mf*0y2S7B$A$0swu;G>-D0*_B-T_O?aTT$^sT7usk~Bo@70;F
67180 z?s)aUt0!Ka|LU?=*H>S!zTcnquN2$FesQ9IQ~xpjC-t8#E{a>?$*UJ$z5eR`QEXJj
67181 zsQOW(oSZYz8SZpA)1CRw3TKnE+d1l-b8b41-JDzRj&#SnGu&=>rMr35gi-58Z5y?J
67182 z)U;7uqn5gR-J|uJ>Q}gD+^g<=Pt>2Qe^`IrtEk^oe~jq6f(aQ^7>QtCH?b%#gMHYh
67183 ziqhGA*2W-R%-`;xFr|%|qh=iMK}l^4(nXvY;AG2WV~~ykUU8&qVvtUcT^ooQmp1g~
67185 zi$|QZtwTE>k3gN-7^I7$c$m`0AYF{u+O;uAXO5Z8#2z1;k@2w^8AqFmJ^nT$<8(7J
67186 zPB)WyEU=|8F?}q6lGy1XPkk(c@|dXU%?#@;ZGu40Wf<b&4C^henG#}<&K|d-c-@Wz
67187 z?D5VX1CyxTj2CooJ>k@g(2w6-^X67|mEGrzSH5}T%?rG#b6V%T&gE+4o5xr3t$e>6
67190 zbG<6B*&F9|dh@+i-Zt-mcgnl!J@f;=&L87X@#py~)ya4#{VV?cl%J|ijZ95U%}Fgw
67191 zZA|S|=Of%oJq^l&Awg>}HJBSL4K@V3gQLN@;AY+3!DMh{@ThKE-GRDO6IM>xnD)~(
67192 z>EY@2^t4w-y)yol>8~tE&rdH;Z%pq_A5EW2-%3Brlw}$+<1*7T-I+C+9ht+KvzeQj
67194 zk_jc#OXioXn0aF6t(g}}HkIruIb70Ha<$}Mp5-g^P5E*8>G_5E)%k7tL-{lL>-oo}
67195 z`O+b!ZKcyn=a;T5-CBCE^mOU9(nn=MS#8<qvMFU<Wh=_Il<h4$UUs4EcG=VNvhs%V
67196 zG3ArX=aw%k-%!50{8;&!@~h?dXHB2AV%Gc$QBhGbq+(3P<cir9i!0VvY_B*}ai-!%
67198 z>b@;~JNnM(+ue6{-)(*O_dU_~Qs28(q^h#2xoTY1w5sl^HC5ZH4p#M4U9Wo3&+S*!
67199 zZ$!WG{bu%C)Nggat^E%4JJs)UzkAi9y1IHq^~CDg)k~{4R`03)r210z-TtC~P5<Hj
67200 z$M>Jre@XxK{df02-v506Tm7HaRMs@tbkxkO>8@E-v$f_x&B>a}!&cSY8z7qQ52zk6
67201 ze8Bht(+4b=dtmM-16B^$JYesDV*}1<en)YSMfZN}Q3hhR{}Ya?k%froSR?<~Mw3w)
67203 z%$cF`+4{qAoIa5Q*EZyi;ju4lw-FOdd{Gm{XcI5lY+)FR(Z>F*tuI_#xUMiw;d;Wg
67208 zY8<C19&@()3`BMLV86k*up-nrPEkDm{)62{FdG9=j5e7QG1FrxMjLU2`ogt^>k88p
67212 z2q+mr%0-Y;6`P+nWrwrfy2Xjt`Qj2LdmBttpWiicoIcD2=Yr!neKL29$;XPw$BM|u
67214 zhFKh#o}uY66r+t-Pi%eR+QM~(X$sc|u05!uxZN>BOD5Vt>^_j-IKAF)A!k~IGcCfI
67215 zTAUfe*Tl?vO;C(huPZ%w45bK~)Ju#o1T*W^E~TBGSy-c0g9%CzH2gm&rbS8Cm>`bR
67216 zCn)SO7>?72lHs!8I8L9Su=nAzV0a{--YXk=r8d!|ls1mj$N52O9H%HAb7rV~tcZN9
67218 zvfDYBR1l*8yHs|vY(G6vURh4)DSD-$s-dZ&t$I=Q>guiZ4t>h<YzS**li3`$lx<+U
67219 z*im+l-C&P-j@R;$d?KIC7x6WGJ3quv^Q-)Ua7E1*M&_II<3>OELgov#jf=$y(IKXX
67222 z4bSsdc$>XF-ZAgIcguU?=lvo6Xn&GF$6xBN_je7u-%R|Y{@Lb9{&oLh%1>2~BjYMl
67225 zm#xc=&Q8wG$u7-q$nMM@&YsC$&pylrx!T-_-1ywg+@jo?-1gj|+^O8<+`SS}QdQDY
67228 z)^;I^(b}{AI!C)+Ad1n3@?sKUC`OxLcD-QvLo`|CvP%TpE<`cfWL*k!#B>DPE=<o*
67230 z07_)H1c+j^NiLX<U`-aw3)&nTv*)k%RRi6^IG`3Wi~%gl0iqafg4v~pC`Oyi`Px##
67231 zmH|<WHqHgM3@klFlUZIUkzHF5#b}dUFde~`f#(m$CmVxw5jWU+U`iXa_l}w~AEq1-
67232 z#b~4W9Hz%mj5e98vn4X)5Q?H0ZJdjp9z!u&`|Yv@Ef>3`Kop}*a<N+qmL8&Zq-M@i
67235 z)3mMsjQ;ccFYmvxg|$?)G_<s~Olq0cvZ!TE%hs0tG*1W87CMej4Zko<*U-&$H$6go
67240 zZGCC~OP{=Sp=GqF6Qjf=F-I&B>sy|@9K2lf^6-~CUY_>ye6dR$7Cqvcc<A_Qrf0k}
67241 z!&&I8ake=Jozu=`=dR1#Dz{n9^vrixxSQR5?kDa=_m2C-%XqckNN>D1<JHPnhrBxa
67243 zC`JosM$GguR)^&;wu25Uzm3A^+Dvbk-$r3{9m|j94^bFho9XTHWBUhT)QrW<Si}tD
67245 z>21H;lnC=b&1lZ_ksEt+(J{<NZ`33*)7yS`qb8A^9-_97txLpEi5MyoLnLCTL=2UP
67248 zF><D}NRE-)okMbryy`r3Gj6Rr%AM?Xxy$7Ux!*nMUU46Iz8oJ%dy~B`wZ^gEJLO&R
67250 zg1N!+U}LZ+_$0U#+)WGhw%hphtn`xfy7bQU(e(NB&GeH@Sz#4pL1uMkOJ-l@1c}By
67252 zD6Wt7CKnv1D6WtAI2T(M43DXyUT~bEctVZK0`-F7x~@3NnHS;Ai*Qc3V7%>m)45={
67253 z-XfrUw1|APh<p^4&*p;T6vdObvP|i4-Qk+U^oDB<*O{%c<Xs}Y4?&a{#VLyG?_xpD
67256 zEZL2!_aTUyez@JYFfObJ7aYgw^*yanKG>Hr9H-a4ZCpOsQy{MIs*H4MMtTXVM^+||
67258 zd{w@g-js1nzy`A6>U&r7)%UJ;v!m>+njv&~6>l!P&&R3nT`enLUB0D!A758KseE?%
67259 zC*|kMZ}RPYKmUYZ;J5f=krB0GxM&yC#C)+_Y!ti2VR2eq>AR-ymcD!Y9`8G;@2tLy
67260 z`kwE5qwgbePdsz-PQ5c)?FC!pta3Ixd!6IXIp;>zwyJ$q$E(gek6gFkxPF~(mD}XD
67262 z!Q0iJ^e^i_#5>}h_AYyOed3q-L;NxRM1Q8g&|mFuQ4!O5|EB*Wl~2{D#-ygC=A@RS
67263 z)~9x*j-<|}ZloRrBB%<QgEqATY)P;-*d81VPRh9HPVgk1N!O-F%E)O(x;woxy*a%v
67264 zeIk7^eJ4X?>@+0PnwgsE$}G=p%IwM<&h%uiX6|KK?Ty-pgZx1?gIWf)XDhQqvZJ$;
67267 z2I*qnwoYM68;dw`O-d8d%WLb{C$^4ZN{B%^^Zjc5?R9%z*u)@R^lWN01@r<jNEiDi
67268 zwnkw}8;dw`P#RmKHU{Zp-nK?zN*lBH$1nsjzetv>zS%mqu^7>3Y&=Z^$$PKDDzS}0
67269 zx|p}HN(@ulSj35g5_4j<Asd5qF>j7&h9jEcnjY|-Cbo`k4AMoMOpQ7~FD9nHjc2xF
67270 zn35qWZ7kx%fedy#wlPQ-^S0YDOlf2G`am*Mtz)Lo31_O!^!A#8K2vR{hp4?ipi6|!
67272 zev>!l5+sp9#~@wI+e`^DNEg*E@6}B5exr^ht;0ky+PKE;^cafK#vB<U5kn<ns6-5r
67273 zh@lcOR3c_bWZM-JN$SbAD|SkTq=Xoxi{7j;?W>7IGT0cTV}v0oAqMFpPUeVZB8d$4
67274 zh-If_NJ@x7x=Zu`JwY$_eg}CZn@~6}W((WTPO+;pDhzlXAI+!md3*)mQrI<eM-WjV
67275 zn#4FURdmVdFMQ|cxVRv0sGT4+PK(p-Omn)NrOtY1r&{N_;@o%rpJ<({#vksFS8>}K
67276 zf4hIcKj~lg@1<C(D%Fx2m+DN-OD#>UOYKM<N}WnwPTfsC3(A598MjSQZ|<xQb_9ol
67278 z9%lV)O?G&8e0ElLNp@X!XZEOy)Sl$Za!t9mTxV`UZgp-;ZeQ+1?o#ef2`Q;68D7#+
67279 zGNWWs$-0sqC5KDSmfS3PoX_Ql<lFL7@^kac@*DHJ@<;M#^EcEt9UIg)9lJ|cmu@dT
67281 z6~=isX2*>BYM<@H*m;^UqaNqkmfXam*dm_KaSe$v9H)=s42%no<Mat{T0|CFL>7w5
67284 zVK`2o@P>T|=YrueZ&pMW8^`Gr6xS}+(jgv82xY->oIXMEI>LGl#FK9T>bAwk^m!QD
67286 z_AHGaIqGl4*_H{S7_I$I-B2SnMN?BFwQZ^4j1<HmojpgT&l=g5+QiIRv1H~7>H}J8
67288 z1hrw;3rq<yNT;tU>UJNZ=4_8`_aUyYgF?=5T*7diUSIQ!FmrEbf+n189H-aUJZ+h=
67289 zu@u8``ee;hxAQip&mY-#-bQtuQ%egbYS&zX<Mg`DA!k~IGcCfI0?rJTnH7=Q#&LRG
67290 z=M=5E7`1CI!EyR{{xC+8n$xkQ=1df$P3qE=)WpoTU`q+pC*KA#TN8%k^wG=-#s$Z5
67291 z`h++1sW2R;Pk2Mm3g?31$#->3>9Af0QH(a8UBWa3(?5^a993-0{3?zvH=H+v?*!Vu
67298 zQzvq}>b!H0f17`sQ2tx|w+I&l#Xv&Ee-``X{cptI5GKASz9;W@#a$xA--*AIH21}Q
67300 z_3U&xUCM@i`Dd-+`K>{n;9jOqa4%ISxclk^cUPU@?y0le9d&klN}b(aqRwv5sk7VD
67301 z>g@K6I=elq&Th}Ev)hB8LfxCS=&IA-g*yG6sng#%Jn>yxl;JfOYWA_+12XPCj}4eM
67305 z-ag00BPSrQmtQWwTM@S2t>i%e>CPBua`jenid^YGu=)|X@62%)J8OfEVEO=eK-GZe
67307 zKjg&F+|b&gBgI59ODqzr#n#4!Rm-Y2H14a~Rds|!^8-;C%u+*?7op|7vt$uExS)Yz
67313 z_t8(ZnzBm<QI4Q-dTzB*4CM%#q{s5-X#U*DpMg3S29neOv{SI9d7!0vpw=PA0oIQk
67314 zAwA@3{$l=C{z=v5sy)sL=c$`>>-Z$;3rt{l*fU;FW;!FBf$nwpq33%wTHm&<d@(GM
67316 z4<r}J%|6{~#2nbSR<^_AeV6y$*mrl|BjSADYklum3F$M8r!#0bT}8Kq?a-O#%yX89
67317 z>(-_9rK3tG_M6dfLBEyN)zvNGDR$wmV|sz!Le|Xpu}|1Jc70HOQ2n4;gC-8zI%u`p
67318 zS6#^)_!vHs&n#GM(}r?@F-sS9y}HotF$I{dv3f*f^@zqIx@ep?+aSbjAE8d8Giyp9
67319 z{2*rg5_KA#$&Vq{7-IIGQ=Ja>OIs3{13tb%f5=D5U}IrjK-p|8vhL8|DL#V6lDZZj
67321 zD-A8QNkcV{HMSao#Ww)*+i5Taj>I<Bkf|&?L#C3h^2z11$+B`$ULi-tU6E}i_oZ-U
67324 zw@uav90&Cg)Gj%sv#~FSK0P^2u91f{L+fQUIhoFtanvR`I-H=F>3t?xwR($Y23y3|
67327 z1l4`57}aAB8>c9)dwe(-T7(M)To@{ejZy^FwakE)b=0n_1g9vjYaVi@ML5$UoT<f`
67328 zArdoGUK^!odJalpd&)XaQQWLij0-Kog#s=NmBdCVf<{&ot34d2D4uY!YYN9HiYFEv
67333 z&Z#S3U%sRKQ2EsIx#dgCPlt1MGRp06rdKvpj;Wm7=UyeLtf-vhEO1s<ZV%r|?X|A@
67335 zG`)_-V++(Yj38`p6k;63ipAGZX6P%LnC+`G3#lX2ie(vsa4St>$!&d`nC;yU)>7J<
67336 z*0Fl^H}vKq#-D?kGhdJ!#5lm>Sx~!vu(^B(O=<TCI5TQvQG{*J!a$4yEKX_b*2e7U
67337 zG4v7b=$so!oS%*HB6M)R5Mp+;Q>W1-*m=5(9;N5#4QZ!c_5Im#tdn)IWo!f6$quqp
67339 z{f|=b{dYSn)qDR(oiolg=YcEKw?W(7sWQ@8>aKTpx`*7;GS<245wF4<;*Iepdvm-c
67340 z-db<FchEcOUGnaDPyM`K?~n1Ps4t*x^!NHF{7e45l$)wajZkX_i`Cow$5Izkw^Pr8
67341 zil8AFCu7Ei>P`MbK~Hc!c%06s8`5p*&h)(WiuC66-t;Hwi-osAnlj_mIW8+Ro5L@l
67343 z19g^5b4gpt)RL}}<t3X-_LrP2xl-~V@8)arBk~>j>G=iu75Pp1J^7>gv-#`!2c>Rl
67344 zb!l_yxYEwjuF_?t8%lSU9xm-Ey;6FQ==M9V-(()oMB(@o$0v!EPY|=U7n_HCo{iQ0
67345 zYI_v0dy{Q-p(P&No2PDJKg}`^)@0y72D8-3K8_^fVThCrk&*%4W=e>0fSGTaCps30
67347 z=V{lPjd6g*DFu>JASs2VF$Oedw>c<-jZuSh!pUwqP$nA-|AwPA#5llWufgt(aOTd&
67348 z;*<<Y$&i!`q!dU>fuz(m#1LsA#sL;<$e!hgDKR>Rl*-2992k-VLvmoCR07FUAbARq
67350 z787Shs1q)DSp-@Zn>sFwKzNuaLn+OA5kLwXH){Z+H``63KbsbBAy{in=A3kD98c(N
67356 z;w~u>L|sf&d7DyCgC)VKbUuBkYGo}Oe4;+wn_W*H(idqb-AZ@RowSD?VZY0cvfpFJ
67357 z*zdFB>=gT3_I-AT{eazNf5+~zAF>DHv3TMLXMpp9Q|k<J>YTw&y))Da-_04K?Q&;o
67359 z-Z$Xt?E<deF5ucOac1li5BG#KZBIB;d&0vS8vn1loDb#2Wu3lAGO}JfNmkbFRuahi
67360 z-68Rvbf^5ghxU-Htm`8rC+qunNlMoFQR2#a|2^W!x<4kH%<r?`C!TBr$B8f7!6}lK
67361 zZQ*Z8Mz)9V%T#yR9ZCNK_5(?Om)({0f5-k#(%)nEB;^m;4<*kB>;dtAQvJ&I^_Xz+
67362 zL_8sZY-fUGWm_9SGP1qBKytFp)e={>yFtW}ZLf|9+5QF-Pqx8&l9ugoC`maDvNeVt
67363 zP@}A+tkg(YLsY9FDr-ouo2XWznlQCbd*7w_H}bxWESL9RBL6|&!?zhIS+6wyJ$d=$
67364 z2l8^r-^(kl-V;dC3R*#!dRsuKw*_4KbM)t=_QN+;n0iZv({Isl8E>gj@TLM)Zz@o6
67365 zSL%yu`l3o-RK1PD)Vn9)`wCsk1_T4nxS84u?wtY8URcXlc+0)@FYG5RWENRO){>p%
67366 zC^<)Nk!Lhd>**LeMeT;!IN-2*(yRAI4!A8_$zgR)#uJuj4Qw2n%DUKcwu$YL?coBu
67367 z!5(s-*YFnJ&ZqHtZmT=#g)N2gB(jTXl8llNO-3&p$LSeiMY!NNP9Je*h;$5<jiHh;
67371 zKRY)&FPM{^kDW`BLieEYzT=a`(_;XKy(FR6TRP;zP#z5BfThP$Cv-k3lRn)@GQQtV
67372 zGM&upcSzG$;vX`r<P;z#&EVdg%rrWZA=RX*dQ#tI)!o%A`-$pZ{jOG@Cau-CLH@Sx
67375 zvmr&l;ur2qox_*#^?VmU%zOA%eoy-Om7+nkicT?KtP<PAKJ^{HTjHrxCOxO&PKPti
67376 zneVJ{Haq*BQ_dCVfg893-I408ti|p+ce{JgJ>_0<@3_yryw~83^QL*--WqR<w_mN;
67377 z-u0PUu^sJC^k?~t{MG(;|FD0?zu`Yg1*zK9sMN&N?9`If>eSZM{?sR_3#nVF$3Z5j
67378 z55@#jgZaU-V12MFI1-!<ZUpzG6J3!Wk{*+uoSvIruD-v1GJPd|FC#M5nU+jPW=3X#
67381 z<{9P0kT%bdF`p4^%#Tr9?+K34*BQDrC14<bhUCuBycwD^L-MtAwey5IV)<dY!Mvhe
67384 zw{*xs{*VjA>kVCUpmQjLZPOtoMNvpwuj!LpI*0kfT(LZ{9ASR8J-0ENF0pSAwe@Y<
67387 z?{=!Qcek+vGN!r0?s37Z`EWjg&z3RG2EK<M<LCJ;{zT-(5HVW453oqR53paH5SPV0
67390 zSP`jM5t$e&5i24OD<Ta;Wx*xE<-nxCWxyq{^QXOeCLAFCVy_G~ZhDRhH7$bU^t$&5
67391 zC1I!>43UDNGT7-Mns|^fcPww1GnOxwtC?qFqg`YKc99WSuYHKxBZA(7FkH9trUVS+
67392 zZ?`=gGe-iLGeh#VbG7q?Ib!)?xxu{j7FS1XT_^R9(Z6WvFGBUXLL0~EUo><HC1I!>
67393 zb~`sQT?U3qV7K#Pdcg9AIb-=^xh5%xhhH00D}6`QN?-UzrGaz=oj_;N1#~&xNO#dA
67395 z=O$7F&P}AWmIYDUf+aXcZ_Z7a5-^ZILvm+m-VDu|A^F<5+IhkpvHY;ylDzbK)qOP`
67396 zG3TS}H9j$7_OC>08?)&!yJwaF!!dd@@-QV}Ab-2IY|QL`FlW2AuyWgZ!W^;uu-sr?
67397 z=KdlRfiy9ncm+ePq)<j$$s{t1EL5w8yUAg?!>aju&^nT_F?t@NwX+1VX-tU*1F7qQ
67398 z)Gt~xzo=;_MpP-(dP`V_RjLd}$Z2vJv|qav`uq}JuEC&Ou+_h4$vg;@YcMERJ*W%2
67399 zTyT9U%%_EHqb>9?DP?QeTDFZ3<cIhJvCgS;cDt?ad2fOD)L)SbQtN~8JIf=<L-qC8
67400 z7YpByeT9xRzagvb$I7wa`Dg9Ps?zp73H6;-SAA#IBj1;oqrSFE)qW_U_CpEvwN<9R
67403 z`u=B1eg891-~UXj9Zyv4c%o{@6O~%rDevKqC#t><np0l~^`%yiOC;RcMAgnFDz$n~
67404 z-laYXRlAU=+J!{bE+ndUAyKK}dU+3Z8<wQ6+WV7I8g<nUAYbhODj`3Vm!tLpQS#sA
67405 zl~X!)X(=t0QieN&0@|PUmnErD-w_RW24(0tI!=}_)VfgngP7VM#PqL>itmc=N=>V8
67407 zW<68mIg(+tv}H5N0%^;VwR<RoiFpX-6fjd3$CAZNLje}PZBV6ld_}TEtLJ-q`T0hA
67411 z*#fH`lV^scp$1LTvS*O)UTLz3G+9KNEFw+Tk|v92DT}tC(8e$Al_7)3kg-}&^6Xg8
67414 zr{AHCvQ;=g_3!J4|CLDXj!>iF{K9V8qv~5!_hgf;pmD6qND|e>2(u8KDw-qFsghM&
67415 zoo;Y1of$RSSe&Q+-WxNJIxSs-MX3bfW54reQ!xV>tnt?0`l*&VtfXx+f@tr(I_M^?
67420 z?B!&l%u1{0m|)Sfc@nmcG-|1Y#=Dwy&=E53^*HOjga}iYtC@;M8JQ0&%vB`w6km~S
67421 za;$>=j_8m)hW@J_Bf@zOu4Xm3nz!I;-r^@7Bh(y5*zYF(Y^3-MBZaGGcf#=^oYxsf
67424 z`Uq1;#>?_<mp1RX9BZ%0@;;$Ht)fF@e;-Gu&^c;Xdh|}p&BCtqHa3kdV5`}7c95NB
67425 zSJ^%8@_~i@8w>dwzMUW9XZQ{NSmf1?^r>Q=SS~h-UE+v1EiTKtdghclb<Rj<g8E|e
67426 z3TLCUJNlLwiAQ)^uz$%nJoIO-J+lIR{HvXs8Po~CIJNn!uznTVQ~V1vp7d3P<X4VR
67427 zm}N=YjEyHKM>y~z95~>>KzfFzW>#8;=0uC&IDLZBB3x`uV0hAFAP-m;h{oDUYBkZM
67429 zpT!Hu{eIiWx3S`pfQ~``-bVEP^v{U`>Iee}w9$hJ2XslaVtz9YVvsKMy(f@M^eXZB
67434 z%pR5S<_K?YrE-WK_n1hMN~bb=J$_=S-KTY`1S8U4UnqU)bt-l|K`s?$EJEFO(goq$
67438 z`=4ND?`$M?A8sPB4>uuWP!s6aO-R3PLdKw2kNWI|-ang&-HV4Iy?B@=Q-Z~LnJFO#
67439 z>B2a$McT^FLKL`*93rR4WpbB1qh-YOC6d~-=Yebt(%CiAKw!-^5Lj~!me!J*OAu%w
67440 z8#Nj9lnhA;F-WIojF{l3h{rGXUYEoS@{`OM{cH~9)6Pf^_vm<q^N+(_Auc%i*o{s;
67441 z{wd7GhdX#Y?X+W8JMGvloOW!^q5Q1={^yzli@qH(noP`}&)-nH_89qW-!>G+cl9DF
67442 z8;hv~LX}|W=nlGH`bpvU51vXLG_W?-$rh+DqwHjd*(r93-DXdvcT~+=cn6=s7xm6I
67443 zUEz26Gf^h$#7Hq-%n<XW_q1M}&vjnh6i=MI)8LGj?R=)Q&{^qhQu9rxolDLgm$;Q~
67444 zi`(u_ce~v+?iP2id(1uOUUTnz%&YW<c%!|E-Yl=%TkUP}4tSq<=e--=BR}wK{Zam8
67447 z>B(Hq+{rx4mSyX+qqCEYuh^f<-pD@8`MK&`ORhcFnVXkep4*Vyl{=E_$z9FeFJUE>
67448 zB~2x*B~wb~mMke*SF)qzV9BYH%O!V8p5@E(_4(2HN%>j%Mfo-Pt@-`=6Zs3_38ST%
67454 zTZZs5vBWal{J13-M|jy->>JoEAEFT@HgaHitT)|u=!i}QS8H@k*9^455RG*RZ7_z%
67455 zder6Q2v3g4$x(j7O5LF8(;O=VNT1N!c>K-gxR<-YhU&j3+GYlYZA%~@4)}134@dae
67456 zSX^7S?S*JuTd)OUc;fG3t<|*Yq6lAzH}vYyTqQ~nv$fjmSvqF6R@*v4G%i21ju;--
67457 zk1kbGM*>jVawT<T^A)JPHrm*$S12#UBij$ZZ~a-nHT~(Qh(#$)tk~D;?X@Wz;{Z!M
67459 zMj;rXnze0XiRCj_2S3YK@0o$bnzb<wu*6E5+J-4@%#POw8`ewLkc}ndsaY%Vlsg+s
67460 zMowKr5aR$##zt7q=bx;XjDoN}&6GBlSYlXCyY-n^VsmxfLW~0}v8rafg(+>!o>{3k
67463 z)Sj<L>crpStiyTa3b(=?;*NGFxHD9ru-8gWgrgV-7%TJ>GbO}0z#<v+J+I6{IErzA
67464 z#rc^jA;tj~$-sdO9Fc(|GH@URM`YlL4BV0-Udd|g%`ZVXigAF&`I#vp#sNlTuUH{l
67465 z_Exf&93$t*P4blH>5y=Lf%>-X2DOVYJe%}!bcQsWz-F^0Y_%9J#)+w-ODq%X#m>SP
67467 zbAV8yuaWER8Lo-rc*Mb8*JcRHi{NoPveVlUCx%A3+w0m4L3t58Zb7=|%mBtwH136o
67468 zHy+7juYR+lsO|UTv>c^Q>Orqtvn7}-)+PciL=$2mnt(NELM%iRVj&XUM$f}QPaH;I
67471 zmHm`eb^R+C;jThQ?J9KCu0lucD*S1zr-wTd?G^Jc|Ez9)x+~_IC;b24y7?&5U2?PJ
67475 z8{+^=&W$5vADt$><wdfEY@|ErK6;e)$d>Sc`K(rY%oC-@yp*kHyVy~+Q}hYXOOLpf
67477 z&DrmqaLzk7oX2k7t#wDp2yeDJ6=J7*)a`MvxOY9`<-Iy@v^T|@>n-y(dV9U&-UaWr
67478 zPyD=J=a2TM_;dYb{ziYVf84*|-%gQKMXD(^E;T*7IlCt{FSRVSA+;lQFm)<*DRn3H
67480 zdQ-SRB6m4=EB7dUHhnGqAme7LGR>KBnW<`@#Co+);&kRp=3bU$E3ysQG1<wz{U-KJ
67481 zp0|==t{R!M^2r<e@p?w$cT(h6-BUGNZ-Ux$`X;T7o2!9(KQY(8^jSy@wW-bZ8<Q{2
67483 zne{6-e&yD$!uZu(J=Sw(An(K)+K5gSN@wz62p<Oc*i^}SjQ(u%;ed}#6_(iKBM?41
67487 zv`PCksT0rH96w@2x916Fd&;(tJy;vH^p!HxC$2ZfiWoCJZhfSL-Y)dZ%~O|c%=Cwo
67488 zwL5c_$i{5X{Y8y;f+dz$_j4h}0hajTrdMv-R_KwNE2hwwhZqN#?#t`-{aMap76vj{
67493 zz?PGZWG6X9PLoSgZ%=71JTa4)Z`DP6<4h!KWhO=oHUYlJ_xv}Q?e`TKK$29&-fGm}
67494 zR87_cC_=@MlGs>G^)K{pGF!v8u)XX!JI`*gN9vuMW<HL0@-Dti>=(zyIle*M5D)n-
67495 zeuSUqm-$^mM41?(N)!8C`a0>)-c61%z0MOf;`cx6yUAuhO!T6^sciRF{moT9B|}m|
67497 zge8P-wl={Drj*bYxeld{jR_&tMG++{Lh0M($7FvkWLb#dHFX_K9YS1cSysRK-o3nc
67498 z=U$LgS60+UPxIY(&z(7Q=FFKhKlk3b@p#cTeW&tU{>Sm&bB^21-?EMRgwMu2$H(zL
67499 zbP;-=5!|yh+{4a2*%7Ue5BnapUmMBqJo}nS(v|OJKkU2AM%|`n=&|Ml)lXJm|1}gm
67501 z;u5`9uf_ijdINBi-UK|QPa*#6`gM%k=9oFa2h0P&m1ZTd+jK+9(SjP4KM;%pQw6C4
67504 zQ~9gEQCc_x@KeQm!RUH@wnz0--E5Dt|Jg{&FHgKQ#^Wzue2K-ENPO$XztJ9ND)7-s
67505 zYokf@F!qPru`G-oU+GVx=X#5HTz@^+<dwmX8Q-TZX+__shO+7#$f^@%O^O?(Mn@>a
67507 zv-+~JW{9aW)v^m7W~o_gnlbCxYg(l%n0H`CFQcRe^NtmEQ=ZL=XVv*%@%3XQ#Yy60
67509 z-AT-*a<s5k@>jQ_l>EB$W8HjDzvyT%m+I!b_2t)qiEy%c6o2HOFG0K&-F)XizeOhR
67513 z=t$9-!fXACiiZ?e6;~I}DPG!dY`>|n(5aa9xG&pmS9>vPb{3aX*;StWS#z9fg7a|h
67516 zHK`|3&!i5ePN&YNuBFS;ccdqz=cbpZ8`Dpuccu5IkEPG1-%P((G$8oy_tb*gg8G8>
67517 z1zQVt7qu6?T5zbKT_x`cl0U-s_r{1)jF%>-rzCn<L;3u~<0qaBxw_7eb@RPH!rV*(
67520 zF%YL3FKx7@;%nUg-Z1%oGRjwOz&D8=YTxG@r-s^(^G%|M+V}a!siF3LzV-%u!#$gl
67521 zJe1#-lH%sHCJ9pbeEp}Na-~S(8;>2`6(QF;{d)&dTFwIUSCgZ(J5|(HLTYqhfhuJ@
67522 zN`8*k;~!tGj?zLO;-^Z*WQy*GDqgyH51;cd(L0AeE!Pg>ymB=6HKuXszpr7eGfd4;
67523 zi%q>*XSS#Yb5J#_9oMxPzvJpteZ71-K`+rhD@u#s<BZZO)KS&LcP!jGgIiyGNH^-u
67524 z!8^<y`U1uvg{H!cQq^jX`%a#zG4nANS*P;*Twi0pBsMW-oa&x0nZ~cYWmi9s26wGX
67525 z_!agVJzuZj+py2-mvlzIsxRef(!ZPRQ{y_XO4NDIV&ioaubJrm@T3+IZvoLgymI$%
67527 zl}Wqej`L=MoChj*Cn^8ljeAPOW_LZ{yJ{x?ZceZdf_r<-+-NrhzSU;<R$H(q0^dw?
67529 zca;4IKTzRHi=*sAcrn6fFTxAT-EV=sm_dT0OjHKJ`KA$=X^vGBFfW`6?=)A{qRrK*
67533 zXwJ)A$=Diu95dt<>Unh;zHf`}Gc_z#hS-)ZVUVWA?2`&eS7x^&%{a`O59_pEs1KMj
67534 z>L5dGBL-RtQWlyu=7KDg9$U+l)tIH8hDU4EJ=9x<*hXw82KvmV*X?Gk*^T+$b~`vo
67535 zKUr;2=k$2Jof^*&+lcMN6U3lC0xp~MC9~Lc$sE*e$YmP5>^pi6Yb---BeoMy5Kj_=
67536 zS`B!O*Uy>(rUkRm<~&}r)E;eE?-^nnv7LB=c#?RE7+6S_qv}K3Yc=D{0T~<NI8Pm*
67540 z7xU|4eqGG3i}`gizb@w2#r(Qr`At?w^rUERs)61nLu?~<5Ic#XFY0El-ORO{xpp(x
67542 zx0kb8PoJ70wh=psoy0C;H!<|Sy_BGr67*7nUP{nQ33@3(FD2-u1n4cu-}SX0sP+0h
67544 zo-upOUUR@4GDpmDbJBE}SIleXf_c+iHt(AE;T;O$l|KouIb80PG4SLQrADU11I?F3
67546 zJIao;)poL-Zs*wfc9E^K_3;0VcD>zXpRnJy+wI@jXYF%#pFL=QY+G%{p0TJ6_512P
67548 zd03Up8d;-;%366`Rmj(5y{beXv_XAJHo-66AuaNx`m}73E$XxKZTUMj5~ceGHA%iN
67549 z`&5nmNd8exmqT(`&6HO8shTVQBFEKyyUI4ITD#7!Q_F0V{kp2N->{q1pV)8OzffPX
67550 zPueF{z1?D;QY-Cu?9=LD`<HgRYOvq6-&Jeu-`c-dkD*Mir=OyJk5~y@LY(4OiRD55
67552 zI6nM8JB#GAiuf31c#IsD*cT{a712@F@#_83<dA%psauKVN}ROvO`d&%SV0_0*(-@I
67553 zhnb8s6QvYNQO2_pVt*oIk;iPr70CCr+D18t;_N<@(WUu(AoWm6<aj<3pp)(qcQ-*6
67554 zG0qawA5`Os7+<1%P6K<X0f&zQv(l7PuUVcyV4k-UD@nhVcn>KK@1_2xVEp5-g?efx
67555 zwoqHm#1^Ky&&gxoq@D&)v&-zScveO!mtkZ@9R|l@YGawbK+ML!NPLHS&1#f-W1N}p
67556 z&V;iJmgs)!Xg2b57BU!DoQ0I)=<2zQR^sq}`wQZ~QM!L8x-xw!km=Vf&C^bElwkpL
67557 zT)^5{Kz*#DoT~z<%k1T#gqNBAmz3f^lzZCB-76`_*xHSTD`D{yl;+b_?k*3;=#a<q
67558 z`fxsHWf^C5B-WT9=0KHZtUKYi$D&@{+X7jR&#M<~iO1J{OZ<BXdzHKURFIdh8slvD
67560 znsU9!3<munQ-v|_Dp1#A-m*bAV;;X%@6fySZoO9@)IZj(`nW!cS^X>eHO%at_rIn;
67565 zQpO)lyoKoQyuIO`6LY+s-(Vj7nb$^Mdz<kl67MFLW?~Du4|8;TJLaISEaY$B;@Kyi
67568 zqU%6gjk(JP-GUj@Hoa3nW2*IYdS75+8GT0g=vQf9SM)VZnA4_+_Ekaa8imnCwL#CT
67569 z?)eC|_0cVBkNdiJs#dvYK8>z-8UniaOEmXNT#10u0)n%wQPAFK9Je9BKbUP?S8(YD
67570 zfHD%4LkKS2AO!STdbGRWiZfR$gJ4xWqF%GdQfD(royBrug^TZO3)hQXZ-V1S(%$Cv
67571 zyNHu`y*c31LJosySM@+)NlJs`03O*7;ObSLl{k-#vOw<C43^JH>+U=|EJmD>^x-;n
67572 zJ0&P~D<90OGRU(yC{xzDHme%?DQ88YpBe`na$af${L~EC&RRVm9%-RoVutHFbDQ&0
67573 zW=!Cx*6WQqOVWGjsSfL-u%pwuOP|%}I8F^M$&FHnz)ub5ICTtWjLuU{H?tr~4eaUe
67574 z-vV#tR)WT7?MhvA9te2duDGh@)-5mb>EO2!E+hOJ;Xgs`V|-^>rPS^P@^EecD!4v_
67580 pP=ey1PizV-tSRtVO@Vb4Dfg6+Yi9=5@FGWnZe921T$$B5{BOcV{%QaK
67584 z1Ladt)Cr-Bh>D1a3J3~*C@2Vsh$tus$<F_G-<#RYrh)zM=Lej9_q}`Wxu@N8%R6r%
67585 zfrwoABT>A6+1%N<6UcCD8CS#X{()K7J$}~bNc!GoL}{A6c+s-sj30i5q~GCw?RB%4
67586 z9o`#y>Y+Hv%ZkKCE?Bf|Li?A#zG@;!+=%wWYfl{66kfFEULyC+MC^vOr*Da?-=Uun
67587 zWhK<7kJ)tWiECQkIh)A8n8;>1cI4Dec<w-d7xDg&J>kq_8t;7IF{17_NSb%ghV>)s
67588 z;$Qss*Fe9B`mPOl;QyjMi~Dt)-i8ymY`x*jH#|xt8i<^qIpO5BBZgO>M&H>++&_Hc
67589 z$kt8jZv%G&e>?EwCykuA{`%sBA(AeDyvlu>PCj+Z+3S8EBk2R+qt~-(^ZHHerhn;L
67594 zuBpO@0l%vP{H<~Y;FxNe18i71yIMXEa74BKQoXG(g6lnilL4OsoCdfR@cC-F2IVU7
67595 zzH`<7F07+}Q&ld=LPzffO^%T&Jg<W$-!)Zwr&aY<r>g_XTrcZ^<h*Qu*|c^wnMU@J
67596 zE4PnLYJL2!PNq*(p+^6mI(a@{g)h|E<e4hGT!mj(p-yg1b}sjZD)7Fq)q#4dK+H>J
67600 z2T=r_r)f}xyrPvhvLr>Ml@t-?(Ryh<O>&uO&=jIUIZJ~^1DR-M<r%?1XG-W(`YiRZ
67601 zqoIRWDZ-9Ln_}fh!f}-!3RhJgm4-ma33v+imy?I<SlCD*=^JQw722)9{pZLdy&vUe
67602 zXulYESHceGQy9^697xwezK3A%-_e<LLFF;J1F)^~nDD*I>$0Wty3|P#Iup;nUztGP
67603 ztxOP3tULi-JT7!WABM_v4DyH{qJU_`wWac7dI6)c2fEJFiNft@`%2{r4eqKuNV_Y~
67604 z(WRh$UZsa#r3QKuye|aKObXY7_&z*)nmoc<=)(h_>_Gp#-4J={TF|J1FbQ;<pqCda
67606 zU0HckT!#CHD|_hEl{bY&G=OK137aZ!vL`FAp-qpt9{PF&W8#X+rGmZkfN)u*M|iOE
67609 ziMI18Dr7-#2S6l`cq{Dm75D^vk#4WNMh}9=mdZ=)fyz^CQ{^e~yMWCAOXUUaIuZ4&
67610 zDsR&-aQzf$)ZjV567UfQZ;wFUR`C8C;Bdb<8P`uj*Q1)w-V{#(t)9xyAd7ZSQsqL<
67615 z$Fnmk&oBpQw^SYz1GpXoD5H<_02}rG`Bej}*7xh&*J~i`K_4%HM-Ddty20yjG~S<L
67616 zkHbeU$MyKiQ&JY!%K&Ep7UFrh@&c0q!+`q$S@^-901u<Qy7GbmUf}!Bz@9G&GITo&
67617 zbh-bmfu258xr<J&+z4Kt5<dm-p&fvrFAiKsu*d7r+3Vs$wErA*jj<taK>1dbTdHym
67621 zM#PW{&|ezuw}H+lD&G)?!4L22*SLQQJWa=S2Vf4sgt2-p^!^Lb{Q!7+7W~}~`O~_;
67626 zmGjN#K^`|x*5dUzIcj`rv60iL$;F{AUe);KJZf=?^T}f-=c~rkeU;@kU12VLfR7`-
67627 z7C>zN6OUEghFYvfZ0GYQpUY}EwR-J2_Z2>OVP4|nMjO|Be8czooUQpE;vKiQ=3f~9
67632 z%XEEk(D|&~rP%>8DEH8xYP2-@P}XSa{C}m^PHS7&SB*bj=Fc=<=aCoSu9vr_o2p*I
67633 zwKkk5(7%KJ-v1bh_#Q}uhiH2Z)ID?&2jk1MnS*Kdc;I^A0G_@H_!;2ifKve<0Gwal
67634 z6RxQO-#_jEoDSGl-P@f6cnkpFuk5Ps75V=0v(-J~<yH7X6+Q|04B!Ud*M57px_uh`
67635 zibBF!6v8#YuT_ZRK74@ZVMvh@22dW*&K>sdtAB)j%v)5J-VzMTPw6%JgMvXA(AV_>
67636 z=3(&)#JU3Ji?xWIKfyR}($=TXVQzg%{3+@-pzbq>O;OYxhq}L^t@sMAJ&0w4bT{Vu
67639 zbTpky*U=a04*Dwngx*vn#iK-&xYDDPlzGaKvRc`woT{9!Y*#*{d|3IYa+UH4<<rXb
67641 z?u>il!FWTwC+W&O{LVM_%-HjXJ#XyUQ>kd2TPaSBRG?OkucPSfaeR?tRKiMBNhnj4
67643 zJ06Hf;*&MLZrL+k<LhnkB~<<h&aNbq($L^`;wM(?s2ScDt-MnCer;&(Ndh9g^!Ci^
67644 z6Z7t8_89gkC<(hC-TlMeZ}0xzZj8a*zu)~T{@w++efO>S`_n3ZFUsZJD|R2gdl5<t
67645 z-o)5^_Dj#+{p_93e(LAtpZ<VId0G6e_*<gt$>2w-Kx21%|Ji~28wn$kZU)>+kKpfP
67646 z^gO*WhViFy_^*!reN8L9p~2g<8`s@6B*CQpwbVDP-3e*#b<zU#^<BD+9-`anZjxcS
67648 zmbv#Ase>jVqQ>F1S@=f_eH4~Bj}D`qgtZj?j2(-aGQ&2q<Jj@+1h$=hfbC$Hu@l(`
67649 z+2!m*><ac__7Qdx`zSk^ox(oFKFv;JpJAV6r?bzo&$F%UOm-GKo88FX$8KWV*!lE5
67651 zB2qvKN--%ag`~KYko;1El#`NDik?F>d!Bw-reeHIhYt=6#pCnuB-@htWo6lsgXPX}
67653 zSuwtD7xQ?jx3BE(iw_U??i4+Jy*o3kuPpX0-x@DlQYiF|tSd{4x85R(BFK~z>mv#N
67654 z^cI^}=#9itO!eO47Tl;ym1*(d`k`BVf~a*U70awp_Vx|({>r|-zA8dEzAj$AZ*f`5
67655 z9(hZnVC@@NJ5W{z1`}nL8CrVOAdtg52IJ+$i}9!g?D8aDnlv;N->GARqeeWc-o?wU
67656 zyuOuV-nV!#4sGlhiI+`_2Z!+_&g)FP)Wu6(!{Onfp`kFeRkrl4Ez{D$GR^163EYS0
67657 zm!rHCoj-D?gVu74J7rokG_-DHs4NtQhN=<_#n(ZeRPRu8SuV!Gfs`46Olsfa!Lpj_
67658 zEgMq3umGA2H<uMn-OxmQ-A;8)Z=6?hal<<M{4ekZ)|Ta_1S<RDJK{Ug*UnZs0}U-1
67660 z2W7RXxoj-PIkz^5CDEEVr%)~p4{?;?evMmG@fM?v`UZNN5@U{IE{=C3i%vx-fQ3GY
67661 zJ{%v|ks9Gf)s#(PZjf?33?^$_!nCQ8e!UCpL7JD-Xhq?@qSZID6*Yl&SuMl{&`UU#
67662 z7;1tO+lxCzaiF|zq`$fBC;~MeFWdX(aRMm7LS+ZPTZ%h}W-liQIW(ojp@X&Px$Nv4
67664 z7fd+PTXq)skb`UW?zHni4*V$#KG=d~77y;^>Vv$!J78gS>u5@((5zMt>-D?|Mlydg
67665 z1W9It|Jist-dG1Q;Z7oV3i|3R)AU;eLC~z_Eh6ZN1Iq`?u2gS)plpNtS<&%uZ+!TU
67666 zKtLcTxv96emutX-I$>m|$51F=S_mhhE+1s{7Mjcc;!c5I1JF0W28%lxzlMrCC4LPT
67667 zcgp-4DehGGwV}9E<=1F&r-5H%#hpfeEfiBV{g;(tXgU>dDGNvQ(b8Nl)>Zn(Do@cX
67669 zK7MV4eEgb+eEix3`S`V^7@w*+?1Un^4GhQoI17E6NihgpxX-p0%M%La2^f!U7z(rF
67671 z*uPH<+XM2#pOf!aZDQ}Ao|?3?Q}A+GyPyvUaA5v1SVkr_m%EEC{;AF7N$-XV$6gEc
67673 z?klX{(UOYCr|tmFDdW-NEjqojlIpEt$IHV!rj(Wp?vmniJiJTF%AuiN9%)So+9|C?
67674 zYSwUB>Dza>4)bWI&q`9?@VZo4#-xgBsc$5V@-UBd`?eVYYl#1;S+H>mJ<Q@WmZ?wc
67679 ze^zm)33E-Y$zSNwv;SUR%w^(nY-$Rjs?J{$LsdR!BLMdlYFe3tyD5c4s;ZZ&G-E25
67680 z3l(_vVUN`aM!37B+=Wp-?;y|TgPh=Tm%CA3P%KZzWg*w%0Ms3yg^9POt;34kq00+V
67681 zTvWV;Xch{KQ4n}xN%0mzd$JS-?a4BZGaH5F9ETSU=QzA@1jpfp6~$eMg?%Uu7I|g{
67682 zFAWuU3Hq}mQPQ6s#qk7QTFLRW($O4GE3M*qT4^=!a{z^5-X|}N@IHBA4eyf|)^eOV
67684 z>1615>X-pHX?Nukil^wsnJ8}NO4sgsad#@_+A7W#y~uG+({O|;&gp18ZH(#}+MU*7
67685 zt6t<S&eV$>{VdR_BAl%kIl?)5kt3W7-05TV&eQHR^!MpSj=oJVa`f}jvWjqlUgQWD
67686 z>P3!l5pZXW(Ysi?)6g%`iyZy^dXb}VN6RY02lOIG*r69W!llJq%-YJftb}ioL^gm;
67688 zE1}wqva$DW(#v=8L!bVgX<_>kjM(ji{C-{k&PINJr-Aebgf;KZ9Dj7TVH*ijY5Usc
67689 zwF>^vE}JOWn(h=T7nh~WF*En?lGiEJ-%khpXAb_|MZ4Jg%BvizPnRD6F49gRG!Pts
67691 z5deC2fCKl=004Eaby!5t0idlL{dmBO=M5q+`tzYb-xYwziTt4FM|}XeLGT*FeHb*u
67692 z_Y+0pfO7!ow*l=Nt|N-#8b!O<wM6liL<z`|Y$Qr`5~UXtWzarzB~cbMvXC{4K68+x
67693 z5%rDF66JxD2fe0N0AwrNKvdj7)NBDj_LfNi;7veX>y1@-g{TdEw||_d1N1?PI&UVL
67694 zh_+pz-39#aJBiSgCV}6{1^{I00dGCPnS$$7^g9i5PXn##z?lJBr8EFKn+aZKK2Ow(
67695 z=Y1g358nI1`vByh1%1u}U$X}R;9)k}&)Eb3e{+WckZ<00qWNeyA9V}R-$L-X5YG=o
67696 zn?=A`4EYv6O|%5}OTg<=+%H3UIdr}pbPh-RBf#?!(Ax^=brAdvK1?(OTOA1<9|?ar
67697 z3iOZKs>9Jxz$&x>X&MH-5%jeNeXoTNtb;Aq!H(;}`!SI380g_xAfij!0NNYzY$NcF
67698 zgAI;<jpzjQc_R2Y5%QmO0$?}M$>?_zeCQMp0D3zGzH$oq-;B1KA^WM|eG3N07Wmc{
67699 z&_4~lp9cRt4ZNKOU7ZG*PDlTz!=KN9UC#iGGobG?Kw~R--wJwL!NXZ-cNXx^2F}^&
67701 z9>RVD^u7ffJ`8%_hyA|~Kl%am`UA-M!)-*5Ku?cA{zu`@k3xTsq1}%_`*G;*3BZpb
67702 z%TK`1lfZitZJvUhKgIK(!WRDn+D}6dKZ72A23dcO{-1$wJPZB(0(5?f@%bEd^*rQ$
67704 zzX#4A;PZdL^>yIB4&L7Ye{TT)j~D5Onty`M-h>ao1wQ_a_HTpUJMiCk;2XPP?>*4R
67706 zNhFvN&diqq-XOtpBMH_r3ARqaog~;%Z@&*=540Vi?OY5%y{i#`t2+(&H~@WlK;L^M
67712 z+gixH4*ai!zSaZx81#88d}IUq*ogKUp@-wp@9|qmI015;2>woju1^N;CiuW+;GF8v
67716 zD}3}e_{Z(&`%d8A1wGsi{e2a14{Y%@^mi}HUx(~p2fz2B-)}&!Z^B;RL|^wqp8KKO
67717 zZ==5l;BVi7J|6_$ck%2Y`1kif_hH<BAASA+ZGQ;;KLVZ~g-nmZpMC_K$MNh5_~DOH
67718 zeiFKV3VQu1^!h)r$J40$8Eo=%;6H;g_$=uD0_9)A-p^qyJdgTcLGBm8-;02k(Dv7$
67719 z@oV6`4E_8DG+qIZh(p3}!P~3o`*(oX(Ej(Z!yi!pI@-JeoHxMZpJ2l`p_8|O|7Y<1
67721 z#5zUv?j|vS`(S{?kVInmVJw-hB@t^6F^+aglv8MvzKF!kbtGm{-)JE*Um~#y{S?q|
67722 z@lFz((QgadOn8OFHq^JhMq>N3Bz8PPVkcnYOC)w<Db|haB-~HFpTr)tn{pqC7{lVU
67724 z#hri$Nn8TFrQmZJ=qv*-%b}mc(dKaQaKw`&t^f?)OybaGBp$hy#G|02mCuv7YB7nc
67725 z!N)LU8v(Ct-Xd`=^t2v)tp^XsKp)2rlDGkQ8`qI|9CUO%XrBNYCvG6|B-Edb=bJW>
67726 zcnY3v2HvUA_o<L+3-~$>{hkhf&Omu9aLxpr1^VZt0pQ_W$Z{U;w>d~WANIo>EM5S)
67730 zgnjNp{oRn`tC0O3*yC%E^Ir6MA9(!+>b?m&_oL0X(cc5$<2&$$?}E-l@bB+I?uWtu
67736 z15V>G;BjL4TZuKH&%#B-ij#;nZz0wKIulkBYXyzA-NZUj?t}~zQP&09-6s&644OSf
67738 zzX<&-1}p&%=4`ecZ7|;13g8c-zoC1G9R;1O1ie*P5*zjapobCkfpN|-C$seuv12YH
67740 zam=<oN$h;cegXKp2>f0G8t>mkY&&p10R3DFI+uah%fQ3sX!{{NzXJVz1pQnI-Fyu8
67741 zxf;)|hOR#j8lQmuu+3nf+Cc2nbBO&HXj}(fd<ORTENt=Lp!Yen``m_q416Aa-q=X&
67742 zCg|>qcM|&&c>OY-e+4!v!&h#B59}%vyA5*QzMa?|;Q6bt=e@A~z0l9s!TZ;*C3YVG
67743 z^EUei<o+gP_!i{4ANsl<G`@}Y55QNy1N}Y-obOryp#NRy;vw|^J?P_M;C>%E`ab;S
67745 zt^dLO)9@wC@9byrrJn=m8PIwbd|-}ezl0rs3H;|E_w&I06@2nn=>G-azX%`uEoA#c
67751 zvr0T{&n?oI-dVO>l6jH{g(^qUkrKR&{3Q>6a51O}r*qn9&d}WN>~Mxk|1AgKei7@Y
67752 zXX$#1%Xb|DKL`AH>3TWvHr8pC67cT>zKs&4sMTUN84a8{CJI)XCkWV$qp6K-qT)kK
67753 zHP@Z%_ILYLznXK#Pb*w?RpDbF<9|=PUUHsMxbjL~#@{pE`JK*-a29BrsI$~2gP5v7
67758 z7vWM6?26c6V?z%~c%`^nlWEaV2|H*Ii!=lzH2^lo`0$UhlfpwqUFgeuOsS;77)Tk-
67759 zk&t3&%q=!L<2J{1Hp!QE7;X8qY!BOPv7i*pd9st84VF0n5R^onXX$dXQ-Mw@+4B*P
67760 zTLL=^VkVghRldVq4zLRz@kdj$xLW2Ch!7yLw^jt>>^vYb4T-Im1tu^E;&wQQ90f-q
67763 z!9goMMN9Ci3|D&SGbn|)%>y-?+cle8|5}@eC=}6beh{TpO|J13Od4H9qo#&r)HdS*
67764 z@W`D~vWING39=@2G7xX(wq7;*1-cI8!?5)xojrRt2%cqb@j^lr=Z5!r!sZU?h#p9R
67768 z6FuuqPthFv3T*&*G7;7mw`UW&pVKxl-w8iQT;oA`ucPM<?C6MW+p12aMYbt_M>=9<
67769 zW#vWsv@rEwV~gB-wZ)Q}E&M6dm@OP}yPbPsjN3vo&dz7g;HI#_3vF6(9WzC&`3hq!
67770 z!ZbH*kGh(|)mTAi&}SgK9xKdD)MAD0Z<`-@tnl+#kvnMoTv*KQ8!9xvI)l$&P1@AJ
67771 zL&caMabB-SY+Nc#rv~aPnf(^CL6#KG?fh~(IJIaz@>PdjI4oRp)-jHU;9KXdff}3+
67774 zt`Z8$QZOVdnSd|c5NPxmf<c+3{ZmXHw=-Z8J)w|Cbp`E8JZ^6=DfUEAbofkaI3)Qa
67776 zVBOjMlvfpHQ)kkavD+JKnwu04H78ANL8G_PVNdI73uisy3BIJ$-OgPpfH~m7%4;wU
67777 zR<Ct-Jy8E+=5rsye4BhBpJN;oFdw)W{em~(HrMQDZ%XZNzjt823hY;)ZrHEA=;!v+
67778 zI_dgL4LHNm;4+6?+=AgCx1b^if_p8f2E$U-f^MHl@M;ze*%U|A<%o=#&=3x>aV89~
67780 zALn~MhgVxizs<G?eyK=a+PqU)*IzQ4O(Nd_h;#Kh-mS;iAuYa+XhCL4SPxBpE&2@M
67781 zk0=cB_1}oLwqFu11xR50nZ6O)sMQg#8XCGinN6f5HB{KCP(RCcb#=7+I@-Is{WdX`
67782 z%w|(b<qw{4e=czJtm(%#S&PT4FSJd``&~h{#W-oPCy+8vnHe$~-CFEy0`F!i0p5=*
67783 z87=02EZ>Q2QscYIa~;#*`J0|lf6mg=7nr&<ZY?fZQY<cNa0fJ=O(svoG-aySrSrU;
67785 zC1m%oErx-aPH)J#aE8mF`SdyLc)COiB0gnl`!1bN2bgI<%#cZtH!9c`aEAG{o?|DF
67786 zqV-5RdsVb5@5wO)zIT(xgut!Dkt8lf$sP(OV!>=Eo6KZV>X<luI^$Ad2tlMAm#MqG
67787 zt7~E>FR2(rXB*8akHr*-c#|2oJ=<4sx}A2D^8{B*GAMg;E{AMn$4k+)9FMsoPIGu>
67789 zEfFXjL{A2a2{9RQQuFiV#7=16qZy&QtID{Vt8%LxnQ~d37S-gkCcSZ&#pkj*tg6Xr
67790 zO=j5QgePm2ELOX_BNnuJ+*zAsv)J67lR1B*zoD}#-}+bbH~O2s{KW(N@OKSsql=|H
67794 zHkCj$;;}~cb>fGyC;ymq0#-G%G+R%xfwN)^{C2ouY_<SfYtA#@ZEqvSF4~v%_SSqZ
67795 zmB55jvw3d1h~a{z(L`-&==b^eN>eXPHO%EO(uPb}-7!g$1hZLI7>h7}I_EG4?2^Uf
67796 zNMyaXctla%Gkg6}8#A&=BJ&5t)Rcg~L1DoLSFu?&m|cx&pT+K0tS-0P?Sj7+I{emD
67797 zQ-aI*JGP7(r6b5r$}R&5?Yf>ZV<K+B3l-VIWGs#B2=y}T<YCL0b4E`vnZmxfwb_}N
67798 z%V~`Mks7g1JtPf5vDvCLM*k=}OH=%@beO4a&CcX}#J$Vd(R8A87`Z4)X-(TfMG)rh
67801 zF%b&hG4m!lJKdV~n7-CfCboBTwy?_Zdggl_xkz?F7R(hBvcc?2npA_`Xt1$W5l6hs
67802 z*N}HB=42|&j3Ki#6U-{I)!;IyE~`gh?;OL{({^bBWoQD;*Z3<rF+&8*CI%N=Koaqv
67803 z(AvniDVU))^29kd1iz#aEG-!iL&c_e)bE8d6v_x0bv)lZ?&NBL$m{87uUD_C>o=8z
67807 zbLf&vW$zfM_EqcZ6rHkDt`fczWP-{9lT;_e*`v=_X~ZByz+vDr>_g{W$hzO9o8$NE
67809 zPY{y%U|ZJc7qT<iW>+!mh}cC*Vb)m6S;#fcZ_{`<kCo|kX&L#bP-;Z5;d4UWv2|St
67810 zK*>kG=9G38tHn-z;)Huvmm(L4ncjlGB__#Q=aajQtlT)S%~@!)g`IlW$;o+cH>q+2
67812 zOL}L{ojvog-ouJbnbg=cU)_%A=NUXO?lS?@qCa0H@_66P<66~4m0bP$s=d`<u^Ii6
67813 z6m#1)n6ycOi4IvZ2x7?FF(u}9bhP(dL-5`Ai^kl9g2n7M+PxhP&ws_c5<$h+6tc;x
67815 zz18tPR|sphVB9HG<Iz#{CFvB3U<cNt>1{&JgWzMeNCID_E~tAapnDMCc`wnAf-<wD
67817 zW=DD2M>-G%O%Ay^su-A*@>_BZJ=2VkC|B^hi$U@5bryZieJPtsS4gK(3O+DLlVh4y
67821 z=tE!Nb^BF5W%{*YqX-++V{EoiHg7lBd>)%4*O?M7w$2C`oKBmwc|z7?DB8U?gU#*?
67823 zxqo@qrslJPV73G}?UU&px>z`zjN~o3Ftv`oyEBqegr;&i-DOqfgRC%gYFLT}g6~)+
67824 zsuso2YBuXO`4l^ewnz$W(xus?;08MwH;j)PIMrM_(9j8Ga(pd3HfknnyZ7p-@$*%O
67825 zO<W^PS}sRAy%xJ<HphIPxt)?2ZftTyV-9wb-JVdH(V|L9Fl+VOrC>D36s77Xr?Hc<
67827 z_BCNl-HNr!JnXrxu<nTV)pIGv9gWy#S>WfWo3KbB;mA6N3zrfc11i|2qtJQ#;S81B
67828 zcAG$6w=HN7VijW*tlBHAWOb#Y%>{^>V=F;pL)M)Md85u^+!>2H-602CpG$@&rlJL3
67834 z74o3~C4_`7#{tBsmtwCFlk-&>L?+9U)xc#C&6)_|LLeQlNie!qaf`B4a7}G1`t9bB
67839 zV8y`~_2L4r3rm54zM0b|ceklDm&aXHY(u1@i%3L>7$Q-`77LDws8ei;gk*_QqPEP{
67843 zf-;^+mmK)K*aCz&R*0D2`0Q0hWMhcc^VgJ?CA4>z<9OBM<ho<z694h-7{!vAWL~Kq
67845 z#cXy2l(u%O#c4$Jpt|#$x;;3LU-bt#nq9`7;8-SPiuFf0+S%yKbXMh?V7=?FI~RSg
67846 zXQEDPYTq-_m#b%@R!`@CXQJCHv$cKon0#tZJEhrs5U|N$ZcX(ky#dK+2>RY14Bn;W
67847 zqrSA;>|nAlVVP@n>HG8Ns&wkk81|#}?!?{i+S>{HcmH?GmHAK2Klyjc5fbR=(Kh-`
67849 zdL={JnHg<si$@kMPnaAXlY)6EEwwnCliJ$<e|dj@-*?5<sK*p?TN_-pcg0E|aL9Mu
67850 zqu;be9NN3$u(kHC*cb_ndsn>oCAZ7H_g!&iWb`)Lp}i~VE0vN7FXN6WOV}gw-2tO*
67851 z3hv}fssnE$ktAvRTWN$OlK5FmBi1nKTw_{Q!v&^oO**uL-GjeGQ9mu@CRqhVdxc^R
67852 zm=ww3a%55wTft*=^e@d0SVnJC45=0-TW#(_Hehy`?2Nxa3HUuqvBN8}3H$I~J+1zm
67853 z`PXN{f2Iu2kKRoeR&JpzHJ6%fJf(Pn+oioh7UuG^pG!zv4$#;npJ-^}TXc7hpJdc_
67854 zrT&h+%OcLI7oMj1muNLgk~!#cgj8m7TTH4Vn}a5kBV@<gfQi!R-GVvZ7K)ne*|0a{
67855 zjF@Gg(`<=*2W(Ea-GyyJg7YXmN*9XX{d@E1c~>6!F_I)a`mQY2<-0_9zKzdpQYCiK
67858 z__xUEvi9_j<#e?y{5Qzynw_cUbQLEx*bb4?g|+U#E~hKtk2UyHfm9-suFvTj+htcJ
67859 z8ha;Im(b;Gn4Z@1x%?rw$$7k|B@vXfO;)9v&E?CqYsp-WYA#osou_h*%jNo~p9hTP
67860 za2@D8;9r;{)iCir=1A3Yk2-03X^I&fH8p_GHs^cFJ8EsoWfHNV_JY3dJ){-`-&4ww
67861 zsAU}aWhM(k^j#8;oGz!HZ#0=7G#xVCs4m~=-OifS`ivt>OS)K}a<osrP~=d#Lhn6K
67863 zJGCw~$X?3~YV4mD8J8DivDDIn_T~hosfF(l|H6ErLVheCC@rMbF&+<@3-q2+fhP4#
67864 zKR_ms5^;@X0-=|&M4-KSKu-9DY0NLioui$oD*i}*d460fkiWqdY7QJI7wBBjN@1@b
67865 zahdd7pnd77`#l-nuLt-3eLkS|Sq$#&^MnI%QJ+`i<NLCA$*FO>>{fo-QT3Cte46)`
67870 z%w73==B@1e9u1>w?|U?t@DF{BHtq%EA>X12V)ZSW%ErA#bGA3W>sz#fr|vD9JyG`-
67874 zByIb~^Koo+Shy5EM4}FOJW#IA-=3!v*XIhao~PrmA0khusWIrMxES9zPlp}qL~3t}
67875 zjwq^jn_W_5X43O>3c<YxQg!J$+16Al$dhw&NuHY%m{>GB>QZy+-g8Ik^4dFYr{iDs
67876 zjyp=xWG30j-*NNz+g;t-2Sx{bzx}b!E{D^2@YmZGug~k<_wDxo{l>t5);r$4-)H^v
67877 za}a)Ws56Iui}wzHzg&=7&c)b%ZvWlZCWD-CH!p57n6$ms2YjKs6o1MRX@U=lJnvzi
67878 z#YOdb7vuJG`_p?bJ-D?eOY(>6^91clK3K<vQ27L6{;_NnD}Hy$5%JnAf~?08uXdD=
67880 zkJ}-b8yxP8+u!Imqzv>g>z85gx&Z5(`DEd5?8tOSy1{2viM5a01gc{yuWH<1U)ieq
67882 zB-uhzz~&16|H;$dZ|58J-#*CKeLLTMkh}tI5Z96lTG-wX(49f69a|6mrw<e<6qK~2
67883 zg08$r?UvHMDHys=n<5+ZUq0ZUpNG(*?xznTweRMWA!n1Vy_!$puu4+(v-w&c#8cz>
67886 zoA;VCN!eIPWm+V^Eo^f{9R`Oa82z>>&V)TJ`;AHGj3>Qmr_s@r<iAE?pAe^iBR+-7
67890 zo4}qqE?|pmFv#A~=g0p-(EsT{*Mm@b2K)UBr8If?d4`GWKse-ypocu^tac(evGyV@
67891 zH?|R068WBF+|LAO$lh3Rw#{cnpQ)=SpAdYK9Gl=T%*@ibKC9mb{U!ZsDN=uZ-!BV~
67894 z!4hUc058(q`Q-*|nL_&OpH1MCPe43@QCfq&FG)+WapIL)R^z^PL)e04Qi)hJ67qT7
67895 zPVHDC*VW0-UNtEY)bumU4%MU9Nu;Dw9v>zfh1o<!X3U_f7!!O*I24D#WQ)zAI;18q
67900 zLYK+O&Q&u82_hStBw67U>v$UGbLu~euj-e%e+h5@$-j#!R<317)49@Nh$Cr=l_J4_
67901 zo9#cp$D;+Ynh&h~r=QzvTt%5bSC`PS)ta=~8f<M7?LJr1XEd3!`IO-%i^XX$SZ(ZR
67902 z6<514F(YG(2GcH6z-)*nqlO)3hrwzxnziGmeR#@gE3iZJrG54LPvK3V9x~7aboJif
67905 zO9M06&8Ce`!5(+Sn9XgsZ6v?T=O6M4?xZKdTt2r8PyD`-l;HFGmaIH#+0yy*`g*7I
67906 zbhH<mQps@0=`b1u8eVnOnw4t?k63!-vLhEQoVR5DlGy{jbNlAbnAS6M%FOPG?UOsO
67911 z%wDo+_KG<x`g^BLP9-8Cm&2eh>ALiMA?<JX*cp1ZIuf*%ot|-~+8F=PU^>$Wjg|<S
67914 zrj%K*89S5ygo{a@e8g-@#nq0L!<*-JEQu|@dP`sP%Gn!k+**nTH)m!Z-d5-iPg#9Z
67915 zd%&-a$BmVx()Y0bnLsb{NO4C1dt*URs@bz?l6e-Ev<-1XR%nQC-y}tpwCq!5L=_ZL
67918 zHSc75t0R>5`h%DkdS)#A>?fvo7Ol+hNj8s;et%%H$tjyXo<w)noJlH?!k3L-H@E`f
67919 zu+fv9)s~M*#+h+L`iB8o_6D0;R8>E-qRm9|1Hx$(Mg%(gHZL}J{5NqU(2EZu^0m%J
67921 zl5!n-aMymQ#3y|6$SpHNt5z-Q>5GOxB3RD+{T(LJX1{9m=FzLRxmGWVOwDIHx49FA
67922 zz>!Orw#-U(&yX8@&GSW9OT(<isSU~z%Y6A*-s&=P`7VNdYlS}YQk-tmS1hfI2XC_r
67923 zk{~Pym&|&>!jEIH67W^Ci4QJbSZiNOk|;4IZXUxGw4^{>7-5eF7g(ylOqbX`wIf<B
67925 z-00{lqrdL;Y|3=U7Ozh(>@N&-wYK^`Ar{)(XBE90l=GWouCPtF`G(4mrR#(*V^(gb
67927 zi(@nDw406mf5gDEAk9@-{K@Jk*L?p}U3hD++p3O@QZ-KT8=vp1?z~^w@ZDPn{5EUa
67928 zy5X~j<x>sKt)2-dPj8-?m5q}-=iV;HT92Ar$Tf7WpJ{M5F~Kh;=TG;zq)XqQ_b2Di
67929 zp6qNa1_O<rNbC+@s>$sR%sZT~I%#v|W%VOsGv?VTn$)dfvzANPl1eh31Xar@Tv3-%
67930 z$f%I_+h{VIT>F(S8GfA8f^s(&CQ-4yqdnbS3)Hn_!)hk5zT3cml6dsg^UhckpCpTl
67936 zirZ|%q$gWsMKn)uoVqONvox<*knuqyoTvPv4PThC&@-{k;%aa=Bsv#Ji%;%R6Yb7{
67937 zqx+}wzGqZM#UyxZrBn6k!Ws2@;2LR_ZwRyu^6-AoB)+TQ$N{SU-%J=2hWO8mvl0Ft
67943 zAzC+Is8-id4lS9fMdXVoKBC`Px-3wb+?Osa>-x#E!y+x+;b>dRo$d)7(cgIdDZ^6-
67944 zwk{fd?4qvbhS{a2_BjLYbl!#DTPhXdYvR?E<>#+P?d(4s@-kswn&;2#bN-w!@bgzW
67945 z*TT4_v<Ru~gsQ2QT4+JcQ54}avuZJ7-`j9lG&wsM3ObFG&S*c(>%~kZsb+&QAP9lk
67949 z=}{-bqfQ4_6M8zZKKA(<IMpKMQZ`wgCOa(Yj$G22%&8u$Q=NKbO!fuM24}G)A5|4o
67951 z^rX_n2-fu6g~SCu-G<dfI?cl*&BJ)BCAD9F&ShlHs{AY<l^lCzswW#LtX)rd)>c10
67952 z;cSb^Cg<kFr{?_4GxMDjeN4m}D)_-LoW0-+<OAJ;5WVTLPJdTxerQo!|Ani&PM;r{
67954 zT9QlWni{GBNPicwH^}<;zVXfN|JjQki9X>KnbE4+WS2)ZOJ-GcniJi9DPN<*tOQfB
67955 zNu8;5S4#C6`j441Ey6^}=n^I8)WQ*GADLa~>S%LVd-4XSA-`Zs3X9!@EcimnWNWhB
67956 zFZQpW<ny=srmvhcQ@71@atePCub~hX=nMLnUX~!=HZRCESTU<(y%yG=345Q_-?Di_
67957 zLwY+Oll283zw#B1Bvw~^oPuAg<&-y8>-8{#WuB}lldt>vmz5jG<xCEh+>x+AiCDN0
67958 zDfqn<5<=BLqc0b7+L~eSmQBgEcWZ%O(>nKwoAYg+mjB1zdjQCFRR_cOzW(OTd-LAB
67959 zHof<@(`Wn6Hm$T;X|?LBW=U4@%Cc-rwlTOMSBi}r#2=jyAb@F3jGaJ22!w=GNDMIq
67961 zq;D`SYRyQbI+vZ?s-#8}8(w$!ILF1)BC+?Q`!WZ1v|LKxEhDg2N*4F+&93{U{+-sk
67963 zaFKo!iG^ifdP{~k!i~ovJ%7u-pfr=s&yOVq)9sJY(CZ9(J!vx*qo&Hq+bkFt&i@eY
67964 z`%i!(=xY~LYo<K#c}(@mcsS&?4AQ3M1i|uI2iT6mp0$_*8IQ4@Wc-IUNH78?IJNXZ
67965 z>WUm2ZHHOE5$}t-BubB#f;EC=1t(1)>C2a|%rrOdmlK;Oa}PFlgz0^?)KERFPmCAK
67966 zd^J0M)9{rm_<V9LpO3#-K2JP9pNEX-d|oy`wrBg1^@z(uB)f?4Ux?e0e1-UE%qO!H
67968 z?~tKS<Rq6wJ3T`Sr|0v>h6u7yQ--eIp=ZJrEjb(lAzE@C33i?TclcL`k2-+YiaUz?
67970 z=$mdhdHqK5o^!tjE3T-*N%0WniMWG}a~{EOQk*;PBaNsMsR5+hAb5!P_uv@--nOAi
67971 z9Fmkvi4g3ZHT4>_*42*(uy)Dd{s9;Cv-k=h4_^xG)+;&Yr_rmh6;DrNT*w<%;IbY^
67972 zpxD?<j9`42mxfPm)t#4&-RJRL;Q+%%<1ZdlIVy9mM1a&|N~nR>brtL&7{U((%qJ}M
67973 zje#_v@3wuayQ~z#%dF^B?6nerpx}Qj<Ig7>@kXst(`$NMhxC`elz-}}9bd@**`MXV
67974 zfcNJFRN?=EThWRQAszlA4zO-pLbVlTCs??dh3eRtt;>v_e~@sJNTBT5g;&&YXP7H;
67975 z_2cE#^mM9NxwgN4=xX;3-#D`Q4X@iE9sJgHC%=e3fB*SOc#7N%Sj<N{hQs4l$_wts
67976 zXgMDU62rg(79m43UffJkkE8GVpT6z3Pf<eRN2AFuEU$<EM7pdPR2IWR+k#rl-rVRv
67977 z{GICMmC9wgTybB;Q}cSO-W#s?>(gic?u2~u%Qp;MJJ^3s6Fnz#eiEGT!DJtT#{o`&
67978 z+_l0XvKppFO+h49B4^J&{i!7R*~Ab3%Z4eA@Y{!;HG*ph`VcoC%=w)HO%g-s>?G%w
67980 zCKt~LLNP>9&0Q6r%E;<Ko*)UvD5TOw9VbQ&XAF^KJ)bIEwmG`De=JAAD5R<l&&-%}
67981 z{<1t7Bj@_V`D7vDDpk@f#b)azL1~TDT^swUIG!?0Gq{NG9K-S#dW)>rR0;`)*s6fg
67983 zUThH*L2JeAKok8@=x23?6+DjG&N@kw@tolF#uUD}^HT(jQ=`-T!1Mse6`OgM5_S#h
67984 z{R0JlXahtVFhrCP%k`pjIFD&TsKtEW-rVMcc?5O#d<tGmUTM|4wPKy=4y>lFIhk<Z
67985 zvDZ!)ww_t1Y&l%WAKdb_=C6L~#%;gyz;#J~?QNeudFD^wUBhcbK+oBRo+Ec-olV<4
67986 zi%H<dC<T<Qhw|w2?zg^W?%uEY>+ksN(zSp3o|=E_x&QC+Q-A)5wReF4{}<T!<M(c>
67988 z4CDE{9ouvY>BR)%g3M!-<?mY27WL}jhdvzq$cIB8{z&-4r$Qh8aQ8oYSQV^8JT?zR
67990 z-U0a0l*l@R9zyj?X6~MR{%<rd%ZdS$P<@gohh_dM_!C5fU$%PIV$Kh6i`vy}lD60+
67991 zMWJhGdor{|7N$cM+9u7p0wT}#`TQf8LYPL)^QXYK!S7hH_RcQv#vG>SyuIG-*GeT<
67998 z;ffzFYO}u`UV9O7@Wt*e*izTlT`mAzeXhP-CLA<0j54<2tE(_3JMK@+%q$Z?r@Kiv
68000 zOsil@Ne({ycDEi*1hN@tKyhb-l2?}E-ok<P2Oi#a?p35*_n+`hgh{TR-5$dm`TXCb
68001 z`T8OJKOh7)KQ3A-mrWn7bKYZbmSwyoUF2qLz3jb>&gjMNML;gtaS<U9N@Kf+H($9J
68002 z@;%g7VJC1w8@E-UD^d4|4LDvO$AJa~csWpk(N;N@ST<{`K<${dSK8q%`{JX?M5r2a
68003 z2RvLbtSxAPd?LQEB_ihQE?x=v-D=$G<%#x(2EIr9I@&J@D?{3AX~)(emNUS%L)+z*
68006 zbOk-8wLdMMxO%m&di552w=!tAZtKB`b}l@OBYZnsH$J=!UuP%dxynHY_$vI=3+5B*
68007 zbMgu3&{FnjW*R>pN%X`g!8gfoKgT*?)=Y%W-`EFZ5pN-+c+6bNj48w?&3rg8voY*U
68008 z<_#?x)SZ!#fZ?7a-i4n11;l%mw#0Lg?3x`hj9r6RuYki@*;Jje2wm{=lP%(1&Uns{
68010 zJ!~`sqw}SB7{Bxynvpc4tFd$VWxt8hyV!fyT0%G@7{6fUh9QdjeX0{-&f1uVk@{%h
68011 zt`cidr!RO1?nBfNV-Y4F;3k{rzV{rokt=FqG<T-F@(qhv*1FjahQZ$uaqA3VI<Yyu
68013 zk{n6SLdiw&>8xy2$M6HLpJ9>-Ncd*vqKSjYFkKKV@Lu#ByH>HO&^XU0xuUEHhKF4P
68018 zgKg1O@b$aNPWcWf5u5!RA5B>W+0f2Jf&vcQxf7jl_GNtR1y)_Lyn48f-XWY4YZa2y
68019 z@-nV*2Gc8SkexulZhQlpCUSMG7!0V4o{48;f%>{^v1IVhs2OW#29A=ZnDM#dL5fc$
68020 z(^+)xC5Oigjm^d6hT%lm7Y)#qI~9x%UwOM6KKG0q*LWixAUp}pos9s?-~B`QFnl-S
68023 zOP<!98tD*3#&H?|g^~#ujkpiQ@op;Tw&LARNKkNy!Xo-5h=&X)3Szf}-qfn6a3Z(n
68024 zDS&mu?jtz#2*9h5bMV~KnrGqCcGK3g(2Smai4VgBnCm@ELqu?L4(C}N@dVB(-uj}R
68028 z!Yd9wG-KTwUWnOShNxN<Gvwv>yK#$*X+=HRm)TBK5B`{G-GKK$Bx%*9>y$U*bZUO@
68031 z#8Jyzj^I#GW+^ypg+MPZXNCgI?~tTlF6A<*0(Jmfg_*ilw$LA%-ib^^%B5+$6fEbU
68032 zT~jm76y)UY?c<UHVPEiI+JwYxE`!$Apo(Mqc-?SjT8ZHRpKPUy{Q>&q6-r{yo(*n>
68033 zmAO*-mq^+{?=Sm|jC$D-PVEbi9o>~P>+!rR;fs_#djW-TIZ6S_04{W9kAgGc^7g^~
68035 zc<kz{mX7b(wrS(wK($=R#YW?!JZlR_D|I;gb*C-~E~OJo*`<>%sGNl80WXn$1R>zk
68036 zM9`%QkVbH;@OFcCkUT-l(SXhgv_eJCx!fuz(T3)6xEzKm(~1-g(=OV3Zv4`yPpYJ|
68038 z)S)$Y6n*_8d33qnL2C^mZ@K`}qZfi>%aQ%(zfP6O?;;ssPum?v%w-s@;cXi=k)zT2
68040 z77Tm2gLWOWY7_GV(=Ix}T0((o+G`=zh~t|EiT2goRDUGIvVB6UY|d1-JFl6|^IWQ3
68041 z9J)*uqoH8fJD7{tJyOQ^L_hCl&FQ%*9jf)&#`GR7ml$B_+*GEo--P}l<MN~tUpHSG
68043 zmP>Bv%a2FbjmauNQt9p=-K;!D9YL~13XFhLkbyd^!3Fpk_zhx!xSqI+cr)=q;`78;
68044 zh=0_cu@33++u$AWb~phmFo5=z037fsI1dLAkww5m?EK(>2)_V7kEk309Q-VN4f-n#
68045 zoP-N!&Y_JRCiW3~5f}Oacp5!HL+^YAJO#dpo*)A^d<Z?k01B}Yz8T$Z0)rU0601y*
68046 z0am>uq}C^iR}rryP7^1HFnljy5bz1`X{)jfO*{l%ffPs*<N!-NNqmlYocJj55ro7$
68048 z9bnd$3Vxv|QF_soP=8J-k$u@IfwYnFJ3EvJSO=H`R<J_^1b(6Dp}jzQgkAtWT>lTz
68049 zBX+?~kyh-KUj$0L(4CV08B)Ugb47{Liaqj^rNkG}6%`%vPodAtK<&^Y^fRKz3)>^(
68050 zuek`jkbXk!;^&JX`U@e*V&~t+M|mXU{xZ-glG4btAjjs}T>fk=UL}3NcQ?9K;2pwJ
68052 zT_9P{5-B>FS^^2ApwL8uUMj$RqeK*8zIYtKJ_J1kCo0hC6b}JWlr|xe8Y@+-i^YaF
68053 z0m1qH9-K^yPT>TUpEA6R4KKWOaHUn?(hR}S#LEUQLnoL^0~gz(K5`Lo3v90N@_-8p
68054 zpjav(Sn~~7g89-502&F1?T@}ZK-Xb5mB}6lN$`@P#yMn<{aC020vA~9!Y;v|574~`
68055 z^iTFcck8n5mR}+YIzj=lEW^}a77Vam|2KaE7>H<uu;_dlP+1K>P8#~ui-RAyMBcTC
68056 zu_zNiTO`5=iBG&>B)a<-N`B}PCD#(*%kXE50Ft-czw>j600Gz>!CnlJZXn^|J{+pB
68057 z)s~gpzxQ%r0ZgxKE?T%iuSfR&<Wa%?h(BL}imJO+EF`2;Od6q-CelACl$4N1S?nRE
68058 zBGgoKDG0lmfe=P4bWy}WnoguI1+Vr~myA+Ca;@0$FJh`L#7F_2D4wYhh-O03p9Ery
68059 zEB}q(LOg=LZXj-ePouA`=&J$i(1ZrK23(D<eBS#04Dq|fCy7rGj}gC4yodM|bpKt}
68062 zgChvS1q9~;EF&D#FbShD3=LRAaMuvJ=fMxbGvIsRzrfeQUx6=!C&BN5&w$?qPk^f-
68063 z1Fk{eO~3-|6~LZ(Y`n%%0*n<fvHErQI>WGbR<z{{K=0Za8O>&6xxfQ!8;otwE$lQm
68065 z?Kp;m?8UWPh;-c>7wZi1W3F~1Ub=X9yP4Ixx9i4=>IgRe5@|V3nC?#te4IUQ+S%py
68066 z|1K7+H4hhSiU60#wg%{o-KiG6GQ`?Shp|4>r9>wLqxavY^(tRZ({ko?66A1dQZFam
68072 zE9rYw55*`NFOrg=dH9umOQb0IM{boD38!dxG*R5$E3sn)<f3t3V{-SfyV5ZD!suMq
68076 z$bLl)D%&4w>k+~0cQQ1KCc?qUp)K1t7&3&VP-Q~(z-T_0R3YJssWeScl0=!Ap=_Wa
68077 z^9k%E4AOFYBlAivrwQ>G%cs-T=qZ-*27Do(>aX&g!|%SwWBkYWxNuZ(B&<6sv1esH
68079 z<mT`*g{i6SBb<Bc%;IOK-#9``2Ns?wOiu0?<&?402R}RcV0-0l%H=y9!GUAjC*OFk
68080 z&*VbsoGzN#bgmlq$nJF7%<2EWc<&@<v`-((UH7V!(L^d}nvvjSvOmac&)znBLwoUw
68082 z-EnksS5+@J$KL$-35FyKgYl}6U5tCeu0BEHG@mftc4`LChHJ7Ei-(<onA0J;8AWlX
68085 zy2P1TK@_s1QOe1>yw1i@A4l>6Efq#{(M%wI)gAXv3|^CE-X-&fN)sZ_Qgk@tG-cWo
68086 zFe%8f&m62=-n{)QzqX;ad3-QD|Mq6SU(@|reS$Vjj+b?QbRe8^Pz)5wcnz)8c3jgo
68087 z57M&7EtZ=epF+CIC0EL*KJ=0Od#_)YmMB^YE-Wqtkl4<Z((5--lt3r?J#kkkq^A!J
68088 zvRXMfe@#(r4rMjdmGFhiKB+M@qa_ty&c-QkT374lxm~mwR%AEY*Fl;J1RZmt+~$J;
68089 z&MHmlP3d~o(==jk9!H!-O(E>Z{UNlP#}#$xS?Mm?3@NTy$V20)5an~9z_Hbn-cmC~
68092 zCj&PUM<5V^1kNEbYdg9_0Sr_v11Jq0=(mRcs-oX2&|nMpp%HW>SAGDzAK)YrCl=_?
68094 zz$Eq(GU0-6Lr+VA0Q?VhX9%PSTy!!9>hO=z?*_;r!SDUVyNGw9yIP<@{2uWe#1m-L
68095 zFnZ+$bKrh-7mp2|2wo8<{aQ9~;lDABk}ngD#Q(-L3cgG<!qEx${QT1hQHMZK7Je$!
68097 z`Ydqjg6<T~g1(}!(03Z70--=EbQYvzkytu%b{K|R;T1LV`ynDHSVGT~C6~Meq(LY$
68098 zlDISk6~Ji<w*+Y5&}qjKqN489bZq%BDAia3!T_X-0<{E+Bd|~{7M4a!2`}ZTB!gri
68102 zZ|#vGR*%PHr$IU%iU0Je;YZZ4Y2gj-sU{Gs3#7cuv;c8Lig@P4k0-@r9a`uw11&(l
68103 zmaFA+XF&s3GjIJI&?axw2IQKEG@$KnBHA?9E)(MyhctK-Rg#27nFM^nglU4dZ#7}o
68106 zu{VqOb>i2E4-t<L?<L+t+(+C?+)3O{TuCeu$BCoF5#lhhlh}?vy$3yG53zxmA;yW#
68107 z=vkYI0+A!KM4AW_A<H{u5E|hm90WxW@CWew@NeMP;n(0-;gj&s;TPebp|L-1eLn#2
68108 zgRh6Lg?GZ+;aPYqyb<1D`KGX6>T-Ap)?pPEVIF#*0c9vz-ly*%K);K={}Fr}{4IFe
68110 zq-o%01~?CB%=TP8U%m?6aZfCFvs~-wf>zp7&%IRd)EBes!7O(KHM>q1tJ_(xA~0*a
68112 z9xH@-z4MG^a61Tgs<yV4D+1d!TW#-B4^!J&wIWGml}G79YTG#_)+3jzhuin`=)8)!
68113 z>D0=CeHLQ4#<=Z5v;BH(_ixxC=n4`)XCG?%;_b#`O!q0c>O-gOrCs--<2I9s6)vq_
68114 z%au-tM0%zF3j@GRV`q$&%_Q@N=IUiL!9|Yo`U7#F<V=JaTt(&{kMW}e%f2hy$t6%J
68115 zcyr~*LUr`YabsP;h*Km@Q;^bP8X-EwzDlep#{^XrBC@CG+k9Osl?r+r@7|Xk%W@8h
68117 z-eM(c5s)xl4w9n?s60y~yJ=a1z9KD){*_oWD3wYPZ$!v#nhp!{_wSXxea(2Gttw<C
68118 zP@Ysh;X<kp5`-RCDFzKdIRwU+8A$mHN;g|8w0`0=#NH`SePVIUsLxdE4V|D7vLqK4
68120 z)JVr+^v1EF0z!x-Er$_TWEnG<$-1d{RHQiGW8g`6onGp14w)^}jD&TUEDC1Wlj!r3
68122 z-Qh7bGwxXB+$V77QKJ%xMO_r{2)OT&LeHKKCY3}$4=LG%I~-Enei!w7u(5+x2R*p&
68123 zJs0-kzW1a*k#NFv>DhHm_CUEmPKpV)I~#Ba5wjSIE3}+R$eZ^Q-|0E5{1M(vIrwzC
68124 z80W_vdEc}DhE|;~oz<vlf#u~iLYFycsvb9_Lg6H-L}G-)Q;k#9=-(m2xK&ML84XRE
68127 zM8S;4eWbG$bw@Y+5#j7h6iZ@oGDNW>n=*m*gE>Pb=ukLCx}(t!>?7-Vo>u)4x1zH7
68128 z^?8Cgw^{a<`cvg~UPg9R5*y}7J=rW)hLe{MaZ-J-Dy23?-2MGY)#Hj|Z;OAh^8HOK
68129 zT|UD*ry|ipF0`Glubb3{E(<Wu-5<C+voM*_ya+j(qDc~QLzW6>UCh!>W|rn@+MKC+
68131 zz3OlT1DZ-}t<8x@|3t|@Kkpqr5U>cl=Nfl#eX?&l5O%~J&><RWuRrAU6$3(f|E8kX
68133 zt3}C_7*D{UIriDt8{Uab-v~!h4oQi7#gsYG7p)I^;(HF{g;?|?7YuS%Z!X0z_;R#2
68135 z*v;)8^-DN~7vd^<SSBM0!m6uB9HNo1Ml3`l5R^-ijnR!B12@gW#c6wocejL_eWD@0
68136 z4r6PI+}k`_?Hv519aGUcP<w$W%jFJMHe|PA703^|vMDdY@wBEh1}AZpJDUun6-1e-
68137 z=CenRpEi<)->0>9mB$ZFr5QAYn_!)~tkWz_^3YQl&6w>4qDn<JPpht!$vT-JA4n8D
68139 z{pR(TPafM>=Gyz>GxOo>_-strxE|hDof+(pQTo)?yU%^LdD~sr=RCy_+-xcX!<t<0
68140 zmt!iG*}rGK%InIxzfeLVD@Fpe->sx5Eu@6{L@zJLaAhPQ0>`tz!~G}S1Pa)NX5?n@
68141 zHt<m>Krd{=ok-R@4ey}7vGGyomfho9z+1o_IAs7$_6Mwxe-ep!8_{p{5U5xNR}mJ$
68142 ze{_Vvw_Cy+P6614uDO8|UIuc&K%de8gva4AIFA0-fo7E`G?38u8&;Zx0PjE|=PRuI
68144 zU6%r)Wzk2AvwZ{@oWL0Z?h-<i6peU`i3TC95&<HDatWywywkxi0jC=}7lB(v5|JAs
68145 zt<MW}PScO02MQ7=EV-bhK$(@0s%SM_2T0;O<bg;a?bi1=dI@6zs5;RgZlG#z^->4J
68148 z!Kc8-pa334-w%Ud0{4M?!E3?Y;1<N(Zbjb<U>+%)Q^3~=i(IR*L8J><3fBr9lC||2
68153 z%e+V;ncv`%p3_y>BwCD|dlkn70=|Gp3-_@+=P~c`>bGsZWu{aP2L0pLZC<={Z<V1q
68154 z1{xH@(X>N#>$F>RkB*OCeGha)_WRdfYesZ$RPcpoE0J}H$e5q-mwmfmbNZ^$`_KL1
68155 z`|4Ni(ikdSU*8wrev0xs8rL2SmV6Drns&8*7}6u{siaSp^-M<KkYbh%8aM>fZRotK
68156 zJdszu9@QNRi?on$deE+nD{d`Z@-|v;;Ut}PbIkj>aKzRL;`w^`+3&1~X=?_lTM;2t
68158 z(ymcQVNbj-?R0q=aqjHCnm0MQz2qj|z#z$1R$aW?%P>WK&LPKXPf%eIVf}7<Bvvi@
68159 zU0xYSfkoq3h_}MMD5Q>jj4@-fOO^!1Pj`U&!QIo>&0O)><HEX|Dl<nLt?hdg-s$yz
68160 z_yjjJKdbAhdWJW4-hX23^7S5L(;I&GOrGadH$OVyQ(S&pGzy+=uRgjnckoJIEpc??
68161 z+u!u+zHon>W_``P#7Pck{zoOp!oCzur$(|@er)G`lU(HTKi+@m;-D5E&+$ATf=@9*
68162 zGOtQr)}8Qrv|u^y4hHY#+)hmpY3XSz`U*?IM#j_{`nh-U9kCd<z%=SQuzGu=pHF~y
68166 z&E60ky5p+J2k*P3uQ?nQHD@^-z4rch{jw6=G&8b;W@Wz7kmX>;6R6jGO#RA2X?-Im
68167 zFT?S-2#!3cwaW<v2T8y=uZO_>v%2<QyPCBPRxA?mA<*(LPd_(kxS<i|S~fdIY_JRF
68168 zz@4XTFo&X&#`v~LuACNW2}XaU{-zH<)`eH$8g-=yuMzdQVzFeZwKY&2&tXX>aPC9I
68170 zx2q;}227ns7xdC=-+k^w?dvw}|E+6;*B_kNUDd}9*GH~VVoGt_-a*EH^4iBH9(sJc
68171 zO-}?HS%ANbU~9H(9E2pCGxSx|yr4pODCjk9Xz7bVYvl}d2^zO^3NW;(0UO$@-dBhl
68172 zay%f)S)C?_j?dJu#o%t<_NiBNz&&|n%WvOCGlmk2-uU;wHJHnH;M_|5Iq1V3aC{IF
68173 zc}3<Z-0lh|B9jEXSjqNG%FrYM^ufMmNYOsPjX2P8iBG^@u0gMp2%7wb!>`|P<&}R*
68174 zr0O+SqM>=s;SG7SJvAglSKdE?mc+(8cfRHiro*Y@XWx46L-Y6U`^bCVeJ4p%ge%3Z
68175 zYrAQO$g$x*C3o`deH-Vm8M^O2{^0v=nzrbD{!8aSg+!P?L4t^@?R0c%B8PD!3<MBm
68176 z)lwu|wNCALCQo?Brv?(EbCmA$@<N~%)slVw`lKPIN~N4^Zj6hiM#-r(XUoa$^TU$Q
68177 z8sm%SzYaeS--Pt?fwseIbwlPL=&%o=(_IC+AmSeK+KwxWA5Ru>a}YM&laDNOw4pB-
68179 zY48^azC-YR%XQY-PR@y)n~<j>^Yd+4j>TP})c%71>ZGX*O^&GQ<hDHhj?cxVh`k=D
68181 zwwo`vMZvanJEddA2HaM->OF;+Nyt)2J}|)h6fLF(qVs)<yLNzxjqGUD&aB*zyK4H?
68182 z2iE`5ok;H6MLL@`=GueItb5xB-gbL2pX=^PYMz(?L*V!9%xSX(SuBOKHOLWYlk(J@
68183 z2eNRZ-?~Cw<VvTdP#!m=U<sOC!o`s}p5$;E6%Pr1B}E(-Mf~k1ZVyW{r>$;G*MQC^
68186 zF-MEJq-zFpoGHg*&KZ^qm2UjzCkA)e{d7M>eTsMl@s{DvYNBWkts0BBplwYrv5-RS
68188 zI_mdsp1E-#m5OC+Z`~TMo5JMri6ii-gY#R`!Pc=+&b0>b%#p=Y|3DHnncTZ|L&}%j
68189 zGO}?ONxkyR@2zhlo=>ZttdTom#Kj`KO5m;ydU}ZGrV|AxK%>?hQ-gNLhtSJ0;49
68190 zyU4EC;adIP4U27&0L^+d4Dv*t>KwJ{R!^~6oj%ob<>0f-=6mrN3)O+8%`VD4(I@%i
68191 zKGs1H3?vgVjdjvIX(&_2>Vcq;p2(W{!DGR>%@dh;aB+8(Vn~A!cqNAR;J&Hx-QL#8
68193 z%wxGV8Lr{K2q?<xt4e{b*j^b5cnmbxE!bM-9Nk)L_Ux|cO=c@>?6U6>pD|na+`HvZ
68194 zlGR*)c6}z43h-vOG_kJW^rl8@B5C;e(;wVFdE=J*|7<RtK7RHs=RUOIp2L6p5n(VJ
68195 zT^P<+qTY-Q&00L3rrhbc;7CU3v6~;bY~2-uuYV(d=zTX$*=M^C;kXm=$Re0-PpATm
68196 zPRS5DDzj)IlXJc1(47X5%Xl8L@U%E&&~Ivz6BJ=_C5OcA*g9Au$!U4-GAj|>ap1oB
68201 zV+ay^9nf;4AWgwrF~dQd)<%c5(J2%lD6|T#YB`;ZB5@WiJS5KYYY;Q-mA0bhZ$|>d
68202 zXDV#=8XOz&#OSH*WrSh9_SE#--|@g;QqK-1Dvh`#1WLY<_g(Qt!t75))RecO2=SR=
68203 zjHSyl?e~e^lqb|5-Y}7yDNc;2&V*Lq5gCJH(YUv$Mzl!0yRV#t0CKpFr^yk7)z<ep
68204 zyUoNR))Ab8xr@q@&5KSG!>&GlTQ^--Xo;~ztf58BVxsIBy=Ly(HAilA+w8u>1<fo(
68208 z{36eIC(jNX$r(CJ$W&%SvvuFYZa%ht3{5mAbCtS!QctG-@77oC@F`m--XjGi+BdOq
68209 zvb-m6gd@Il-y3_wP3cUZ-kIwVbsX^*q}N2AL$6U>n0>6)YgS5F7rJjeJFaP=sSO11
68211 zYNo{bcf9`OxmSdb-1M5s*)#2)zVl%O^B|Iqn^lNA;-DXM5%|0+Pq~y$BSZ$_ApHUm
68212 zvDsi(Voux1z!yb}rF4>)4OyoJR&CWiY6$6<1t$sJ<-X^|ue~_kPIKPfZ@6OSa5dsZ
68213 zBDUt-8oA?xdwO_2`v~!B;(DalnQg7x>KEev1WAxAku2_ZU<b(9E2$S3(Tn^*Kf@%g
68214 zC|WTxduYs4i3)|js2Wt9A@|)MOGTp+OR?m$kF3A_^rQEUZJck-x5MLGdBx*$H3ke>
68215 zp}bp%>W}^7-RrJQ;^F=0pQN+!{~#WCxfPKAcshlc?JN=`Qg$m$1l>jn%|a($UnQ(2
68217 z{NMJkk0|M-#+E(FRy#abNUq;|=b`Zjw#>Yu4EKKjo##GRG7@=RpYUuy6D-FZTef;r
68218 z<*4EfauiK44vuDM+VoY-;xeuu2Nh6nSBeFj2cpyVE+ku!R;gFJp6g+&M<)^}^67XO
68220 z7md+9akHQ{6<Jg&-nbY_J9N$Kckqy8cy<LU|AWi_;PNuyg5{%cz(+s{JZz<LJi#JS
68221 z9PtFd^#={-7VYc~1F>fsQjnmQx*C|JjM$kFK|te9bJSUM7r5}IcFbx;a}9QCA(^Xd
68222 z891@>CfqF-3y<+=(C_oOL{Ney_Tpy4W~Yfz&v0nDRaTe|$L~Bg{m?zH$mM6XsN1W>
68223 zP05wj!!gOBDRT!JcRu(~$9l-iY=2#ngDKq@@)bOq#}$p4THtIwnD>jIYiouNz%3vO
68226 z26xy5v^zI12LVQd&A2}v_n@OBA{MoPvsgDBF@fO)Z&D1`BEbQ4SU8gjA2&-+Z3+pj
68227 zlI(K^-L@=;ZRT_2x|e7(uf-bmo<nZgX8zq9Se_?nk6RN(+MP)h!uhASK77-5S9Y#I
68228 z&wuUS%(j`rK)T>YbN1x<ZxdI5Zvrn!w-cOo#C6Ut`_!^!Jh$w0059}fg}ghlE!|Mf
68229 zj)o->*G%qpiqP%cvT^vnhsFelgE!W_?-5VbC#9k!?a+M9949e~+}PW)*UOXV|B?6_
68230 zcsmH-u^rDfwxP=+2*5yR>~v@J5NWS(dvxlT+lMqS9-eD%+Lg;5zhbA6NOFG1xi6S*
68231 z-l<w3uuccfyA)1z`9$iKT^PPiJO%z8gq{}$Q%Blm2!__c&@;_<<ZFicNaI)}g29lk
68232 zKU{z1jmM&-X3%<L@4(iNd0Y;`wBQg_Ihga2F44sgZwTg67>@rq|0H}X(FQ3{XlEr0
68236 zNs2w&{V4cxpIo%8m;J4JwXc{>ClTuphb-&mC>*_*_0r-BmVcw!sSvc<e%bkf$q&s<
68238 zoam^o<qeyHGr#*P+NmcDmS2FZV92qUBi!c-^zHn}JMJj#?CiJ8z>`Ra{jvPU2Yt`O
68239 zZ}4vGa2#RF+{U-vnHB`ZaSq<mzImDDc>5xpi<Z=_Rj<e1?|tWgAKZ`lZWzdIQKN_z
68240 z9llu{ThWcBAiKq(7-p}lTo7pg{CvRSprJr8t^jUnz_27~6cTE42)aEEl~i&m$(K(<
68241 zy}W*EVSrU?3pelG_Q*qJU$HYT^r3Ncpw!MM5!zVZA?7q_^$kJW2)9?l6OMbeLt-Hw
68243 zQBSJq_Q&(nK7YZc)nB5Y-zPqZ=4$9M<r2>*bc~|;BYVfFrF=HJL6NLQ**t<Q(GZc|
68245 z1Z(`NxB(+>EVQ`xq6MZ40&E~fpvGVfOPg^U)Rj^FmSwb4f-BB25W`&TM|u=VIt;f)
68249 zUfAwtWoOF>h$IWEI$O3@lC-yc;}+ZpIfg`nx9(udW2P3$tHm-$W-#1W?JIBFGr-oD
68252 z{@`$N<ZXyUo|$dl|Hxj~*6Vhrnv3<)^c3RHnlWTdZJCcv?GCWwDT0gE2h6-*h(<Cu
68254 zk|8?VAh7b1Ww=GtxT&j7v{e$6ONp4rlqClTe58-H8E?GRJFA!3E)K7<GJ~+8*6euw
68261 zRiW4{OO8Ns-*GmaE1`WOggdrtaQ=O8FL(`bgBu=0v$w&PxkPL{BMxEZ%|&z*d=+bL
68263 zEgES=jGCFO?B$PM=fFWtN(w(lIR6X`!8ZW|X|xMZ1X-)i?Z!uo2o$&FR>UnGds2%Z
68265 z1GD*TUn9(xV<+}ff-{}==VR`2sJLS)vo#xzPB{9f{XtCYs{jxF56LgbEv)Gcb%#Oo
68268 z;6(C><I?33rybC?ERP^+<k3+R?Dy&30|Uu|mTu6my!quH>krSL18)V-0u2n>MWIEj
68275 zw<CZ=L?Tav=eh-PCkXOczZcIOsKV+>AG#HV7EjxHm#+6B(QFIsa+tuOdp5LMSN}d)
68276 zoL<O~9OZK8ZbJw!Y+I*7Ip=%-6<2J$bLZ<mH{Efj&)>Um=LfgG@6{yBQoI;7@(P81
68277 z^K7I~K5@q#ueO8HIspPW?&I&RxQ`rY;J6PzX~lhL)~>8xO58`i8V-USk?WdqmIFR6
68278 z682$5z92T1?jDg}o!pzE<aVFlh+Gi!F>|bv^~aO3NufM4qU||7=D{%^K>~+-IJ^_t
68279 z<%kb;|LncB6OB!S1wDDNQB5*Vo|*8ZBS^-;5g)7Ld`7^A_PSMZJ~UeHG)3R_{E<Eb
68281 zz^AJF)@O6R*0E7`ZK%&RH}rq-T9T&Kc5%zblrOf>p4&lE*MI2)jZMVUMk1@Ko=&Wf
68283 z=2;vT+=;#I#U^x9-IrYq3<YcVzs{+eg5Y%C@?iTb4=+34-g)ksQlq6e$`OHKeL^H8
68284 ziX8`nVR-%rr~kp}XNc3wAMdg~-+%L&d^g_3D8<X(;cGUXUc(cj+hz|OT#k3yn!oYy
68285 ze|vb(+IW{x+t0%14R@hh7YlarPOl%!5#DmF+6{M6=J!t-u2O5T-;~plUbu@h8d>&X
68286 zy&Gap?LY16bdD$zG}4e|thq-oNc+X2eK~|qP==+LC8SjofCaelKZcI$xvsDaEJ;Ix
68288 zF%(&HI(Q_oW?`0JC9t--Nnmz3!U}Vv{WBVFM2Bj!o6}@}fYy;>z_@v*tOuPAmqSaK
68290 z!7yS=-I(aEUVOpjHG$KXRMV_$Zlo2{U<8gZE79xJHL(u7u79~F1@t@<tl8|zs@U+?
68291 zHyW--D}xS3qg4tmu3~muCc85xY61_TM2lm)j@J7LCFU-SM#4i|uqm?~GP1sAL=#QP
68292 zCr;fl*f>_Lo-8R58B#1|R5{=Fldl?|CLCO5GTS`0x4-L?@`A6wWE(j?$Cpjy<7cmo
68294 zoT#*Rl<oblpMMfQj<hZVT-mV^2wg1%P50R~7J-1pc`ZpC@m$2m&UUQlwnZSg<`TKe
68295 zyuP^jL@W_c*oFZ+!J=mwzzZX%$2M&YE1qB}T?iowe!Sw1H%g8j2U0B0;(3+jM9-#s
68297 z^-rAigLZrfhUk?$zE@zU=YPc3OuVb}Q)$YTGy-)8hjh?N|I{R&U~gKNIKh#O$}wf6
68298 zuw&%jBS+BkJO3q%UrmD~D1(D-8Os7RjzcHrJX+6WZmc}@i4~y#SaG1Qm`;TP-JB&1
68299 ze2eWUm*ldB(o;|n150-Wb+&+{f@Y2tNRp&EmJ6tsa>B)@mg-r5bKlU;!Q|fU&4hpV
68300 zo&mp?a!$0&D|gOr$p;PJRF-w`-+1@ZHJe5Ydi51oB^vLP{Rv(1UXAq;%kT0basea|
68301 z&U0;t2Vy&zyJr+}S?TwXSn4TXhGq7;z^7%|EJ}rd4<ulMT8^+-4!!R*{jja?mRqA|
68302 zs$>hkq%uXZbXW7@-3+11t;3B;Ut{|~<#;r+ccB*Z7xv@^qIrY3Tue_5j_>g_u9{_o
68304 zt<}@2u;qtjsVpfdPR*Ub<{x+&?e|0{6YD$UzXwT=@{1i`aL^Qxq1+oEJ6pO-BtH;G
68306 z1QROu<4y11JR2%C(yW%&Hr{z`umi(az&C&c3_iwRs!z-T9IJg|rp07#i|8Ia+I8gD
68307 zt@-^n`uPv=R&=HfeO!?*6;ChlT7z_02VSc^H>Ra2GfLd$t`s<dH#ME42~vorh9t%B
68308 zgHZHqf$?BIA7GsYExUC-HS}`|51fJDL;B9<#|7)iUv{aYjSMgF{Po@@NejRWJb&rT
68310 z9D@fG_$`7$dQ7gJjwqH%9-G=X;O%ku3X)k_f{9FyL~vO4Z#${d7Uw!;-nt!!x_k$H
68311 zua}fUGL_oCZA^-qAy!N%$>GV8%a@8wi;P>KRr&JC8x==mT}T=Zu3y;VFtwN)O3p$g
68312 znq@S-D990+l^w&G%Wav)W7+ghg94ankGUNP-XKGeM8?i->DZ{S;C`_Lo@5+tA5|1U
68314 z2s;13C|PMOfvoAoNx`A;#Dj;oTsw5{gB>HBy+%s#qriMoyut+L8hOA9=rntA+-M<e
68315 zJ?KD3KRKvVEJ^c(@jAQ=8f768*t3mw<$~n_Vd=WAjs~6t{|qG1z_Q5-<2-<O^^Eh5
68316 z-pd=hR(T0ZD^l8RLJ{#uBND9mbw|856^;!gB1JZ~d8UZRIe!ku;WyEOUU*#U$R**I
68318 zF<dCD&+oWtOB$^88&|O3*!}!|WA{t-8}}7okl%RqVa}Lcp{3_D-gTuXBxd8Ofo$x?
68322 zQnfS2l-Z7JB6G^c)BR`k3rHNs4m@t`z~Kk0+9Qs}@jir_TNdXY0Br}ku|Rq%KYm1F
68326 zM|?6J2v%6>a$zja(R?8iGbc-@Rv&!_ALU|V4?pk>Qb)?2LK+B-I{*k$36V$YX#I`=
68327 zg8o>O1tD;PPA-C=JS>&ZEG|8?o=+xnB~kN80h~xRMq}gU#P&ly48i&%C-bfC#?Zo?
68328 ztcF>kluu8rYAhbq=}=M)){AesF`8eiTD1JT+kb$bMdyH>YJSOQ*-D{}6JJIh`ST)b
68329 zi#lLML0c4asAzZ8fZ13`I3_-_Rz5OCp}Z{OKY5%NOonM6*fi!<FKrZ(#PmBg(d8SA
68331 z)x5rp;nU8%-R8?zZvP+1ThX6~^ENw@--kJ00RE?-O5YbiTEozS!;HMot0;oh_C`W+
68332 z(?_v&-lvVtB+TLPC-K<fbYpwF5tkfVfzLk<tkm31ps(;dQA<Ttms<U<h{J1)R}?4|
68335 zoIgarh`t@H!}rS&;aG86H{jhkm&LlY+qbts=yP);JRf4>t-P$0Vw_JE!oh%)<fN&&
68336 zQ9~6fwKC5e%Ge0+@r1M_<yWJnOmRYBfQ5o|`SStvBGC5cmzX>9r-o|%{An|&wG@m=
68337 zj2tNDHu5wYkVT@hIMz-;F7-_wIc}sHf|tq^Q-qWqo~ddOzy4RZzk%G39suXu&!@dZ
68343 z5@YCqA8ea|?S-fV?>S`Z#;LQL;jsRRWIPcO^jssDu~0+cT>kv_E#yncU)z3r{5AW{
68344 z81UP@9z?>VF08-bKjE;9R|KlGFgAjF1W`1a(9G51kt%vGp{v2!X?V{*2;|Hu^bpW*
68345 zOE+!xYLABxxK7eQP-G8jU^(!r42=9f)o05+YNtGa1)8#qVIETsH$A?%mI1<mQR61d
68348 z=4koM{j-85m(Akp=4ftOE}g$Ms~`I>KeYV#QXrr=(}hc0lUt$o6~ykzf|2Mqkvzm<
68349 zz$lZ|m`0INxR0#UWxVAUjP)Czv{NryL4$MiYOWxALW-#}kyO^lpd7_&J|P;-jmv2%
68350 zoAlQwB8KKSa-5!t28QzEk~bi!EawjdVks^d5`uYiE;AOPSTAnV_?x%?C-yx0Zomf<
68353 z_*dd$(d_^(<>JFIhFZuB1tT@1$w@-h!#3*o@*M5sa&b#X73Q+TN1M4REfH|mg-)SA
68356 za2EjMKK!+Aj2ruX;vu96_#+d-UNfMqh!*i3;q3mLRo7gx7#(U-7}*}F2Le%5NJ-L>
68358 zliohP85x3m_yzFe7w{3JhFt6T1ej4-OQXc<8=0^x7Zu4$*f}ty{{5N`<<ky7+5mXC
68359 zbHD;!fGga0teL7;vSkTF1+VPYO?kO-Ej1TudIO?*<o#Dfv9;2^Xk~F?a>5K5k{|^2
68361 zhh&kR<!0gbrEF^&bNVLW`;emFV&w=LP{Jj}6I`JF)hdlM;p59k-v<e!w~R{NB}{d3
68363 zay&i}$J-IUHa=SRuMjvk(_Vja)wXM3O~Lbc#LAN#gWbJg_(bdmcwvVv97FKyme3*G
68368 z$DW)TO8TgThbjc~;Y2i?uU$D752jew5W*Yv19_Fg>*RQ-mJ|im2uV3vfoJ+>;71E@
68370 zxltq<Mh#<g#ysf->J0Z}LW+;4$Y|;8Y;ySYV)L2jUKqM?Xvmb$ZU*>hh^DVbPflEU
68373 zU<03s&l_XY!Bp5-PsS@OR~jm@!C5mf``(9ZbNs}cAh_@ol?%<ewIS`&v&~xFAB_Eu
68377 zvd+#Q({Uvng2OTh3a7ZJ4(FlJ;Oy#G$8(wVu&N$tKA;L|A-fo#oJt&s#<4Uhd&(n2
68380 zgGlrTM2%wMcl{Fht{+B!4RFaFVl|oqm>`R0ZQge(zjp^F-KG@QV%p=f6wUE|T#1C6
68381 zA~1--5fnWEngwf`2?PXfenArjF9E!@cxJM6WW2K8@~Mm_T8on$I-qg%1thhvU7SKw
68382 zcwZoHz%ZtrRx<W#a$}kCOgR#d#)D(USd1-%6Qdcp6ge8)IF<;+lzAf^&dTykoKt=N
68383 zY*p{A1ICZHk*@>4=EhCT68J9W5eW7718U*8-TcPN0iw9u96k=aR-gnd$g!Uzy3Zlj
68385 z#<*ZYWc0Xvs6s0h)>9b|m$ImrSG<gw4F|X*e$m$5-^7NI?;&wyuERuhXmGEA6|UGC
68386 z8g@hjOGK`_JxF1V5&Hf<+y-L7Hg0AO6DAp9cXUS(&|Sj}@`fcU(El2vsb)HN?(9aG
68391 zO3!mxO`&E=(UKBPdSZtX@iC)w^copbHZZK6Da$&)e$>u|fFG-90G#FL2O7m7`!|ZQ
68392 z`ki$9q3n3bit}~5#h^H81^WnON4J=8C%fYz@ReZmJ05kQp|BN-rbq$S@3T=<bUz6O
68394 zcNpEy#rW^CkUOY~d_U^TRT3?`;<)e700Vjh=|Fv+C8`RBcS_Ns5;r`o5?K+ru#RG-
68397 z)lf(Ya;X$J%Xuv%{WDGWpb2K(^B2)iBdXo0Kmv*|0*6Sg_4!E{ieDeZ28Mcn-U}I+
68398 zh=nxH?-q~t^(KPy70%M&u&fm_w5MVeB#lCWW{*u3TPx`ri_hM8uIU+n_)Mg-9xG3z
68399 zM&pKzaU;u_S~1K92>;bjp7>O_ofD*?Wmi^V29T=-<j-tr<d31G)xuuJiPf<6EAIa4
68401 zuE%T){EmnFvG2)vSl1LGz(65aKnvboLe8B>X`#w!C^&WtJl!MuR3&Qa-k?^DL<;wM
68403 zO<h@<n~8?iL)sy$b|c#xcj-n5QK!#EyDuHs|A1r5_G6;69EL9PbZ&LrFRB6)V!hy?
68407 zoTjOYLd_PTE&<XdQ4y7R8b!;ojdMg;Ix-6MNR*Z9hPBr3-2P*<4RmlEdDfDOUs8bb
68408 z3xl8dsxvc+v#W?;qR+VwoYhDT4h^vXXlL^J9xyH3vF*6PM4vNXz~&eU_D%-ea;5tK
68410 z7KD@twdV#7jGvO?+GrP14oM(iu?58)JHoNAt|Oc+A9mU`z~y+-HEg=7qPXW{PB%E9
68419 zxoFF;-D0l-S3Xc#X@MVLX{8P`1sDvT!|>QP()Xe***HJrB{7JFawJ<9r{JE)Nnb8Q
68420 zB$Lf}EFI#cWRt|PL~=Akaw7O?<9B1=$J1y6$gbyY*(JbO25JSg$pM)abR!-x;=kkd
68421 zh-Lah?s*s?Fc|K*;c)xC-H?A~@O2Wk;~|6-54i~AA(nU&dg2KRC(1&!cCp}l3a6%*
68422 zOB-Be1ehjrQincTJj2kEmLB4`upHEaJXM{`gydi#l?*DeO54wR?K}Pb+kc2&M1BJa
68423 zBS-D9i00-hT=S#5f!M&3yH9mPIdI{?vlLjyOCw=4?4~Q6fNF2qPO?JKG}XK`p@mhR
68424 z<FlcVF7e^1mf$x8#!QW@3Stn*Qc(z3VoGnVUq^G`%uaP<Rd>H++Z$%Q(6^-e1K@kD
68428 z-A1N66T?MA^N_H>6vi8I0=u!t7TlRT`J7V#Juo@r&IQo+321Kcb#V61&SL0zE=X1k
68429 zFXIQ#Md|`N@!-L+ciyoy+H9ySJRZvDNj2CvedkvvOBH927py%_b;gHH%|pD(Ef(^x
68432 zf}V`e8}NrxVU{n-@m!b^6hY(tvKaL@yk1e%_;ga^bIES4Vg`L0$iri>5)Mc2K6Iri
68433 zB2N)eB6fQa?lQc=dVvF0Xd6)zCxR-lyJx^Jb=hY&Mr-v<s<>VuS<QPGLq~=irRc)2
68435 zmNU+Q-;+o(l}YAQnhv{;mgBPa>oPmcZ>4-2dDa&R(SBA*s~m5Jl!)Z>%8e5NJ`zGv
68436 zJ;VF6DT0zUK4$ot;Ivg|{`<hN`4IYLAj7_I+e`k070-x-RXd)Mu;Ll^ul?~1svFNh
68437 zcLyop2N?)#6HZe%+$e+<(b(f*NWK!{_5s-OCK#+hcSSaafAHhoi#-tG$ifgu)DC$8
68438 z-U70?8{x38wxe`=b6#PPBil!4D$B~}KKH@l2(U(ZR!D`S*^p1swImlUT@T3RrW%pG
68441 zP(DG>zzw8)J}IjB0u-(arE9rTqH=QX><7or9y^8pZ|{C06=<9T+vPYe<#|CkzIgEB
68442 zR4q0-L#KcGos$nYI~_BTzkI=L#{7bhe6F@(2<&;=HUay`K7x5+C%K#KUDr6nsZL<i
68443 zNi^Bpw1aqT?$E1NGzaW){D)dUd1km8H()W5Qpi-)>({=OdjM<(ReXt&=)56k<5o4%
68444 zV)ngfPN!*acimqA3owzNel_vkur-Hld%x(egM6`vmGx%c?d*8C<K=xKx)D7nixwSB
68446 z4Jpm|R37FoYSGzwAf<6glRv$E3tI&~fr0$O8xr%5TXNOn^TBBL4$_$WJhL}_;B-4+
68448 zFFZ;3Vep$}#IS!lmHfxbGj0s@4m|VV+b16w20SCj26(2B?D9-ToUZK0Gcce35_%2j
68449 zpViKi4x?IYsv_X{DvctfWyX-0m6D_E<x?a|K~IFd0Jw*=x|+fi25e{I^FVp-aSs$0
68451 zA`s;M<J7NX<ccVa_ymvW571ITa{a6qkbjTF-x!~;>tMyvc)w5B-tA#I2sS+$osQ2p
68452 z!nz``d^Q-=l|X$v%18XrH_WF}LxL%Ysu0fr?@(b9s?x=lfLr^QKn4Rp=FSU)BG#dG
68456 z*Oz2YW9We4@%mSCLx+briPQK*M)7)lxsjldk^J5+p5a+EjU=ER^t~~;-#1<l0+Fu*
68457 zk?-Fb%6Cwvd&!tWtSIH{fwT}5lvFkh<7Lr8LJ)MdI1lHhWTcYJF^no?;;cWIUK~fd
68460 z??doi-w3PJ#&^D#@uFS^z0vy&#LMje5s(!+2u%?b{Rl#kB=PX;`<x;0ISa4pa{%G3
68461 z)bYTlS))4^d!GZG!Y5zv2W{K`>BM0#oI=jbB;(-_;6G8|9nei3t+RW8ZfyPD?l;=(
68464 zG)ncCqglX)!FUZ-;#8xg$^|thvjXE6%uq~`<oTM!S3P8Pa*PiMyw9r&P|~i#6q^&X
68467 zxv<(1N1q~{{3bDw-$W5OGz=IZ*0}jTRpBB>(%J6%b~P8V44sxa4iv^%m{04#VW!mM
68470 zAM;2vl|Ns;v{72_bZfOx9DkEF_k_RexhGRtv%j~n-AS-mRY(jql5jx`sY+sF2?83*
68473 z0c-3-DoVodCSV%@iRXcN42$fCH%ESU{<(FJG+R0M(YLjmMV9N<n!jP+tp)e|?%Lsf
68474 zz8m`gBtDMBy8ID;E&SmWG-`e9+FcXwfNx9#+|lozDi4F3Y=D)~7zwN~pJtesme(;K
68479 ze0u4bDdS+Vcx-K4;B=N?E2-R>c6xbsm<bs3lV|?rlFco>b=SbULw8<x4Xy39ZgRhM
68484 zL7J;sYUe@a;HCR6=N|lY3te--c85MOd1P!z4{belu`w?ctvcaoUMwFQLArbY6nPG5
68487 zq<fXK4ra`$m?P_bJ<kSiGKG0DE`WJ`6ix&pYG9_qG#6H;vS{0j1vnsyT9-?*;v;cj
68489 z%yWMTk&zW7)rrrvq7gqiIMQ8JjI^?%uHZI$6yMRS4IP~F?idsUeRG`M*;C%}?+CP-
68491 zv{qX`{nGabCc?LyvT6R^<`YN5`e#1K#+-@p+oi#Y@Gu``oh31cD99p`yE&X-_wNt{
68492 zF4>~Ch*{;>UBGOY9C+`H@qsgTgtgVx=Km6CB|Fz_&9f}n9pNMRm9g!s-?oq3OA)w_
68494 zW~1O6nwoJqVe`Js%FGbMne!8oL&py4yx!ga{lu@r-YH=JC6(EK|B5WnDzm-)w+D7V
68496 zgbZ7|fBAXWO#DzMy-_RzQQrce!R@P)|7q{tmfJr$h&dlh|1ZOw*LGvhU2(XFM4#a4
68498 z-4mHUHWiSAGLZAQ9AWjb^x^9-ebZ6{!S&-C;qg<+nd=4ZD?e&0g6v}l7cRzvqlX?l
68499 zTHc&7`Zb{Kv;HmcS%HuEA|H6I{V;Vz-^(fM`T&;CS{|VZh|`=`NH2!b49~<bLa()&
68500 zQw~qQ@WUVX$Pb=4_V$wtiBnrhw-(L-ek+_Q9eC}2Yu`-iuHV{M5`d+X%~+`_0|m6G
68501 z5FUb70`ZAS*r%y-V7vJF557Rl_n-K&|1k3C?1IzZ?Y-D1_U+4MPe0qi0u&XX8Jt&9
68502 zG@VwwIH5=$iKdx4%ktjVzkXuzqldiN)9?9rOR?ElM6>q{>r<b`M-UT!kJ$G;CThCY
68504 z`tUjo8`PFYTFHqAONzm%nLx4<>*hb-f}cT>;2gx)cn)?}AMa%*-5KuvE9dYmE7#xt
68505 z&IgR)3Q9PxD+L@xk1r-?9)IRzn$Iu9OA+JR<}WQjw+5pL4}av;m>wSsRc4D8CLi_#
68507 z`r(7nQ9bj-!FDv+ipJ~Fm|)wHx4(*9!62=)jvTid^|>nnbm*R7|0>*n?pV(DC7K3G
68509 zzxLid&c*4g6CH>!Kw-72dI)^MVl1#a#*DUM9^riQk3VFEpN!hD@s?liJlVCa(f8p`
68510 zA~|SV8<vEY?$WkSB_cXlX%5ZpVOzWI`#$zG34{-Uvq2d+?}S{+?Q|X@OU2T?)2$On
68511 zD%99-K3&>c$PYLRHg5e9{4&_j7Tgc43y|)nHV1}ba!3yDX`pM!owox;>Y)e$cH_ly
68512 ze@K!UmQ;!++@w(nQvO^A3fCVJrYhA(7Fx%TR_L+c`fz!(;|l)V%8(O_`z-!WAaB6g
68514 zZZ~|SmOfs3Y-RM+;Q}@OThB~hn}%B%jbH847e8n5+3^mOw)jkB@3M3{5z~V`M(e*4
68517 zcN?JWy&oW*$KLsti}6B5#xdZ~!N3;-_XL@(QrC#+<+n{=n*~x@jOWzY?ABQMVq@&&
68518 zMuD`BsRLz0c_vn0EC*oh>o0EK0y?gWWRSPQETVNz*1qgoDr?TDQxpc*kN3(a;;-u*
68519 z`w!BoZgGQ^RySE|-$MWW0vze{$vI8V8DU@;lT1*TgTMeYV5D!X?TehmBq?qPL)*)<
68524 z*?3B=%#O`eTyZ{s|J0~i7KhjKsgkaxMN?MXv-<z#zF@xd2<`(sxNtKiu-3j{%24dr
68530 zD}b;5BiswtwSl~Q3o~2v?Pf3snz83Q0{gu~+3y|Z-tXA=&f3TY)}~{>NZpxa*@In3
68533 zXX6o!78!R-&<c}>njE23i-iJ9{~Aw=nWU0Ts>15@Z+vSQZfpGO&rI3oSiK}qPRLS9
68535 zZK^=$4vfpGfYktig5j8hr*3@#3NJN;5fn`@^W&&t75~!=**;pG-Qd+ofO2e~p_YmZ
68538 z><@_V724X(H%_jC-b1j^6#9@87M^1{D=bX%E2G<2Z@u5Phe;YE{HiQW<U60d#_OC1
68540 z?BvtuxTqB)JbeG`QX(5og{#kAs5qWZ*Pym~cw%3}SRk`n$h*GW2w)WImMvrvjK-cq
68541 zXq0}+MI-`#fK@3@F_6bC1}fe0$!<xI$1Vx#sD(U&)Q0k{LJRtM>AaCKeBHtz8?y(2
68542 z>;0X^Eo5Ul1(?_9n_8?whfgm?heTaSFr#mJbj--cE5l;(k?~k3BC&ilQYoTq#gl85
68543 zqTaq|!plSdFPohX28gwHtQe8>+VW^1GsH{maHXmIH#J?5Wo`X1Ft-uh!uk>DcaaEK
68544 zWfQq_lZQ<Oy0a@W1o)W*grftMNbZ4F-|_NJ<RZi^)`rZCByfJ3f)Ju!$C_5X?zAHA
68548 z=So)cA-x>&1c8q)Dt<OzR=JShAL8VwT&pR8ENs{n$fYxNl1oL&a#Rol>PUehNII_0
68550 zm`?xGo#LGyBwP-mT^}u!OaeVzOct|7Oos@18{pd4$)?^LCQLgWD`8PMMY(<Xfs}_4
68557 zEoLklv}-ZbRxPIe>p%WlOc&#;NLKqX;O=_&Xg{X)YIxuwr+XczcJ(5QFdCyUF(c&D
68559 zi7E1dm4&&8E+0{j?912vz_I>Rpf+GD?Fy-3XLuV$(8t&Jyz<p9!ps9xrCvYp7bf!~
68563 zL~rDqPfd;c&BazCqNawjZ;{h{ZCp2noJIl5K#3U}e;qajR7@A;#Z^5OCL?e1l-u=y
68565 zp4HA0`@$^Tpaf6{ri-<}cXQ5wJnRosd`AE~w_qs!#`Z6j%Dzy@&!Zlov;d!ooIIM3
68566 zk1k$V41_rk+0Q~yGIpaHKEaA=5G+i~PgaLJ(B>xOh-Gu1e(BQ@SxS#L^|APK!L)Db
68568 zJNwJ;S**WTllh&+`g=dKt61MkyBLU(&SWzNy@yGz_II2&-ReomZo`LDDL&3f48!^a
68569 zn#wA<u#^ahjHGMHV^EchG#VkF&+8$|WJ7NxIUj2zD&sa*<6GD}$Qi&-$B}Pzm?M^L
68570 z(O|KEtf3Q4-8i_qtRB~n@6YKl4vJgOxm(J-vq9h9auUAsr-Db$&bHb%my=$L%kTLM
68572 z82n{E!0@@z)_h}PmR!1;oSiKm&YA}@>D9FDTS5eyYXuBFdjaO2oET0itb=nsa(e-L
68576 z&BS~rnT-Ig^rPpyF(qwkRFaaK9aFMr&-^wbBeTflP1s=awWPRJC88^{>MXu@^aJg>
68578 zVBU15*c{UVf#4jQv#lL-Z0tD}e@8|DJq|+KXU(#GhWyywq;XXR#)$x>4yp%xw$F|*
68579 zk=cjnu#*DVPC7YtHa*q@RJ$m8)a)!^yS^)Z_11GR2b>wn0~f-Fp}d|r6u$7jb%-E?
68582 zi93eey2HNqV7MK&fP00}FM>O4&b3+t0`lsuEtv9~nF|4vO$fy{a-V${)c^gIq+PTC
68585 ztvQZ^*VIcwC-ar>X`x8@(dtlBqW}%#8~R0?9WkDDsHg&dbP*&@md;q87Fhfq8{Fss
68586 zTLE7}FZ1QAB2$dlR%Im;=0BdjXX?<p%a=gE^eA~^rha-c-^=Fl#bI4>ZKrRbA4amU
68587 z?r(RDYFFjo?if{nIYVN1jB2mCzjQJdwn9}|G)wLD^Q=hK&QO)>-kDd5u}oB;gF)bh
68589 zmkP}5$Q>y1{Or_(ysoSheNt?9=AgZg@^nSm?i42)09=!utJ~Vs!oULU`4uiTo-F~t
68590 zS_}%!T<-I4aUrmmr$;W>9J4DEiYIJ#8Bmumf5zjPKV7O#T`Jx)mOE&gFWhT!N;R23
68591 z->jZ2Ku)>3zDL5;#`OFV`oqAueca^}*uV<L4#0sU2mub5AOb{>Phfo|EWU?5OLsg1
68592 z_+;m+1Yw!d)-#ATxQTU4>3qnbXuStua#=)kr(1Lxgcef#n~z7*5y&4Nzbtb;F_z*v
68594 zEK5<8!^&aX?<e=oHVsCz`askDSn1udtft^G4@?L#)gN@zO@~h2`YLoO)?+w{dl-_5
68595 z^OeNn$eZgNEOhaCLgyDpR>~o-hoN?$yNGcwY&k6^BY}jSa2iW*U47|`Rw#?>)ZY5(
68596 z{MMoTL1Uxyo-qgjX049XunHy|I{MV59Y`=(OEG~k<bA~Vf&M#%)H_4R#$!>I#8&rB
68598 zbo}0>{N;Pj8O;`o(y|yo6n5maRq-~{zMMC_J`YUT#R~HL1R6i{K>Hg0CZ7b|fZ7yi
68599 z8D1^`{e!UlVjTD~g124g7%i#94-5~juMHhO5IXtzoO=U-tUgsRwcz&5fk!OZ*8Nu|
68600 zPfrR7n=hfxdpr4yfG>~0c}JQ(u&LsIovLqnakirzQIFg)`RV+zJ(&LNvEm-M6QKA)
68601 zJe@r-E@xOb|2dpEc>0z9R}1Sv@y)e?2=H<W&sP)O!Yja!?NwNL<tP16j`hJ)CRB#V
68604 zOu>nTUfvV>!1<#C^9ubTcE5>*l{3ed-HC;fET4Yj$c}l1e{uU3_IdI{fCtx+Cpydl
68605 zJ9ljR1b=@pJ5_;&6ToX&SJ!`#^xPFM-KTH@a4Wh71?ME6kS#tX34SPf@YJo(Lx^6k
68606 z7G-hZq*`pc`tdniZhAxK7H2mDN+e*5O&7LDcs!BGV;vzC;o|{Ziuv`i^yWP;{Ru?#
68608 zb;F}21gC+%q%j&OO$s)5p-_rMZ@^SBfl$P*Sp43P+j+8GZ?af6oX^4f%3L$wOeJCw
68609 zNw9it04vS6d-lU%cG>N&F_2w$T5X7$knoSb>Cy3wn_Qk9QM|0oO1U~ZU)t^_mz`c4
68610 zZf<#fc_d&|(`;0ZwbKK+Wenn236*?{rKgWUUc`I6_&TAiHlu|@%3<~J{){$&qW-~x
68612 zQ5|H+=$J2i{w=G+*YLmbgvXD~NwFAE)3_96ZI1h8&F4?^m3ZRe&GR3)c({-|m_gSq
68613 zV2H(XovqPw2o|e4=-Jir`fO2P7%MLSTeokaUqru%=)mS`Aot(&Il20{mBfYNP1H)Y
68614 z4kYEf>3YL`g0ec8-~@?p_a4S!gEpMBQ})BvbdqH}u;rVM>a>L>GMj0;X>PA`E@lm}
68617 zsor9M!8@Y>k&WLu$m5#0uAQ;NL$ds6^o-yHc32o|@RF9LcIzjgtzTKlV+3wQ)2Co%
68619 zo#x!xc4ey+ET^>2(8*`7CB|LM8T$M96{G?z+I+{f=YeV{tO~|Z+lj&Lnw-&gB8F7Z
68620 ziVKwMTBmL%2B+xml=tptZ5lYU@k*Q+OY=-V<?~S}MgafLql>caCvug=nM^(tY!5}Z
68621 zr#go;QGBMl7+g7!37ZS!<*J9wHiiT8Y&|e@tT=O|RSbt`4Z3pcFRwh-7!Q`!=z;a5
68623 zn#-cdP$gT>)l<oMR2HpXM<#0ecGR%!r%tJUZ3+jnX|qc)F(gC+P@AT6@#>IRcx0k8
68624 zCNZR6co-ck0$p0r>sM!ZfeVL&^?V5E(zmY|;q*bEOVdMXKgnPHD$t~gtSy}&?0hV?
68625 zfc`oXwI-=vgcz+iI3L@rXASW2(X?UE0~0dZtwCA0e?r#IkO`$wq;#p7N*P&mL~rJ6
68629 zL_1g?4;n&VjaOJ-Z8|Eag|q)1Y&l($!IpD6rkIs97eH}F7n8u13RljYAbm7n$a5iq
68630 zJ^4>}-*(*dr_fI!X=JnGjY^`AK+s;lX&C*(&|NW}?w|3!hVP`2^uQ=Ai^oj|YL{)f
68631 z`Cl7C3>mt1VQ8JnM~51bx)h2owW6m>iE03oPcP*cRv-%(^K*EBkwnAOo=K^^fcg0o
68632 zD}{*!IJfWKehJH>zX8sz1kUZ=j!y)JN*1^=aDtxsh5;-`TE#rX<aj;312*jezhHay
68633 z-PTGU+H4R~QQ%9oC((+NUP1&mO9GGuT;g12b0d*jYbR$~iLh23xdMR|W4a;aG*3K5
68636 zk)@o#kko@yVu6Y_n<^>!akJ8dc*-cBWND6yFQqd<;lEm-%FzlNSWYjf$+772Y;m?W
68637 zKQ8)*fnY+VY&>2~ppj%cSjoiFhFfR#e}ik;Kws!^X_UrtsE5W-#EXOTR>67aDbxau
68640 zfdfF{M_ljwh|Was-6T#t`P$xY12>}3+9~F<281GOsv?Pk)w8mJHvEG_fh-_j+v(M*
68644 zMf}<Rwl*-S53zVJ*X#xY^Hn*Tj(n;4;kDJRqnr5_KS~DYbLUzq*xW=On||91^~9JS
68645 zX<7{h?EWUdPaa1^WEJK(maI5lk-4iH5LtpbF+C`)%B$pFS+VXs&Av?P&QSgC?8clx
68648 z{I-?PxAH@fcD1{$pMkldXc#8*e?a|A%hDiS4(!k8@6{V-ZXl80EuQ%zq~J*jrwBY*
68649 z;<!RYI`N(jyQdT&VRkiB8d8WIZ44l+B+*UdcPnRJ{(?<LVSHvJP}p7-#Zp*2{MZsi
68650 zmgut(;53)a4d-fkmy~@y5A2-c=YUTJY_Pbh`0w5ZGZ8aW+&zh}f@k}UFs%y^7t(?J
68651 zdpEU$>}yO^DPE|Hp$IU<&J<^(Xl^5ael@!SlZM3^(Ufpm6;Rypwq{aF0{5E-^B0nW
68654 zx}pl=k6!xEu-{6e5Q@)ijb3{9RwwPCwANCPRoHS0^2&TBlNFS$2OevtmL?3R#6Mj0
68656 zFWLX%t<S*xL$(%S3E*^5IJ-7q*vRF#4Ci)UoQ|!nG=N@Y2T~CDH{BQ)1Zu|^ZDsi5
68659 zu-b!F$}k9M^QhGv%;TX5jLROJH{bS2{6Pm7*RMiPzx+PfVIo-!4K3wX)}LL<Y!nJd
68662 zLuuu?KmPJH=&{Z&vW+vVg=-eN<f9L}x$Schhh%E%n~!Ezrv@PcwjRJ%(fg4staY*G
68663 zs7I|@m!KxuwJuSs*2VtyRoA+(|4?gP(y2r&9I^-S+1a(eS{FMUxc^{v3WfpG_cSC`
68664 z0In3AQWMn5p=jY=ui&fH!a><fu)-rS`iBn9g?zqr8Dox9U&U~2g=I+osvFz?ZSoHg
68665 z30Z@@yK3pH3UgQ3PDO^0f^bM)Q`T(W-OZYPasOADJOl5!#{0H6#iYOn-R5=&Pv3gl
68666 z>g_XAW(dFnUe->WnVjbL^uq}ls=wV2vE|7>ctXlcR%^Sc--Z!<48l6An>Ar;_8iQa
68667 z?S&%H554Qs-2MHHfowcRh<pIpfm_JQo9n}GAg&V{gX)&H)x~D)*(I>uD^2gwaUWgd
68668 z;yQmBLNg{{t3ZFKkD6-`*ZHu_a2QEZgg@RTrqwFYp(WW5?Su_pAhh$(tju>n4%yfY
68669 zm#E*hpq(p0F2+-h14q{MqZ<}od8=ojOIDbQ?BP4bWH#d9J7GP;Jo$*lpWo;(%T_%@
68671 z?nKgo*tn1{-AN|*_mjZ?(mF#a7Kgdyf@GiI?>Sv29yoFN>B}2=czWwL;477TbbZP?
68672 zzN1fF>ML1*Z6_R?{twVmB#r#Y%|Kr*PQ)6k=|V#h{HZ-kaT3m8hW($jMrQ2s$lirG
68676 zlt=J$F)cTM^SkB5Vg?E<Ui$9?Fh4b`M;7aso=T->;zirjSvI?dw>}RH@4)&qj~=@e
68677 z({^J0ESgS{zk;a9c{qjb^hDfC+<~M)?c|9ghjWH@K6t*XdMyHVTb0mgDr-+JmL1y=
68680 zE+Fu1F_9Tcr?i*8QZ8*9t7!sPJ*8ol^y|e$`^w}8-cfw~Z1s`3<3h$qaD^1EjL%G}
68682 zqIL(o7>oK=N*8SmAWlh-gJbv&tBGxs0yZpWMiOUFovBRmBMy#X<l2(g%cFihAFJa-
68683 zgW%Gr-v*cd2DG}%Ic{@q;hD+hV|Mh<nN%=zel@_KTgqO#b~@ffaLexdRrGg}6jDJZ
68685 z3{M}3+f5JdsK@2-{qn!GVETdQ8#IpJ8;o*UvsBX?`LU0#$xBDKzE@stL||EN{vj<V
68687 zO``8b@;iKyP*CpoMeJYueG#<liy-^@BEU~^`~=kXMfP}jhc7btCg@xsck)GcJdV=#
68693 z`aSgTkRo!r<4tHPOQ06<qE3khup5x>i2JT97j<7DY@8Z~S@W-;-HKy&7dSWs7Hq$W
68694 z7Q1adyRMt*7Ug8SNo}{2dnGp!tIkcDLO$bbFDhwSP5bqUv+~4fdLn{)5=M-!ojp|v
68695 zHPK{hG{qQMp_IcFV3-CJ&s%w&kC1+EDwpz%K6IF+>0S@k?*J~&A|JddJ2K0%t>7p{
68697 z(TW#FQo7+|6h=|~oX0Bf&W2M-k&&u3-Iz-xM>F9{y5#lIlFy4lGpn8qvgSmxQgmce
68698 z3A+UBf+xOQiDD$--VOs!^d(5_1{@@Zp-)1H28zJT0dsggSYmPS=UkAYGyLoVv@Gq^
68700 zx!~jIa3nXCs)*rKOyx|O^JVpXrxhvJ6H<I0(t{9lnMf_6H-}AMCMhR;F^^PD=y8rw
68701 zcwb)jX6r$7Y9uz?jB-Jxo7=|Tk3WvokPgJK#Vib4a4!to<ajy>2at5Top!5721X$5
68702 zg0azqI5sR`4$G~ksEzx4B#Pmr*Xz|q*~fWsRV*)cGWiV9Z~0GO8C{b-4F6JPBQ-gn
68704 zzfw^6P-b-6-Rn{O$B|)V8Yy(LQ4HSawa{Lhofu0cdVMQ<Mqi)5xf`?x&TiLcwQMjx
68705 z$&_OMAA4^CB*}T52j-uZRe9f6WoA`nU0L^iboJfU$6P%<m;*ByH0~LII4OV!NP>_=
68707 zmDOE67=WjPL?8y}uB@8+-~aCSz4w>|bSUvyVh*<FRf^`Q>pr-7*I|Q``2S5iINjYZ
68708 zI^L-@c-BOBBkAV#(+$3)U0dG1JgmdRdWp`L{>x*}4_2+FnclyUH_Dn-C^^N<e`g&_
68709 zM$o;&$~c@~kFS77u@3Tvb5JmorWAt*Jn*~E-XBRvVaT*WUg%(*w4<xjNu3jfB0g&2
68710 zzTOI!zM2z8MP*wY2F>E$$h~xz9rv0NyL?c~c8sLlJ=-yN&#sHW*r+lq+t%fWTT+a6
68715 zr<PP7R+ZYTdWXHIZRtl#`$neVM-Ep`e_J*WofaeA;_2bp!gGJQl%bho9R&@tLy>fU
68719 z)1s;VhxYyF8pYhw8@A=PD9Un%w_SqL@DF~VmUQ>eZE0S`B$aaRLq@Tt%J%uIvA}nO
68720 zv;i9S2`q=*3*${<N*FVe7YlcHhb1!SNUAIPs^2~CrqP@*j-70sKYG}sUKp8>Br!=V
68722 zEEcAs^BDB2q3S>v6-VC^h8oEA3Yj@b-c=_L!9WE@9r5YIFz}dv_He8NtPF#)G;}sm
68723 zOok#dDtgAbh-}duG)WR{s>t|9wKJ$d#G1UB6JSV2DRdorZ|Kx2x<o0<4QPsHr9v~7
68726 zK6W|}^0&uMPr)4O;zQ$NYEVdy-0bydrqJoprOJcD{fAA``J3$vB|d~sFPq1p(}!P}
68727 zLZ|aGMS=9VE%6|h8a4|w>$Dy?j58$a4GN&s-)QIdA>+r-{fL<`zIf8PyIYw>=iY8}
68728 z(yN_&V$)W!Q{x?E(_j=G!|(L$%S&IjU5lQ5XE|cn2Gzi@J(-#_Y}t|NPpb1x8#Opr
68730 zY9$AW(5@UE*XI_|xIQI1t&glP4<y#^J#-M8f~L{5zDcjZPl9(~rLXDiixO5URFd<v
68732 zI4_kdCc-|@-+_PpF!;|{23ouk_70@?V>7)^BtU`y{>a?~9wZ})NnUX}qqlnUW7v@i
68734 z<4a!xZy6u9Q+mErduX}t>w$_%4NZn)&7$?}e;v3XClu58p!)Zc2j?`-8a#f6;-zX;
68735 zfQ(>0_$}JpmNvmYw@3UwqV-Q}>TBE&cEUopxnz?6Cjuva=ewWttTGvc;^(@0ERM$#
68737 z%#$9)y-a_-X#Y{lHZ*vEFi{#FU}*x-YQ>J?P6fhWezf!Q_w@6t8)bXwjMlSBb)eYp
68738 zxnBCg#&!y4cegA3yzQF*4?Iz-<Lc#RMysld$;FG*+D1Wl36350+={K~;>RX<z1W|F
68741 z5-Zyo=&ZmP8veeIc#eB+e{6W=qzbLv-s#^p3NSQr_OHc4KDdHk#8%Msk7^PpVk`_u
68743 z5zoKlFP@gFme;-e+NO{-Go<JV#r5qTtJBH4TH#|nN1N>jE>(7SE4>%q4asonG@F*W
68744 z<<kDeOOO_M1&B;7=Qd(-!Ikn1n-V$G+gWnzCEfDWsa&MNe}dlr*KiJ4F`v!A<HylD
68745 z`h;J1nnyPt9R(K7m_Vq|q|9r3A2_vsbKmT3*i<q}a=|>Xh9Twh8tbKV#gw-F^55ba
68751 zqa;I6|BEhno9cCZs@HwR9(MlZ3Q1S#-ks}Se`MVr+AG^NYoJ)p*^#-qp^h^kZuaim
68752 z-~Z71Wt`>Ng1|`K(=Dy0sy6S@!yV10p=OV(l{2fW_uGY#_OTN9DaezPIq<F@iQASQ
68754 zGbJ<y-mgki3f&w!NsXeY{I-=Gme2SX;oN;yrfIIwjB(ffEC|n%c3YAh*@d<h-NF08
68755 zzk|AQ4f{YqkFSkQZMOh68n)KjtEi{W)cySxP**ZhVVaJ{H>U-;#Jp9VpCe#EIaAeN
68756 z`+%fsVw~o5k|7@bu`AU=HJ@)m(^}rQC^9ZE-j&)l@C(SemebI<QWBIvHgi8K>0+EC
68759 z9*wg#YTYYds9a)9Eia2~J?GYO-^|i%N@5kLMK)V*%TrU>M3>^90{<Lq+<~2SzfyJ<
68760 zT9m-fHb5h>K$#sMxj79geY!mN;f|S9<-wMoFfEE>XM;DJuGp@dy1f1YoEF(kw`J&t
68761 zzTJ*<xeSTMZ)%)Be$%K`4Mk`-W;FOd@GO+4JGHa!SHsTwy2kdI2g($ARL{)v$;U12
68763 zBQ-J*Wnz#nw_+anBh16P*ckhcF{47=UI&Rd9s)YPIzi^fTDzIc8k#IZN=$pYqm&4J
68764 z_W86Na@S8t!RnTws>LgJ=Pl@-UVl1U0BB@~HK;9L$sIIycTay8*y-#KY%5uSVQ0E)
68765 zz_=4-Vwn+Oc-9aMhLXwW{<2$8gK0$tiKOt9EGK_h8Lsw3Dz)_ZsW|1&b1+rTelWlg
68766 zfve!hp^s9-{&oPkvgdXVK??+kr^q9&8`Ll{KumWCq3uF`&U*SFD#--TkO6=w@+2T)
68767 zhv>gk=)~dJ%4PwUtz~PaV#+~H@(JJjiGZpWEF4M{1U#~C2w|#RiqUIpUZ-CmST@6_
68768 zYD?!<esvjj#xEgogr3cu+pe8zpI%Y;E)<$dng6F~-%v4=E6*@9SHJ^U1^c;x8lnX7
68769 zm`&pVFM>FT9XMmv{|!{g!7pe)fb)kF(go=$fHV^-R)F}^3%y=n{Qv?=TimztQ1qq`
68770 zjw{EXNd%P-_`k#<MiB9v2yt^IkVmA-HAP^9)yVS@8>GCa{uVNEv!3y?fafwxUb3o6
68773 z7Aqb-P4xNk;exeP2znRc6V$xAalg|H2Pq&%5!+BFKlq_9`kb;NN{$U;S!psv0dfo1
68774 zPQ<{t`Kz<>3Bhi6unlftMeLsj4kT+*@al7rEpW&uq6v8<_<;&}g#CK)2->(Ti+<l!
68775 z5fr05f>@-mkU<0-^#HAP6weXk#y#y+KWC>Y88JuB>YW~;se@)APj?V!Bx??#@UAJh
68776 zx=M&22Hy=ni=mxn&%Q!M_`-$Po4`ThDVoG_)We4#UF%m|_{8ybez_bLE-8b5O?F$=
68779 z!-fk|ish0z*Pq}^cw*rNLjN9}@8P@DvW51`23M%(p?vdJ+A74q3!QIN&4$9Q*0M2;
68780 zg~A<seA-_KegquAzxU}eo1~%QF8D>8ug<{=M>oHm#F%~`50v5hw=YR0JIb0IWKAoj
68781 z-t#@E_uQ-H-GDc(noYoinY_5%M(6rxx4ww|3m89m*r(3_jDmDL2QSWm8VKb5n{(!V
68782 zL%`o01`nFiGsm!-M10z<W&}=W<YnR}ltS@BbP-{cV9;7V9ljQLn@C0_fgzDEk(g|Y
68783 zU7*1ugb?s-d9_04)98NndpiF8#(5GEB30m-Qi*P7GqjwaT``C$NP+XD;mheyLR$PZ
68785 zs3`Gl{;uU>E;U-A+p?H$2LgxGZZ8&#DdLOSBC^rN;xylce;)iFXg}mwl%X+pprS1?
68786 zc$}CC-Ap@95#3RTx3K7eMZ=1U`AkYzc~nQJf+{(el)bI!`N`_tAN<5eSEOqCsQ5Xy
68787 zmX_c3y&p%J*Y#_|QY|8aDwj1`?y1%FNq!pt9q^z1`Fqbzr)q}s7j?csj5y-X78X5l
68791 z(R6`--BThYB2++9=*_s>&&HJ=ee#ilWg=I!HIx;CWzt+mV^n(g`#%ca6&M#7-0&%*
68792 z*fh18zXWrqm)}aO+yJ0|x(D^Y$rh}ZmnjsdvELQ&eF4uakmpl~=h=|w-Gw~=^sDjw
68793 z(~EiDE4XPx6ZoL9fjmlulb9aT!9RTMO)tE$td>(Von&N5sGC!EA;0qjANS8~H&@-N
68795 zb_H6HIstt_bLI=)&VVFvg4K1omXwQ@kO+k{M@dL^x@D%&6@(Uis-8AWYA#Jj#M3pC
68797 z{x^-rI0T!iinfUaELf_FhJa~uy}=6~3f8K^Pvv@jLGC$-t4_7gj9{#TzL4W3o&P=S
68798 zM>~0MLgzPw=b?voX1pgugXb{tOP8UH;ZWZb2QzyW51T+HkoTJ?Zo3k23XIk`RK-g~
68800 z80yF_wlm%eX0s&%_*-bWkVQl6g8u8zlEGt_eZ|);cboN$gX(Tb?NJeENqOOlTfa$?
68801 zOn~TIw)E-sO;Cegq}Lhvi*AiFEmP*{)5)qV0mnCOqZUsu9aO4#W;KXGq1NNu@fZL?
68802 zrK-5u49NRd&drr3ck>hA#o%rPcsEJX_rLD^Zcs5qkr+C9H%tCx#gnZT%EqIsaSqNM
68804 zc}jRusQF@&uAK8BD<?j6w1wAqB!}3rRI12FJ>-BXgF7rtjMZF1bNa9B@%MdvaLTFH
68806 zl^D104)&x}*IW(eHvKmI<Bj0QVBq@jn9HOE$dE+Dp*ArDs16n-`cqCKZAalNLEF)>
68810 z@>q4So>f^N+S3pR`7>88F{YYVL^de+Qnt%6a#rG0b1PM-Xmp&L&Rl7MFF|dO&Tqi;
68811 z(_i`Xx3E^RQkgsdt5m)b0Z=|3vhVnf?Ogln-D5u$&lhEHZKunqRC=7}iDLc_cdzXr
68813 zeJ67<%bEgS%h|-<E@W9R1zFY^<T_sKoU2sd_R*DMpW>D5TX#a1HOfx9R4cKU-+eCB
68816 zt)b<QV#Z;mtdx+M%yLp)-bjUYfp3O0{?)DD!(F@pE&M}cwt)0bB4ow%m&=Ml+>JWD
68817 z;xjXeXt1=92-EtzuWU%Z`pDg!m#SAUZ%>Zzt#1z$Z)=rLNIan`|7-sAR+EwnBC~sQ
68819 z+@1h~_VS6^WujiuzZ^6ZNyonXYH-y|&P3Wp&`G;oPNJJOp1IpKa895ZDwQgqy>vOa
68821 zbqz#-va>2hG6;xJr2#wnDccVtC+!3POT<Cq*kj{T*me-0laD<;K`En3ydGe45VXyo
68822 z;0l9Cid;Csb=rau8BrBZZLK`Il+gu=>DO7-<gz(F)q31ED??XPjOeh|;;PJ&JAk2T
68824 z{&U!or;x(Wqo)9lys^ns0Eid-N2gI{arO}EBlWv#XP=muB)ksCX4XXwvu-=vMy3D;
68825 zn;}rs40jg>`Drr*FHBHxqu!)P$>&MKc)L~*1dGY#mNH5*H&pgtKz-JG*IKQ|(reE*
68826 zn_jkZS4+>Zq{zXu6WRPqA<-Obm-kDycmG3I9LN6QoSRL_c4d$(@~8qo;mcq0d#C?R
68827 zz;0~HM{p-)pC@NOeWUYZAs6)hh&*%;%b*<P$J?+Ya;Ic7yLwma;H+apZXDEDHVL_r
68828 zOSRtMnAJ`}Q}p{U?o~NYriZ6aI}MqkqRiN-p3_6@|0=FR`5s`K*xB)^jWwvtTm}Wm
68830 zC-acQQY)DD0O(r0--G{;7H8sO(yE*`Gl{{#19ghKHojOIE$uxjchc#eR)H~_nzs5$
68832 zm8qzsHW%{JOP~U2@NdumjEZ>4@wvwgd1?BS&r9m7@sfQ<yoB%p-lSp5e>Uu{n7(7e
68834 zvkmvcI!QD14p8eJ@pIZ(ku8(Sn)*~e4}c44`nf>-xR8p5979Bn{P>M8p%Z#S37w~B
68835 zR7B_LIe~4-rfIag-PMf7OI)wUnI@uV`wg~P?G_bAWtuIcDDse=rTm`jN{F6H-HRg`
68838 zp2-#}nMOzHJhN#vm83Ixq+vA_9(?}H#fvq&alU}IwIZc;`n28P?ka5T+J$uf;Pi@E
68840 z-HC9_Ow^rNT0o|dFyJVakaN*^wCCvQwlq3C=N77&W=E+%vtu<?&SdX;wr?un*H2%9
68842 z5oEa-Wce^=G-gv4<_Ekw(H9nusP-_=XdGP=(u$S+K5|{p#3p?Lep^%jMtfD;I<=`%
68843 z2{p-?!t&{JuBpuJ2<hRpAk&Q8%uBI^Aac+-nCuC`Z+-sOFX8V1f9`j29*obe`2un0
68844 z_lFROOM}*Wdp+0(2ss@3+fz*DW^B>bg;-2oGkr*zI)8to=FqGR*4><nuJ8JO&MP4{
68845 zZ#^^al~T#`nK)rMg7SZzxp=8=m(SHSmrZW#DQW%8xW-jR^7@`rvLTx<OO>W6FEcWw
68847 z=L0WgRvyS90|Pz*`P_3$=js8ULvxesNhPkbq-^b4Q$9Ck+dwwwUsWq**)BFi8U?wL
68848 zPlJB~x$^pFT}wjQ{wa%3@g4KHX(#%^BILBL`NO0<;KidLo~3}xW9amH21da?lh-nJ
68849 zwf)Sa`Q-lPJ(<EeS!YNwbNE26id%zB?cukf@pyW_0ccT$(U_Y{k`%#cA`$0H7fOS}
68851 zQVHF2>y1$Ft4X`~V1WlW;VqZb-hMq$`hgKdm%On%5eHxEcbD{EgIBCrg;sdQfiA;e
68852 zfY-E!D*^PIsR0Ua1DZnc9`r*j_#s60G-2qIz!St<umncY3F;|~W^nqxcnrr`zyO>H
68853 z3Ub^Woc!3ESTKDTw&+c0F6$7zDURMWK~7En#yEO=oPHYK1p{KtQ%By6g1z-)Z)TyJ
68859 zmM@^PNpWde!zn>#7zLVNf>h-M4E4D3LAAM~dSRaZU7&|8;cNh{WJ*x>>J!<6Kg8-^
68864 zmFu4B#zlo;q-GKMy8=f*>F0#4%Xb(0BYiT%^UdHKHo{Y(%oU-`RVOkBe~4A1GS|iu
68866 zc^l#TCcFt~mIf^3QN*I}ihK;_e+uGJEEfF`Bzn6Tn)v)Cj3A-Jyyb+?!btd0<n2BR
68868 z)2IZ_Y+mV@2+qwsl{7=$vY-q?ix)!%uWT|3#aBWZG|=o**5sXDIQ}%0K!Su4=z3&A
68872 zNgh5CX9$9!6M$A4NgXmV!EunzaWY=-r3I&+Pm7W;>CgRT@EzC~*F!(H4&}Ntk!$!v
68874 zRc5ZNkMkUZF@L1LKGG^0h;@JF%N}=TL&+}l+WkMVSKM-(wkAkC6mP{}IoLuDt)L2`
68875 zp5atUEJKgBwc_XoO;JgkXzf%k{J6<*HCN85TGNzihDBa2JT8|MOjiiKT2fQ-R7uVj
68877 zI0P^@Hw4fR%%L-ql!ZyfbT)QrhI0#ZmiqCbfJ)I()~c0jE$)qH8Iz^rnohEDC0<JI
68878 zo!>P<>U{g#Kc*#ULTT|-p{{UgRmlm202rZBB1kb#Kt(_<4dmw7B!xs~(%XC=cn({i
68880 zAGw<9=zbfxt*tvUj7?E8HzBboI91U8(2Uhw7Ht-Fgc~k%|Bw29W@SrnB~eFsD93R!
68882 z>36f48Njg|LTRBDo>T-U?YU%d+-YugVO`J|t!kP(?v=Y0P^X2vyIVrqPHD;F{u{4f
68883 zH7red6AZ~ys4Q5f)XgO-+ZsbZMA6S)%-P-bttyCTws5y%7Fo0BR<|ToFZa^|$1^Ig
68885 za;PL#+AlgLqq0zf!g!O@c*$SDTe8st-n=3k4`0dkR8&P@I(6FC&AA1<g`6)tiagYp
68886 zv-)KJ?&IKR{e11g_}t(%)+J^c*lArN%)pY7%G*h~_9F?{hF}z%My28C>6Wy7c+T}o
68887 znPyvQzj3qgrOf;o+Dx#2=F-KwT{>Sy3D`CjZ*8o}E~-at?%I9=7M0yhxn6SkU#?cl
68889 zJ@6W2^UD(K-q&3$kx=?kXc6Jqk%f~bzd*hWmbs~oyJMl8Y5q}jm`Rl{=Te5qa~rno
68890 zr(Ka?q9|08U=RwO)MZ!Kq~<_J6}4?WC0uB2E=eo}t=b9_%%tFYyq-dWnX8Lo9c|W|
68891 z_6y)VR>Lm8k_Pj8d0*>pKm-l&?Rq#%r$3zoG-X=InSQ4T>a-XRLgfS9PBhHu{U2)I
68892 zR~xJplxhh8iO>pCnxfj7bapqt_t>Loh*3`-Rr^DAR3q2~5NN_ZXvMQb<C2~3n+@BV
68893 z;qy2c`$PNWLB6bgQ`x6)l>P8s-$0>eL>Rq6_r>qJ9DxxxS0|m7A^Jx%G7AziVWBj;
68894 zo(j-7C}cxcD#mM^TsD0pl}R>7IbGAjswuQmEmS8}G=$9A4RSJu<a*Fd>01b(!@8zE
68895 z;hPr#j`hH`|MC2qufO^`;*>=6Uk~)SlK?`uDLh4>LMelnxLLtTP<g3hsuRtZ)f63-
68896 zPN#?=n(@^hiptSV`$4&a3Z|1e-*_DR6|4^~9M=!^BX;W~s?#Ek?yM4Id5_=OtGurT
68897 z-`AbJFCGK$y0bST=^oA9GX@Bp0QgJu@5c!Ac4GeR<K_7~zVo-<MyOdx$Ue7dIQybB
68898 z>k+>*7)I}pYZp}~J(Xucoys$EItwL>5=}KSj-F<vna}A9voZGPnFHv9{U)Hn3s?nt
68899 zV16GO48QUuKJ7z;#tX)5FZpd*#Jj>~G_)=UB~j3T7o4~}X-4Dd34Sy5z-}|1#COM<
68901 z-}{-N5Sj5=#$sgbeHe+8@0(1$nXbl~ZzgUWe-hp}wAsg=51NV*uBG3tjq0Pkk9FX}
68902 zJz<fhSiRArrC2ByM@C%0=cbR<(sgaUn3pU$%dNcmt!u?HT8UME%UW*JQF-`$Qmb~s
68904 zRj?)O-JcnVcmm95gp<(aCILAGf}k_Uu*A{99gW*Qd3=CJt%_m2PIala1pnSjq3RXq
68906 zZhN5r8Cu2=k|x~y{QrV~5BX;a`{-wea)f{8xB>+x;qtT-n5cWg<9EVIOZBB<0ZoV%
68908 zwqgs4P{~+Q?BLtca<#i4FBLikE-npvzkoKYY37-G2`sXcu8yr>Klqu^*KH>qyl!mR
68909 zZ>%&|iuvhIx;m&c^T?``_$y4{9^Xn=ESR#x6z8|n<<`?W!%!!zrQ;)8=@8-EfhsLt
68910 zOZSa6j~KZg3+E9pMZC?~?8F2a9jtz2BJqPi`Qg57$%I631=62LoUO|hv-MnWxvg0w
68912 z6J=zfxmhWD!3gJIWFWIB7rSWOWI(b-<0fzX#IB}_v_Mj(8J#w14=mM6kSu%GmFwUa
68913 zk4~Fxwgg3_Ifjc2n`C%KA*q2gH*9i-`}VK__Tnr3uP*)%E#7H0N`vxXiu(>1@7w|I
68914 zdok$yOll$M`|8Kr9QfQxi0>UIiuk^K`6%2wg7-#v_;-()rLR8Tdj^URG*-|)b|-l6
68915 zJAivH-#ZWYPC9-k*@<ZHWqD)QnWA7Jkx*~hJlOjyh>@Nmf9EjLw@J{Ew*g5jg|1sF
68918 z^uA_0&rmYF(<=8XeWYFdoo8V({Dhrn^A`Q2t!F}>^tYas3rZPU^ZsVRvf{U0dsa!-
68919 zuXU{kwB?#09Nl|{-})Rhum2!+8PcZ*bqZtq^K>*Y*^42frcxMlJ~e~X#n5lwf4tL~
68920 zM+eTN&@qXr(>FS{s}vn~(powh%StvN!|xGf9EP-Unxq_6qm=}%N~4>@U3++SrTav#
68921 za{uLi-f7%dTglZ8{86ENYWeixO4W3Bt7Q7`zrTI6x3hQJz3;}oY0Lh5gr2LKg1NSd
68924 ze6gKP-*`~b({B7~`O$lx%2w(bd#^$&5AJ_>@YK@YB_V5<o_yTvJcFleO;t3$e=;K!
68925 zUy2R=JH0k$EHug`a;F-a?ScV6n8a@o6HKx-`}Gu-OoXsx0UZ||Htl$E(wvJJqsI*o
68927 z^6~V2>u-2LZ9F+7y&r$+xkuJc6^pAo+nr7_`5fbV6;;vvk!_(5-;ccqYeCy^-<V1J
68928 z^N5lF-w(PB4ZpHIn@SyN5Q)67s2s2~$hpuPZv{A%DQw4IX%noZoj>(t<(oIDc0*6R
68929 z`qur@#U1%xg2H351k0!}bm1wo(0H=a$TsiWYd?Rwd-=*6z^A_Joq2KaF!aQEk<xVX
68932 z7)MBPJ6b?e)Oee>>?Hh?(m3zRu5d5Gpyj;q!;_-H2o#mCK3Q*NTKDg?o<GyyZI(du
68936 ze)>&Ud%M#5n@RP-{U2`K815c)%tv1yTJ1Ecu$li;&Pi6*7Q|$w;$h!(=S2I&hu99<
68938 zn{RsY!#d4KfBliebSAP@Tuf4wNElmnp`@N)o^2NY(GN~Gi>D9n%2vF}NJuD|-|1&H
68942 z80NRq&%KEID+&B*QfSEs3W_EGO`o8{q3^qvr#+<b50ea6&KRAd)9M%R5>|&-&r%6N
68943 zlqDT6tr#yC07!VFt!%0#S@C*7;uMunOCX-$7%A<z&`-#cF=@CyQspGY!@K|aTVDcC
68945 zB58_95O`e7*cu7#0u=ZD<7<^-p=%iDhu>zLDxGmRHnZo`E?$UhRBO~>g`WMMr>k4r
68946 zmsUvS!Uvyg-5l;*Yh=3j>}qP=XuQRh(^4*-Z)EdfeHZ*Ob_;W{mxGPIvcH(vci7@{
68947 zwOhlF*pS7-j=YNMc6P9)7`^HTcF3@yum!{rHaFa1j6i|Y&<~pqa6Am=COej)@ht7H
68949 zn`0BTaZV4<`==le<Jk|683hp2Y!KQ-l0=Jni5T|M^ceFbNCj;_;X~MwXHY~Oc{v^o
68950 zZXyVuF;GSu5aB+OoQoz43EX5tbYu$3WK-U3<3<qO`gLC_F8A%#LVnwY@hVAY<5b<O
68951 zSXx@vwaWeX<T+1Hh)iyrT``O#!;-N9v1;{lBqx?Gtm)Wv*8TgyDprIZtsubrP~kmU
68952 z{sfmV2jJqSIR<*PMNpjcXs0G^9^K;edwscBI-M@m-I@o099N4ztVPVWimBC=Uf(OV
68953 z3ae#;N#Ft%ch9#GpyjeU99HW7Iez8VZ-Ga^$FMxs9ye@RA_;`iIcWhr8k>V=)Dg3i
68954 zWh+)L9bHZ6|Jx8!TTdR)jb0@oNj=R<pB<zhXpS>DB>Ta01yycS#LB%l8-%Pv`jzPA
68957 zm+I;BXz>UQD%)j(_`_`Zo)l{j9z9R6q`956W&RKg_hgU3A7C}8GsoDoV|i->Ct?*E
68959 zaB<R3I0)dv^LSy@#WY$76h>{X?HgX#aA=JMb(-u}J6mGLN^5$laIN>yN57a(_L54`
68960 z1SMKsTcNTKpr+TXX05oJX+~$z2&4^M%<EQx)%$L3Q&wnd-2FAhHN28jR{D7>UC~!s
68962 zv0uoy_2ka8_SyY)5orB$OZPq@Pze8w(9ULg`|fg^6j{w?-^VEiOO^(;WNBSv`4H+n
68963 z`ObeA^700@H15|e1QK|)afAp6p()q~*qAMjn|4{8IQ(-qkuY)=Z^IS2j2cVe$tqg@
68966 zRt~-7+0xpn_>Ptusj|?jKRU=3G=IhQu<D$uy63B0qi8r;oK4HcElqQf7(dbX_BTAa
68967 zkW6lyy1ucdyywLidU=1(_33lA>`(~`kLekW=S9U-|Av$(xtGZ}tTniKF2N;t3|nR&
68968 z3h(<8$YN#eiC3W7nkF^fIkSd*1R{uDL&J7w)-N#grY?(6yOlvXF<&HDv}h`V_jKyL
68970 zcN{a4Mp;fZ7u@msn)=-@zO!36@s0(SF?nq}&Dg`6XJ>cp*L%Pz@H^1Y9ilng)E&;*
68972 zL%%EI%*AZBAIv~U8wUIt=-J-1AES)6xJYRuTlRaOZ`}fa4*m(e<Gs&jp?VGaxYLn7
68973 zZVbF{>b{Hfzk9pyw;NipHeeRlh3oX7>v?oqLU7M~E4$=&uH8S<2HEzuLM2p-({bf0
68974 z8ka!h_15^2e06;p<Z>%TrQgM=1TE7v8ki6Z1}5NKr8U0K&K8B~9@Z}S0@gyk=-Q+g
68975 zJ@q<z(Jj+YGq#ACQ#NgCJ#v&_-LBsQ`1}j!pL=psE33}VW;0HQ!ym3ZTIVzxr<boh
68977 z)0U^=77SqXXGSF^Bc*c3U!D$@N`!-@B<LLst7Z7{Zoz}Tfi<5>o_CxAr)f^>Mz^;i
68978 z43gZio!T3Q`8-<O7RY3G=icV>-AUIma_#Dy^|IVswM)=#;(7>!l!)K;;=2b~wOG@U
68979 zELt=ZZ@wgt-HOTC-G?v4sJK|Gik8gP@A2;#`G^_pzhT2~^$Fa*Phbd!+<dFYowNx|
68981 zmf;gDIhl|4->@%X4X`s7g8RcrG|40u#*$?;&z{5(%@M>B(Ht=_>b-m#asYFK1q>rH
68982 zlcvdL6iST+H-$|x(F@*$1gCclPJJiuY|Wu%qwmDv1!0FLz8^!A3YO;qx_ACoA1#YY
68983 zVhs%5bD>y}b8=qwIMSUBhhG}a-R>fUtS_FcI?ag*)AR>`py30Yj=;~d;?Evvjw)gm
68986 zB?=`)u9ng~I>YDCULoQ+7-wD|vqMxxJg`_C-;V_I*n(glC3p^xzBmcyd!0rNn!s?L
68987 zcsRf}T!cAShnzS%F=)_{Bu>_pL-!lNxL&<qi9=mNv@1d_mHNqdiVjaFto)5}dB51`
68990 zJlcPQ&N631ATMfRDg*pwhN4<2*C}xu-?N7xUeA7X*lRTPY(c<fLM!k=2ab`WTTQh7
68997 zxnufW<j}G8PBk-LRx4_ne+4eQpcbE!q<&8KM5%)Iv4UJDn`Ldg;ok&FZrty4zsT|Z
68999 zGGt<qZ#-023uvtFEOEL#j58!TzBiujO7&8`s&-6$GE4mXz$c-!=CR!|o05?%hRlUd
69000 zAi!^n<npNrU+E~WKsX-EzYip;sL=5W3?q=J#^=9bVd~%*;SmzxQYJwT^66#UE(yF~
69004 zG*y~(I7=kaj<1#rd5VGFUq+tt@jt@;H9X4)#|-~<sv#Ubu6g{pN2&)t`)uWtG?gV2
69005 zb)(|wj%=vzxosWtf51O_f*8ctlHEMXiAp7_&-|nZ!CPQF`g}0Li_JskM+<ZO;-LRi
69006 zEchwhpZsOcX~{TAL*h{28joCLkoPQ1XSDQ|rc+ub`l=yl-XOcSLoQ$KGDa|@g`$)=
69007 zqf*J!=XVVtR-G%A6-{kwEOhm&s~dK^K+q&$gt`|e1?aQW0!?PxQpc=l>d@0C=l?h^
69009 zRwh_sWu|yqaO{D=yV*y+^I}So+Z5H=-E-o0J>zVwb%faxD_4q>an{glOub`_Z(M1n
69012 zd7%F>YA`>weQqOV<T|xGtik+;Lirw>wfm1A%-3MhUH%x(!@z0<+eNz>cE*rLOXPGn
69013 zgZ8Ss8P-<;wz|8%JM0(p2&oe7?Yn(x#b;J^;&slKSK6#u>RRVbo7Nf7pcB1HcT3D9
69014 zQ<`2bT<g}BswO4<s%s_-l3bk3VsRgUH{IIYO_`_MtrP>_h-xe#sIeHmY-LMUD7r9O
69017 zKIp+XYi+RBth?!8Rx~*q$=44nJ<)9#lR_4GLMaPP<#RQ$Lm8-$#iCUhX;m-hFLzSg
69019 zr-C&X()K2#ZN(>~p#`*szapZ)nry_l9c||eg>z&JtmB<fb~aL|RHXcw3(+;{OZ`%S
69020 zv>)BRQh0>ENFFkEHNnPJ(~8M50qPXlt@`YY$eg>}Uc3K?($<8PX=Qaarb!Q=-c4Y5
69021 z?q-^h<rp51RtxK!5+wHW=vQSoX=P<d>!4hi8kn3<Ym_sU!RMg=)`F7#=CL*!LYktc
69024 ze*Cjgz{6onhz(a-@kGFf|MRUcg0tXdtblc(jK4i7Qpr%DV|b46m!^pfRC><rcVP0n
69026 zC|hPTx>E%WpN}@hteIA|O8!dQ=pCf2WZvha60I8gIV$@A-Bx(J?v9-*{Cb&9e4-BB
69027 z>ZYvHlxTnZl!<x;%hWW-FFMEkTEeq<#<vZ7*jvUDv<*azfh>R@n97uYQWO5ciO9(N
69028 zsodp`zdS8BOu(zUZ$tLh_lEtlmmrW8IkIMZ-jGBn<@brlz+xkUwoz|><fHFu^^;cI
69030 z-WX&7CTEfp8<K?L=MVJqc?``2{uA6p`-`zH?Afuju?lI&`n1ynXoEYivA_u$EArxT
69031 zx-AU=HrQI)YB%#)XbQ@pd~{XwbQ;>cF+lsOkBeW}bEqlhN1uE+znrcqh-6pRFIUqV
69032 zlELBL-+mdqn6|nTF<f7UnyR%G?6LM5hP_sTvIye7Fs3`B8sagA?%h@Yo5<+1Kv5;)
69033 z!EPw<^WfM08F0JU@^}b&42K2{NBcsc?-61r(Oh2)58;A-=()PQyt}&F?-p`Iq?~#(
69035 zWCB)!7BOTMx4tDRG@6a4s?NU&)<XHfj-<+%{BkR_iwHL=LLUryoBkZU?JX#&p6`R*
69039 zln$wt8>z4^%yEjiva?>^Xrt7idsjG1|L4FzhZgS2m`-adP0Y`ALTJ{f=GWO+vtKV<
69041 z2v|1S&g<D2uReBle9n*AP~HCD#omf7VW$yg(>@;CTm((t-OgvxtaT!auXq()aujRf
69042 zKNX^rN8W~(wi8UV$Z;_kG0_y|$hwckR-31GylT-Lb<>yok9iq%FJ!K4Tgrvgg_O6q
69043 z*4mbAtzFM1wEdxS<KC^iSKCf%+anDGO<wJ-+X#z&A*Xth%NlBUbAQ5#44p{TG}$UH
69044 zk0a+EVyDo#1H8Sl=-fNwoIAszmm>3BU)Q-UPrd!IGlv_Oi|)c>>!T&*_NUgWN|He^
69046 z0-xy{hZ|QD%h&or2F6Ixq#9#YDtYSso)N&%-XJhD7+PaIw2LvuPr{Vq2>}{QG%Ghi
69054 zIPMg+0BytzSJJJT-Eq-j4c@dEF2UCGy=%xmysf&8jykGwJRU0*27|C}^mE`6jD_AC
69056 zP+QH}C0ce+`Y!2;yeTF{+G%=ry_0oUJ*VY0C`r&6zFe|6idK4^d|8^#W{mOR`>-nZ
69058 zK7RRwXo#a_<yO-JW4j~jG+!#Ao`r5+(si-b3ujWIc;vm{aj5%38CF9XR_{oL-LD)m
69061 zs%B9aCV&T>K1fU-44YOwlqZ2f+e;XMNb;_^9+o2_U?-7IW9V5!N0?;_TUSCM_eDGc
69062 zXsy{|vungS)@WsYa`2{W+66Q)-v_kX*X!26qah{KQI(Ueq^Zt^lm;{O{}!;I6Z(xr
69064 z7045$>nR;KGpkRfuzwBp-&6jPKcjHCujtYLL^Qog9IYrL?TrVnQJ}{sPsEO|TTeR%
69065 z>P>@6Zc@$(OQaoh@wpm8s%_WZESX@L*|}ILDI^;jt<h|oqL%hjEm^^-fZ547MQb)|
69067 zB9o-wgq4v=nUxI5Zavx@I*ca^<BNq-$HWPEbzHe*qa#*xl_BcI`Xcm7{xP&FN#x(6
69069 zY$z|6@<H)^a?1PQEwM@>LB|-$O7lT?SvpRVB)~boQgK9sMqOpoIT!c`p<mTNb1pPL
69071 z_b%4Yon1880$}SH8-IrQyVySJQ#n<kNCMwK5iy2>&5bol!1lpD5)3boN}MRt3d)+Z
69072 z$P*9SW2a$Q=qsb=BIq%{q69V?_aC&9&`7L3eWv=@6Ayd&x|pCL{Z-z*=-hno1tG=L
69078 z-`{F(NhANbH@7O6Pc@-sNW_R#+Bsh?z4#+0!%3>zyRf2;Tj`B#^+K_DsaCsMsf?tR
69080 z#Mk;QPN3reFS@x0?|<;v_od=-vOF|BSybB;QM<Y;r@htI_D6Ql+;jCxbxB$wf-joi
69081 zM_<(2-MH_Ewo=`+WrVvGzexNtwi58A?+ecJ<!kQa9QNBy$d@Z%B_0jUjtlUKd|5_o
69082 z`aHg|-DC+gltq=Z7o8gcUlMly(edbJT{R(F#<fNn)zk(9rtqvNrR?tAJ^9Mc?)7tx
69083 zO9%G7Z}Yj*+C@xx=+9@mcYFB2=`v!<75DLLzWw-Z{5y#Mh;3rOIc8Ra*v@B5-&TgY
69086 zpjs$2lZk{TiZzjy@;ym8ef>V~%G(}l)-RV!=ZghM@sI^`rwZ9}I`4E|zOnJ-)=Igd
69088 zQ2OSk1VsrGWyw$?WwW?maGOIL$D!24;u<fnS66=ctq7MK$Yco-M}@?p6MEf4+V#{L
69090 zS)aL~yTwehYWrBCdv6_JhuGUO9qAS!qFZ#JPj$=a=&3#-YDviv8W}A~r^W7CwaFzu
69092 zU}wM?BBK2MfA-!3T#oBH6RaG%I#hL4cXiG==YFsIg?>3FJfw$21Og;LkOFg(NQx3E
69093 zT9jl3OByTL8jUPj8d<VQ%J#_ee70wHW}QY3>s?!8%l>9<%QIf@j>qd+n*^};-m2>K
69094 z-UIMJ`J3_gnUnycUv;DJx%Zs&pL70mt}*9=xb-&l&S$c_51#`ejNKflBwHYuAZW89
69101 z-O6});i5k=AIfT{Y#}+S^(A;_=Nf{v_1X7?=EoC5xDm-@f_@5H!pfb(T%03s1Ea@U
69102 zk`-IRmo$-}rpl(O=(Y^aL8%!7b&#(0C7Y2zj0?dKLETE?<DY2Mt)?K6m_Aa>TzTYb
69104 zPd3!NIR3tOW}i4yd}QXB6f;rQOoXKU=~EN!^;%4fUHaIS+4J?V3rOLidzUYbd-Zt}
69106 z1=%6cj9G}rN=3L^`Q@Gb*B4)%S~@cK{yA&F3Q-}j;)N3h+2eJ3|M)i^eY{pPaxLV&
69108 z=47{xC2)r0X_MO;sHECb%p(>orc%pgZ$>R@BK~U=A6!VRXLH-BbX^0Cse2k=4N4%h
69110 zm9cW1>?a593E+)A>HP;ZECmb2QG`DxO?9z5*qNCZ8W-}4Vq)NoY@BASisVJCpwsS8
69114 zgaY&>$}&6+yfj7GgWmWB2-B0v#MXCPA6#5MGWYWGXisCJHfyw1%^k~C9=<=>XlQi_
69116 z0j7|m7`xS+ZY_r*qtU|3PWCGkA6){Q@$yp3Siz~BBi3$tkF-yGWTddOnAP^<`pw@U
69117 zPE!wK6{z=KL+`<lDp-Z+-WA-h005Zo4v~6FZ({|L;VG7bc?2pPw5DdRZoLZ_Dd?8Y
69118 zb->|~RL;bMD3@Xt&L)_v7K_Ns88vgE>1nuIugnBS=FTlX1TiOaLEsokK8N@4WOgaJ
69120 z!Vyq;l56pB9Kk-uk&Ew6TReGk^ZvPJFuRdTF2`bvai~j?t*ZcchZ7(+DSYl)WT74J
69122 zLve!L0x|GbDt#obn~~%S4Ag)mcmz>^)ZzsfV@`FTL3zdc<mH76OA{afNr5OWHkU-_
69124 zp{VQ&SNfu|wZTweAZ6hB-T8Z0CLl1YfAk&$`-4Di24H`G*jIS<^vu=CZqfkL`|L;x
69125 z=*EO52OLc`e0#dlsFeyp4j_8(Yp^qXV|U!6aUk{#-l07UhZ})2HkyS&7;CnJxF{X!
69126 zET0+Im1BKbI}uvwo{<wpH^T(-fov!`8hI!@pG=fYC!ai)0m2B3O&@OP$}zowjsy_J
69128 zp4O*QYlXq#GtqY}kUWOeLx*#49!2fB7aoe`91b3y4l~MVq|%2IMyB)p<mzf94&-7t
69129 zg7!jHrQKP_X!D`QwQ1F4mV(7VtX%o>;-#grpdKhLCSY^1B_9DM6bJ|y58vrOj?9CY
69131 znZyE2t-SrwD^A|b&?dnK<umf*55hp2arYk?EsD-oTr|Ou-qY6}Cs~Wh?nxh>@;tV)
69135 ze(dS|wq|;lnwtx~-1!z=$Lb&s@*O;PUdQWwxpQr;`-H~&udJRoFF*Uj!^v_IrwDJ{
69138 z5D}gKe8(9S;C*JX5X`Zo@QL<Jy;~0}0C+V~qF`$zk`F&dn5-7xl0ECHZ2!y2kIx%f
69140 zF2A`~0mvwgRNwXPYjI~tP)S^N`L|MEf5J$k-8%`h?XU>cXBsKjST^y@XQ$ClmqK#h
69141 zUHeq({M5#J;xku}1Jx>GC$g{-^w_D$Jit@HCg!IC@evhPNQ`{%Jhcsc=+5g65Ag#_
69142 z_rk(he-hjf2AZ9E`{F}?ruUj6Sa6atNtVE-_rCY93r-W)Ux8pL85YJ+j@J}y6yr$=
69143 z=6FXt&IOM(AkH6a*CHEho>T8!1n-2E2v{c6D-qR`i)k&nD}|B)S1hQ{7A2ph9|C@2
69144 zts@Yq65P~8bMOv#BnRLg_M50Ya6bC-KLfP@T^4R%{?X!M1!ruu5EP4{<&Q2~Re{HO
69145 z-hFnyxt#ZKEP!6XKLE5{s;i_t*>1D~NsA?JXN$qgiX4c^AOCh{dn>&b-~Q4eF(gvf
69146 zQaJV4+W2;><Z*4ibRVn-B=Yw1S~`;Rs8M@DG34<Y9mZy{`PbY2yA;Goqf)|V@!26k
69150 zHu=ma0=ftwD2N-G5mXWKMSN#|Id`a&XaSp1-YkZqj=U!*!Z`irw}~dzz(z1v$I-}m
69151 z2&$J_9KlDrsl`32<-2kr@K-d62PT1=7g*M0qHsbms^uq;=O4_4!dYLuMX;NMh)bPG
69152 za6X4OQAnP9F4!%WBk!mc0JXHJ!!kEgT3^b{I88ERcS{_aL-a>r9gos2YzC`$DkA_6
69153 zPNABU&qVA$79VZi3_e2*<Wc$}CaQTW{EJ@E7n{pF8QJ0n5jw-5dQ#e*E{q@Vz-0gK
69154 zxG9=<GhT-EOR_rSQ<6DzI?!kdk6b+Q<nb&B57cD3xiJC}kB)-Fz9Ou7cHkNI#Kjq#
69155 zM{w8$Nrp@B&R}{|tHU>bApDSOIiKy-;j7(&EsegC@Gy&JIMI>^E6tZ}G{;hrVoCCx
69163 zW>fbxB8$^y!JeO~au&6aE^dTEZMV1K*XO)In|43-Q`i(%>y&FittXL9yVXq}<zhCC
69167 z0Lrowh&n%)yl*14medp*2%-<jH)^Lw`k_fIrEzaze&f5;qreV5)iG6&O?Ul+=Qm1)
69171 zgZ}N4^b1%E`nM+XZ|=A2-&$A;hIsqb5BlY>JBQWh;Ao2BEs7`>Lh~cnM#?;H;(&c0
69172 zS<1V4PGAfJKj7xJrZ4@_nbk~sJ-*p_*W@H+(L%YyFqGSP@0HBfbaKGiX*|PUr9Xu=
69173 zAik;f-GX-abpw6GWCL&P<{38jk-%Ox14uHYc-}lYf!5FMj%kM(hL?|jWBTal7q>d^
69175 z;b`MqD>;>81r~1n?gD}DQ1kpN=hicuEB&jVIy{p1xHez9-*D;O>VT2^a?(v~4xarn
69176 zwD*Cxm-~WAT!w;_zP{X7Z{zPw0gSLmBL+{O^^H0NGfDGihbR_<3qT|#pbNbF9w3se
69177 zi|f+`m;ke-?OfdFf8^8C8bvte%$MEkjh%O&-^!%c;)j5ACP_^?og<@pxBJLT=aF=@
69182 zs}CH%*QaWj$!hlc`-4D@i#$tLfL;F%v=xwx?D|K{MMnG5!dv}Z<Xb4`K0IVM#j!YT
69184 zbbx-W<F&8TtH4J+-4SZYR!3Fh9~!U?x-p~ckK98`_fA*qh%H(1TL=c|=uB(A`LM2|
69187 zd4l9$N-btGSw#MoW1&zX7<tMzck<qok#E1K`?I2^tiH*UAAG>@W_7zu86Q&+<yXhA
69189 zdQ)`zY>YWy*^OXF6P^)os`ZY4_Q2t6pPABk-#>NYm5Xy%$9G{^$X`57y%TF<&W@b*
69193 z=UB%x7YpZW6HCMWcF$n{6ZH@_<U8siT+cjv`yRrZUjx5<jU2%$*!>-oHfth^Q@v?p
69194 z+9VQ;0%mpB%&hS4AMcu)CE-{;>yXhPi3(mBm^)yMhGH3glyRS4!Xw<B-wCxVP>)m#
69195 z$-GS960h){gtAz>KQiO1^ESJ4`{j#vdt<429vTucpo9|cxGYI7k9U1Euv$7B91D$+
69198 zti^HAwWP4r;9B+$^L4`lM_&|X(<DVkgP}9apWN=&D$W-amz5>)%w%ZXCVG6;ozeBF
69199 zAD&%2I;)duHU6d?$gXrweE9xQyT=FqEOjrO+xwdLpx?cQ)%N5$-=h9v{5P6fZzF)`
69200 zW>`5YO%w}|bYUAYIH~vM?G7_d(j)+?tZa4UGl=bM-IxlG`8HQ#8(q$Y#$_w)AUe8b
69203 z%M|6F%cr+f>Fs!q$8jqid^mc%(j=saJvR{w1%n&J7uo2=L(X8dnj%Af-+1iju8%=&
69205 zU&It_5*vFxYatFodvZE_9>=6}64HY3WEWE#lv@1u<Z$g@d{N?@$>~~S)?$I>0-g>%
69206 zx^wBq*Lr;-fq3*3qKxm=B|`a3N;orKs!UkH!YKe@^7pQvdh_>;?vbywKD@p>z#|{-
69207 z9U-)S3;HN#$EJZCiUM%}QzXc;JS|UqTs=87`=zjV6Gm4Ux_Q;4f?Fh3NzOE`dOcp=
69208 z5XATO#ta_LaNxa?)`Bw7n<2X`EJ;&-w|A2K4PFjsCd%i1UJs@C%upC_#kFRQPd*=*
69212 zUm$<Qq(m~~#S31b9i*aZ$6H0CPvrlY_|W`tpNJ9yqL}~6R%*u6Xdqc=eIi{uVSbx-
69214 z5l9Y{91zsS%G&8Sf6r()`P{}QIs@${Cr=`m{@k_aUwbw?haov=9MO+p4&Z;r-<YXe
69215 z$b$$%b^1KcHFa$-gV~kDp4`!1RY^l)hOQ950PIC-rrwyb0HN@di53@uP_B<c&f&Aq
69217 zytwf*iE$MekUjv^Bb{1eo#tx~&y|;BVlL%H^3ph`?*Q^zhVm+F^14&rsp|B5oy+R-
69218 z{_@(zMeUuR9vRiZ;RLZHvX10Tt*J?i21jVIb@Jl%-|nZV5^<lsQyAo^%CZ3bK7bA+
69220 zmbCa1ag06!Y|T7m8O^4hW`kwqP?UMcJb`e?upJ={-jSZ(AcjMae!9`;H7|SBi=3>9
69221 zf`;UANI~M^t#;91`1HtQmm-Fb?at~TIICGBACa79NzVI_B?$<~l6=XaB)xa}rMaae
69223 z%9U<11euTD6dADjbz}2+8g2fKbbo^<99-g&cK3K*$VWKF1djm4f&Xw@eYNUTRu;+s
69225 zqUBPwzP8`MB&-c(loSjZ+3ohWz1=$zJ@-lWTHU%c3i>aBGsN@nB@XHVuo?~ETba-!
69226 zZ~P`JkdjE?WCVH>5ZHBl-4x_ioi<kHcyd-d0l+}iDe!~Rxlg}!6*j-sKX}xWlO}#-
69227 zZuu~<prhTkHziWqm^%95Ij!f7(0kr~68MqB@HV_Hlm)Js-_~t-PRIJ{;yiFMhn<J%
69228 zTe_It5NsHF>_yUA0VWmzk%!#Iu~`}g9{49AI?a#5OblnGv_Td7w8<F^E?DEWRu-tR
69229 zc4l;k>^B2Pw0`o<-$Kl;dQ;4JKlao9_*{6u2D;*h&*ctHCHflZG`aq7v>(WI9m;hD
69231 zSxMxN07IOf0EXDAYap^pXLM;w1>Xm?DN0>x$^Ijh2)+OA%fK#eK{;-qtXO$Sjt49k
69232 zs?N2Qg*o8Kw$!b?<TwBb2j|J$t}73JP-2}(k>TPYOcs~n;d}*^-ly{>;IL?l78JWS
69234 z&}|^kqu7Zz)=QQj)YKW(xw<?*>pZF+rEcvjnrPtV-YKEoBGnxR4qz4X71M)qT~^~`
69236 zk^7_Ffi<H;<7x^YI6d>=q~6frPlenGjn7Buob`7C-9L^kys=TyWPDIMn9~6T>NxH^
69238 zxB!mp?;EuDxGGHToY_+MrM-XT++JM~|0L5snflFxGL5OiG?M9D=%6x1y##a}*n(r&
69239 z{5Ll%Aq#cz(w=5aoyXK;x77Q=h+rSx-@ELGdq9wo(y~!L6me^D=GU!mMap?1W`^Q#
69240 z(Sg7*_T5E6@?V-{Xj!!sm2O$rPQRscY&qiV1QM;M7cShgH{s;Bc9#rwnSPr3X>d;G
69241 zAe*-k>auyA4#%8xZXY0x?;4M{cNG!IgVw_C0eSq)ji1%#=COJTec#D>>AD(~Y%-bR
69242 zl@N%&p#-||(vQCNYHy&PuN~Z6*>|Mgrzd>{I8qPB;HcN{=fOGJ#*RX)Lk?n{yP!O&
69243 zP7Uffx7F?aUG#8p-n=s=B#1k|2K97SOK|qw$@N7Tr9b!lL$O?jq6xdpzqNUNWQZhb
69244 zkfO3RH*NA;bN<9LpCwBsE$Zk$PQaHu4;!gN1%LF^;)UpaQyc4R-y0q572MGV^d)ol
69246 z$a3u|G3_-iV*PCm-85mCLhC~N35{`WC2@wp?R#^s4Q|~4gNS^=WJK%@s_T9WIupAU
69248 zwo6}6hE5OI%}mDUK!DuMCFzR(`i-w6`b*hor3hXYL+k0EFzCt;9!;@>Y-MszKbVsi
69249 zE!had;mW7p`m{!fDXpH&PaauJZ>{tw%x8|K9OZWpFqrjxBk}9>cMTlAiey@Rd-06w
69255 z1su_%$YvJJx3HPe(J03q$90=YbX9gQqqzrP>2?&$-<R0faz}|;;W;E3a12+^e4|Ud
69258 z<<04UC(?1md1RM#2ZKW0iSH-gy@+ssEJ6jBV-`)n;gMWBb>lHKCo@=127LrYa~55+
69259 z{Tw+c+5wK7tC-0oMV|aE*4I8dqoiaYS)}7gv}d)snW3<1UvHnj^npv;8p*PsJr|fd
69260 z_3Hh@?767Jti^*GkL-U3wsQsM4NLvG)fIK+PI9XTxolTLxf^;w@AB`ogmPa(6$Qy9
69261 zL^)e-I>3vF>jKltgN!qtp(wS-I3w3hN;ETGC{J4T8kOdpAJ>>@S{8NWcnFeVYWJTE
69262 z?B=1Jjt=tBG+xQS24`yt8+*NUu-cu&;aGAk`8@m9s}4*z!C4K-T=g0d8cFJ}4o*WM
69263 zn_47s-q)X^dFxwuLr+0m%OAq7W3OXTEY*nz@LOI3my9KPx6t<yAG&vCqf6-Ft3MOq
69264 zc(*e$p-K|3UEy9V#tDfal<1R8sP0Uq5(&Sk-`_rxrc4ZOqZl%<+PyR5ZwLx&VC~LG
69265 z(gE-CCWt$@%sUkDxI}A@>8quG(AZL)fWamc`jysbxH&nrUxdvw-42>#-ox9IwvZZN
69267 z1-yb75*f)97;(w1aZk=z+oy;QmcVkIv=yNmQorg8AGqoZURWa8;N>m-V>YxzK@v?5
69269 zkLN0@$-_@nLb+(d699Viw>STQcmTv!3bu%)-YBXtoLu>ad-M1=aUB!9j%#xOc@SVO
69270 zIv4w^5PeEQMutZ24XemtjL9;;E3(eiOx1{xP;vM5|19t-Y>?IG$%oDqPv-j?<WpP7
69271 zmay>d3|6#?iX?-`NCWx3$Y{9?!c2jaD_bL(?F@)A)2s2tquK3LAE_>i3`u-;JT&1S
69272 zzf`JcEwBMhzccb*5N340?-;zJ+;)&V%3CA3Ou%m!Edr#mvI84Ad`)@xf3m^&9K4i_
69275 z$AKP3IdoU1WVzj4nWIe{Yj#FEl~Oop+{R?|C}@{u-rY@^Y9nDP)#3-cCo?wUV?86~
69277 zXdT!`h?g-Htiyckb*Q*HybiVJ(Dd(1L?aFgj^>iZzHjxV*^jMp@^s;zPdwA?{oT;!
69282 z)-DA8gA^9sA&=GON~PlegZ-v&rscmQzqvRrhk)N~ZWYx3`Tb@C_)Xib{bn|r@CN$)
69283 zL=0Gp$piZdcz>ntCt`T)4*Uet30Ys(9s7#-iIMVRRpFGs_0-*k>;c?`k|;*3B2Ef!
69284 zIns9S@)-Nwt$fG+qIb74@E1dOE8pH<+?B`Rf@(2(cRquXtlr@McPktAF0`+`3*n*L
69285 z+PnP?-kE1Z_Wdnh_;@|goqs}{!c~A>UV6iVuA9>;uP%(FFbbSX81PWQw+!7>=F_f^
69286 z*B`=$p6Nseeym+OiBlA^DbzWP!l~{pqN+o(nYjL2=8!5@E2>j%HhM9(-U$NdNG!*X
69287 z6wd6F!X_rfF&S6d8}fV8m5WD%u874Fm%N*)ac9oSkX5?vu7vH9GwzmCibL-O$B*Nm
69289 zq55&y--yjwh>C-m%K38+f0!d=m&rF33XaBceDd)9wA*oLG?rI9qA8iSMAh!hTl_q3
69292 z<H|iI9B9N+#gJVEPE1xUVp6rZ1t-Vwf;(;rRzv<)GF9+UkYp8%bF{!p@uJyp@5+dH
69294 zCIsAs5vD8VuEfl@c$<KC--ivo4St!@et#Pc-$?UU;0D3>UGBXPHU^LD?;}8{PrwUZ
69297 zhUahuAF=e!rPqy(eu)bB#nE>p8RJG3<TJIyNkl`9aJUwf-J;@@C*6_~&RZO$MX}nF
69298 zs>#k-QXb$pnm&h<;{-txRExI~3XR6qtlMOo#yu^ZVg;8i7-t#9=bSQwf83%^a4Py;
69300 z!)SeWNgRvEk_kD^vff^M6mpQ!WUn2iUl=eIb<et-bW>oLoJWhkYS<CsMZx0syQB2G
69301 zVScHZ4&kO^K@5B3Oo&v3pi3byVMe|Ue-Zy#ER5x_hu+{&dBM2I7{?d_XD;&qjl%IN
69303 zV<Z4y;UZTibIx=-Q7K1BK?n!|g|)ITe_}Ki@ij)_DkGuMz~XdfAwS!)TdFWqc<tYY
69304 zqwahx7>#vnQ@=+D0PBompZsRi2Jghs7hA+2-I!orz-R_%G&9O*#+D^W_A-w%z@9SH
69306 zFvvX(n&Wt-8?ZQ?VShd5jYU<-Yl;aY4?ot5rGkaBJ@H5<Jmz<pOdN-7G=5L+#7ZIQ
69307 zuU?wsL};)r0D_3r>N}U>-st+`h%H!?MYBafhWjs^(Tv0Hp5K9YhC=!M4(#C~=Kz+k
69308 zVE4f5n+V`u2xDxQCP=5Q1qAsLN<emfwYUEV-TWlF6Lw1<(3DDo&<z9thNEt>TI8lB
69310 zZi<=t(X~^xnA0<xW@DfDK=pESZ6fEWJo#X({yEVbb4c#Sh~~R)-o*bB|7k3R&Hiji
69312 zQV2DIr6VVsN-b2JvU7~=HaiIW;R_kT!4ug+=WHZBHiC!4qcMB6OaM15@w`1B5lL2-
69313 z7@)`IRH1Xi6N*_;Ug&!_-z1XwFCjf2!>)8pc7PL-=<+RXlm!5fz$5_(0{cY(lF$l@
69316 z%WkK~Lb^jgNrnnVJLkLb48>E{bjIcp&91SL9)5#&yhr}W-0=?47`o$KhueGI@vgz`
69317 zeeQU7Cms7<@h&$qeK)*oYyCFf1~%|C?DEG+FW5X{wTrX|*VENrzwr|-6+w`@fp$2E
69318 z8peSg>l?q+(5^XFHLnFtJBz9iT`LB0CD`ToTs{yFDKSOCafwa^{Tx@Y_(T!-vbar5
69319 zh2W-!OQDe9@#H9hCM_&Gev%H=otrkZrJ8UBcyQt{?M^Iw3IwMy>}NC}DX1`@2;(#k
69321 zVK0N&il%ljilWbBG({iMP&iEANH&Ci^yEQzW)-{#dM|em!W2mQZI|qEuT6LM9zQ1u
69323 z97DoO_0F*at50yiu)<~&*n!)714-y+!g#uqz14%1VK7*O3*!!l!NJLfv&neC<B*XS
69324 zfEb(a$)dU&8~`^MW%|JZ6p7jDNRK5-RfG-PGB5L!hd+(5!3dOzI|!k{Y;m?No6BH@
69325 zt>iZ$G>8Wxam}~=9{A<kC~w}x-uunEwGSI4F_Hz_$`b5LhLpN+04=AB339ui)K<Og
69327 z*+<&p39oDce$l0*%lK?=XSI;^H18YZMJSs>-f2S+z!zNu5FlO@Web28!Di&Y00f{Y
69328 z>e?1W0LF}vE#L=haF&J-%?MHMa+XG=6bcv~(U_&t@9Q<|u<t;PSrC;#Uk}0!udE0H
69329 z$q<ArHqY1h9;|V}nw%S%-x*D--WlNS-x=9170*|uXZIMefy1+azYhF;96R>2LAMC+
69331 z2(#ocv9`d@sc@Qb*8-V)9*6V+M>U7@HkmhZ!LW<vD3fBNXiH)(QQN6wU0e8Zd>RX4
69332 z&uD(l(e-Bo?e#_rzTvX^8AW|9_`7~Q+=8!rGlz@-Z4eI*d$R#wrbAh%yrc7Rf63}9
69333 z1c4_rI|Y$33u-Dc1`lVgl2k<p58Rl*faoMMda}2+m+%&_^Cvo1D}XyP@MUiBJ&c&_
69335 zD@mCc!phOXl_GRnTXLh8$|76_?GA;15Ay-7s$&=55Mlae)!30A1SG4J5;0i<zL~*%
69336 zxR33Qgao#=sacgCqGo$q#;C?v9)?kzz_2hr*VJMd0I^6j8<-p0d|_UV%{9XwHIz@^
69337 z?_6B01OqWUUk$qBd1Yhzq3MR-mh-49+tH%C{u4sJQL>tR`BV3?!A!xSs6r5NH_-Zb
69338 z@UvKxSh}OUP@V;07Qs-DU<}6b40m}~LI|yYFe|j{O}o-TLvMm#qyXPU_y0}1l0if7
69339 zg2UzN-FF%3lHqq7nVX?E!*tTvt~bM*Bm}(gLoi<0|1;pBnZj6xV%SH((V(eoclkjj
69340 z@Imtj`ye2Ed}sLMP&>dv?}HeMe(tV6X{VP&DxxG(H0<}fRHq`_^<-ufZ(4S{&b};C
69343 zdmd(P58)UbZ2};Y87tyNW}vtU<AMm=j~54$WqPSkO;)__xY-u>z(kSbXbB~XXbUS?
69347 zx(cyC)Tql6RS-+Gu%|WSW6njrB!=5zstX1aQGkGQUIHWFE2LqfTxb^Y%dkiT4l>L`
69350 z7ppGbPQz9i6GfSL2IuWLmxJRe3LI&cp;<ax4p`kun-Z~!R&1b#TEZp{Ttgje6>@&x
69351 zoz+n9j&0N2Or5UB+p3x{TfaZGmaymr)DiVo1=NVdak$MZi3v{tCw=vNloz~(Q#&-k
69352 zVwsFqKSi}V{P%GltbL`!t9Fr~Fcdf(e5iZCXEj3!^bK{_b{yHTUg+G-07@!HOI1%R
69353 z8tDYvO8|PL0|Az)MY1PTYD}`kCB|k7cS561r)#7RzBSu9PKU~3Hj#-c6|bXbmwpI$
69354 zV-f6S4I{c~R7(TL7KBOY^rGR~I0-LQ_kssP82lpug53wH?t>V5t`j%vU%&tWWAGfk
69355 zcX`ghi;C53;`@t@TGpW2hZhscM0eeUEmRA-+bt(4n4N_%z>KWjZ1Grw({YpCY%f^&
69358 zpttGwH(9K4P=Axl;aIMbYg9^MzsqSCVVY{d-z4{SIQx4X(ys1uIjq2>ntS*h(w_DY
69359 zIUS0j+>v3g)9-giq2Gb{)tue!cd`S1$NU5EJEPd>LHrIfOU?uO9k=JPj!-lsw{!04
69360 zh|j~`*6r9VAaVjur{cHz^RnnQ1E=#(GP=Et{*n0QY{xAJgoFBJDJ)yV>Mi^-%;B8I
69361 zpTt6NcDx7i&dhJ~egSAVwEQGJ7-T>f(9b35k0#7v2SIjn{;VTdplO>Rrz={}Fg8tD
69363 zz)qbQ7W29tGG&DP1`%?P?+gFO*(wZU5=#x2#qS^q^rgckg0`7rMXN_~MP-7dxYBf}
69366 z5|+f1knAPHUZQ3U=9`l}AHitznN)-L^&iJZMj12idFa~WlIZqX7>TBNRSX9`{^nZw
69367 z<c+WTd_He+bE}hdduIJ}lPOl9EWF+2baOUqFqnDlxkr*q-S71wuy^2lId^|AhYYn*
69373 zX0oC2DEH(n_xShV|BF^B7f&P(Z%;zo&st(qd~Bv*^CUuZK;O)?EMAy-N;1{w1J*Hr
69375 z3&c5?^&__QG@ptL@lM|vLWUT?2v|FYuVIk9jW);#@^-!%OVofh_GHPV9@QaQwrVB1
69376 z0S=m2s}Z$Xl3`@UJDcQup-jgzaevy9yL2(@C<p9OyX=0>Necu|&|=u<5P6XbQ+9r2
69378 z)m((YmNYUUh~st_GGMS~7X{vMfwD%*RyB5cFG-%%Vjh+u2Uqh>QI^e;nKjuh5hWs7
69379 z9Cq|4*&L3=hgU;>R}z)Dg|wJ0N-gBFDstRPSp~CF8-45jyB7ub6H{*f0>E_tFBSwR
69380 z5kx$ylcB-7l5q%eR{PfltFkzD8KWtR-oa=Z1_?B^1#{(@l-G^8uR%P>qBY)bi4fxG
69383 zmvWg%2&}baFTuTR4sI2Bn`J*cyk8&Imn&JKjxb!VMFh*WgRQ-|YqxGZt*_N4gFwE2
69384 zYqfp!-S{e5AwCVx=PB%4dgW>!CmH>qE`tSRa2lfk%pZE4)n4Dx-c-N{2CkpM8CZ{I
69385 zNQ?m@U^!xV_jy>Y2fAAvdIQE{3=344+jU;FckFb$kuZ*}t<23-%i&XzQ$77K-HCq4
69388 z*wI8|r&gGobtnPF*>=uuZbW8}`&bKbUE$iOn)M3dQ0j>nTN_6-zk3n<tDQ;aH4}zc
69391 zFt89gT)zKz-t9;$d^E~&$<(&wUt1VILbD=YuZuQ+%I&XJJWTC@TrTH~*+RY>Kktl*
69392 zyd@o{-6<v7)_M~E{^sA|Z4i99p{`<AI*MCW1QHxMtQiKHN~~HD($8!Dg}`1y`ir_P
69393 z&QnI?vwz?x-F6K40Er*k>DVh}uczFuw3Bg9$y)*vSF>_=l`tmL78`|b9-YuG|58UZ
69394 zNi-lm2|e&yE@_HJINlZIrJRXNB{sQ8z&1%obL*7o@(8}Roi_y<3wS!4F4luYCmZCg
69395 z=@@PES{+5kom7$|5mzvO{pU-OD<>(zoJ@LCaeFC{KQfy-ln#ccO(Sz&w4&C{|C>5Z
69397 zehl0D8AxnGw+P+`9>BrgkOM#8+36@=4~C_ao-ywj_;PNC!^HvAf_D$jkVMJb9XWz=
69398 zrWGXAs$I&O_+)aE2Qr=b<}J@2{{K1SA_qkqbUTWyC*g>-Bd$>H`hUO8L4@O<k!;B|
69402 zNzRe*65fc-+xaPDPerfgV4JG>$V0?;umU!YZFbgRhC>oLlEN!EO=ZDJhUs0@U2++t
69404 zb4laqkc0Mf>-_td9(dr_iA1exi`9X78(Ye%o!PdC+p^y2_dYbU^4_EG`(NgQ$6k7G
69405 z-H}1YlrMx1-T3Op2TpzM3!i^4q!Zf`+<eCl@5^O_MJaRjg%7Q4Tx);mL;Qby>~Z`L
69408 zaU6V-6__ct&rHGnA@6vhUr@TcvwiZ;7ft>+*dO5aVsL+=V{Zy~Dg*rH@7(-0uHe50
69409 zVli9CY{D@Z20szR!5YB#q@X_n@Sz$Yw2(VXxTj`EV-u^C!{g=!Uljn#qPI5Vv?L0J
69410 zjHs?eEroi)EH#!(@xvQqR*%MC2Y*L^ydOv>4I@+%W!K!e9-oph8GH|T(2B2PSTKNu
69412 zQK8L^Nl|U6fyC*Y_Z@LnYR`<z{wF*1Xa7yq8ba%ZpYc&r0SgIW=}rQjD|Ef?5{ku-
69415 z4dMs-_K@v?x`uJr+QSo>x^E;kvz^N>1;@ADAvYmf1LB!c-Xkdy*%#g@O7`j*A~JrY
69416 ze(}avJCCiM{?;|&{b#3-RUN<{A0J)%_wNO6=oo2kRGEj*GRyYuFMsCU`6J+4qxDfo
69418 zb1V;?vH+YY2mLIE@eIdb#u%Cg(GYZ|W}IedBeBui^=89U-~JOi?LFRXxNiZcIOx9j
69419 zdpGdq(PBZ8Fznco&GnU~iLt`j;#ny#<x|N>*y9Eg6)nRaof&ZH-9sBi6C4kEFv$0D
69422 z_GopoHjzt*0-8o~dubFJrl(=1UX`2eHO}G{gN@BPD?q;<8P}w9I6M06gRvZKr^8-L
69424 zc;Z`Ql~^oAQcwTx7prT;_mat!-MzMr!`Mob1NqCqicMkb*iPqYJVwxrio?_ozyl<<
69425 z%tGf6`|}u@WG?eCQ9#hJ<kg)+z`-)n*32|?rpt@d>oaTZkzzjRw@ryt&^#hQIcOc<
69426 zmZZpU8WCk7ynTJ=ZpB902EFcQ?oNs@fA&3Mi}))ni#4&uj^Kyca*Z6J-*yWJH9%%N
69430 zBw=6m3#j)Rdk%wN2?vI)uj6O%3A)=Ta|}{m?tv{?<i<|Nk;@U-+)S>OYt?lzu?G^<
69433 z@k(YSy_gCle7u@2OwZ@c?!-jZLOMPC`S)zO6z9xSn?L*;tHGW30KC5R>iIwUn$Svz
69435 zISLHRoPz*{W);|AhN77lFpR}vb@{$-=Pv_x2s%LGJcknuaR^$S=}tbIj020aC@vyE
69436 z#_s}T@?8pKvM=B=9Z)#rM+Ys8`|e}~^AN9499Y-{<nJI^rGSN2oe=eDQ4S471WYpt
69437 zO*2p)7~jBBH<V7boK1&8lr2u|6X4(xH2g-3;!$-4a_9!r^F|gG$cG}4B1Cwo2-nYa
69438 z-mzT(!TVSzbaC#Ne(qn*I(dIM)Ko&wLbT+noSnb)xsA`0M;v_+xBb?q%+ZCm9;!Eh
69442 zas;5DQ2x#D44|O!_VTIoIYrHdp->y!nP>mcpC8*X&eUJgkI^!~KWkXL6X{GgYMCI%
69444 zxa4!-9GPjk)HgoU<QezO3#0dDoDP-{snk-V`Jqp!+<jK7Cy};sHV`z5$-0=Z^O40#
69445 zaCkV8E7#<D(-BYn^`Unj^LW1SD!g`T>uTvl))@?WZv6Mj4?der6&?6zEFG1RC99M#
69449 z1g$5)J}0qcfkdIWKE6dSkH7$YV73zcJxDT=sN_S-=O$g{u#hW;Wxr$&*kAhTxZ)N$
69451 z8aCD$&7?UJmgD_6tgz7<4%k&-OC)eCQA^Z{1#tA@czn-L6={}U0@Bwo<lcM1>f!9^
69452 z_a2s2-0V}~&6+Mp;g!z^`aSs|dY(LA8^0z+r2O{D7URA8@N3f_ed93xI|C6qM&A52
69453 z06=(x0&A;c9c-r4nP>xl4Gb}G*EaL*#y{0-1Xk<Rf!FeTu{ePinT$k|-O)&B_><Z<
69456 zi47$ce@$g*4YQ!yG5$-K2l8%M+Th&`PyiDtf^}up{VKk$z3RHN`xb9;z0Ua**2Ws0
69457 zY8*&B&7-kf`?5IT&FZm;UBudWTQ9)hP5toi4^$)s=jyI1fk1Dr|ERvcqu6q1p}WEr
69458 z7?G|XJ-oHhnPjLX0Q{(z_w6dgvANmas+qfAbuU-l@9==XJD51$<J4j{zABl4$J1+K
69459 z*3R9D>Be6nD4mJXL6@Ehh__(L4Do4T-3HY^Lmj_X^&E6+TBVb`lS=1pYMZyKXLir4
69461 zWuVt75Rbh7jao+I_t*f?g0(-`>VKI*yfADB{@%~@k<e_PzK1kUkNy~jp6W!p4?to)
69464 zB@YPD-m34#6RHE*ouO?=a<iSONZ5(|UM)k=OU7tQ2B#_d<!(R+V>u`R$f&`nElj(o
69465 zK9)?Ofkra&b=7KrcNYVc&<I`-=3v+%5>x|Ej#zMpcPFxTi_64NR)-ji`a*eLoI4bs
69466 zv$S_Jp$L|W7D(D+m9q(#AewBXRZ;A&ER(A`2(s|j_8x=-;^wd3_#*Z<h_}$fmOAsb
69468 z*=3?>t0KlCK5N#Yi(xm3;`-nA$sy@7133^@hhkTq3Z1VyalEAIh*lpy1MEy5=*wbf
69473 zNVSs7Y7T%qAk}5C_RX+rH>D1b;%z)d6Z*ecl!a+=DaZ3ERQhI<p&6Jxx5fiBw-74a
69476 z7?R`x>cuZQQ(7umjhPIpjRXVf88!-e2T-i3#GO~lzoW~Svg%YEM`A?snS=Qc>$M0E
69478 zsR{C+-W#>Uy)}Q2YU*c3(}bx{*C{h^qZk@znLce#W&=>$|9YQl>%*Fw3vo@&1&;;l
69480 zwd;nDV8KVz3@_R!0HIl0DujB5FJJ|txbe@1%duA(8E2?0mkgG3s?F&mEpu%-Cdmnh
69482 zn@IvDA~ps)SF|5NR`|wF#{!&aUdksE;ShDJdf!mmiWx3d*SV-p*hxhaX^pW1^s8#`
69483 zPgJp~;Eg{Vk{ikGSFQ^?`>S<gT)qD8-Gb9_`zyq=K%2^)f*YJ+js;64`ml13w2x!J
69484 ziF@oe*ws%DXQytT!o;uKN!C)j^DL!-2fj>w9(=tlb`txsj@JctChb#X008E2hOJe>
69485 zNz`lC+72h-NFzNR$%8FsVM3C{7@B1+BR-wU;M*0tPxAjidv5|D*HxVf-~0A`srTx=
69487 z5GE@LkdTo4;fFw&$xIR^1hCbbbMJfAUA;-&GRgdZVq~Q5s#mY>JNMpmzH{z5-@%0E
69488 zoE1B#0c(C>zMX6Jl5rhAxc8dr$==hg(^k`Jk|ZyZ;-zjh#Vd?!Zc4Q5!s?7KSU*w5
69489 z7g;}c-ms=G{`!XE#y?$LQ|SUt{VIpC&nWe)=2o|o&}Z+HAK1)XEyX`a&><54+_8Pj
69491 z72CP?Xf~ts%LU?l)v~wO-@DW)Xl1LQO$CYn$`(D+c{FUO#3`gh{i$0n9^F)gnEhMX
69493 zNc=I>FNsTk%e)@H0(|l+8b;3#{cJ@Czy?Z@r@TMmFDy^9eC?2uu~VW7-ZsNuV1=j?
69495 z@R1|s6VFOy^=h@cwb3|p{k!r9o;NT%luY`C{^p%y=X0s5Rr8IZB=+pwE&r6NI<Zo-
69496 zch|0Rg%gF7_Q;k2O-T>lJS!E8SwCrMeTRrV)Js3XS#|*B&=}f|-q<#x%9U+3M&JoI
69498 z4UDpp8kj3&k?$#XieHK@{OENmMT%8(y+rbpg*ECD3}<-j#rItyl^hlUl_!1+@=yUC
69499 z`AkNng=nD^V>DfX6s0Ye4bYOU@I}H!wfG+8rL_}2Mt&ht&{gE&uBz|#pZ3%`&m>-9
69500 z;Nd#Ru|xlE*TF1Z2efR3)ChHzt;E(_2d4^dRp&IF7J=!mQ-yV)8P3Soi@$QEb--S_
69501 z1oGU@@+b{jW*YrX+lWqFC(4mLY3e#?90Bmmy`UJys6=479HZ3r&UKx7g7q#YlT-yo
69504 zCoV}Zu8Ewm%vjN*msYb<q8-Z!U2>Si=ljEvOEpaMWY(?3`+eC~dKr}mNF|k7#aCiH
69508 zoV}R&CY`g9_Fys*hy4U*7$%RnH-x7kDo$G7+J{VDf?b|Ty|Vsdy$5_vSB61%3DVtb
69511 z{_%SjzS!rLoALOL#PR2528zn)o<6(QU$BFeBJ-Th3q0>92mKb+5dj%D^D3~1v*=X&
69513 z0_zqi%(3(k=KTH!WrH7Ct1y<7V=fdnDz;@gF~>-E&|`=8?{06~LegT?pH*56ak^>O
69514 z=+M-RF9m04;B#}SG57=NY)oMpStIoACRS8Ns1I6-pyUHfUBg3M?f!IU$*_+r5{E^j
69519 zO7e`-40d>>xLM9|QnHor+w>Ay__kY#Nk*g0<r3M9#wKc>GnAZgYOyzXd0TR;DK^${
69521 zK1!&kqSSOUWvefkZ(GS=_s(sT&3bTc^4d5p=>-%t!-Rd+!ev@35fpTlrsy$U&1i$B
69525 z9xO>SS=Yx#S2?A>vl2Pgju7ND-Q3)a{z<1ul|rg8Qb~$bpZv3{BnV)mJlH0UFQ3O^
69526 zn2g~aKT@xxT}NclDCPi8<`kZ#wNZ&>@AAvuZ3p4&pyrQbMj-F8(R*Zi%}&iRjX1+@
69528 zarof$RPXuLc@oLqWU2B~SPxk1DsSqlU@k1K4jRvHY-)Khuee-Xn*i`mT>EQR%O}y{
69529 z2KX_`pf<_B^fguD!AV48l`=~!eG%8$Z?Mz&Fkw6gO10I@wsURxT*kJ9j)=!-+np|p
69532 zo=7@ZND8=jq-a!3BA5yl%$9tzRlH&j!0m$pl}kC4ORDN-T3*q1hJwyH)XQPszkpI`
69533 zKRSb6+KvZd{AQ}zNWqpoR)CG!Nt(~lq<IpLkuVIG71&!NVxKV3Qtr-|hb6M+WuTo8
69534 z9>}B*oH=-Ac(77T@6YUydkJ|(y8Mdm7=~78_SWU48#WK9EoQog6mpEzt*4vHQVKnn
69535 z=@-&tsmlnycCbhC!SgQ#hU_Q;Yy0>oT}k!f2CPIunOFCeoEXDgc2YD)jJfq>Fz9-Q
69536 zL7aMqQ5-#vm`e}g&!WSi*K`!1SBLFLbHqDF>~ncSNyt2hhB!`jdC94e4m-c>GIY=C
69537 z>qv7QOg!#;*S&^x%rOl@e`f?{APGpvI$6?e)XHF}OSWMq6_@RIYPoc;?-%V-*^Cu^
69538 z{MmXb-k0yK)|1I0*R#RDf=64-e-gnI6Ml^MMd#dQU*!N<qb%5zko1DxpIY`Z+j%*{
69539 z<azKk8G+#zV~HHC;aEm&0hhp{<5mRxIJBGrW4@j2ZKhHkUW-&C)gVB@i_<vY8ssBu
69540 zW9=*IH2fpC=2Lt<7^^0w5MH<C-e9LyOdAynuM4ezx_nC2j(E|b8#wRR)11EqrLBS&
69541 zLg}VsRf-!>b<|I~HPUs5V9)ordqWj>>bhfx_H3UR8*VkK8rpZ&X|NP!EmLv+N<&Zr
69543 zq<cl}_#!7B6V)EwO6a0l2pBuAC`q65GKP}#owQ*!Ou=&*vuGc4eAg3IPVqb|-dWGg
69548 zDr}svV~;46RV?x}NwzCJ)NSdqlo;sEj%u5r@py@ltcWZpaxfvw5=S#SpU9@-M)rxq
69549 zMyWlPan&3|4@Hp=lESx>P_=-IJT)@Rbx3Pc>%1j!9W7g0;<b^;!dgyjL#w=xkfz9;
69556 z_=fdbcV6-h=yp;eL3Yq>x7>8Y=@Un;*)hFkm~c^9|2kY$Bng>rny82DXsB@fCCwv-
69558 zHooVcX-HgB(0up;P2hEb_ZpnxsH&7wu$401svT&FMqJc*Jsq2~T*uWxFS=%o@;SX5
69559 zr}2M7Wi*0zv}dw50BUkzClYAAf2rRvA7*y&c&X!XwL;GDDkIeq-y?a;LX_AsDhMn2
69565 z`pIA0uw+BdvfJ3_p)_Fm+uQacX8@rKtzkA|s<z2Gzn|2woh5M)kRe!$GVS<C-+-46
69566 z5CNYJ1)OR-;p>Y&C^FE&`T0j%y>UOmT_KfZ4avS_T^@jst&^btu})64NmOt*1=2-p
69567 z{d|0~FW!ld(tR<8PJ|C{DwN1=Y-FI8%L*hJ9bRF&Uy1CkvQ$%^Y8#zY1=`B<h4YU#
69568 z8?bxWEAO6_@t<|Jl1S=gie+iBPG+&7WBu9xd^G!<nKVdI%wo|-n2%4_0?a<i$KQ)S
69569 z89tO3k%F~I^<juSwqOo~u<8wlz7feH$uA-TSW)+bNupG6*kC(LC%fVbc<%rSu%3m5
69570 zM6PP5S6r}&EU<wIHK&cx^tL7PE?T;~Ve+oER@oPp@pE-Yus5{k*wY)P;kw)!4CmoI
69571 z`+XWO+Kpb&b}9*t#)R@oO5-~UVh+Jtjs#{y${UV*MMx)q9gS3;CDo&c2yM{f;Y8P!
69572 z(cuG8?_`A@nr|Da)Z_$-1I0ZszrkgWi<Z|QttH31)-2(Il^G_yhZS7^vW^f-G{O(y
69573 z*h=d0#lo$8Z&+94R?_TH)~psUHZIS__{W#tLHP}ns79DOMV@A*xHc1|rEp<~9u6-h
69577 z-svraX)-pa8z`>rp+;`%8i5^}8s7=!2tVKyt0?=bE}Bxd6UJdRQI3l=)<q*ZvLSNi
69580 zppvkWyFkuu1qF+YAfE3^V3R2)+z!eKx8v}R!*jD+#s>R)8%wNk>XljHuEa>WoM7}-
69581 zT|DC#?_W+eIC(UES*k&X>CimYYDZaN8Jc+FKds~zyms5(-(8bi5a$=^%WH0B0t7_)
69583 zOWiDydc-j~rLJ~mwMAF<3Ll?u*Ka)A>Lo0b=WjXt%o}e%d3^uu)I{$MtsCs7-Hf=S
69584 z!C0AVRi3S1SoD-w06)2$cCt|?bw*S-cb^7beE(JR1AdH_)W)kxCRH%4X5nKIOZ)OO
69587 z)tAE?N=DFwE;X08ctvQ0I<A-k9p{6NvkLaHSi<!Ll~;VwaZld88D6nYzTY-9M;Lti
69589 z=lqS@-OFcsIYU`5>-*JgA0EBFXIUN8ablU}m}GftBzFDF(H9@@BzE~DX|bLILk)}n
69590 z+Par7CKrC%Ndo+T!FKB$uPmPNb!x(np>rfwvkRm&m(5TqO^oX7<-~OSTHiZ8f9<*B
69594 zefxZG-!1!YIW-^7gYYw%2d5K~TqC6avzdWoF}JL(&N=y+34Y<c?PTQj4g<p2@4JK?
69597 zt^ee2HqSN~`3zBw>>N6Q4z>4_<cvn0=I*vh?(Rf}VP^%B(Z@0P-o^afl@w(?Rg8`w
69598 z+qI)Q*E1KE)QTG{sb!1RjdNvOq5f9S47!T}P0WBwGFC)1{nBDYb3<f-3oJ(oB;<Oo
69599 zTy<lX8W@~*&4g37W3{-N80}T9kVQjQa-lp2sXY5A5}9l7<w1ye|M>7wLE{-B$gtjo
69600 z&?H{~yid+T;2)OCkwr&lrpZxah(}0U5;xX$l(@)wyS_X-DOM{QHY^7v)l9#3!?V^A
69602 zjbs-22CHZk&9tW+8)Rcp-gXXv^FE#=jgpWW2?VX8nd+$x^wmatMyovy5)1M>Efm9I
69604 zqT0(#vT7=lWGXi4UGcf7o@y^T(mqJ~(Trh+kHMPMR0gJgKe0nR*-)71yL*WH%@Fr{
69605 z@o?-Wda!(yG+!U=&t+^=6473~S6nK!8i$7nPsfNV>l}@3xaz7kksBTviq+4ZDF&7*
69606 zrnBBg3$S)P{wzN+qVBr3YKnoYkIr7#KQ=$Q(PUP_iReeQX7fbjELNKx+q-91n~x6M
69612 zZ=<JJ$Yqj&V-xo?LEO)Lt!k5H4BMP8Uc!?|SN3o?4Pih9UL6{bcpCu1WSO`n3YgRc
69616 zbeG|Vf|9~mteQ)v6>t&EnB`>j+>kzY>-T>2v5$W2qd&dy+rKh=;3FUY={FvH+gslJ
69618 zubCo;13+FDR~mAM-uFi@T6p5&NBCQV9?>1H7KV~y&m)X%+)*o6ZN(6?t$~qxR&(rX
69619 zxps%9%(xk8Xp11ah5-;hZ>7OiGlG~S8VVztx~ot2%eg0B@Zk?F{L{xjzW2UUzx1m=
69623 z1iS5WLw(+AE-NnNYGGba<-8LeM)!wwEKUO;ae=b6M4~5-PV_3<{pwTaZ^>s4%x#|;
69624 z9U-j|GUNI2F!pj832mC&1@B!s?@~<eVRfH~k-daAL;Zrku}a2iyCdTTbK}G?B&Wi_
69625 z2iVV1?zz3_R&=I4-{S*3Vzz*vawGWn2Pj~O0d`!SR<TIaxdJ@w+sB}Nx9+?3)co|e
69628 zW7~J4YuiUo9A^Na?WBFnZaQ~nS$x~tKohg6$y=Xs_WDyN=k`tBId!M-6vN$X9X4I=
69631 zfq%<3&<`wDbw=o|S&HN}JeE;3R`heaAZS>q58AT0BPOpA6JH~g)m7}w%{u^!1-%N}
69632 zk2id);l4xCIKl2INh~V}i6D(R&Iw|@4jaR<KAIbR=^=JIdK-5X#n2$wrHZ3byF_yh
69633 zOWh(^5{chA_F9qw>~K}fFyT|Rs+KI(P0Qfmu{fdSV-BmLSRb(9u^gHGIxCXl=ruA-
69635 z;Y5xc%ZQOW%^Jj2u9Yk>L_Mb3Ju((};r`2BjL4<)?ab&XY4b38c=Yhx?CxFN?H-h?
69639 zI{d?eS;*K<P>bj8y6iNte6f}>MW-lsHOj;{ve>~mD<$KFysb#K!b*enWI|2rl3mM*
69641 zC3CaYcD23vW+iLVF_}zl1?|J-mv2h8l@_CMyktscj&d~djG#(Mtyiy+eBervmz$+Z
69642 z-$s@&^9duRPs=7HaGJD>MnaGnPbt{#KdTsqB3X?h2MEj@$S+~=2iO}HF}Ou^9lp#F
69644 z@rVNl?{5%4XZ;DqXo=&7-vGzW@+bOQ#AFi-iQ3{JeP2u~lo$ST<ue@&DQh&no2gH8
69649 z@33vK*E9We<T{X}jU|F`dbAPRxk%23&^&q}I^TW<ty80-7I-`aB7WhWx8Hn2Q(!r6
69651 zlEiStBT@oKQ)A77R7fkl=9M{#v-u>)>N+bqEN2@<&IIRQ_BT9J%u$9>LFpxVFV-uo
69652 zfys#VBKYcRT<4W~F@<FlrXcn<PT*`-PBS9B>@b=s8E~n<7*>?OHpP7qeCd9)AH57c
69653 zw|%F_Fo=2n^PatbcK7ye6C;X%ZadHL!rjLiPUI-PyF_~HF$i=J53=ONrREm`BJgE3
69656 zyjg9>K3}jIu}3PV>ph;Kcsi@jj23cs(Ushxx-5uwSThMvmP|4AjRYwIQc@nPIg*iO
69657 zbG}yt@05$DR&)fsl3wJf-FzP>04^P%5%yDUFTv7&wt&QDuY);nZ<`#I(7w5c)1-hR
69658 zV)0)pLZJ-xYcc!N4!2=h3RB`bkaX;_Gg~8bv&O`(n%CvPLQeI@7%Ag~vlgP!rCCc<
69660 zlJuE)%*b*%KT+{vOUF|e-?Q4jcWNZRPh(bR&<*X=K9Txf%<=Ox(_<WAOK@$A#iSiG
69662 zhv>P^A$nwLPHdv2`mNDfdTc7}#jwsnx|;v#V;inOBzP*0Zb5&?z8+;kuT|Q`hDf-*
69664 zQ>v6;QDH{hy|O<M^Io<T2=UQAL-%pQb&~8z4})b}&Q((vKfP9eDTj{zbzoCx(CKzO
69665 zfRRs>CE9XGg-tqu8B#})A&E6CEeCiGPdL|TAjcr2E)IDa-?!}5`L<cDlnS|QI_bq7
69667 zT(UjIJ*y=0D<l$Mo77WkQpcR+aI&4kt}IAyfJbVQ!pOXxuO%-&x<)&yMeegN!rY!h
69668 zhua5ScvuO1>Rl-?N_%_2-Vl@=Rs+%=uuJ%2(Jb9Wd%zye=jQh9+&<W!JC#2bFQy|3
69669 zf{~6;z-8-R2t)|%Rgz343`XKvhGSvHa9KAgTj7dfg!1Ni$G*<`6~W)`=z<}7u$%&h
69672 z)u3B*Y&^%Ty-Jss>DA7V2kTjoSy+V}OINdKfxo31HeJmY2~W`FT-@Az{TZwIT4r)s
69674 zogmQtAe@5@A{-%L`}nnccK?jhC&Km^Ve-xJ7;Tb4{v&)IVG252xw$-wVO^HBz_kLA
69677 z?vMpO)E(85C^N#~T4c|-k5xS-cc>ufA~85F(GV<A5DWLL$M)QLzAUX$esO4X%J7wF
69678 zYy_}|$Wp@-ZvMiu%`cJ-y|j^0xaafTdw#7;=G)HpnXTj97D?K?MOs&6+t;>Du$!rE
69682 z7#$>m=Oc;thKoyDzPRM&MrQ-p&bNc1!Q)2`&JCU(I^9!)1)0yLeb0?4tJY)pf)v)l
69683 zNE?*@8#@bBfQ5k<?G46!$KaT%6(e-1;+r=*Azz@YcEX^m77%*0Y&nTtxo)|QbB!;>
69684 zcTS*_?c+4Ivx7v@I6Mv3WuQqq(d`HG!U{awMJj|yjB<5A2crXXv-_qdu9gv}Mh#Dw
69686 zT0Xwph)hWVEya4-zei;>k8Ww-M3R1({d3n~PQdLMh8K>tXrv`(6O)1g)Z(s43nKaM
69689 zgMAHlvEXiXlX}v9E|<1Vv>WeU-lTbT;y(#oM0x6D!!Mo!32uC`7yu{M$?<o*p$yx!
69691 z{Ic|ZeCg3kkAj8Yhg2kdk|X@?F!<WI59`5)eWz@jR%WKvY504eGBcx)AK-5g$#XCL
69693 zlqlWci(v|)ADQc??s?Ho`7Pid#jZJdU2&{kcI3C?+8f^Rt^I*h-QE*#43xKKbIp2+
69695 zlMOQ)u9JW7&-Y80UMxKuzX<I?KYX-^nOX34_JtW}ReD@Ti)>g*+022WyGO*}5D@x{
69700 zj>Cx(cxY_KOzTN7I8V>x)ARWBJpO-a9vSosgv8h2ohXAE=!Q?nX<^sg!*#;EP11K6
69702 z(|J6~+#Lg1l|!4t0fMa!kB0gE#N6Q4$s<m0d7yWE$o?k&!gs%mM-D02G><QQaN!B~
69703 zGx<^{Kb$E}WDbw@$7im|)b@-F3`nIQIhtnd{!GvIWHNP|Ff#7-=3`0oKhkqP_tIa;
69705 z`BiuC#OUDuoyT?`8yji#qymFSJMfOM%S??FT7;y*W90~JlASW-hv%MA?2VS*fSU=R
69707 z*SO{-TYE~0YCRU;ef`8W<LMO3C$@~YA9>DSu`jm=PJ<VfHwrsv`#7l*kJo&bCAE1{
69711 z21}NOSBi_pLq3&#_(BIwQ`NvsKJZ^>wsNeHdggtv-12?=Yrp^Tzo>XsBgreARA_oz
69712 z`iwyJ?R?Esf_S2+XT1GGmfJg)kJ*W>nT(&x8;P8ym&!3-<)zWy-d{L&?2qrcXW_52
69715 zdjCAVf3AN2;7h-SUVx_1KOzkYpA^X%LZ>8zrfl*`%C&2pI6m<LB@vVSDq9E=4Z?r&
69716 ztxHd!Jbn-I;Bz|poF5&p!U7{PpDas`P#KqHWP#<Rn5eN5-~^3ljaqK>^ib00{C*Rw
69717 zV>@Qt(cPm2cU*cq-1C08XNmBsWhmiwLTAt{n9Y5N01BFpaSjj)K9Wwx9nvhFp4W7~
69719 z;jFy9Wp^JP+w)*-?}f1qpgZOsu90lo9?HL6OeGAC43XKFTJ;)Bn5fCcPDqP9Pic|Q
69720 zkzQe>nWjsBWf60M{J@?ARl$N+t2XPkN-h(3IQo3_@uGuL`hcD16TMCwo$%P2KI=0a
69722 z7@}0`VWxK`&3HO7yl0#||En%tL@&i3M!jffTWw&{$lekda-Ls+=hM22PeBe{o+K0b
69724 zt${?Zn-t=E*ixe0PCB_DR<UZmCZ||Z9K3QXqiUL|#JpN9kru$!#$v3Fm`g81D!Lcn
69725 zi42q>-NF&!8^i2{HCiZGCPseT%vc#oKn6BQre&=dDXVT8<}mA-P!0`__4N-XM@r?&
69727 z6gi7$OQZs7NtOhhAE`G;hO1u-lN0DN4*_(v99$th1qPWO)diVnIIG`omdd;++XHoT
69728 z+_5poaj-&S9JbrLgUU4pMbVA4Sg{z})jZCu+uKeALDBX4!|~k&bN?W${UX}>8G~cU
69729 z5)Y?cC(9b$$A;Y~Q!vMizrPS>96nq`MN)g6Xo`z^CCk#I{;{w&1O5vG!-<J>P39A_
69732 z@V{5FV002{Hm79;m9-e29h6NmB}g1>BaUYkIY=cPj#1)@Xi18vvYZl&izEKdeVJL)
69737 zhtU%@zfO7I@{VF8w>Q-K`yGbmC0?<>KUEdX7;I%EWu#P5v|_PB-pSX*7(XzRGm<K1
69738 zh&D7z>GFYVyuqd(m#~-0h{dfXGp5FQ48Xuk_BnW<o##Z+cgG039&_o1NCbQJP86Uf
69739 z`dD~`qx*!+Y=14If(uF-`_{r2ao3B>erIV9U-D6p<-?de`4{FA#6^Sd;XQo%E@euK
69740 z-shs2e2S;!`tx8tU`gN$-TI5PluRWtD&&&QR5R|N00)aYY-~I{)%GGEnvgA!CE-VK
69741 ztyUu%ZC6irvZXtcynRgZN(nu!h#Aey>Z+FWjFzA6Yl<Vqop(=jydOw-*X;wr<Y-aQ
69745 zB3h(+>AZo^D-Z^=LzFkM?ij55XG+<IMe;|*73oh)xhAwdW0=bmCi5JO2@*-I%6p?$
69748 zd88r@=4K_{%<kPPaimU;k4-gCa-?S$d#0IX?9$Hsu%oK<fKgRhS<nR4Xk0&XUc{!S
69749 zI?}U-nhHz>Co;O{Ds+rrMaNJJJ%lX4mr6G-ji9L@a+)tnDlY*-sJs3#74)>K!>?Qr
69751 z>%-+x$9)p+do$dZ+Uu|}OJJ;rQ&XPHEUB<sRE*$v1G%Nbl$J%>A8~>R&`s4@UQjeE
69752 zQ3NR0YH>PAx#w9eYe;oxFk6-^Ig5?B!V7+p-8sxKdQz+om0*1DfbqQ$#@A0+7fJRn
69753 z&BP1~PKf>``IH>K4zvcLTqLNCI|nzXq>GhOK9@<w-5Bj<vZ#0?wc9}$;!5lprc7RA
69754 z!9tfL9;TOPc~kP@k_}(Ts*2-@Hk&Eij^P9X#_+b8Gqb&02CSlvwX`TF@>tXbhZE8n
69755 z+&APZ2CInP!~~W1ho~JKh4p&x+{1kYZk8zkjT-{(k4}DNI={|`on3UM(^Z46=kRlc
69756 zBZPn{rmN#dsvVFlJWO{o(?MEnrz5Y9Q3)JtRK-<p1#s;o-mSo_gc^YB%LlniqBfb6
69757 zc$rs(t%<CkFZ6jOU2uoEjO8{`TEcY)n<}Rnq9J*v0Ki8#vpL;^<tNyrC-$WeAOYQg
69763 zb+eX|W;ytja(c^<Eq0HwfhOB(IZ3PSvY^|-foh8#rc4au>}ohQPkw<<HNqBCVf1G-
69764 ztTP+-L$FT)HL-APtwfE;GcXB^VK?S7rem{)q?odx3W_bTmMTdeOaq%1bTI|!kxOwL
69765 zZuIo?rB+plc`eU?RngEmsbuNn?a9~yaM*W-oDv^~wXh4GA&v^@_O=Ncp5-WZb{&Se
69766 z1EgzrHtO2Vt!nO#Ld}rxAXRR4&u$dDwYu+RQeMF?R4O6bCN-|5#g5$+YEz)yfh>J0
69767 zc;|N7>v77-q6e#o$I2en=CNlOahqq{BaK+H=#Te|Z5yuovD~{kCX-62YIrt7pX&}V
69769 zQjD?X{<vyM)TBxUbL-ihXen9D2b#vQg`OCwKZ^&|XW4;`3w;TeV?{nz9j?M0{xU$?
69772 zybOGMgF&iXQxryE#KD@8O;`YGJ;8JZRgN2S;JaR3VT;-N@o`qt4HlfXvE8*`qRs;}
69773 znu*E2ub3l&=j}`@iE#bAAJ)$)+!yM|eC$dXycsNE@MRFZv=#(EXh}J*H`||-4EQ5T
69775 zYpWsdhF$xw1-ys5;!lgfn@-EPNqXy8`Gj3jv5~T5kdtlYHH|fV(;-FbqJYi#NG{({
69776 z;seD**)3T-sMPhi$_wvuz>eSz0YW1Fy+&*BWqpu%TTNl)Mi;7+UuxCz`Ip_|cl
69777 zVPGNDhHVL|bB{VS(JwOTrng(f9A@*yK|a=-*vF}?Aj^zsPqb6VFy^_u#8qn32CREU
69778 zk>W&M-G;u1%lJOP6Moy3X_F`#2%)VJ4T4gav&j4xqc>;POPpM5&41DENhn^czyys%
69779 zWqWu|{M}0ncrQa@z*buiO)T6kO&)=-jg2l<-jZOj!Qg}|#3Yq-EnVd`l@w?&T<Lgl
69780 z<2$w<vxm!BWB)DB>Yq8Yw@vQ-e7N`jWJoNy)oyqsjv&&`pd`?`)E%^ovY=W?u^~@5
69785 zrQ_ox%#F9#lSOP#IJ<7xwJog20KKS!9I}9AY$3uj=?!6-EXpR61j`JEt$oR}WI4JQ
69788 zeKN;;fhyU(ef6v;DEVr=oEDXyGI!$GyXHP<B?jF0etWw$&}Ww}-1YqHgVga`&R@UV
69790 z24CBopQ`z-?e&q-ILDZZ6ud4~w?I`S>WOiTvmbh3#2*`|&mS7x{);z{zGyDJ9Y0$Z
69791 zw@&-%x?3*LIZfh6(eE<PL^^8GT(TlqO@jZZWw?%9LRx4d42l}A(S3sSNGh09>rxzd
69796 zGK-B)srn(&0nkim1&;KaJ`{P6+2t33jyg|u)L8*65eE}gTxyp}LkwO0QacwBWJG$?
69797 z*)6-Z)VoFOh-Jh5TRtI{NF&b-C-#)8^@E*upT!(2rP31RgS7L8(PnN@@?aTgN7RC8
69799 zMBNu|N{D@S-%}9cMx`kB<Q6`r<dz!Cn$1GkUmg}=Jj2U55M$J;#;p28j#>N#Jj47m
69800 z>P1_T^y!gSqQk8kG5{~%npY$MzJOJ?swQ-!P*ihiPE4l-9&naeDg@c7mM>;xOJa-p
69803 z3LGeu@?@kF7hVJF?g-ecNGBFdQJ^}}e`-3hjLO+eid%Dd>*&RB#Fx>H3$KYD;tKk4
69804 zK|x;z8D`KBeWseP5d|r%Cr3cXS5T0`x*9T_CMt44S%ZDDtD6Sd-#-O8AEsPFZ(G{m
69806 z=EFGxG~{_H9^mV$Ir5jyj}WmDcL}6>wuWML*%ZQ=nt^%RSv4KeEax~W*~<4Vyt-@F
69807 z@`--MV8a=kfcbg@2$Ppw*xq*2HLJxXd!qkGlohk5OIEo=-xXz*T0nT}(im!m`mQg%
69809 zQW<Xn@um*yE~A^0EiNiNRZ&$(3RPYu3o37mSq}A`p@iy=L8XP0=#MYG7feVV#-6an
69811 zxl#UvQHtL<%(*>odq*~hI_s*+D&X7op-HM41|r_Nc+6(;?An}k%L(b|<gZERzcx48
69812 z&#y_(-=RE9H4`D_8R6&0k1pdeTfZZi8uHhI?*1sQURt1haMAPh_+)L<X5Z^Q4@M!)
69813 z8!j$A&&D5TqJG(@S?V^h@KM2G_^yXxwQDBfVVr7Q2{}M9Jd7%-IT{~2$M&LEa}87{
69820 zW}Kd}Z687(N4r1-0us?@(1*~kqGM!z!|y*pe*&*-@bfd#^`O33#DmiO3Hl!T4*E9w
69821 zOZ4aH>+l)U{N?8W%*5b*6SjI2d)Pt0gkFvmxCfz55z+qC2EImr>R&S-9vkjKuvG3N
69823 z+wEQBb~@Zpw=P`%hB97pzxLtqRstt1zaLzw6Ec*I-j-v}DU>s1et!EnIo?HYM-S2y
69824 zzcMc20?y$KPGJ!f-%5k`HS{a!J?LHNop9CTaP8yhZuDaG0`xp|9^Ha&L}$@Xv>i>M
69825 zNx(jRpx0_Bg#r{uE|Ng52-XdT|NHPWCB3C6WHFs_Y;-itZYBpo)x}hs;i2%<f0#xn
69826 zqq>){%q1?mUDYd{2Fm1YIUZIp(saXk2pU|P^H-~uN`%0~k1ox!og=omOPa5fZzFxd
69828 zsY-`e6g#Cl<XDni?tARtl%I9`sn$;K;DjWK0l;``c*x4yTD-U3>QNlk@U)WO?+I>@
69829 z)?{gFuJr6**m_6B#3`eZ$xIiEBd%g{qa#T@7c1*}y|*mIb<I{9z0GD^HM8kf)05-*
69830 zf|g9`wX{?j9!uo5B!Z&iE(n?^#SK|jC5~~dyen-@OM9nZ`V#itFL}v8|Ab+eWsUoy
69832 zX5#Lddt%ig!OP`&PE-LxdZMTaoF@6cWK8te?|$jR-6v1H`@lzUU<$CfC8?5`hzYs6
69834 zKwR+idD*KB#B{UA&>HrxRyLi>3R<O6(Gr?yiW=8{=g-~N7&($k7kF8-xUnFSNGN>T
69839 zCksqX3Fom)6}k!<v_=dr>}?gvXn&|U2^$uFA5!5B72O*rnn}W}Nr>G{WOJr{K_n^-
69841 z`Ayr$*0`U5bXL$WTxqN;Z_hI4WXe?sT68P=XY{|(>(Fbd7WKipzz48}4fG`XDf-{=
69844 zU1~H^qT#VC{lJnQrG$f`K-4GEWqn*tBzNg(%;89_@@r_$YUsR0iqq#wS;APC?p&@q
69845 zBhA@KUd16LHqDsmR-20_f8+)@W!0+tD!YrjtkF?l%{w*S92t!Tx?-zM_@8CjMEyBR
69846 zP%6mYz*c2+Z!I?-4BM_%y?yi<ty7IX+d%=A0!^#d%SzJLU7~YU@QIUp*=u=XJd+k<
69847 z-sD*E&U+^Bz+cczv!M)48e<1<y=RVj$xDCU%8pA$({gyu5GA747QSy)JfaDSx>Wc~
69849 z1+=9k#!X4oIo?r>q^R=zK#%zg_r7r9Zi{Erne!tr-S?(jq@1Y4)p9W8^Z8~h$PXkm
69850 zyJl!jYiK%`1xHzH^i@Si1=TqH=C`&-4kgEARkcp`zU1J$KF8#3NliIp0}AhEa%yU5
69852 zoP;L?^%?xcNb9-{Fp20rN0c;?Wo$DS=&hntHd9)>XgQ9VP0E35XQfQj&1P~KOPVCb
69853 zh)R_NKAo-%7R!lXG+!Ki@(um(_>C{0;VdmNnMsJCA`^Tz7Awi70DAKc-}}Kna>(%y
69856 z*z9+p3!r!>&{j~RMN|M~DZ;xCp<gGBYT@Ufq93Avf<gQ*0IR=-ei1-a8zo_@6F94)
69858 z0$v-X@OSao@R#sopuDrl#^1x=z<-J#NBhuTc-Mk4`6!Fu3-`_-AO9`>Be+8WW$=&i
69861 z{>`Oq{i{g1TgD>DIR9@cWBd*HJHJfQe3zuRe`?c0?ub~1p-Ld~0wD^3pEo9I<KK~}
69862 z{mqDao+Pe;a&F&6A_SNbF0hz9pNORk3Kk8GQFT$hU|}6VnW@JvfMC41>0PMeI7->^
69863 z)P;&uX6-!A`gZmL$`t&}d{3gr`lyih3m1BGO*V~6LArFIRjjiChfy*>7aBO3<j*0V
69864 zH~E86-N}o87T;gPKFTEg%!MADfB_^nIslTh{qoBW0O?jtpGOuMg|)^gP&RL8=jm8b
69865 z-na8tIh6LRmXAV#Q6NRbs-eIbL}ciq@ozL1SQ*=&i@%Bg9RCLXJbnj$JAOI-MSKf>
69866 z20n}r;ca*dH*o{U0j!f_wf~KO2v`09uKxl41N?jVi}<(UQ(uM8eieTXe-?ibe*o_A
69867 z2;Aop{5t$vxYL7hzX#!NcfmdHf;-*}_q`eJdJyh?5D(&hxcex4$0$zYBz#L9zN?N+
69868 zti!hvf(r-W$BzJpd>?%q9J8;ZKLrQu_rd-8&*)R=ljsBJedzVzDBKS|%1h8);2K<y
69869 zPJ$~p297}=>P0nFp~nKS9h-bDEL*FI#1#OXU5g4vYn}Z2nool&<9-+ug@1>K0mzSs
69873 zd$ATWH&-a}HT)?S#VA)k>>^ML?*pQRA$H1@Ym1q!o=1iw!Z%Wicj_wnHIPJwP!k9u
69874 zUn3WR%S0R{${OH`%$IXc!bxrE;b*li+x3HEK`xb_IwEqJv089K+BcBT**o=-W`3(b
69875 zn#-od%=rId@67|-I_kvnH^<Y{ec#g4Wl6pdNtW-}vMe7-Y{#*kq)yu;PU6(gVW+l}
69878 zk^+DJ_r_L@V8B@ajLz8K)sS{O^-jGm5ezopU^mqVJ9mY;6J5cfx^4f~vZHRQsmHxX
69882 zJ6d?4vG6+H*)?>&DY*$ji-|1luz*sBI*v9pfF%RgYRJOFAog@=^^TCmt2GIhXxI_!
69883 zIKQF~SZoHfc@x0Mk_?)y`GuZfW|CCk4ZP@2VMik6ccmHw-C?UQW;L6I!K>~Z%=$$C
69884 z`JY-E>H=NCZm}or7>~5KpL=hQM(YWqqXCoGW`^f}nlSKYFSv|ew`g(`E(SUp{5!Q<
69885 zTKS0IR<LCgjEzpOgK&+ou`^HDXs@LVHvlnP=ie!eW+D;mkUg6mZs-Vy1H9Ok#9K_Y
69887 z{d7FJt95U#F6FuIy1(oBxET%x+-|`aviIuF-%g~UYnRxa><ktfcVu)zcCmf2xyO|l
69889 z?`llD9D1+C;?e31=2*x%6mfV1L62K(5)3-0{l{TTdpu}^8jW7(Hn>A#g#O^A*}(f9
69890 zRxQE~-pIQ*HJ|@tSJpq?o>}RIJWlTIS(|7Ng~0kCHfr5G+;l#ctFuIGvBTNbO}J+9
69891 z#7cczkN>w=Z`68yBfy>rn8PMlTW_7Gx8WhC0lcyGYxO-oS4#{+t>E<g;tqs14Sdm-
69893 z8i~(!g|spScjv-yd(F~xFRufudoSNS(pn>EwR~Iyu`t>K={16qpVP|`yLvOH<pro+
69894 zH30#0!f}q?Fn-(!=$-G!iF>C3yjI7Kn&RMP^fB2!19g_B0@CXSeU(k{0{!j7%WlI>
69895 z+SpWTgVzc-yn;sP>#zMU(Fl*=sf)Fe8@NydJVvKpMhol*SBbT?u`$5i{;oIO`o>$<
69896 z-mvzD(>I@3-*e^I6=PR4H+ftfaTCmfyD`CTP3^R?OTs&(gSVu&Og-|e{x<2!Vof4i
69898 z-Z*lZ!{xN-4Q7|K?u~DZMW+iE!DzId`ve>j>k18frrIY1nIMi`KQ(iC!*FeQVl=Tm
69899 zckRTslez85iLvuz-~%)H0|$FTX_s&Cio%hx@$mFOaJX-OVd%i7;o!*D^Pd9U)0>W8
69900 zy>;u=$NOgeeuGP}!DHI`v969x`{gZDv3N|UkJSucetCPQV{FcP?(H_M(_l2mqwp-B
69903 zB>jHl`-IiY*gzbnO`mCv(%-g8GWYUM;1GDO19Z?=tWq)QiIjq&(n|;Zs8f0{PrVm2
69904 z5~S@?O{3W8bY$CO5s%Sha6p~Et3A0gldN-^jiQd;dkKA>mbux383(Ez*u2`EY;ss@
69907 z*Eo!Bg9{kK?M?ny&x<jq-6ZOu$xKfZcK0Xu9d8$!yHjbqD;Djmjn?TkdWfwpljBYP
69908 z)gAtj-EIo;hK7U&iylu`bmpoa3$l%Fof)4Xc>R*#<;E7Sli<}BwqGh<om{6HFWJi~
69913 z(Rclp>pz-mr8qwQ;(1huw=*26d{P|4uK-7ngky&SMfqOa(seToMI|3KnqY_1e)V0=
69914 zbID-D>qffSt?x-}t1;*Vty!Z3W)lFd?!NeqU40bEo&)`vtD)B%NW=<9Tk{SV!E)<c
69916 zgr>d(o@Dr$P22z&DB>sKB0c3`r$TL{g9;^-<{S+)ge{v|YD3#&1TlRgWePV(?3+6i
69917 z4PFORM>5y={l4zV^|=8T&Tn=)3ehH$&uU8=?5&=R&*in$d-Z1Abg<hZHbm@$sc6D&
69918 zH-~sK>tG!6`#J)LyK-SIvJNzbl8LA_WcCMw6zAW*_+9uD^d~Mye;<{Jc@)2o%5gc!
69921 z@5iPNCqqpXJN=EFF{cJQH;qK{m(_%$(MXuujTgTRYtd0|3s;ki<k`>X+v9|-Wd;Jy
69922 zW+e!3K}9?}OHaATnv<CA&hkYmB~4T)BEz)!l7O52B3{$k*y%CWiDFW3Z`c$-TD>k3
69923 zny%lLOpYgvS|KROY>THi5tmf6X0X8+3fSvBErKB!76+|CU(^<}THP9>-4i2bN7In#
69925 z_p{PtxG+G-f+owaR+D6e*rd!d*&$tK0*!DZ{e4{>3I37{PVp@b>D?uw8LiNaUbg))
69926 zgbH<a9hOkQY-x0O+C#${;A`x^1dD_X&EarTWAs{TqJCcwj%^!hQrM@>+^(E)7|@@E
69927 zrlWTB7gA_5w|QuAQ?Hsr)u!u0GrLDksM-r#v#kj-3vOV~+>KfXJshfok*hU&5$mQm
69929 zo-Pf&>TxrFaWl9vy*w&nxt$j<jNLIy?RbrzXiv3m9GKl9hCPH>&hX}Xu(6%Ygw2Uu
69930 zRA*F>t86O0`60c5(yA??(eskkRNBqW+!Z-vj?t@`xIs`hpKj?!3Ix#2YKjGv85_}z
69931 zYG9dWRc2M5n`Pr#X;wY*PefHTt2DGGJ+z;#-Ij<?)dZ>yZFqA-W4FcPH=3;y(W>n(
69932 z)a%Z^p=Klz-;@Y$V0Vozk!Vt*;eBSAYDFuow8Ik|F|Y+jH-$NN(pN@rrb0!?w4^+Z
69933 zgCt}64&Z5$f#4ij9MT^`LnIL`pX=)(wt50g@UOsDSE^;LOw|h+?nb}eP-VD{KBLZ;
69934 ztDVeHVe@V3M>=m)-C)RTzpxokdTqvPGmf-8Hq-<<yo7uW_0SU*ozdpFO<~WcxOA>{
69936 zN)GzlEtXf}3m{8<BvQ*Wy=-oPx$VU1u|>m5zhIi{%XJSE`PxE%mpYz~G2h^VQY48G
69937 zaTun-H2=~LgS<AWoZPEu_0o>RwpgIrZO~c;&8FFzEEA=kX0NHMr}rfth+I6lf%^b>
69938 z2wgqhlu}~CnP~9`luiVc*WXuhL2icYe_*`7&5SQ)nG+J@F>xj|gV=?X(px`@$z1-R
69940 zchoipdPED<oD08_r9G5=uXCJ_n<R7_?QS&SOIQLM{C@wWe=-_Y(yfYUm$u}8gG{u3
69941 zVO%HZt@bj--grs70dQUKl;|aFMIq7cFm)ywu@HammP_9%AheQvvBN~hb`e@l4YZjr
69943 z;Lr5V2%%rPORM!*gE%C*C<&Va-He0*mBR)N+Oo%{HErmz$vYBI_R+r01-Mym;Ires
69944 zt!9qD6lE2Iu}E-MoTY>W7a}Cs$V+<(B2s%`6I}6uRA;|Hlq{qbbQXuHyEzlt6tUrR
69945 zf2?xa-YL{=iBlK%0^1pAxFm#HuO)~=Ax6Z;U{BD3U-)#j7xxBDWHfvMAFj0BL1-xX
69948 zFTbb)qgTGc@=Y6?`O30KDAz4f4*%;b+<bxCsQ`92r6mC*6m;8*6h!A<_m^$W5Lz-{
69949 z4$qP~@k-8{b4?AjOGj)Iijn#5O7Ti~F#)6Z;lA>X8!);d!7}0ghz;`RKmUsNb>KHP
69953 zSp}Qs+3wWjCWY($N~lhzjRkRG@0D}JRpMW<tF+-$myPzVUXkB4QM1uQn(9rhSL#Cz
69955 zd+vFa>t)sh`AO19-OJoCyND-d5?;7p?TJA%|IRlycZ3Z!gKBT~B{tNQe%TVYCuiQr
69957 zeuGC}8}G<nf{O?BI^yHC5Vk~zV#G(jv^_he-*=e1JZIW3@kZ(Xy|R5fi7~`CJS-l*
69958 z=!|u#zG20DRo>D2t9gp5-9AgCHSQ{I_x*JpN9AUqUKDMm-9WVud5mk%r4F(kLF!3z
69959 z{Dt-eiIF%a9-H5L`5eBmCYa%+yO$T+EWDt<nF|@T==^8@qP@g{khip#ctQWOOVkVa
69960 z9QX^j8XNqs@>ZkD7d_7P=Xwtiy;x+sjZ-<<AHAUTi@|++c3(!E)Z^mui-`V9I;k5z
69961 zxqOMe$XDdDPSVHnm#|a$%H7vOWa9^+7u(5{_Qvl6w{mTCZ#+Uo-Q%{<Q$EJo*-@tz
69962 zc7YvqOf;g6YYY0Fc3ipJO9;wdP!?+Gi(?_^Dc{E+{fE5X<k`Eobx&7Auh47i*-{s4
69963 zb$M;6u{KwJwBH7TyYlaA+m@`$SggeL2()MflQW)6I-+*74Y_!W(c#xeH`N*J9;49N
69964 z<8HTxtTw;FU>B@r=@|*d<u>p-u9v$`dYRBzAN3;+*odnK#{)S_ln7S6pWsDP(7625
69965 z3NLd7Ppi&^mk)jp6_13MiYN|-mydm>hk5sMz44k5(Z2EqIMH<Z2ALK_NK!*504i24
69966 zi7>MAm!Ap{${1>=wnW-HV|!{`Mr~?%YmLUB(Hg>LlVCO2M`yPO0jimAukGvXug^|e
69967 zv|3(kGBOg`;!UE->ClS?fgbUy0lH+HOJl$qqr<G_H+9)e4u{+7tT78lomoSFuk!`Y
69970 z@sHLzv))u2<Gl%oy`G(`gBV|*fJUy4>);A>#;~)i$~nj*9-<pG#La&_2QUxVAv8S4
69972 zMNgz|f0sXGwA8w7O;MXm<K6w<*X-C6vDkDrQ0FfUSRFpEBiZ1ap12}yG9_$|kU2zH
69974 zm;L{=P|@PK7rzNV58YgrP-2Q3%H<}<i9>5(ro>~1a0~NqF%|FAJW*f{&5;06<we}~
69975 zkztM-o*J3z?;{OlYZIE%wGPZjlHX6IhZl7gjkL69D;?4;t1hKZM@P1N0;}62{W^pG
69979 z!+yJ=k<Pa7q|;h?d#5ZhL@pfJjH|Y@DW7-gO`=t7cZS?`;d+nW($FZ*<WrqwzB2My
69982 zR0)}M@wY3=H6`JA>9;lnQFpdEvUi)&;jHbeYi+MVZgXu?Yt;&k?H+fd-BDu+#~n8C
69983 zwytC(oav)7-#ifZG=~kzuz$4BJls0c9S(SS01#0YQcq{q+QQKgXp7ePo04K8R<doM
69986 zc-xjPqaYHr_02tjU|-BoA8Fm4^hfj_r!&9<zeg{cU4Dy(hkBD>5d^E&=<c*x#bihy
69987 zscmeq>!T(7!{8>ag`P)dC&&d15OTGY;p1%ok{(udGY>GrRZb&mpoMFR*Cj-a;8#t0
69988 zOlygCE>c0cCM`>{v%R%$aZ{f;?8aKmHyrk~C%j=nFBpwPSL-Zi&W804osEidOD+;f
69989 zdpx2S=r6O@1idW|1Z*a6*zZaW`E@>9h@GhwW@l2ri?edkm$-M(PBb*&vqkMuy_T~A
69991 zm)$nE@a~<pnVm<wmR{Y_@#>|MH?>op-%7rA!uN4zy0fn1F~I7B;YsHi8=(oi1;|Eq
69994 z8tP)b5nt;St-a%k(D-m;i=#2$oE#21=y?@=*Bk?U{kGj59oq^uzK+^ZJeZBv4b?Vm
69995 zyL?l!J8stN%sP+F8u5C`_~<34-y-90q9=FP_<a^LS<h+#I}DE<-CMnv1-MYq>lS!=
69996 z$t6!|7OU-a%hx$1YlT_~A);<2bOh;O{1>jj%v0ar+%;~ikN29zSa-auDc9@E?rdq=
69998 zE<&|NB%`)y$XrkFc%oWEoIDM^?&-8j^4KYbL}&ayQqhyPd82~H-x$qO+s|A-TiQc>
69999 zz8Xq()R7@ZfUJAl3J1n(x^_=ZHHRh=MrS%wU-ymtn#Ma=_$u*peLHSCx~KL0D%uLb
70000 z-o|DV&}(ko))L;iPm+-=`T7BT53x5hxv4t9qj~@}cAJJsAkl6oz*{(?);H7h&oqc%
70002 zCcCR`bE1FK=}@EJ9SMXI@n9ek_qYsxPeUOPkGjpx{fRC8iI%-?gXjpwJ<~(C8H^e*
70005 z(p}2()yp6j+Y}T#<AblgGQG*|_SPqY-Ki*wPPEJ&>{%FW3j}(*#U3YU2X?D{WPQh;
70008 zv%mNCV`FEA%{qbSld*u;;kSJ9{8O*XQ}>QeXn!Dd4iF9Q<hpYmX_r<y!%`-(${}Q%
70009 z4cnU<0oT~s)S0LuE6M-}NV9FNWG+faE>ekMa)L@f@nsXQL!xl4GzmM7b@h02y%X8?
70010 zeS-`8xAgW8`A!WdEf#BCBGzC})wYY`=81y4t*&k$-q$16?rv$?+&taYGZG8s`olXe
70011 z2d|HcVxzk?5~z3A4V^zFiY={UiPV07Hpb+rmf-gS!7t9Gxv|`Ey#-=k!yKM*rSL#9
70013 zYp{eO9$z@<XdG<zL1&@0ecz_~!nVY*!jQMOeJI%&3YlE#=AO2UpfP$xqlr&#-_z_%
70014 z*3Jxe&vpjJx7^uw^^w{%sP}pkn~!a}a%S6R$-jH^i+|?UK?`T#+}w8Q!k1Tc=UC2R
70016 zxnAmCz4#y**B~2L!)FOOAmBOaKAH_Ll{Ih%_H%)(WHZ@h(`R({)|#w-&H1QD8}(?u
70017 zFUI8ifA1!3?;~v|xwlBaLNu9-)L{DPfn0P0!z#mM1_AVtL%M_EmLGe`h7^_`dlj$A
70018 zDdn+W9+J65dMGAd)CAAXeKzW9h}YAbMughpZf417F-*!w(lYbA-GV|P(c>Uapxx0J
70019 zOf<)vtS;UZur}B7*bvOrYEYyn7HJB&f>DRZnTUkDlV-0TVTV<47z`2(?j$rgKxmMl
70024 z9cuO52O2@r6w=%PJIqeO*{0-2J@;qndRki)XiyB0C4q@v)<Fz(fTdwonta}94UZwx
70025 zpqn`&EjM!l1j2E;3}ers_G?R*4$^jG6-9-cH!4ZVmgK4I-^^hRzG&%O<HZVc@*%Ud
70027 zr`2S!TI^P@-R!fP5cbvB3|<p&^R>43YU-U<Q~v<*W$pqzk2HcwYj+3`_VAhdmNp_c
70029 zqGfaS7cRyVJ6SA@*m=AjF-U0@tP|_pPMbxmq2^LrN7u?TtH+%YB(J^ff^^6}2vIPc
70030 z4Ts129im=<R-?@xj`L!oE-ki&^k$90=k_|FOH)@jI<iZz703#`yWQ4O8)y?ldaWfK
70032 z9&%mED?N(a$b*qjqIYu6sJn)qL@#u7N)Alfe-VU2WV18rY7_*GC6H=MS_`38&Hgij
70035 z173~8844uqV!Ea=5psu}jyivR!{^OLqs?P?TH_BGjHH0Y-stwSIk7C;3GOX9dx*%i
70036 ziFm{UATB>qL@Xm*tB^)WB>fcKdMCWRp*YW%<hJ=jB{l2-Ou8$&o1+I>a_l@yNpxe8
70037 zU_wl|omMk(eq_-VnCB^5hEDnJ#<KS;lg4Xu34%pyHn?nJ19nGRItH53gEf7QsM+In
70038 zx;4a%>NHM4+uP)5t8eQb-qNzQ>2GSf+G6!NhW`PA|6Sm2cAoZM=GV|8v0V=Jk=P#T
70039 zI2NU2BOMA3vLiLSM#s0$Yzc?-@tU!Orgwke-sQF3ht?vUJDaYUy64~yW`93S#<vUn
70041 z*1wkYbpxSAJ@=-qpS02EHD(i}M~*|u-Lc4^!rQT3#M?>!W!{dvAyMV+Xf|+nJkqr}
70042 zBy+`%o09brZ_E+(xdJ`$=D~EYJEZqE_&oJCH(8u-j%78tbz5U=f6UWj^SL9w*4D;}
70043 zj3aK-@`6_H@p&y;LWk=J9ZrMy6OA~Qv$$QvyE7RLh%VEMo<fj}l4uEF;*X2o4_}m&
70044 zXmxhU3*u!j$OgD@$nSO9B|k``@PmqOP=yyHErzE$?P4-G9`e>2-Q(dvGU*O=Br<(l
70045 zEp_3BO`1-R!?h>cfb}75uuF_Z{T^4Uska9BTVhS!K_c&05!~KKc<kZA-2R+}?m?L7
70046 zh4zT;LHrf`Air1ggWNXR4-&GH7vz?ADFn7-MfWK*8q2{#)9_%z=ZTy2rjWy-v6!xD
70048 z=(VF8rQ<EKKNKO-O6>k|>7-t1ALDRw2Sc{mwDB-4M?9B{6l-8!fV3}i(W1G!3zn+b
70049 zKVi3(5{nTF1-%}Z!>A{sQU~g^3J<8bgHm>Z<lWMumB&*VTcA;_Np5rd&332D8}$Z*
70050 zPOG-9!ydC~{WblY$2A>3hqJk9ry%g(!+M?<%<f<q;hoxiPtPcwBM%c=pCz>Rla<i*
70051 zIR`!H#7>ABXa0|Yh{RS2eQ|^B60C4(YF@^63NZ-ue%6|3AQ?=$99FYlOK)f``!a0x
70052 zTjj}=9T|R0UA?1WIMW?<TD{)-Zk*`q9<0qLgH~&8C?0@eO=su6n(@K9s6(%tobu%|
70053 z$y{y1=WA$a@lK7GWa}29{{ia9Q1%-<Jo97Rk{{zCDD(1#fy|F_{eR-e(A^kst>nkh
70056 zL|^w<ICbSj+N0Hmy#8R+9<tigwaFTd-`^1K@;kGMmfqIJU~{l-xV`@cr_JsWL!vj3
70057 zeAa3Yh)oW$J5nR9`-<`#;u^VYbM_h{w-z!zYlx4-D|{SrgN+)X5Z~BKZ{!f^jf4SL
70058 zn+P{X8hswS)u`t}AS7$7<jr`b3qci^Q5QwHbQg7`#-Vo^9lTFxw8UGyAeb2#ZO%t0
70059 zwl!=Ik;RY}5StwgYqZ#;^#U_Q>Ctd_sH1HlvUqv-V*Ve^X3yw&N4AZ!+QNN-3>#qT
70060 z9qgf;XK^yA5J-wc&dl8?#}PNey;Y85uAO^Sj`Q3nfnJVlxHeF1Q{W2V89A=y8eoeY
70061 z*Ku|5GC8j2^6&;ZZs7XiSLC>n>qEuynBZB|C&$fPJO5p7h+E-~bJuaJ#5uT%TjbWc
70062 z2$v?3n&LW1Y?S1#kaT+LX@uL%EprFB77`mIDMv{-U8=Rlpal{xkhV^e?}Mb|B&oel
70064 zXyxVf8>y(XlZ||hlv*KpMpPq-kQUatL!{gZ*6t!HwajQ$M{rG%l3nDJAs!vw-=>u5
70065 zVzE{7oh2>M_^3=-3A&birwHe1yg<I`2<Ex{3_e7@m)R&57(7qDuO=hAnn9P5?-==e
70068 z%d}{{K<#4{y_Z{{ls-YmLZxJu$pNM12rEzJVTRFfowP#fxlp1u<;?*CFEb6Hc%C5f
70072 z5E`whc(TUo93Z6*v62y{Ps>cR=9xs%aUN$QJjQ5Q<j9&#zk@RWk1<^4$)}u8<@6-0
70073 zyIj(t>qy!OHii@Om?WKCe;Hh@)Q2@PV#?X$Y>sYWV>?PhisMxzpHhCD-TFcPy?7^?
70074 zp*Hx3SLx-N?0O>1?Ik{$1_(e4bU+Ubzz9sh3@pG3Y`_j2zzJNy4LraLe83L^AP7Vd
70077 z_JF-$AD9RG!2xg(EPzAcDzFHaz+rF%90kX~GFSn}!PQ_DtbuiK0-OZbfNQ~Z;Ck>X
70079 z!Mnii;N9R3@E&j{crUmMkhLIqKllLnTkt{fci=<d!{8&}qu^uU@4-Fb<KSNK3Ghkq
70082 zz`ud-f`13!1K$Uaf**h%f**m$z<+=rgP(xM!B4>x;Ah}T@N@7K_)qXO_yzbS_!W2t
70087 z5iY^Q@CZB#kHKZQ0*}M1;VN8%>+l3T39o_I!t3Dm@Kx~D@HOxhd@Z~Iz7F09Z-TFf
70088 zH^bBL4e%EDMtCcH6MQp#3p@k=2EG-(4c-Rd4&MRa3D3fJ!Q0`x;T`Zj@J{$%co%#h
70089 zyc@nBegOV0{2=^0_#yaV_!0O~_%ZnR@E-VacrW|}{3QGoybpdF-VZ+mAAp~QpM#%=
70092 z&%*zK&%ytNzk$Dnzk|Pre}I34&%-~#Kg0inFTiu~JbaN(6$m0kw<wVY2}p}{NRJH2
70095 ziMF9Bv>i>O88nM_pq*$Jx(v;s-RN?31-cULL3`0YG>`V91Lz=HK!?y(Xb~-;!{`V)
70097 z^hR_mdJ}pxdJ8&({sz4jy$#)l-j3dZ-igklccI(SyU`u!J?KvKUUV0FAG#a8AAJD*
70099 zfF49&Mh~HXL|;MwguaTth8{-$jJ}Tk1wDekfxd~pg}#mc6@3T&8~QH#cl15<ee@{$
70100 z0s0~O5qb>$2l_Gk33?p;6g`1{hMq(}M^B;uL{Fn%pkJb2p=Z#4p<ko_M$e-ELC>N8
70101 zMZZD6MZZJ8M}I(nM9-r?p+BSlLoc9n=sbE6bC@jLFd}PW9&50GwOEJs*no}Lgw5E3
70104 zp2jnH7Vp42@h*HBp2NHG<@gGGCEkPg;(d4?@5cx5LA-zu;j8c>Uc!g*5quOM!^?OD
70106 z{AT<Xd<Opwek*<(z74+}zXQJ$pT+OOx8rx?JMeq(o%p@@F8n@xH-10<0RCJ2LHu|4
70107 zL-@n^Blx5EWBBj!J^17JUi=CCN&G2%AO1AHAAbfvfIo{rhd+<MfWL^pg#Q6Qh`)><
70108 z!vBcBg8vDB6@LvsjQ<&b9sdh{1b+j66MqYT8~-c*4*oa%UHtF(d-(hKQTzk^L;NHB
70110 zhkuX%fd7b}$A7|q#{Y+3z~}IJ{31_Zyr%DFW1i<V^c-Ja$Lo1||G0@a^A_I9+ju+g
70111 z;GMjSck>?J%lmjgAK-($$cOkaAK{~XjIZJ2e1cE%wR|04&o}Umd=uZyxA3ie8=vCS
70113 zKgy5soB1vLR(_nH;3x6qj`49gG%cK1UTSL_Y@=bit!)VJ-Ze8N0|hx8mctR#w&jJw
70114 z%KG5`m6HpTGv?WARtU5vgZA0Q)diZpw&S>*B$v-G99_AlTwVs9rSgT9YnC@ml$$Y1
70116 zVPgK^!Fkd-3tQF}S60_aDFw8!N=ogTUpq=l8OP?2T|Zw$j{(Jg$~l80dy6p3WUzVg
70117 z==^nyOKWTMN9T_*aN*F*iQ@~aODn4~xOw@I3<`z$W5-B$`W;8t=Z`O}Es`ipTAyDg
70120 zuj*$`967N(CN)E&TjsAPSPLv(OxwM%O6urm=ND&=k$woxiqVqb$*|0S0;bFSw-mu5
70121 z2a2%F9>eVXkwsGZ#99S?=kf~9&E+N9&E-q9o69TZe=fg)z|ZAXN<k`*Ei4YLFs7M`
70123 zHIszp6GyCyS%Qt-rkp5PimP(2kZ@$$!lG7%;;;m}N|U7GOqp0zsWq&$N{ggHC>5ue
70125 zuc#1m-J(uN-Iw^TpeZY&C{49RYO2URDYGQy(l8a0tKwlf#ZxWL3SN|9yGn}6lrO50
70126 zG)$&6(zuHHBNZK5T0L;$*x>5?{-p!bNR=scBBmTjAEacW*~T(V`c}=_(r{GTQ$aVy
70127 zsAm>VE-W+pP+4Y(sgg)fWtb3*P*WxJCPf0}8x`E0*Bq6ZB15DetDjbKxSUYT&QxY+
70128 z<ZNe!8nYtK3T>A)uENSyr7Cb&>ABSH?rY{(=a0-^Cyl=dRZ4+koJ?b;7fvb^i$EpG
70130 z=NI*pCywo3SfyEdCgDsvbfjrHMi7-^1~y<RuBWn4j4qulmYrF;RxZmpEXRkJu3B7|
70137 z3Ns62a*#usJTrfg7Mhi+3@$Cp0qto-?rB8oN!UJrh{Bp(^ViUTxJfh^pFbuCw9Lf9
70141 zogB6d>Szull}V)@Dm)|-P{ELeh6b}zK*XYwS1oC)8r++$OlYr6$S|3q4HB6lfv(v9
70142 zs+LF(9o7-mkcO&9Im(g@5)E3eA(MzHuSChLg7Ru`t01FK4Iyoj2t$hG%%muyGHpp9
70144 zDu_7hYS^rnV2dnD6z%l<(RF42g>*p;j;X;piwfMeU9BCvwi_kEp>4P4)paM-b?5Si
70145 za@mZQ$QBb#twejZj27CJR4HW5a?Rr_YwM)EqM>$6aXy&YRjtff72UEX#Q-KIjI!`C
70150 zPNKxJC_AB&RyD*z^{6*0HdbA1Y-EG9nW}-L$11rd2_;PxWK&RuVpfn<!cHbvIU^$v
70152 zYet#xWFA$e8b_7QkE)tCjFuZSDe;?BATyIPsgO}YV@j-3N+7Eu!Ni2V?5t=c{EcNY
70156 zVo~Mo+OCmks-k+zUZicwY-LomA)rzL2wrM0jqpt|>1CCC%h=UKrgMe5?X*=5s?0Gl
70162 zN+DdYnmy(!J4-vN%jB!v86vJ_lFw$yR4aiBRuhw~EMkxWx_ng%MB1zb=JHl0cywj?
70164 z=WG=-G?9vmMl)4KGB$M)%Fc>1L{cltq$`UM(WxvlS7k3!sS0utN4m<Uj9Fz;m#v@z
70165 z$E>5;2u)Zk)`F?(RtwchbJa~rLZOtutVSA5#h?gbD-tpl34~@9co4EyBvhrO$Es2Y
70170 z!&NvFl~ww{j9aSBGBOcXDZ_-laz-VBRqZOJY!xaoo32X9RHn>S)gqH-RZ7ZHrELV0
70173 za?~j$wyBf~+g;n0`!uR9%Oz!!TDMlLq>BlqMX!piV-^)eR9OLMRXajtqExY9Lcg`N
70175 zlSP*b+_hcRR=WzyTGZQNV|rQn>0()qmiFc);E1XUU6!igj2cX9<wfj~;-2&ojg+ET
70181 zWWz0=v8v}^s%K3pS??-KkqLKhVR7sH+TyXL)g@wh-D<F<_!L)>JhO1zpa3f$vk?W>
70184 zkrYCN1!(*HAw*Og5rxK-lbF8Nf(Vfj8J|HK{MBnGR_75J7pC}P`iPC8#a_L%OEKj;
70189 zmzUeg%j3xx%gOx@$>Sc9$5D{$7qY_Ob@PkE%LgTRSnh9F9^Z%*c4oWfP-?HUBV#MQ
70190 zd8lGUXGf<TcFCb!vm-Bu#TE*3I4p;9Pn~UYn3BV^9A@OOT@JHy*dd2<znyZwopQf2
70191 z<2z->cXrDCcNY5}#MkYgID*!Ww~<eZeA48TA)j{g$&yb8`E-&`7x{E!Ql^c5rRZ0h
70193 zQ}L}!Rz?L;lS*I2WI2j>Ml&;i?Bx8qK?;i5#dt;$Z#T-4zzQjWjJ5nuXUiIWQPfg;
70195 z2{sqs4VA&-8=}P_6yFb(VFlg`%Lk5{%V;yOj5P(VN~CFmMS-&fmr-W*%NVozN`zU0
70198 z-EH<Bw)|71iWjq`8H=<v;@Y;lJipFfm7SVjU07aUTv%ILb4#i0Rar%{;mF?U6Z?mc
70202 zINSbJt=HIys+@P4s=J;jD^pwT%JPB~S-(a~(XUfwm2~<LQFu8<<^`$T+S0XBxizZE
70204 zF7e`voQ0mf#2LA}qmRYD%0bS{8Mxay#N9#u0Cy+(1KeHQ-Q@dQ<PUI<lRwBkLH+>u
70205 z3pB_9lt+0Ep&>Lx;y0n2Nc>IcP2~F?bPq}SH2O4&e*^uLd_RFmE%Y<=D-NP(&@&|d
70207 z;StSw0SbEUl=d>=cJg<(@DbsY&PN5i`%&Q`;p>9mcs6ui_>Q(qo1-7$hx&(wCxl-*
70208 z?y>()hzUudK|CuwujRB_ZA7?1Xc5xd)53G4r;gC`LLd3$g)w1Lm=$&l`-DYd+4;1v
70210 zwfo55BKbS6J#IW}JnMMe@woP6_zvwU_k-Hg+B4+uEKLvhhx@g6g->bk4et+6YVXrq
70214 z#0_nRKEsG%I`oj?3d148amSY&kBesvrwpe<A2OUV+-~@Q;U2>S;#tE(hVK|2GdyMZ
70215 zjp5Js-x;CNX!INFjBVl>W0!HnIBnc#To%t7uQ%R8{>~cjGT!5SI&|Lnfbk*YBgXF;
70216 zA2&X0Ja00a{HCO-%{Ff8GL4xoGcB5~_4-Y>m~J<H&~%^W3DZOFM@`>!JZk!$=?T-X
70217 zP0yP-v)Sx6$IWeo69x0Md5?M7e9C;rd}j!n?=gSQ{IL1E<|oY0iqqy72&L?nkfp)W
70220 zu-#(2-S$D-eUXCw*R}^k5!)lS@7kWQJ!^Zxt`Se!t#+?tr{mipqbp~R*<0-W_DTCr
70221 z`$7Av{gnNT{dW6@?DyNhV*jT7hk-}!PdOg9|JwdL`wI^2Fp7H|F^As~^AHX=zU^pm
70222 zq#Zqud??}=C++QX9CfTaZgAY<c!%Ro#|ItvIPNDLd)TEVB_AbH`LyF%#~+-WQ}1*-
70224 zKk9tirFChY&w3sq-!G83)#Z03U1?V?<aTXw&ARrxj=Jt}t-DUSPP^VpVt2Sc=(<;Y
70225 z$n`nbSIGCbT|aa^>H4+n4{pw_cRR&L+#z?1yWc(Oz9N)!FS@UF-{RfvzTN#1_XFay
70226 z?g!luyNPCqr`(Ube;N5;(CL28{enm9ae6|YI!~J?=h-6O<=II-`#gs|>z-4d)85^l
70227 zGoG`ayFDNC+~@g%=PRB^Jm2*^=6O;)?Rm!YJI@PVz1QzedfU7`-hy}1yW4vx)Zsnu
70228 zJ>|W{dz<$z@5j8K^M2L)9q;4bUwi-T!#=yu@89XG^KbEW_zJ!$-yYv#-$~zT-&x;>
70231 zXYf#PJ$PgAt--s39}9ji_;B!h!6$>y1<#8{(JLm!qhg!bBc2jZizDK+ct+eqQq~!K
70232 zMm#ItC4NM_PkcyxMEs%nl=!Upd<cf72*2H-NT?yy5y}y0cj#bfIdpC4#?YD29ib1A
70236 zTBD(86R~e@Vg+Z3UEImt#BJejCKmBpW)a`aEaF?3MLfeS;@g-lyp8(>=;q!IdchyK
70237 zr@`~c2R?w}XaIf{4WdE#1htOvXVf~vC#iLWKd06aK1Hn~{7>{_^f-JP{S2Gnuc#G7
70238 zZej&DBYL^FiG2ErHTH5M7b2ma3v&^Az8{z5YDp+?cFsW{5BV6#M@v3D`E(K-1d;<;
70239 zJ|yj!$#)%B&u-5NkZ*d90{wQAR%qNqAbKhhy@7+4ijxq^y>VOv*GNJGYX{NW6&Y-$
70240 zr!SDu#Li-%a4qQraWSrjjgDjEL|iL7Zx9h*!^+u6nC3EEI|&gx%K>r2+z2;H!Wz<R
70242 z_$&<HA(l^Dpm@=qp*$*|T+1WV-a>M_85NAAe?)RA6$I`8JLT;VJ13EzWGOPtgCxWR
70246 zb{QwLEIC#-5-4**qK}68ttNJ&mQ4ZCJibKFFv&sXvqDJgMH*-bhGnWEb}wK%qnDph
70248 zWefyTvQEKgp0rTJ0F!vJHYdlNEMDeaQC@k)i7A+*NO;llN^N6y;J-A&vivz1JpxRo
70252 zW))`@7i(K!I#{kL$fGE>Eima(!Uj^WOcz0+-84l|Xt<5^C~3byWQ)#Pn$n09Brdfn
70253 z&AYrDO17buX*y5(@|1K-Uy=`=$yrS1eq82)lhu(ZPx&8VbeBeBAoOe`^+dUE+Fvo1
70258 z#>hyLBpD-PjErO?V~ivjBV%MFNivc!lH}z$=h?sebMO5;=Q%Zfzu({QfBmoPcm1Ay
70259 zt^3(~?X}m-z3$hw)?Pcv&o{{Q>7^n?F7{(^9pL*HXHi@Yp^7wL#5fNxCFFRcESaB|
70260 z!CVvR2mFJ+ugF}br2@)JKN-l99+wE;)X9=2CQAZ<4;uSext_1`Ij`$77Kib5f$j4)
70261 zv~Ihs`?-<}a>R8<)roDR0O#6O-K@H)TU2+k0ljuXhE$Z3%NA4@b(5s@WL=up8gT8>
70262 zeFfc-F0CV%pPyAuXU^NxEnXYay=#0~7pxT9UU;>$Un-;^&eP?464jHZ(3^M)IeF9*
70263 zV9XX~=n8t+i-!zGOVYBqjnKSDqo52gjlp;CxJA%nX@0Jfc|OR`x5=tyP}<){FyOT&
70264 z?)O?9?pI&}tq=I;9xlMe=^8;3U6z#}WVk1}f!PXt1UOv<W&>h9UhS6)-Re<`&2$Nj
70265 zd01*HJ=#OvCOz-zuz=vjWMr)^y$z|?UERueTV&zNh^%Vl|2GtU>Dfy;98+JO0`*$_
70266 zpRUPOK5nfnjhCCLsSzo0iOA42ZNctF8=-B|d<u&USU^3!nl$$7?QsGAJzF)++i4y#
70267 znYuUkc_D4TUM~HdrhF@-S3MiXYe&rIPFvcVmR2#pRK$iewh=f5d~R_K(s7q&>{}z+
70271 zk#1X!%-Kagor8MQ)>WO%-4NpiIl?|}QpswmUCCaC7kot}Y12H5hwQAYV3vIc*%i#<
70272 zH1J8V67S)D<4Pq5m?rWv+TZv#1SrL$|0=%ylH>RHB|Z)-`0P@j9xJRro7-MNvsE%>
70273 zTcSTbd`5g337+&cWdmP}75Y5_sqWbdG2gn#lh~?aIap#PqD0trX-hTW#~Oa7Hpdv>
70274 zE&_je^w2bm9@Dm&S3BcNZ?x5uYDqsnEx~hqYV-7x$<RTLUsGTWr3ETk8No_d*NX(b
70275 zJfk1lXCy}=V}r-Ce2%moRzHhpD!2eorFFf^>PJgHAmZhrd@scIrKD$bwa!RSXoQLy
70276 z!PCDq%b%{WB^qX|j6z?Jr|C1mce1r#g;i)WrCck%650@8-mJg}v}(4Ea&eaZWQ%@i
70277 zl+o@Lyl-dh^h?EBtMEH6sl+!yj%%6~gZtUnps{9ISD+8i?rbI2K?UzXI#qC;E#Fv3
70278 zOX6&AE66xPy0pB?E~`-%rvhiK#UcPMysI{ut44l3yt1<Gw5C}-7pl~Ao_*XPtCyNf
70279 z`?BRm)hsKraaNzfGR~G7o-LKm#j~NBX7zr9tZSrgl693=Np97ugn>&dm0?Lc)6X@`
70281 zNVlziCEQ+-<#W`?^pTx~Wjk{QAEkmbK*1FhnxAD`cNDx_#_2qMK|eLCbhoi@1;aiA
70283 zEDT=dkCD_8iB(}ecs7Se`&JguTfWDc=Z|Vsc-LuZTF>`)O=ff@Z6T(|0@Ly_AfsUU
70284 zqVGe#Z5_?xWJ~bk(PFk`;@LJ{O)cM7uH);a`VyD$Yvx%Oo-I(AiA&R+mBEPZk9T;w
70285 zEM3!Jr53i5JD2*FVPVF8X_(Oi-dRD$R&FD<Rl^MKVxk4=NDI94YGUVkcAEC}ws!|L
70287 zQGenR|I8_qGGa$uH{x=MOC`n!##l*JlP?$%*Mqn$VqHUA9&t-ZHI(sWVv4{hK5;Eb
70289 z2L|a`p^NMPKr>&P#cvm9$&7$}Z=-^{>tuO?XiJ3*L0huD#JXAM+3^)zZ)fqfEgl@a
70290 zy`FwsD!h8HE$O?r`)#?!e*#zCvaTBVsd}k9q%F5(az<PFs=HM`b&u-L=`d%}neX;f
70298 zP7Lqp2`I8#xo*Xn#r=<td_?79FH2Q>*h9k}Vop=?1saqT_eYRzvG6b-7x8B(lJZqG
70301 zLsJede-Kb_elF6U&pY#fHx51Tt&TW}@5Ax^`G26FuGo(s!C{miH<r^(@XoVCWCMpO
70302 zd~Z63SsdnaSnz|en8R`otNdryde8kRugyP>s|bk(l4e`wIz)E<hdS-~VO&g0{DE|Q
70303 zOh*pmJi*vWcJuQe6FJRwJdsY5Y$wm0&dw{H_P-C2(tE2%`9B&`Dw^Ps%jbC<8gMA^
70304 zLON}-A73})(2_$N4(&N`KSjBpqTEl>KGFWsLHs|I!$=OJIlplnCUKa`VMcULbUw!~
70307 z&Y7N^=hY{f^7Gp3|L1z~u`2%cQvbg&mX}=NwIw-}gI|W+<NVUkCYVN~+|IEEsEg#)
70310 zhb0`Ab6~!YG0(@C=VQ#{v27f7a$WNIe-DTK{~P5UN)-L%y`xz?b=;3T$>AIarjt0+
70314 z;?Ng3^yoJ+*eff+ZAz5<=kk6S5)-n{x$hI)_5`;*!Tp|Cz+o|mWgJ#=Si|LVy%Os=
70321 z<?3R(g04|l(zWy()t+8A7pdQxMy8#vEvxN*hBf56HP(>pK8i@@=&gmEH|c-Vtx8j|
70324 zp30}}y%P<PmG_uYBlg-7;<s~|^g6NMKs%|BYkrO%g9lHuXf!^0t<Irtw1s9coF-*`
70325 zr?`c>sd@<cP!3k`(<9W8@06-hoI{lTiI}voknc3+l1Qx)@8uKs3yx_hUdKW99=RnL
70326 z5ulihHm{VCgS*^P|I3m|zH_tsHN$+2anLXD_5f-1Z^pwaV(jYW)QQ{Mfbfy-)$D!8
70328 z+lVLZ)g|BmZ|whH>;G5v{~P$}>-g8*{eO&yd{6xu-p@WXQ85kUy1cB8aQYWz*2+uQ
70329 z(f@Dg|2Ojg*;Ax4rXHf-(2ERzMofMBGXf@RvOi8#ojr46Y8%QBU-;D2O6GKl?qe?z
70333 zs+ptjR@M1xI@5xtyVVtZPcyfCE&upkD&tk)ybb6Z`m<sRqAo&Tj=D>*fR-x)|6MLA
70335 z2u@-6e+idm{CM!;Y#9Ul#{JHZ!?=QGnkDr&^|DaUZ~Z&y-&@%KC-s0D%&->$GehVF
70336 zj=z(x2BovyAnFCq)=P-_R@bEmAZsWf66ZtC`Bka~e5soh_o?}72K!g>)t@t0SNOD=
70337 z^l3coU*k*V%3aU-T*}mq8dXzW{ChF9ANS;mpwJTd`mFm+rZ0?)yD0z4@&8-<`Q<4s
70338 z7|i8-Z&Cvo&T(1VQmJa?=Tpxw3*)1x2U1=x@a7Evf@0UosK^HQGlu8DsZ!46{(ml)
70339 zw?_R==*EUzP-h^SsF%<|CmG4SUwXQbScWk#{#NJ!RGX(h_j75^x$II;LDo`3!Yb=U
70341 z%;~{YAOFmu{iLn;sF8lIHH2HzHOlj!xx~M|$bXjQ8!cpcK)Md=7cZYQE(-YG)hq$L
70344 zh~WU1iMjYbFT-c(S%$ylKFg(-Sa#;pJnqq4nosi?{)QGa{2i@e_%6N6@I88u;rsMH
70347 z-HBmmeIvu0^i2$J*W7m9TlZ!-Tn}eBN{?bVT90EmSx;s-LqE^(1^oiU*_vC8Z^bhF
70348 zgZ=}<mHI7)Z|k=izN6n^xK3|mxK(p|^-j$#)gSAR86MV$86MT#7X6Jrr*g3*g<;5W
70350 zX1Cd`BIaZBv5J~KW{--QPs}GOZuXkJDq%h~pQ<F=U{|VK>l%w`fTdAAmX<A9Q*=>1
70351 znT7|c5o!$U`{~SU3z=Ru(<zAt)-r<V>1vV@#aubFJZY>*R-IOtvw-js&VnL;wNSfo
70354 zuSBb_ST`GL#q@d`9pFAImG??oily5_-YdCH?A@MX?~dg9sg4^MZGAY*^}{UAb0x=*
70355 z&I;o=OyV$=!zvClII!j4aUq8#9F}__w?99-#!s`>%e&)dKWyW`{%FTNoNfe%fqc%M
70358 zUScnI+Bj|anYH!?d$YaG-f8dQW50dKK5Cz|&)8)F9S8*yeB=i50`&s<fu?~Lf!2X`
70360 z9M}@r9@rJw8#oX+95^006*w121+8Etx+>@ds|RZb8w3l2&4Mk1ZG!FN?UMt-i>j}3
70362 z!A-%f!5zWf!F|Dl!6U&F!PCLgkO~Dtu~3yz%~0J?qfnDjVW?H8ZK#7BT|(WRDWP7@
70363 zs8HWfQD{(TsME}878)5E?G!i#p>d%}p{b!6q1mB%P6MYwXklncXnAN=Xl-aiXme;=
70365 z3l9hnj#%O0;gax}@c8iL@U-yE@SO1c@S^b2@QU#2@VfBE@RsoQ@UHOQoW41I!w15L
70367 zB2)ZhdSq5)Ze&4Zaby|$uFE1TBWoh-Bby>yBRe9yBl{u;BS#`9BBvvzQ56kDW6>(n
70376 z$<@hq$&JY^$?eHqeC$mgNFGiePo7GiOQsyli8zi^-Koue)W&I$)7NRw6yD6~T&+K1
70379 z8JROWXB=B@&$10b>Sco&){o4W4F7K6d)=n*f*-8eE2Mb>UpJ+Ecanw=SY5-%YoniG
70380 zDSDf^o#7e-JG_`RHBozmIoBhm4afh{+{W;zVgFtC(R(lwq2asr*IX8@v+BV^v*642
70381 zGLK-!QDf9&6h=DOdbt~Zw}vmX!))d>xpbOg3$~Yt3g`sqd?)f(N9j|Hl9=-tHvyzc
70383 zRTzt4i;mQ9X|~h{r3_}9gv?m9T{YIXa-F9dj3T^=HZp{-`e%&nP#*hd?5hcU03#;u
70385 z6T)Z+N~Eg#TaM|d87D+&DSLJp;V9AU<GTL>2Gj_RI=^G!86-3?u$HYyQq43x^c{pT
70386 zqp@s5lKXev0bZ(xPxlgG=6F6~jHwG-r=+?Fu6D4k$Z3du2em+BuZQ1AKJ}!>|H%G4
70387 zTQ(X#(!0{4zX*QT=|>s<iOLxs)*BdJqZ`Wj0MnH^!PX}F2qRg;Y-s7H*e@Z~8u_S|
70388 z8s6z6dJ)57J%ZuG8uROS=(e!XbOe5-#(S#Q!!K9UG`#k0pmrV5+>g4x#t20-eSzC}
70389 zl3tTqon^Qm*k<dOdrjYOVN9kv@X1fzE&Kv+aDfKh{*3Kvw3<_@e5v^-^bN;fq5JXq
70390 za~dmOx_OkT{|andsMU8CMtf>lY=P)j)-?=&W-+JG1J(l=hqE!7@wnZSQ+|&$j4|#7
70391 zikmYS#j&pju8<E^voI#{h?yXC&ZX-?Ru_(W+hD}3o56_9)As$Kf9pZu)9S`C^`(@C
70397 z3u9dc8l$YXzLVke?354<)i-b{TL>~XKnKtw0~)Ar>I#1y;`2K-#xnaE_Tu$6!!_4k
70398 z*$X2*%J8!$!rmF_agdh!J%f>-Zw*Ei{-vk!xyHHftDj)FP;bQ;nqgVQUgQ_ZQ_mD>
70401 z4MGzk4RjCCgTB^aJz9w_<M<aeOG5Ue|0r~|oZ<cK5tCYG8u9r<n(;%wHW=mUt-Eu|
70402 zH}orfccb3K=XdERMfPHJ@MGPdVI%gb!37JY*FbN#0DJUD-BjY6GfZL>P(3L0HU@Hl
70404 zv<kPrVu3=2fQncjK_-v4AT!?wRnSIICQEYU+{dt#qi5J#XU`8YEd9_&KNF2`DKxv<
70405 zXj%a?pkB4fT*mQb2DBZ}r=-2PqC09!Pt_9MxlQ`_MbSQ(0kDMYf2JX$nn04PE9j`u
70406 zb_*%JCC6MQb$ADQO+BQKfuhV60x@FN5wxw&>0b$j?-RMo`d6<sY%}PlhFizv3vKn8
70408 zr7;T>rC+v~{`G0=S@1q2Exl@C?5lyb1Ep9jXH-i<d+S)MAoqle+d+3wC;ey8q|Lfm
70409 zM=X|FbfZYoQ5O1ov9*`s>-Lo*jr##Jc5BE?o4K2QE9Xlg`OVcxujksAbIdQT<9vSB
70410 zW=*7@k-8m|TAi@i2GE^tmL7UNWE#B<`KI=Zt(9lP*801(U!)E5HGOGAqjj;CFzjW$
70412 z?`(%WSDS=xpEJK?_^<_yHV1S|9W1t*SogucDu%YAW>V+71wLm-(NgFj{izLpd=Xeu
70415 z@>7=pt9qr_Ief0>K&P-Kf+g?|!!*P8p;%eOGFCkX%R#-b4+y_7U(g`UR-)>!9}?;M
70416 zsYpoJb?-u}(m<5XvKKP&TRoOz&g+4E{yW&HR7KzmVr6a8nBRNYK+9ZgFbhz_xN?qO
70420 zojMN#i)@Nhf-a(3RGaEj1G<Fr=`w0YS5R~IHLj$qs1;pD-RNE_qWkE6dWeS7Fd9LR
70421 zPzgOsqv$buoSvYuG>#_I6q-iU=~py^X3~rF63wBPX)e7&3+Q*Wlzvak=nYy<f1o#M
70422 zCA~$fXf?e}Yv>(XOMjw2(|X!OpVI-hTC}dBbM<AqslH0zpu6asS+m@xi}gc#sD4<F
70423 z&_CBB^&`4OKdmR|U+9_o*Q~dHqnGI4>1BGC$uU(;zG-Y)n3kBSDy+-cTdgo-tFG9c
70428 z)75m<HFaIxNH@`ix|MFLJ8%zn*S*-nD$;|v2ZwU+jn?DzB-2Ar)id;LJ&*fuiC(T(
70429 z>9u-;-mJIjoqCVnuMg>?W`G%>PwF$e%xDub36pE`Og--3rrf`+O*_+xOB`T&nBJzJ
70432 zCnOg8tkp$(|BKHbfZe376aCy*e7hb7bA!c_{x-2G9)bm}uGbi=_ysH!wtzHrj>a6?
70433 ziv-)@6MZA>BS7_?hHX9;R<K$l<GiQQI?9!?gx}grU_T<BB_gD6iK)rwV+{M{da#TR
70434 zzil26dlR;sf&^vj;9nx|*=wXr1O^PO$e$a?Im}>SYyk8-6D!==bD9Oa!#pa_ekBk(
70435 zf1dbTLoJqty4XOo4KYmxc9)o2#V&h~;Yov)-op&^-eT~Cj>2bBe>B~oLk#90Z!v5+
70436 z>IVcH^UOKX?eKjsGHg4jr_5WzA8hmL@tA>e-_<O$RUI=*@;@u^dxkHGHd}ymO4)47
70442 z#6H2tX}dI_0)ap*P=!nMa|$#G4hR$`RiIU%ZJ<M-OQ3t8SD<g8C@?56G%zwSIxsFU
70446 zgHS=JS*T^GO{jgSvl9w+3-t{3sa6>39~zik8!8Ts2#rcE4~<Q#(1g(3(3H@0XEI;U
70447 z3eAm#l66B1LW@JoLMxMnp*5lPp-rK!p&g;!i3Op3p@WIy(2>Nb(1~~|bUIX;oD^1$
70449 zcv5(3ct&`3cwTs+vn9MFyga-ryw*vCH-tBbx5Y!@o#8#<{ozBh!{r&yr!1l)I#D}O
70450 zI}(Z{BDs;gNWDmYq-mr@q;;fIq#cK@ksguWk$#Z@k-?GSPF|!WGA1%UGC49WGSitK
70451 znG=~GSrl0sSrJ(sSr^$D*%H|v*%jFvIS@I_$MNK$$f?M=-1U)E)QU!;PPBTocC<mX
70452 zz-bX}7Ht`A6Kx;u9PJkEncN_&*9S(6qa&iDqGO{IqEn*NqqCxOqYI*oqsyWzqidq;
70458 z;Y>@6N{mfRNK8pgPs~cpO)N+bN-R!xPb^EUOsq+)Pi#tTP3%bQPPR(yOB_rbNt{TW
70460 zk(`~JSFJF)Fu5VQB)Qz#lH8VDm0X+L=``h-&2qgnxhJ_lc_?`_c`|t>S(aN+t%;+Z
70464 z@UUwkJ@QuvU5pEEL%DQ~TSd~KZp~e2$xbQuv(0oVt2y#l*Si=$=;>mFd$tQ(@-HsN
70466 z3bsURX-iiZBkp&mMo8;0R=U~6*p+rMZqYmid*f{vD~6szS?-b48+<<9h0XS|+lJvs
70469 z6nl#5YL~4e_dq#Dl;3e-$>gM33WmAP)Yrv2#Fgk%^(SdjUaA4S<P^q=7Q3+JPo?1X
70470 zKA-v%$JcV<i+@uNPx>wCsi)=HGj0vR#!a~E!b&N1F<Lgt#oD<}ZhvVb>h>x6QB5kx
70476 zx~ClDb44kvd|4sfcLX@34~0JaxUiyMlsvm5H}#f_(TKh1JKC0-Bs32hvJLWtR=9YR
70477 z@fXq;zZAN9C3Qk!HSr9=9>%>sf-gfO+>Vk1M)Yr%`j@+ybLb)U{LF=={X4<iYrq(_
70478 zcG(lrRZ{Se{)Q6iJNFUcsV4Be+`-aDuSFPP?S-|yYKZXuwP*!R1r5^{V3qCxKIty?
70479 z1jF&}yOP`U41eLm>Ml-U#_6~2lU!oH%bpZH>`s=uBZ2vHtp4m%zE$K2M$WF5{M&(|
70481 z<^I(-K&tD8E@W~XE46hu_hF%S$d<N()#{)emSFI|`a+(o>p*+@0e2(D*j$W!f8YY!
70485 zV&A}BnlCiDOV0m_-sgUKLNMP?u>FM887oVRrMCYPjrOL<{2JxYh#Z4#dDMmH_;W}b
70486 zDt9p=n?mo<RnT<I-6-Wr^qsmp^_j>$<_<al%uor|fHPmf`|Ijr&Y_La;gv2%g)c{6
70490 zrqFpi$U6663fQX&oYQX6An%LD|IWo&?^lp2s-MWTSPJ8^{UH@8A++%+bUJ-3vg>_!
70492 zU!*r?qOMMT%;!toE^-(1JX>M6s1L<rS&cO67|P;O-Vw>1FDYG-V^yTwb0VKNh_v6y
70494 zBjmG2u<<Q=nYp!-V6~I9`eX2yNQui*6GYcw)MY7J$GQnv`jyoDL(vGw<f+%7Yq&*a
70495 z(ia<~6xcIQiyrCXVlDTzurbuI6y8dC6}`-|8tYjePkkp6=~00gDaX!&MAy3*SJ~mB
70496 zp05LY^oDTRMW9=CT=?`#&_5N4?Qt@-K%}&id@#4r&*P)i??tvi$8AYre(5FQo%2F1
70497 z9i*jiN{@Ue`sjj-xeg=xbiddkcZenYs*73id>5l(&-k_hb}*PPRPl1^nD7yByHr|q
70503 zA28<KjzcG<Y7SQF;wE0GfxY0n@_%0rMSR{vsk-o!6!b8|+XZ$Pcpu~NggUKCsR<uS
70505 zwX{JGpv`(CZPV*$C+%UJ9ipRjl3P5P@l~dmYOO;$p>y?2ou_;2dOBY>)h%>u-A;Gn
70506 z>#n*7!+v^z9;}D!5>7RSak)jO7<-fTG`^mr=j%nB&kDU7>&p4wcD}b)AHZsIF6Wd!
70507 z$EguAX9`vpQ@hy)-%Y<Dx~wEsBK!*p(-&S0%MIA-qXeE1t-Ts4bs2m>wk`XMT!l87
70508 zByZTQhE8E=364{u>D=;K!o__>Zi`hfa`mvtPo2UXV<+)A4&q#Wm12qQo-bb_G8}p>
70510 z&4T@=-cMoH^o3LtsZV>c=<p_3>vCv~^CIofp)Fji_9#nXX1HoOIJ1^$+an@#>WVhG
70512 zJ5OZqt5Ub?q@InXMC>D!61{u~77O3SJ7l+se2c(-V66f9Q!Z(~EnhD62bCX$?qG{i
70513 z-oTTZhor<WM5m<Omn+F1tV?J|&^cPQGQVWl+#g3iq96nRt-evVI*&I#$&gVomO52b
70514 z98yPBrFv9PRinn#SXGyIO=@5sP}OAV(?-?ee6Ld%(~Z<s)u(QBtGa}4XY4knyQrUP
70515 zN&{)2Dx@LwuxienHBPmr2{cLFKvQU{>O#|Krn;GC(Ja-IWzz<AJIkWY>Pgx{Thut(
70516 zN?X-aw2l6u#?wdik($g>>J#-WeM+CIY0P{3)pN{!$JKN?LEoz9={x#fy-4S%RLx-y
70518 z8NL9a%H>@MyuX0;hKexGpmcz0F-H&Jqn+?IbG7MX)@L{yybbOKZ;#iLO&_}+^Y*k1
70519 zfBzJRANM%iPFUUbInJ?<P8rKYxNeSh)KoXMO#@S4nwged&-SLX>1KLzs{Ur6DK?|b
70520 z2o7V-1T#gB>1LLhYZjQrW|_Uk-eOjoHTFh6>Tyn6L*vYPvkBK`tJz_8n|<b>Ibu$j
70522 z!Rl^ntCyW;?XkyOL#-v&Dr>a0%{poAw92g6);v4c>T4BQgZSP^d$2Xyp3KirvP-O~
70523 zoEPrr+r90kb_=_;-Olc353m;6!@0aAT;3|Xlik&x#-(kr$M7-U?qO}_Qnqp4d+eFk
70524 zetVA8;-o#_I%6-gms(}EwpVa{SKA3Y*Uq!o+4cCy&*YE%dT@DMjy;&mDe?22Y)`Xi
70526 zuo4nhe(%&2k#1N=^tSt@SRt@5j+rI`w=+z-u;K2Mm1A28mcbfXleva4E>?v1``EsR
70527 zbi32VEX&Vj$EAl{%(1;B?<>C~X{N}#hwJ6tx#seo-V=BimZd!WrN6isOZo`!imGu6
70528 z;{p>U&%5w`8~YWwJ03B*K-Td-iMQd@7KJs&oAJJ$dR=7YVVPfkQuZ|)CT}Z#CV9T3
70529 zU`vgZH?&JcuMClW%`SJbn!=X-l|DeZ%vg9&bgblXr=*#vFz5HRf-kpT-h6E$d$=8u
70531 z89jp)Zt7ONZAkZGwIOr2_zzfFty<C~NeMiBDmib(Iy9BSTr8*b;!)NuvR-95a!`vk
70532 z=4*#wRUy|0`Hz&cMk2j_%s?*|$=b-17S`D+yz4|06tv(p*y8$Oq_NH$_IS+!K#sxq
70535 z4N^8ot@Lnd-At*&!xr1z=0lXuG7MwiTTzyYBc8rAY)R`u@@yNa+j#Vm-ir2`E3G`K
70538 z1z;QcK1sO`J*DsZp>9^I6z2N1nP}dUebMmNrxIODY?t;^nsw($Wz&3Gq5||6)|5G-
70541 z^Z7_qopoKl?nk4wW~*APY-mWDp}WG?W^Fj!KAyI>S(i@JgJE@ZTeoG~+hS{bmiBhm
70542 z^lAGz&qVZg)|1tLV0Xjn?qMIVu)IwhUpuqSZ8}$2-K=p}nEq+K%#!?gmi6u1-o8fm
70544 z(otmDYVbcLgtG4zNzu&6T!*X{d0F^8$9j)pOmbcz{BWtHX@&LfoO1(#kWj-+dr8k!
70545 zYbGNNy=C<f34-)*7|606vfk(plunmP9Ud@;IQ`EgpM2y)%~7t(6@D&6iL^|l?Mf*<
70546 zjJvcz__?;hh;MbN|2-lF##^w;1G4VpQdxyR)yRr!segZI?@+W<y)SSaN>Rh4#OINN
70548 zcaNclbTMMw^HPVYc$Q|!n)^jkt}9r&M_Tl-yg4uxIHdDvwJI>sYQL9OJTE!_O6qLM
70550 zyxU;4%LB6J=zzTAalM8v?<eQgkf*9E>!G_#&UGZ`w%E-@y$^Y(g0h~-LJsaJS)cu=
70551 zyk8MBg_0Xai&x=I1J3QnO7af$I6-Ywctbe-t&tk4C3XkJTTiMP`z1%&D><&dV;}x|
70555 zz;|MVx!Gq4YfPV0@OP&v=$Ln9SC(Sg-Qq@pU*L@zwg*4P=#;!GGE&y!zk;_QsI#P*
70556 zDeLdo$ZGX9rZF@t-b2$Zp{?n0eG+4w25<jfZrFF%Yvk?&><O`kGnjAb0v@4v%+-R6
70557 zjzYcg_+P-gE;L<Zz1Yi!Ej%hUohtP;#!36hyW1o?>ojESeCPM(|9)Rq^dkDl+c)zQ
70560 z>hHv&LF+H*w;{8DafVn0-&yh$ZsD?Iv_Y5u$U0~WTafkcRbt;p)HhU>s<Btz8U8lw
70561 z**oYi(aJ4EGn0Bo_2B>NvX5$Q4h2lBZJ5Jg-9JWArsaJyPxJ}ip5e6I3ik^aZ!+~~
70562 zdc^s$AJw6WJgwCnvtKy(8%9Yzy5t8nV7nj+{(r_@z-e;Xl4+r^Lum^>n#xWd7rAT$
70566 zeZ7o(o2*WN_FlS6b_aKu-e8#=K&%-p_Y#1C*M&BuH1jNa$gV@}vT|F8IIE}J`I=!m
70569 zv`(n07ck0=(Qo<hq3{J%70ToPejEnyd4dCLt>977MkNC03&i;1tFj(>f-CFA#giY!
70571 zV##;mZ21-$zAMs(W&8Df)KD+*QIn<YY;}>y{QU|wFZRO-4x>1X<*=9otlBC3kKHP;
70573 z8tw@|j{iWQcRpL-MuBq#{#D@L1#T9&R^Yz`qQr<iYss$3kaqQCJuk6`a1YbZ8yJbu
70575 zhMkaou&c`6*B8m&CUs?B>w5BjNPXGMx*g{~QFUak@SM6q-UI0_`&Zv8J5l#i_(JXf
70576 zKczm$rJ}rBrMw<e-W_}>8q8t17jzr`XBuZOS5XOvF&xHon9N}shnXDaaG1|wDThUV
70578 zxpa!dISwf=Xcj0s;s?hM)%{T04-Ndlb=J+iawIU`bbCKwJn3N>=bIpQ5t-k>Vl~$Z
70579 zrLr&NevkLelq0Yfp!=;EA$RW-*g+ucc(>H_l=C8i^YJdYcs0tj6L_D%9s(~D_;Z2x
70580 zbIP;wc7QT{1l}MJW$iUn<@_drm?e1{^<;nPI;m$T@i#EzY!lvYF|x0tmh;ix-f0G&
70581 zMw$3&AsKa0>~HjD>y2$Un#sMkT<v6Ac@N8+Lu}cdRA-nf%1Bd)5|pdfQXbnY`P7tJ
70583 z4j-uV1lgZXS(uMYT4Ut=YJuW&SUUxd6?n5iFTM1R^{~K|0$&v<bDx&z0P$B9-dSWQ
70586 ztpvq9&Nh)!%=?OYn&p#X3rX>l-ai7%19?Mi=?|Vsr=63Pc9EZsWr14ZKL?+FxQh{*
70588 z99tQ)#S5D1-yM{>1HWgUcs}z)zn>Ba8~x>SjDLJvChwG`q&`>!!SH^8UkKbL@C_-w
70591 z)^&)lLFM1557~FOC`?JJE-N+aP+eK2Q7G?Aw)EF(wDwnPw3GE39k4SW-AG;NCYB~Q
70592 z(=9AfZlj)bJIj?jsSov)6&?3bfANzCu%A4T9-u+krH`Ir$?`1yGV?a&JeEqop+)pM
70593 zE&jn<l`H67dXN3<59qJ-H`-1+X&3Fq?t5&hW4*_}=u7&Fj?%yBq_^gSO6dZXQ8}f^
70595 zuhrM->vad+QFp=~eEKGRyY9_?{U|+JKd#5<C-hkTq#mayW5+%Hf}X8k(sT67daiy&
70596 z&(p8!`Pg@l{r;8uE&aBBN3YX=*6a0O^alN|-iZD7^iKV;KCF-WYfiA@<Xe48f2U9D
70597 z@AVmdR-ZEpyX~2%iJ7=bm?Y+TO%+qs<eF-xx~XAmnv48(DOXs9R&%R`b)~;LrJZ%1
70598 z)!w?^lf7)W&!-vw_c_L8eV=0-%MkDT91Z0A94+Ph9G&I+9DU^b9K+??9MH=6I#)#Y
70602 z?SYcOjNrcT=xBblLv(m_T6A%AOZ0HGG&VoBA<-_;D={=NEjiN3&zW9jd6kXT2Ih6R
70603 zVpqEn9cFgS?bxhi+m2m3_USmNV@by;oyOc&GVI`}37-x)Fy_nA$3}j?;Y{dE%`*jO
70606 zEnQl=wsdRh-qNF`r57R>@-8&F(B?wd3w<vXUl?;?>V>%%mR?wUVe5sx7mi*iEsK=p
70607 zl{G1AQ`WVtZ&`8Kn6jy5bIX>Ntu5PHwzuqPS!sEsJg>Y-d7JXC<$cSG%g2;YEuUMy
70609 z+t)32$GB77x$aVTt-ICT>-QBT-b&S*C6s6P3>J%LjBn+@#+lC&Xempa)wGT_(iWCB
70611 zA#-Vm@lG{gcVVlztGPu5Ob@;jF+JJNjhbGjmx`I*EZ5_vuj#82rl0Arl4gh*rmC2S
70612 z*|x1=9x;!oJTuyiX3Keu8K-KSr_BUa-%K)-R6{d`ZQDj>n)#Kw)XX$9)n#Uud0jO%
70613 zOU&<8JM)HFsXCaq%{!`#S!Xt=o6RQnI(wMEnyr|TXS-XoRa{$OJ%$4X-h}TUu`P}B
70614 z2ie}yY+c9X+=Fq3w_=3B+$QjLfp<v!UD&(R+$}L91rC;{Zo=N0<|gcO$>-fApKAm<
70615 zlFv1gj|b!OEa2l(hsPy{fox3xUMdhV<K^zXW+I^E^C0#CWr#OYxwcqq#Q!-0YYEJg
70617 z-J{r*lzkec87T1&sH+5G?(1<WVXWi{_!vX4HWvwAy*%HN`!xmDllYnf+e=J)Y0));
70618 z-Khen37)13oF>?sDsY-S)kEsjDvP@YsY10?ZP!iUjj$GNtM;h_;*p%7n(CA~!&XLt
70621 zS#8#uKbd#UM)RK8!uZ4*H+(<uxXb{^TRI$0am*?1E$oU<V(DSE8`fAI#m=)-Rlbx5
70624 zry1;#&SILy%)?^#47PGu!P;yE$FJe@4gSo~9`5fW{@PW=-Y0fv@b+dXgzw2U65kzf
70626 z6jCSI3$Ml4_5Nf2KQuL-_TWVVYf1WR<bD)5ma>u(J6YgFN!M23b#i~IpWieu9q`Or
70629 zF?j-ggT1gYUyof8Cdw?I=DRmZO5kpy-!~KezM1It4L|L{iv-q^^w-FJuWu&$eKS$|
70632 zI}L@CFk_9Cba>x2PrjRi^o{v`HIZ0f^HqW51BrE(`wVXf!OuU2**y-}-v@hGy7J6e
70634 z@?~r<J|g44kkXnhxHrWn*Vt1+=8(KJUOw1$$k0W2A3?17ul)4syU6LcmgJ=Vz>=-v
70636 zFT!4lZyQq$%xGcU4IIYx)G}w7$36wV$Jtv}C~EOZYT$d8;-}y$AzuK|@*QLE+7eGj
70639 z3TgJ-u@hStjc-!iBT{MzODL8&B9Z1mZ?OLjUGbjAw{pIL&d}#sI%(-)SGoVO>>rit
70640 zm-ka8dAWP}8n%Zz$&T_QrFh<BHJPESDSKCWhxX%DhI%W~dY)%?Oa))G@_K=^*_Rbt
70642 zd4e3lq3y?bUka__d+;Gi-GY4w?>i(IIZXZ+qp{sZXIMW)(Zcr$Sx0!0%oo;@FObxi
70645 zex<B_rL2A>=~t3|CFxiCQNL1Fzj|0ef5rbp**_}PFYl*H@^Y7aMQ-Lwe`|mI<~sl1
70647 zd$^{LF)r3|Ex!RpQ+1Y$u!{j(2y7|vDuJy8ju7~BffEJ3An-+ja|FIAaHGIY0`~&y
70648 zO9V=8x{JVj1P&4Sm_W%vuM_y5z;6Ve7nz-w9swV7##?hB{8UqP*m${zSBtvPRN0+5
70649 z#@O(1F%dZ6R%cqw&&pTag!(l0Y-2fdmDu>`ds}GDNUs~|S0hwoNxxb`HJ0=)WMwt~
70651 zsw1>!=p5TX313cuvTVJUt&fD%BPlgV$_fp9t-Q5AF6hAr{J9uX-q+JBuAE9&IsO%L
70652 zsmWa1vJ!1RROy-YRie^W(!Wa6dBxMiDm^`nv6II#p&k3}1GvP=?9D9|Pi~)|&f}1q
70654 zPmtwBeoQ>`#4TK}m`}A$RaLI-G`8ml&`jD+DLvR6vNq|Sda&MPI+z}~Lg2Jjf5gQe
70655 z|L$ep9g@Yhj;U?(O-oiUd(1&|+??Tjy0Hb=)Qq&cS-s78Pyt)mSOKHOy2e=!OYT-?
70656 zDm77^%rYIKl-X)_nS=Pcx)rmkTlG}2XsoZLU3k+(sh>-~eCxM#kWklIKD!O^gtzeU
70660 z_lu6yKK_6^hf26tPU(DIsN3jHy1VYf+O$x0psjk5UQT-|VfR7c!S6L(VFnH{1(jkv
70661 zE--$J6yEOPIyw|l<J1&dN1JH}wE->A3AWHWc_pi!(uzE3MY=t`Dq*=tB`kY%Q%~sK
70662 zVUGj(6;UyARNZL`bIAZTf@yj`9U<?lM_wzm$U^T-v%FJcwG7IXez%;}&z!-+yggHo
70663 z!3wLK()IAJy!MI@$Zd5{6V-<O=KZV%PqC!+zQ|OpMpIAfCmtU8Jy3yLpQ8Mlk>98F
70664 z{j$AU^zmz<<O^<t{aR#QDOY4cnmR#&SZCIc`RWjJ*8gJfec+-<&b;xi>YnbNo?(Cy
70665 zSwut}h7l22MPyw>&aj9qi-?Gb$Rf+K2*WTl48tE0S&uV{h%8G8F`lpI8RP4Dp7D$!
70666 z#`8SSGsbwXaarQ)8P9me7~^@y^E}Vjc;v0FndzCSF3s-!dEejX^NaJLt$Mn;>RZ)S
70667 z&-1P7`jg5mV)9X$R-(`@WW{@thC9F<N0$2nGaB@ss{*iie85}Ve66d<n`623d?mL+
70668 zd2cHe^eZuviQaaHbAWs0*#Y_S_*Mk9P#l9dKM?oT8E*|Sd0qY%wu15X3jBJ(Z-1j1
70670 zUbfxe#>`Q|D{CbX3*>p)@;V<0ye^-6fw`oFxugW%1oFv@3%~+&T>_RM%bo}Fkd0jd
70671 zRv>%33Y4MiyYjpYP>J*b2iAhMC}a(&MK-w()FFut*ibx;pb^RK^0#x$PbJU{n!PMl
70672 z0-M2Rboa}sO|baXH(s8zg3{Unb|7~@=tuF$D|7`g42F^9Yv5~MJ}ZH*gRi4!_kz91
70676 zYw&BtTu=o-d`SaQ4<GW7M{Yfo&lWU510y2cEw5xT!byl_nV}iUE%KQnFcE2V2xq_~
70678 zku}JdSGB<c6ut-+q1fbe?08rLOHlZgu#^$tD!2+s%3v9~yBe-WPgTGQB(IeB<%eq_
70679 zsvGb<_#V3ZK71cN^#S|<g|CIRD5O<B(*-s_#DnC$cu^Q9bRx7(unC21Mm9)?S5b5F
70681 z{5q6ZE&d_=L-gz)!9POr{4x9nx_(nW=Kxu?1L&!P@F2Q-2p&T6!|*VA_Rrv-Ayh};
70683 z@JA^86?g^3`6>Jq#Xkx^LutvU_X+ZR0`%-7yguSFM7080<|pW>r|>BX^KbCqyewLR
70684 zzlL%>c>!M_JpV4w--qLH9L4z?_!~xGC00UL9Xo;1uo0|0hh!2v3Aq#4S&SsF9z*VV
70685 z>>EfvpPkQ$?3?VH$eqDvpu3rDCT5Y-FdOHUUZ*^tISy$!jjWSU`}zDM3vye9s7)SK
70688 z8+4<qr@!2X^qk}^FIn43xYR^kUK)9?6ck1-DUTi!a7nRv4JN?-98XEHxQuvQMjS39
70689 z4wsP@{sH_0RHshjQ&j#2*GIXGI9x^=PhXo|h-{x8uiWrh<3bNFK%8Jm>0<z|)%El*
70690 zfR|bM#y@1+=j&I<zO_o90tEFZKu})-1oTJnTuY@dA_b)v7SKP~2Xa9<vMJrjDjY(3
70693 z@?HEOe}F&9U*>P~PX$Sc6;g#<p<J*F-NLYNNH{Hw3U`I)qCqr?>0-WEDZ0ch;x6%s
70694 zcvieB-WSKUMy*Agp)J%_Yg@Iw+CAE1+Vk4$+J_R9BBdlLODdLXr4FfI+9!=j7p0rh
70697 zS)NxWQo>0AvV5=1^D_q21|Mdlf_bTe*{EP%s$e!MX)IMR2g`VhObC$Wd1WFcoD?9-
70698 z_sV>^@L?`gWZ^+F7!a-?NERL>V*|o{DM%I`B;x|YWe3T^gJc>?I1MEnPYK6U!U+N4
70700 zfGp1|6Di>&CQx(w@cPGPiWR(^g11<~%PDw^6}+4hf3bo$SjJOiLVzsKD-$W<qySmI
70701 zSLXToM~>Dim^BLKwF+j9f_bfiS)-(}R>2%B<0&#BK$ho~iIi|sfGpoD^ZWwGwtSd*
70705 zvV5=1^Yf3f`t5{7u@e%-CP)-rA1vc3G9f?~tiyxDNddB8-K<kEuTn7U6wIp>%sK`0
70707 z8BdW30kS-=Or(U90%ZAKndj#pP50Zt5Q+^9q1eC>iVX~w@f4X5APcsE!QrF;Sw0hJ
70714 z@hFc5?>Z=RraU}C!r~DUfX7ByJT@ZWu@N4RjqrGEgvEO`0z5Xt;?WOY-rE%AVJ?`9
70715 z-1VRy;dTQz!YYq`Xz=KV29JJdz=z;NbXOh&(csY!4IcN<ct?5v2lyW-PI>f0&f#g~
70716 zJ_F8pM?6@(>lBMeURiJne1fh&1wTb0?}2;h`b+RjgyA2-KO*@<@GI|^U>2I78Rg#s
70718 zYK4vH>VPhEbwfA0Zo;FIo8gyH$RRj{-231@bo~w-K^WxmLKct1u;{J)5RU?Wimso*
70719 zF?5wjV|Y9o!@^&~-!LqCPce*u>QWqfTM29;y3RsxPGD2m*O5DoMYV*<0u`us^nxQ`
70720 z4013Xy5LdxjLl|;nJ%t?tL8em-P{@Op(a*SrWw*)=S_S%U%=b=e*PqXPlyxBg+0O@
70726 zAa;$noEfa`$Y->wcSXJ*0Y9syzG-bxiXxG!;C;Ic=7qH9b<~<dt07t(kM5;)PNza5
70727 zQP60;b&bIc>Sb|-ytMwltnTV?oFT7l6(LlF`j?>8d0Pa7?bv@`YxCD_A*jat>$Rtz
70731 zMazQTBulkL%ZRthQf<*P)f;7BX^WOo-YWY_TeJ-4j$=GK+4yr;?#-R=jz4$hO71-O
70732 zXt^s7$ek~gI(Owkx$}g3Rqo1(-1(k(dG36<V7<1Urc*UREih20YCeZf)qF0Us(EEQ
70735 zxL6Pi-T?0cJ3fb_AAAiQ1Ai^gSiw6mjDnxTFnNv$>L)D5UrMbgj<3US!qe~^e1y`_
70737 zc-}zI$a94>cpebM{a6Y24Rv^qj~37Cfq0${#4~O@eLaY9`{vqc@GKh+&#&R|3>p^C
70738 zf6<`)SWv%dI-Jgkcy0@e=diHec`Nb^6c*1h(coDj9G?B*nd{-1uL1EK4Txu3$hart
70739 z9xuS(^&#%l0^F+vLGiu=QSHFJM*x??rN}M!Apu+lmmzl%-jjMcT#npwe-hySB)~mM
70740 zfP0bvHbc~#mro4GGg##FlLz4-a(@GU!`t@*><m<vEbjHm`(n>V?l;)^42wrWOiZ0J
70742 z2tSPye%dR-n<(K;uLvJc2_OH8@McPQGb68BiNt%g`oc1di}9=rVpV?6*S%&uhuOrW
70746 zK4J!#51CEOYGi-cpf~U?3RB6nF>9GBrX7`GHS<0yw-4|RO|{HA)Q;*ID`R6C83*HJ
70747 znwXE72J}Yrncru2FdLYSOgHmoW-GIe+0G0yUuEo!ync5+-f1Mny8<aZVE2$I=sixw
70748 z>j>plh4RjIzWqd!n3;HGPYN@enZu+qbD1|#JZ~}?%mU{3m_^K&<aJ9-5!1<ZG4cx8
70749 z9;TP+W4^)+b7sz>%!-F0@}8;_81FxgUUQaj7gB^f;x6qX?NzBlx~(hI9nn3}C+X$+
70752 zLR2{o{>S6Kqz2<+0`jl%mWd}<B1RYT5=>JFzrmZHT<-b+x4-ly0+GR+GZD)Tp8bIE
70753 zGdeFye;z`-u?FT!-akj)14F_RJ)T3xV4tLf^&^$z4aaN7ji`je(Ek!{LE-3Xz-!2V
70755 zD#5V{IRBpap~WR6V-G`dduo>UrFA7nc`hWVJ$S;)@p@{L7}SnD;r(@XiuWnczgO!7
70757 z@>`f;<^Z<JQCJftp}zsIAA0>?#r{dk{g1qU-~A!%pRC;9;r09O4`P3ea=*{(_uc;(
70758 z`===Pw|o6i!Si`ge?*`jB2f1esJ}v>?jultOrYLQpdKJl_Y$Z-`dp~{3DjR9Q12j6
70759 z4-%-i6Q~CW)V&1ij|kM;2-N+b3-t~H^&o+|k3jt~fx4GK{SkqB8-co?K;1*2-toCm
70760 z_YtT+CQxrDP!ABOw-KoO3Di9V>Kz2?tpw^mHEM1V!X1oyJArzDK;28A{)j-`L!jP4
70763 zNe360TyTpi1<z1@3P!P&KtZ-qQj?HvkZf~X<rPs(B*;K17o(J|DCKTI>NB!Uku9HW
70764 zGbmQ(0?N%DRH`pftPvni-UXP5m8|n*%amj3MzQQcv5YWhnaj*|<}UM?h=r_^ayb^D
70765 zr|QsC^1fd?nf=UB<`nT1S!cF-Pj5&?y~%vkLaI@JrvtYSpp<@a3|sNNNy<H-#3s8Z
70766 z2goM}$YTQJF#+-^0dn8lQTDlDQovn*&qsVJrR!|^;gDm7OQ8?Kd1Ks!jEIuR*w+q3
70767 zotY%}O0P4YP<KWp_eK5h+ZFXczbESd?{-9$d#vo2{~z>N<^K9KFYld(uL2$s^8Hiy
70768 zSf?qHz#eM?!XAh3`FgBz|Cf5K@k}BPDUUkHe`egTFnh-#;_=ml&?KP$EeiH1Br|(^
70769 ztTRvyi3mjk-c5zUBNqus;(0!>$C`-$pNdoQ_gKxU9;+FTfFz(+Y{s!oLGhR{4jEMf
70770 z>iZ<1^y1MIW_+@RJg%w5cLh9h!r;4-_f1U2`==z~@FFVXz#eM?&TA4%S58yHDTd%!
70773 zhw1peSa2E3X(r%3Xk>|}$2t}L$?2(ktR9)Xd(DghG@iE`gKIs5-vN)y#e(XC?=1xP
70775 zcw>@L#s8KbYdkI|4}v&cUUGc#xQyg>@41tRQ!?S2WcKDjejn4l&-?!Q+u`s2{qCRo
70776 zUjp;-Tm5hCf9vF1SKhk&){7itPGU}0PDze6XH(8_&f%Q1IoEO?F6I_TFP^<PcX7pH
70778 z?CfY?a%9Q5CD)fc%H#85@=`a5d3hU>^D6V)dA)gi^F}u8%)7MVRNn0kxALC7ZFt-K
70781 z7v2$#S3kUMyt9cnKHiixf!S0z!LZ3SA!b6-g!vP4CzMR6jy?{|lP^rZH8}!XNxA(+
70783 z3pN+*DmYqjzTif|<E7%#*rjPp^OsgFZC%>8bl=hwOD`|Iv-EjkSfQnTb75v-abaCy
70784 zSK(0Mp~5rkBMPsspI`W38C({%EM-~F`u)qw*I!uXT>oI%mSww_9b0x`+0Bl!WluUf
70785 zi=>XdMR7&xMFk!AimEs0i`qBLF6!S<QnY_Vd(p`ayNj-DI8$_Y!=0iR;ZkRGXYz7m
70786 zXVLP+PWSSx@Tks1;g-(Jowt^kY~+?(!_ziqglBK83@_T)y>V#yri~|-4~JK7d>C%)
70791 zrD^L;rTOb~ORLsfOIz3Xm-ekcR=RKf)zTB|pO;?li0zo&kzIPHqqg*UNAIezjw2ms
70792 zLdQDpbUa;U*$}-db3@jKqR`tL+@X&)?A&l@Rq=+)tLj3>JGn4@XJS}%XF+G>s;<uN
70793 z&Y`fx&J$tjoj1aAHZmKH8_i+G8}q`dHrm4M8wbKVHy#h`-FPi*=f)Rd2f~hroejGZ
70794 zb~EfjRMw>8N!Cf-QKeD#s4Y=@m>sJ&uiCZh=&JLpZmfD-CYHsPrIqEERh6}t^_A@_
70795 zJ5hGI>`vKp_o>xkt1YWDR~N6YTivyKsHI@_p%&-rGpnzzeozj}qgrm1r?fKVIj!dM
70796 z@^WYSmh#=@$65!<FSH&nzu9`N{K*<=O<Y^tn)J4uH3e;TYpUD&*0i@BUDMw-wq}3Z
70797 zvo$B%W7b@0U({aQUbE(Id(WB|?T0Ij?N{1ww?A3WuaBxoT%TEywZ3Y-YyIZ+!-hla
70798 zPp-dIQL_F~g|#E1!(uqmk#9KPVei;fv8iK!$B1F9<GSH?$GG9q2GfSL4Y?c2Hdqbg
70799 z8~Q`_8;*rWZ@9YQ-iGI)iJh^b>7Ci3Ii0nk#htyORh>sd?VY2couR#<J3|kI9uGYm
70800 zB{F>#LluWA&Qx5jc<?TKH|pIK*S&Xh-YtLE`R<l?cfWh=-3!f~@7`?Q`|guUsWPrI
70801 zy|TcqudH^@u55RgRQ6ZyuRK|KrSh)(Oyvvrowddmac$z-thFUAMQg1s?zNj*cCH<6
70802 zIkon1%dNF%Te-E@S`*hkY%QqbTAi)ktwUAOttYBxx8A7AZDZPuZRWQ0w!Er}Hd~de
70803 zZJ=#m+wr#ZZP(iFx4o$9X^*Sg)1K2_+FsY*5z^njr~PQv@%FLyyY0``OCh`0r-U3@
70805 zy}@Eg+>mcb-(WZ7Y#1~YZx}ID8SI8mL$6_{;Q;ed)y1k?RZrj3zh`=He$%1%3Y#v!
70807 z<^$D_nlHZ3H$Qwo#%+8*)t&x+p1b`0N_W@$ZudU-argQ6d)@cn-`iq%f21X~C8wpd
70808 zrLLvp{Yx!--oM>)wq>m4Zp*V)sWqlG<^5-^#WjZ3*4CcZU9E>(Pq$uay<KB&<J+Rz
70809 zlG-xc3frpm?zYWs!)*uKPPScYyV>?g-`yUeA84Q7p5I>4Zg1bD-_yQdf4KdE{$%@u
70810 z_VM*$>rLy^^cU8b>94Nu)ZbaZcm1*T=k$-)-wR<n^dW|h*<B_T;2?IH6!c8BDK
70811 zl!R1=I77NZ`X)Y(lp;+`Urky~eoa+PtFyMI&)HkE&v~TgM9t-zJ2lTg2y2S{z|xfc
70813 zb7XCKb4IPRxw6^W+}%9Xe4utq^TpcT%@5s-+vqmC)7_~2YLB_QYA<-o&wb5(-~FP+
70816 z(j5is3LMUL)sCTc?d$s2?RVT-chbqNyW&h-ch_04?uFA?XLJtLB|1;kWjSxul{7I;
70818 zuIpK|)Ev{C(!8jiYp!W-ZSHB_)qJ@5bn}(w+s#khygSOB<j!;#x~tqS_h$F7`=I-z
70819 z`;z;n`%w#QiD<D%87=uO6)pCbO)Y~h`&&k&yq4=yY0G$PSgWZutu<GwX|+nO)_!SI
70821 zv@TJXuFKICGkx{Z^|S3#eXc#VzQSHw@3ME)_t^K;@3Eh+KW@KYf6-y6zvW1E<Ty&}
70823 z!ltSwmvx|NxanZi$)-z9H=7>0pew><am{z-yDD6E*CyAXYrkv6b-{Jr^}sdW9M)`V
70824 zPHWC>E^D?ncQ*Go?`=NTe6IOw^S$QhZoM|nJ=>k_E^*ho+ugnH-P#oQ8EvNfj{9kg
70825 z*b?26tj%vJ(w4QjwY4ofTMo6HYPsBUOY3gswB4<V+JV-B*2-3=c2Db&_HgS7?a9^~
70827 zjaM3y8lTvCdz3xNp4qU-Ue!=)-)tYYAGDveU$Wn{KWeZ!A{x3K^Bwt)3WwdX$ua2I
70828 z->}nh!ExR3z%lL&bDErK&Rl1i)9UPW_B;1Fk2%jduR8BJpEv27Vw+|+WjB>H)i$*^
70829 z^)~HpI?{BeX|(B1(^Hq|igqQtvRp;3YM0x!#kJFQ$aTuoRz<!!vN^Fiqq)G-R>g?s
70832 zdte)H3~Mxjp2l3Tr_tKj+1TH>xA9oxxyGyDc;j=s-X3e8ZO^us*lX?W_FnsL`w{yY
70834 z6V8jy8_tKGw%U~5l-E?=WNYg3w^jZ@(+iiu-&XnOu0BC@9d(`cv{fOpIYuxyFA`Gy
70835 zZB<y*d_^d1ej-$O+Nxl6R|)Oz&B7M<L1D;!N!aIpBphvt5Kar1gzLgR;i<^sS+`R$
70837 zThpw$)-tQr+G*{#?ghEl3!uXKz&hR#)?jK#YshUV1FnY7hW>`V4aXYJHC%1D*YMn?
70838 zx5e6K+p=vXwpv@et=G2OcEonZHfp<Ld)g>AMmHumW;GTyRyVpEw>0i-Jk)rq@p9v>
70840 zn&ZCXh0~xhIa8fE&QfQcv%}fv+@qQ8Jgdoa-gQ1}lA2<gQZxlk#hUV_R!v>guBO9H
70841 zr<<-c-PW|ac+F;4l4j6V=&EwLG<#jcnj@~0np3Wunv2a)bFJB;x!attdBQ_JjF07$
70842 z`3<+(vzqJ=AyBLw#pksqYNEhq{V7d)?-`;kv_hr|YiN-L895&(}xQC)F>iFRrht
70843 zZ>{gC-&KFO{&fA7`rGwSth_bKnq<wi7Fw&UF6(CNu=Swzr1g^Zru9(+Y=~&EG|X?v
70845 zwT<nKy^XsYk2IcX9BsVQ_|z`iqwUG|EPIi?+U~Y*VRzXN*-zOo+i%$)J2*!qd(e@=
70846 zjyNhEPDi(6$Z>!@=eWp@Iv%pOoJObFneNPUma`9?UF-|zK2CC;cV2Ve=c1YnoTVw1
70847 zOKU3SvYR@%qNY7uWz$*C#&vK#+%UJFJI3^_%LdWwtgvF;;JW?mM%G<ecYWQ1b>q-p
70848 zXQ`WCmygSBQ{7<Q{<@L63w77)9@LH3ht-?v)9Q2U%j&K5o%Q|od+U$YpR2!Gf3N<z
70849 zRd0>8&bDS-ORTllc5AP7xAlnijCIs{$NIEEY=~}1ZpdmVYN&2-H*9Ix*>I@gRKw+l
70851 z=Nqpz-fw&X`|WXXw>`&RYOk|**!$oi`%!qpJ_gU*pE)E)j3dRd2#z^w;B7|_eB?On
70852 zIPJIs#~n{ty)%l9c4o4P&MG$DxtYyz9%PHzD%Q?+vc2q1Y7Ip-sn!UhYcoJ{ZFQ}?
70857 z-uR$#+#Uw@+ta`?dl@)m@3i;Z_kzpzbKr*k9=Pw&gJ+J}kav{82uC|K!Pzhi7Qk{?
70859 zKHuaZUrdlM@VONH?a}X>6y%#s_+Wr9Cg@&F(7oUkrg-o9zc!YE^8q8Z|A~M69{!vV
70860 zhfmp-cccFf5I`760_#8nuz^Nk2M*xEGxl3RD`*4lU_ICXI>8@+&7cqL03U-vFa*8|
70861 zhQS|$ec+(HBOLfPI1Wa@32+kp1vmx%5}XEq1<v4IK+l7V^15j7Bk&pcG59-h1Kb7o
70862 zz(0Zq;8)<E!M}iig?bnQ!%%&Shh~_7=k+GS8Sr&fzviGC_6}SMm%-(5C0qq7;JdIA
70863 zu7y?befR-f2OD4`bigL)f-SHOeh4?o^Vi{KxD{@Ly>JH{f?tJy1iuLn!2byk!9RtE
70864 z;h)3f@H_B?yzd<RK0FV9D6e^zS3JWX!)x$5{0Y1P{~q3i{{U~ppTRru=kgkL_-pv@
70865 z@HZ@ES(amYR^G=jnw{)jRqt6-?^#jrSxuk9zRu2O=dh{lTsDoJ$ELGyuy3*%>;g{S
70867 z@pwm5GhUG&FTXS7b^#Z<%Ig_Scs)ZrUh8g_-y(9igLdRz57wi*8^8t>XD8@Hl8s;^
70868 zW5KK6qws2e6W#~a40=EhGXw8{nt*pejmN7aEMNc(pzFurV`e(434`dayjngU?-FRn
70870 zNyz<I;IEKeUUi><_Z&>Xdk)6qRT*Zy_TGfo-kVS@`w_Z(1zbTfe+E87VSWsLjKW+4
70874 zPG`V1a1BBw?+6f&+DR1(FYj(T9oE1agj3$*)QtBywV;->4&ALontKx7>C}XGI<=tI
70875 z)QIE`=s*&A*V8Dx>!}&FFBgha-urYa-upBG@8p<(THJ@|D(^C2MlJ96(NppcsMGNd
70877 z_p2zRyeDb`+y}pb%49#>k8=7=_&<?E-VN1+TJ@iznB_fDO?Xe#7`)qr8MSj%(@<Og
70878 z4wB3JqgwEO2PVAZq*-qJ=<W~U50U#5_zAiz?|?cT?|?c5?|>SQw8Cd7Jkks(%vE?5
70879 zg}DZ=A<1=k9Z7xye}cl?fH#mEX$%w_(i!OP&*0CH<PN-p+&_muM`3;me~EG=@24;o
70880 z?|5OxyQC)IT~aN0m(=Nam((eEm(+NqXCPxjx`t)UNZ)Wwf~<3pMBY6$9%-Ivbe+sj
70881 zMt7&MQ_vM@ArxjBI}L?Fx(K<=teLUk^-u9gD@{iddF9SDq@R*dc%-9{MBcT*j92lP
70882 zWL?EfN7`yGlBBU|NP@H$a=*d8f!y+5tWkI`*6Dbcj(Bzfy8zvlcj>Tj%aK--=NRl^
70883 z49E^#WX73dMn3<C_WeW4v?Hz62lk`39l;z#k{le?jCcSUR+h_Ogk?)h$}NanOd-OD
70885 z;Y}}zNB-JQm&aqCL6gT2;XNx%S^PDa%(J|HD2|!$%{x7h=9iSanOcTEeo_l_nAiVv
70886 z%tSOAZ%=`iir4w{`wJiE#J+7``fT~=O5>^%^4-<)`K!zDnm`6yOBP#84qHnNwv#+w
70892 zq$95~7qDKug!JOinNQ#^khc3ftnF?fZTIiY-(#(In*~UR{S50cd5!2B%s(QHk_oi3
70894 zCsG)cTq6^I3y+d_k5Bq9W>a#_PW-~0>L=hQ2+7NsmAqax$;+?gz2%esgDgvK4>P|o
70896 znY{me60C;R=<es?Y4y;`#Qk4oYdx?BVf(M;Z1O(#N$^kLpP-mu#@}Qe6!!&KoV<^H
70898 zi=7z6{o>d-ChoT|z(h6?g;DcBc{O+9e*qhmcWz4z;)H!58Zok5P=WMp57+~aBdu}^
70900 z<@RzT+$HWd_e^8Zm^B%iB2BHPQ!}VJs5z|})7<A7K9W!7v-vXK&Tr;-@kjad{0;uG
70905 z(#aIOaYWv};+4iw@Wv5&^WhE7Tc09@s$5JX@-{&I?(kLRTao%*kYA97ywb@Oywixh
70906 z4SJ<96ui@jy!r43=WV+pg{oYbh`fD7{kApal}@6(3lovIuXv@CDR@mp-aht9V<>n{
70908 znaJA?MXJVYCi2#&NY(GcOysRsk*e{UiM(x7q%^$2dFxT6P?d`WB5!?)RE;-*$lG>B
70910 z-nJ@I8s6Ysc<@dqa?z_u)ySq3x!9&i)ule2$i-Ggszx@Q!0SU6jMsxKk-)o6k*YBy
70915 zJX?~M*Dh~g-n)GF@*~U7EFWEdhstL^R-`nJO5=PapZzM8&-N=)8b_sZK9bM+m^O{`
70916 zk$l$ATxlGY#`#D-`w^AT4pI5+4n<1is5H(;@>w5V8s{VVte?5kI4X_vk$kqF%4feq
70917 z<+FW?l*UnMoR8$QKD;!}NAg)ebER=q8s{VV><%iQ9i;Nv?TVDfQE8ly<g-4!G|orz
70919 zZHkn}QE8ly<g-4!G|orzSwC~7aa0=TBl&DEmCt@e<+DACl*UnMoR8$QKD;!}M>5x5
70920 zMM`6%G|opd*M2H<-Kt1wY?Q|NNRH}fqcq-0<9sAX?V)ni9aJ{z<DE3lN3u~r@1!wI
70922 zN#lGZm-Mkl+Du}SOVU~6|08~wZ473J+57mT+2{SEo^PcJX>XMZ`EPaj$3EY>D_qWz
70923 zggZGYp7GC|RxvYYmsp&0TCB^tEp{#D#i7MX;-STb;+e%R@#^B?#RnIk6dx?UsfD>v
70924 z8<lIxou8YZTak<SV=m&4xg)t3a<At;$Q@r2w#2j~ZAtEuvL)6folE+c>|Jtf$vG-N
70926 z4}F}E#-T`l=)+6nP$WO}GeH{Xqj4ybAMQ}3v@uK?ha&l*kMq$u6v+>LcxfDp<cEGH
70927 zNaK7o4n^|AK1E6!!=!O2k{|jwAB{ti{LqJ&#-T`l=x2g7&PU@=BtP7)NNHo3G!8}b
70929 z(%2o1Ly=6-H(E*KP$U!du{#=vA~~O*-O+d)jYE-~uSb#6Mj&Y%iez^_3^Wc!vb!Ed
70930 zN@Hv^4n?v%->4#uLy_#xhk?eSNOreXk<u6&jYE+<&d1nj9E#*|bjIf6W;6~(GBzJK
70931 zqj4yboB3E6jYE;#jLyP*e2ZKK^xw{`=5xW^YW|RBZ2k%V_}iOizU<9B-u|Y|KMMEe
70932 zHU9CNF9b0o&NC91Q72So^a-sQM}@wOF=1cEGvUO77~%4QMZ%p0HNx`+Jqva%I4p)O
70933 zxFT8>JP|W9qcW2+GcyY_tHk2W&0<~V!OWAHmojf=K3WJDMu=St=ZixND;C-pZdy3F
70934 zaR0)Qg%=iHU-)3*cve`JDJv~2H>)hmN@Z3bDN-6+qOlK>S@}lOXzYVzRz9{wV;>~5
70935 z@^L;I`yiQ>pF`2u5{-S3%xZ@srH!W1*ayk1d~AuvK1gQe!%JfyB(w5!C>mR$u@912
70941 zIeQPEJo~I?OlXe8Z=RFF@0wH0ADz?6pP#dfzcJ@D|9H-AK}_X^*wm!d%+x|5E!8FD
70942 zrw$8MsV7q}rQS?^G#3i3b1g#O-2Ax}bM13C%^jS(f9{B|Z|-&B#N6?;uryOzT3T*e
70946 zD!q!7Hm*an<|I?`u@9OxCz*;5FU^{hoTOKg(s%~Vnv<NwH-ba6<|HTa@eG<ZC)tOe
70947 zXV4f0&6<<!qeqd_MrCN$oa7lk3^Z#_@{AruO5+YRYfkbE-$)D1nv*=khk<6zNuIG)
70948 zk<z#W&6<;p!p9wG)|_M%bnf6|2{da?at9wvpjmU0CHVLN&6<-efzAhfmY-(LNz3n(
70949 z(smRfE&qSQ##;=*R^GCQi?N*bk4a2V;r321=0>Ks`bQ?F-_~R#@|vQ=B+uwXqDyly
70950 zaaeOY@uX%f@uuef49GJxEPUjQd_H-GozI>zIAi~e5x#83b>2Q>oZp;eN=i%0O)5*W
70952 za#nIta&@vhc}w!n<U`4)k}oIUN`5?xn-w`LaaP8xf?1WboU^)T4b3_*>%^>!vu;pr
70957 zUukxbw68u(O0$EceWhDcpUtG%LDFXWq%=E7+RV>s2V;waEn)0!cF|Pc-{YO?V$V$-
70958 zX0J~@>F@W(S-8r$e9j$b_w;?^Q13VHI(Iv6oO?FSq%lm()tIMQH5t?THAT~oX=<lk
70966 zvfY!c?9NI3o<7v1tL&pm&pAFimWzqb=2D|;xxDCJt}^-v=Z+rbdZV9C7AHq@dnadc
70967 zBa^GSOOv-u-Z}Zu<WrL`bGIiy=AOkw#w5mM#1zC-#yDfTHHMf28gtCWm>V$<r!Z5D
70968 zQ_NG+H5pUNr`V=+O&OT7Z_4p0=cinoa(~K;SVL@FY-(&yY-wy=Y)5Qg?4H=8v1en)
70969 zV(-R2n<`C>nVK?n(bVFpHB(!s_DtP1_3+fwQ?E?DJ@rW(9~Tvu6qgxS7*`eNirXAF
70974 z5!GyW#1?jE#3A-b#AWte#N&zF#7Oq~#0>V)#7d5z*gbJ*;(>`LCSK%XCO+g+BaM;f
70975 z$n?m($nr>AWEYngxsR)iJRf;2@_yut*9@=4y_U+kUn_mB?zN8B`d-`f+R@j}zBcyS
70976 z-PfK)Nl`ITDN&1}ilb_xTBCZRc10bIIvsT->UPwVN&KX!NlBA3ClyYrn&g_adD8Ht
70977 zgOg59x-{wLq({*(IwIN<JwG}>x+2;hy(xMydVlmt^o8i_(GQ}>Cx=ZoO-`GfJGqRi
70978 zPkR+9O-Ir+5vfo8tIlXTlBS7B%}Jj>?AMVrZAjBZq~@gWhD={cMxPT*pZ)9ChBUoL
70981 zZomVf3_KNThNGc*@Ls45j)xAg5uwLJ&xc-PlR{sxi^AgA(y*Mc(y+R)j<7z~7Iu{F
70982 z4jT)*8}=+*3Xcg-317tS46k92g!hE+3O^ivI{Zrb?eHh;Ib)PD$(U&@G*%g1#?8iI
70985 z9hn@N6<HKn9qEqT61g+-P~@q|%T!IYO_9>H3$107nuxx>fj-}kKC{lRU1)lQ*0M>R
70987 zPuC6fxmfhCmh^d0bnX(+vb8SY(hh?j?MY9|mUwVWN&-)%La3Kq&?F7R`O-;PDBXlL
70988 zItV*-7TtVZJ{-{5;Q`$sJf$1aUC>?EJ<yHAQN0P?)932T^j3YRzF)sre+-W6ud)&P
70989 z=OOx#*pS&F*&!t%wQN#IZ^-VDBOzx(Mnmp|JT-`hXhX6g%TQ#fHn<I23_A^n45tj2
70990 z4Yv%BL%Gn%(8SP;(1Os)P-kd&=uqf^&=a8-LvMsW3}eEKVdk*(u)MJHFk4tx*g)96
70991 zu;XFp!>)zh4|@@A2#*U-4bKTL4X+FD2=5Eu6Mi)OZ1`CC-SB5d$rxiyF)lI|8*7ZM
70996 zjYt=y>(T>hTo<M@>C$w$x-y+r*Qx8*?bRLAozq>_-P1kS>-Dkv+4^jKiN03fuJ6_F
70997 z)*sQI(U0oy=%0p&A<-epAz2|sA=M%7kS!rQLk@+U3b`C|E99|(GejB^4H<?4L#4rK
70998 z=r#-)4j4`tE*fqa9)>cZ#!z!;dT3r~d8jS4D|8@qUnqV5v#r$jL;oU7pWj9Q%1i&A
71003 z_NgRF(NeOMB^624l3Us$?UW8lr=-i$E$Ok2(?#kMbs4$>U8T;c>(&kF4(LwkF6wUR
71004 z9_ksrQE%3#>+|&GdYisWKcL^IKdwKozox&he-UD!)<^o68TwoV`qvhE&7*%6q0a-L
71006 z!K?5de9r3GSavp>&6cpWY&+Y_?q-j$XV_8p4*Qf7xo9q#%i@Z-YR=7V;dXL|xKrF^
71009 z^f12DP{?rV@`uD2gHHkpNsKB?j4I3&RhTJ6m^c-7vR-cWhMPph6<kw25)yZu3U{0e
71012 z3bR>-*{s5BR$(@)Fq>7F%__`h6=t&vbAk$Uf(mnj3Uh)AbAk$Uf(mnj3Uh)AbAk$U
71013 zf(o-mh1sIQY*Ashs4!bpm@O*I78PcT3bRFp*`mTcU4?nN3iEUo=IJWT(^Z(Kt1wSj
71015 zFwan7o}t1#Lxp*U3iAvV<{2u?Nh-`qD$GeL%t<QDNh-`qD$GeL%t<QDNh-`qD$Fxg
71017 zFsG<6rvzcva14XbH<2t%7`o4JmFRC6h4?O$&Ezo>^A58VU6-Ms#4Kk@(Df7a1NbBh
71020 zwH#ETYc;4vSNW6_7N3&B0w-uf68WqY7N2ba@rfxc_%hgv<np;GEZ7dVBe#5d3X4xq
71021 zVZqnHE+p9vcB89&ZUqbWfIY}9pQpltZ-8$g_cy@-bd}GrV8Ne&qsT3vu)^ZADj+^*
71022 zg#~{N{u;^UGbvc`H{frOTRxeB1>XnXM{fCi3KskT`~bP-Qz}^SL-0f7md~nS!QX<v
71023 zMQ-`T3Km=jmyugOk%a}LU=+FKb1PUd2F8$EKD~m)r?ar&I=GG`@)<2G_<L{@x#iO<
71024 zSa1vc47q;}evYp4Nfs>l1^5MW%V)Q+;6AvI-12!AEchqzPslBw<HCYR;1P1mr&_S!
71028 zu&^C=A-8<43=6lwEyyjOF2mweAs`%pA0vr;HUta50>6UX@_92X9EPZF;1eQP)L;B#
71029 z<d)B#Ve#n?5TE|Q!f(NEA-Q}81dDo<-$rivG#VCu7k(GH<uf2y_&xYN<UR$@qN{v9
71032 z=iDH-d@=&d-e7MqJp1?T-!mHaCVP_+@L35g(k46;&1lg768hti4=}SB`5Z_d`6NXO
71034 zFyDKrUR;TO+TUr%-)YC+X~*Ab$Iqi3*`KmMWwZf0G7g_Khhjo{gw$ACuf__zM`|rO
71035 z4imob4;QR2B_bBO&Q!D?69$T9?WZ|_{~$9D>o-QxY$z72(|DxQ!WaQ-GcD3)QyB?q
71037 z4{4-+rWk3ST}&m?IeVCTq-Vat*sz9iA`NqbaUp$jh4};2_J7RmLM{Dg%pTO1pE8GV
71038 z8$5;E;91-TzmMDC4^iuz!~897Uk_3H`aR|eYE$LR|CZYYn1EV@158ErzaLmotv(EL
71039 zP%Zrycn{Uj?}7JG4g3Vy<oX7>P))lAK14O@-@#V+8}<$Gr}zxGJNOK^d-x2vU!oE`
71045 zU3yxir!A^mp{M<MTAruPdD_{_T9~J81-2?rd-Aj-bsO@u9#6aZk1;MD)x{VlnaM)6
71047 z4kh(D)YRutQ=jvS)KiJnQ&p*_Qc_Q)rk+YoJ@pl-&m~fyt4e(?CH1+~)aO!DpZki`
71050 zQh$?@`kU0$-=wDg<||UqAX3jzrJg}aJ%gHh1~v7JSERmxNPU4S^#zpF7f@4QKuvwY
71052 zntB#B^(-XwjU$*5<6HU4pZt{EGiGqlSP1AD>lneyN&!lb2`xr<eSXL=(J_QSjqn!`
71053 z{u;vHN%)5d|6#&^j_}_g{7-`Yll6q(O!zYie+l8Y1^7{kPTm~gM+GzaBys-<;eQ_N
71057 zI}z7Ch1l({<WsQ`7oE(;uv6r-t6BNfY7-mJn&q>q+39Q|JA+M<Po`#Pu^C)4w;&*=
71058 zF^rDQ05){TA2wMIjqb^PLNgBO3%!V$0)7qN1Pj1g@Dz-Je*%v|BltS_Huwkl2JC=m
71059 z;P>HU_-iEF3=3c)G{d#90ltI!5C`CP6vq^tOJ5%4{K>idb8sEyXs0hX^t>o20BZU1
71060 z@;d{QgWq8EDDlQK34aISzeUu5T*7~t@IMUpPbnb$BZPm9@LwVPM2(CU3BR52-y{6w
71062 z{5uJMpoZm%=aD~QU$B41p<w^4W5ND8CxiX-&IbG6ycq0XI2P>x(#>H1;(NjVw;u=l
71065 z+aF>SKPDK&wQIrtpCNq&0^<AGX-0qn{$Je+h#&d?_js`X*Aa{$`ojY@HRwLzMuOr4
71067 z`(-J?_tyk6432?o<@EqwzowN5V=PP|)5#oV?t>&`i%vlUtcB;01svoc*UmjbAxumW
71069 zC!rBK*-zwf`1*-AbSu2Y7P05KZ0;PBf;jR)<{`)cec%qvW-sH=^7RvZz3hD^8y-e>
71071 z7-O&CC$Hcquiz);>yPmDisyN70j9!zY!o}hMS7oK#Pl&YkqsYWKgG{~il6@!KmRFy
71074 zV=;4-9m6q>;TXqojAJ;)F&yI<j&TgfC|^Ir*D-Ireaur(3vR$Nc%6v1jQuf=_s2Ni
71076 z5fL%kmZpe2NRjfOQc5XBM2gl2BO)Ro&iy`=QmTlE0TBTa;r-8V&&j#$Ibh$u<$d4J
71077 zbJ(B!*WPQ-UbAM+nl<0GXU~ChBg%~^H=^8#awEzuV@Qmu()Tg0QEhdxdRcE8UAA$m
71079 zi2*Srj$G3s<94;Tx^47&jI+#?HKnX6Wlbq-Dq~8ti4M^vdPJWX5JTeV^(`~*R!c{(
71080 z%{a%*SYO8aGS-)|zKr#iF(cYUhv*VLqE8HnA#v<lmm3d^UZ-(^nX}fMwdSlfXRSGF
71082 z42U5yVn$JxZ^*Mn#>w^9c}&CHYz<gfHfA-hZ|>f_rL}MCuJ)4ly?sab*`3v|J71r;
71084 zxx??Yt7}28SBw36YO&v#TI^R-i~VYAvEMkg*zXN%v42l3_8(J={cCEme{C)HAEy@k
71087 zs;$LA<J97yH>}0No?0v%Q;UT)wOCkNi-qIVV&NOs;^3ZI96Y8L2iMf%;M!UoJWeeR
71088 ze#2TU>Z!$|F|}A!Q;S8lwOBMxEf&3DEf)9GV)2+-EUu}=;@Vm)9;X(I->?=-dTOy`
71090 z)?(>6wJ5JWi3vrEyGUIW4)|9&`)kp_;S&Fq_^8D3mpg*xj$pYXUT3)@S?)-dJMwjw
71092 zmOJ)!mOGK<PGq?gUuU`FS?+k2JN|W+JBj5^V!4xEXSvlZx0>Zvzs_<eu-pkOcf#u|
71095 zI?LS6+|_)WSsoEBHAC&8{!sl-b+10!Jf!<sS?UsXarxQqyGHq)UHNN3rRMVd;1SOc
71100 zs{TXusngZr+Emx-gZ1_5dUccDPdzC!wd3_9{g3*uWF1pw9pxIz@~^2%eunZ!mbS#$
71101 z*&I|ynFHny=1%4`-Oz`bQ`I;0QD(n6*_@*9GAHR*)aClU=04^-^?Gx@xv#mOd4RdU
71102 ztYPQhV=L;np<L@sb+kD{D|M<lOE>kQ>Q?nleS|sP+);m9W`Qs2->EHnwRxbqK%c44
71103 zH4icm)*q31`hRh)`r~Sy`hfnDzF4i-A5(v+zN-GWUamLkle8~0%@<^T{#W{s)YbYD
71105 z#w~H7v6F7AcdK{lDIOCPTOQGHv#TmP-TSO2qqNj<DK>9zWudSCrP=@BRB$?AhL
71108 z?KGP)rpb77pnP(UF`)icovF^yOZ2t+5A~k<eEnhdh`vpiBg}x*X}&tAtU=H5FvV!-
71109 zZ>SU1R{c#?-gD7lU0*BLQuUyZs*}_osmJscYK^{7Z&tUdZ|Rfu=k?V((VlurzoxFz
71110 zm+4dVRr)>Z-}IIGf9hM!&VQ)~EjQ-sx9Qn>w)%|TsORdp>Yep2<=qkGH&K%F7ClE_
71114 z_LCBKEyp}{zj{E9*llu5-7TZWR(+4YPk&#=-UrHG?#n3Ra#TN~pViOl=k>4k3o@?!
71115 zR==Wur(ZQEnNy7NSMJl*KI%$!fx1xr5A_%7b37imR_ISzCt9nl<E-PYldKc0W2}|3
71116 z*6C_TIZu69w*RB*&(#+7*Xj!Opp0HqWZarz&NO!{$E$Lzq9x{(En)n$YKepN!fs2@
71118 z>JQW+^`cQ;H~XdWYvZ-D@s(Bws~2R+*+xh9?ai{6zpU=oKh>YnA>Se@$)7LhJkEGx
71120 zKdf_ohtA|t$R|@-%h&aj>J*hK+w4;>t4Gzd>hH|9e!2X{Q+e_Tr1Y;yE#|AeWIx^@
71121 zd-8UA;r+5VpOPAGQ_rZEWUqd!+OOY{J^Q_C-##e&w%oHG`!<xL?x*?}dK-KBm+a?q
71123 zKcfFtKdS#tKc@df+xjQ^-=#&*lO=zpo>z(b4#(F$ReyX~{b>6(d`(8=yYx3@OS<*H
71125 zKV~GX`(;k^wb!<fjAhT-x4b8aW74N*DUR4JJlECpt^#+dj$czoj_wgW#W2)!<~Dg|
71126 zm@mjX&lo>4UY7dyNpI<nFK>|%VJ}&F-}0`qYOFa(#*BldpDtEQQQP6=-DK)0b+nwt
71127 zWQ148sa3MwC(6irvW%^3)LQ9-r>H+xr>fJ$IcLa7E@y4Eo-ymwYO|>8FVz>M_x_E#
71128 zw!Gs{eMQ|^-Vdh!LER$f!dpdRx5=6PcJ*D+;rHdJdQkmP*~(X;%FDa5)MM)3)#IY5
71129 zpNJx#QooS?`J8$|y(oS4x9S!3I}zn;TFE)v6c07!4BOUIOYP|y_->YnZ+1BbGxEMw
71130 zm!tE189x_jImX3fi{-3yh(1&wrVrOg$QggRK1$BcC&^i2qbT4){ZW09{+O8K<N9K~
71132 zz5iF+$GMkGqr8tu95*0Gz+kC4bE-K_oHsO9%`$hA@wXg(%Taef8Ho=VG3G9lF<0ip
71133 zGN0()efY9GRCV`Z_rAmK9fu?DHSFG5_)hL7oc~|AgRpzoVD}!u?%jbS?+EPP3-}f8
71134 z|LflQ*S*iLdxu~5-oEZ#eck){x_9z*@8Rp-z1O{OuY0dv_b$DW_vdx*%<JBh*S#CB
71135 zdmmo+4!jr2(YEH^yY8KK-Fxgt-d8vBj=Ju>bltn?y7$j@@0{!28`r%Pu6qw$_wKju
71136 z9dF%x-MV+Vb?<NM-p$s%kF9$L+sJ#@x_7O0?@sI9m)5-(t$P<5_n%dFn|1Fq>)v6;
71137 zwMFR<2N+6vLHQksGJjZ(6GnM2*>rxJp%@<wV@IwM>MHM(6XU|fxG*s;OpFU-#)V5K
71138 z#)XM-VPagE7#GHj3!j=87beDqiE&|KTo^MhTsAQ-OpFT?<HE$aFlJo%^u)L@F)mDu
71139 z3lrnQm~mnA#JDgqE=-II6XOEog1LQU&=XfACPs#dkzrzFs2Le1u1QRc3=<>6#K_P)
71142 zX7xHMU#o8#nYqzC-@M4Y#N2FNZeD3#V_t9GXx?JpZr)|yZQg4>Q2re?S=VFc6Xw(A
71145 zC5^)yM>keBRyWo*PH(JloZUFDabe@)#$}DaXk5{_x^Z3O%Z-~Gw>9o;e5-L!<Nn6O
71146 z4Zo2#9&P-%@l@m4#tV&Cn!4F;4mPJZXE*0I=Qa0k?%!P4T-rRcxuUtMd2;iV<{8Zm
71147 z&5h0Tn-?`NX>M*_-n_DTP4oKZjm=w{w>R%<-rc;n`9RZdhRwYBSo4YI)6M6aFEw9n
71149 zwsk}6rq->kJ6hjtZEfAxdZ^{L;?^Ur$6HUfwzZybz1%k1&GtZhT6<P|PJ8$Ep6z|x
71150 z3))NChqsSzuWYYwuWg^+Uf({ueO~**c6mQ`X8fr3+%o#S^51t>`LCZ-{*ODO$Z_|h
71152 zMLddlH1XZU6~tqR#}QW%PavL1Jc)QR@sEgWh--=OBc4M1W8$gA(}<@N&mf*jTu1x>
71154 z;_bxm62C|MKJf>{2Z=u<+C-li5_96e5+5Z#M*Mf;<HY|U{)G5b;#0(55T7MJM|^?!
71155 zGV!;>SBSqOzDj(pj9L*j(IhsAO=64KCQc>pK%7pTL8Le89f`AuI}v9S>7|-ps_CVg
71156 zUaH?poJ)KgkzT6lrJ7!<>7|-ps_CVgUaFT64<XW5^<hN%sy>29kJZbG^jJ+_)$~J6
71157 zKhztE7Z5Kbew26-@nghI#E%m%Cep9;6~xaGKTo`xNFUSmF-;%S^fCQKB0Ww2Es_4F
71159 z86v$%|B^^w(!U};Py98J-lbn8zEnmT&&o(YF&U|3Y%AjcaT0Nm$OtCmT^Z?7GVYa;
71160 zer3|HO!}2czcT4pCjH7R`_+U&CJZuRkT=sHHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@S
71161 zjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cEF^G*pYz$&!5F3No7{taP
71162 zHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI
71163 z*cimdAT|cEF^G*pYz$&!5F3No7{taPHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-
71164 zVq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cEF^G*pYz$&!5F3No7{taPHU_aV
71165 zh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimd
71166 zAT|cEF^G*pYz$&!5F3No7{taPHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+
71167 zgV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cEF^G*pYz$&!5F3No7{taPHU_aVh>byP
71168 z3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v#vnEZu`!5^L2L|SV-OpI*cimdAT|cE
71169 zF^G*pYz$&!5F3No7{taPHU_aVh>byP3}Ryt8-v&w#Ks^t2C*@SjX`V-Vq*{+gV-3v
71170 z#vnEZu`!5^L2L|SV-OpI*cimdAoheoCJZuRkT=yJ4hC^Bh=V~K4B}uA2ZJ~m#K9mA
71171 z25~TmgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e
71173 zU=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~Tm
71174 zgFze&;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK
71176 zI2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&
71177 z;$RR5gE$z(!5|I>aWII3K^zR?U=Rm`I2gpiAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^B
71179 zAPxp`Fo=Ue91P-M5C?-e7{tLK4hC^Bh=V~K4B}uA2ZJ~m#K9mA25~TmgFze&;$RR5
71201 z4B}%DAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21
71203 z#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%D
71204 zAA|T9#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>r
71206 z@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9
71207 z#K#~$2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;AU+21F^G>rd<^1a
71209 zL3|A2V-O#M_!z{;AU+21F^G>rd<^1a5Fdm17{tdQJ_hkIh>t;h4B}%DAA|T9#K#~$
71210 z2Jtb7k3oD4;$sjWgZLQ4#~?li@iB;xL3|A2V-O#M_!z{;ApV3wCJZuRkT=yJ0R{;$
71222 zgcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO
71223 z5@L`LgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELC
71225 zARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO5@L`L
71226 zgM=6)#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~
71228 zF-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H5QBsmB*Y*g1_?1ph(SUO5@L`LgM=6)
71229 z#2_IC2{A~BK|%}?VvrDngcu~mARz_`F-V9(LJSgOkPw4}7$n3XAqELCNQgl~3=(3H
71231 zkT=yJ5eA7cNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_Uzi
71233 zgh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V
71234 z5eA7cNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%e
71236 z5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7c
71237 zNQ6Nm3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(
71239 zgG3l4!XOa_i7-fnK_UziVUP%eL>MH(AQ1+MFi3<!A`B8?kO+fB7$m|V5eA7cNQ6Nm
71240 z3=(0G2!lizB*GvO28l38gh3(<5@C=CgG3l4!XOa_i7-fnK_UziVUP%eL>MH(Akl<D
71241 zCJZuRkT=yJF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lw
71242 zL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y
71243 z28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+
71244 z7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLN
71245 zV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69
71246 zj6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9Z
71247 zF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw
71248 z#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-NQ^;Z3=(6I7=y$ZB*q{y28l69j6q@y
71249 z5@V1UgTxpl#vm~Ui7`lwL1GLNV~`kw#26&TATb7sF-VL-Vhj>vkQjr+7$n9ZF$Re-
71252 zNiax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U2?j|pNP<BU43c1w1cM|P
71253 zB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`H
71255 zK@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U2?j|pNP<BU43c1w1cM|PB*7pF
71256 z21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy
71257 z7$m_U2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-
71259 zf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZBp4*YAPELZFi3(y5)6`HkOYGy7$m_U
71260 z2?j|pNP<BU43c1w1cM|PB*7pF21zhTf<Y1tl3<VogCrOv!5|3+Niax)K@tp-V2}iZ
71262 z#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y
71263 z6oaG~B*h>p21zkUia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*
71265 zNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~
71266 zB*h>p21zkUia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}
71268 zK~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY7$n6YDF#U~NQyyH43c7y6oaG~B*h>p
71269 z21zkUia}Bgl46h)gQOTF#ULpLNij%@K~fBoVvrPrq!=W{ASnh(F-VF*QVfz}kQ9TY
71281 zK{5=IVUP@iWEdpFAlZaLCJZuRkT=yJIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^
71282 zl4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?ow
71283 zNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!
71284 zAUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@
71285 zgX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r
71286 z43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOuf
71287 zF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_
71288 z#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<atxAVkQ{^L7$nCaIR?owNRB~r43cAz
71289 z9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd$uUTdL2?X|V~`w!<QOE!AUOufF-VR<
71290 zatxAVkQ{^L7$nCaIR?owNRB~r43cAz9E0Q-B*!2*2FWo<jzMw^l4Fn@gX9<_#~?Wd
71302 zd{N}_8}nuJx8^J6@61=Xze~Qg!TOMx<4>%!tv|IkT7M?`I9E!sj4v6t8HRDYJO-^n
71308 zjUCLV%%_a$Y}X97YnO7HrB}adDCv1pYw2-Ps`Tu#O|={)Wl2g(x<O*uHk$G@<(ZVH
71309 zC{I(KY@g9IX3M%wp3An&=dO`>EzipwRpm6L?uv)OziV0J(5o-jmh?9gzc{L-zmb1m
71311 z-$&#<Q{`<VZ)knL*uK7}tM`A-`$|4@owVWqGH#G|drHa}P<NGEVBR6`1;)#mdTOQW
71315 z)f$Ow)#(z?Q0pbio|E`#^%;qOss2*p7nB?$viIbOls$O8#ILBEB;KlSm-t=vU5VdU
71316 z-<S9U^#h3yss|<hQ2kJ%t;+vXtFOwx&l#%nuT$izoQumomiU<Z4~aifKau#9l4Dx-
71318 zCh-V;ghbi*5>L{y)zSk_mbg)Glz5?*Ii~c0%@VKBS4jN4{=CGi_0<xu(X!Rj8)U1?
71321 znYWpDnOn{KP1}skN6jb9ZK8-*<!nA^&9vrN^Q4b0kY2UiT4|juW9@oz!v)sG)@Eyq
71322 zb+vW9b(3|Qb(gi(y5F*`*m~4@!rErNV7=OCHU=9r8*>`-8v8UBG?q4&H&!-IZk*a!
71323 z-`Lo=pmA|yb7M>6>c;hrn;N$@?rLmp+~2SpapTd(6OC<+7aFfNo6W)I%;uctyyia5
71325 zt!8VmHM2FRHLtZ#Ye8#iYk6yB>*Us{t@W*qtqWQgw>G!7w61Pl-@2)FTkEdY*4F(k
71327 z*SBwK-`2jXy|sOR+iu70N83-dx3ynrzuMRA8|<6eH>Yo2-#&c{`j+-B?_1e-a^I<a
71328 z>-#qLUC?)N-{!t8eOLEg-*;2rZGCt3ZSA|i&+d!+9_@RgZ(H9BeXn+!ox#q`&YaG?
71330 zADIuE4@>%TH&s@Z_EqWRDxF!SJ6Gv0Rr;1Hol~WIRp~pcbl)o7uS)l?()m?-V3jVY
71331 z(u1mWVU-?SrHiU`ag{Eu(nG6sS(P4MrAJojyQ=i4Dm}VN-(96Es`QvDJ+4YuRp|*;
71332 zdSaEHRHY|Z=^s_;nkrperSGfKQ>yfjtMt?=J*`SluhKKB^vo(<SEV1Q()Cq(PL-Zp
71333 zrJt_S%~krDD*ekU{X&&qQ>A}XrPo&Jbya$Om42m4Z>-Y4tJ0gQ^dGA9mMZ<nD!sKz
71334 z|EWrEtJ1Gl>Frhe-75WFm43fUe^8|lR_PC`)UHy$O2aD6tMp&1^wBDPtV;jAN*}M%
71339 z_|etzqrX_C)p4Z%wo0qxN#9VVU#imTc+huL>DR0D8&&!*ReE=oe!EJyR_S-D^qwlM
71344 zf4;M!b5-Y_&eQ#8_g~ZhK*{F*=cVR*8Qav3SgX8(RQl>rb*%amb++25KCI4HA5kAw
71345 z7pae_P3q(7Qgxa7ton0xx%w-$Mg6t9LVZqMsjiYyXGj6_%md8@=0WDcQkQ*<eq)kY
71348 zZTqm%CtLRsd47SqK%Re0eO#VjsxFmynYv8kXVqUwyj;mFNVfAzqp7Y^S5-5#(sE6s
71349 zBTidjwDi05yCkQa|FoqI<{6f>!9hmH{FEv6G{0_s-7u})t=;(+WdZHdpj{fYOM`Z4
71350 z&@K(yr9rziXqN`<(x6=$v`d3_Y0xeW+ND9eG-#Iw?b4uK8njEp*d~tw+0Q!~ovMw7
71351 zTc^KjokL}2+$a0~SYxv6|38t|EZeI|ds$^)kesr;Ea?#+mFLnc<oPDG$rzNr@o{-x
71353 zY|xGk+OZ++`2PPF+VQ9I=r?{Xk4eTW^5|C$)sQ%-1|?2WQzTAP(<Hu4y-iwtH?^Cz
71354 z>4(&ZWSh%2?e;;f&Qs?ZZQ4}PrkXz3q-7N?tJNpeC*)IQn`+ur)23S5^m2)RB`s@i
71355 zZ__Izr)*8F{#O01to;UcgY4-qsV~b~ZdNx-{F>S-`QK6Z$n*Qv{SqHg4@i7SJtXmA
71356 z^&^RqiX<i~k(jAWVxbC&KUY7OxJ^AH@mK2C5?@j;8EtyKrH|3aNIXs-C-HcFyu=gq
71357 z2@>C<-(&RYQ}qUkAJ!k1oKI@$ANoptrNpo3uSoo7eV3H;P5n)Y-_qZb_&xogL|c0j
71358 z1070?bu94_{S%4X^fo!>exrXQ&ws05lb&IjEs1Y6-)i)ke_;NB#6L9uP>#QS&3!ov
71360 zMwufMJZqcLZk*rPY`tPVS(a-oG*)h3(yS?OIIn!(WXbNgtmRVc43kH1{#&K*o?={N
71362 zuS2;e<(kxDT~({`-tE?C{Pz`G))@1y#S%khkN^Hq>Eka^mT&T&F{0(h<_(oII#<!=
71363 zWsA2)eRg!-&}T>I4z0KM(_?c-u6t|=-7@=X%IvGDQD5zP`fBSrHh1jO!)x#Gz1g}^
71364 zYahxRx%Sa{W0xGg_OZEj<@VK-+c!?RW0xJu9lP`-8SVErmWsH}GA=W&Gww2c<7uVU
71365 zY_;$9EjD_#&8XQ1V|%N#MjZdcM_l>o`ggjejC^l&NoI9S)Rooy-cV_yN1WdFYLC-0
71366 z?b@aL$60zP-%_r6Tv~N@HCib--bRmA!#Ts(gt|4<J!9f<PPyzX>Y{2|esrE?++o}|
71370 za^7&k>&_gm5~F-g-67|xyX8#vpn6eH5jT8K&Q9N#v;1%LZ>4T;lYKlzYCTOJrm>?u
71371 zOk*db{GM@Vd6@G4+a&HL57U?@4^u{hcSu|!57RhQ9;WebV}-<(@-SsacB;e=%URPj
71372 zE-^kSaf>`m;|k+*+vg4kssn3g3c8vp)Xfq8oH@ehBr-dY^Q{;Z8#S%BTW@FYE@Dd>
71373 zY)OMHX|N>?wxq$9G}w{`Thd@l8f-~}EorbN4Ys7gHZ<6V2HVhJ8ya1iV$uOjI(fv5
71378 z9BuOa+v?l$e5=d_I<$L-xj=`xKu6{R56inhk{LlqIm(k5s6b*lJLt&lAd^_m3p(ma
71379 z^`xxvXX<CthkmY}mYi~q&{4lszm!<c6gtclCh1-E?y?u>=>w`+gQ-{O6-GaE2U8!b
71380 zkCo@;48qha^-6hO&Ld2{O0SaVWe+g*iTXr&zFM!A_(%GWB)(U_PvR;16e+WuUzqw5
71382 zyJSAnVLsAfJ~D~<NJl>`^O26sM`DSo%tSi+XZmLnhvp-%$y{H_Or&G(V(wz}n{StS
71384 zo?%=lz3<D`2J0d*&IA9cIm)mBhtH$KIpx`4z!;ugnB;c-Ju=@KaenXAthHl|Rlq>a
71388 zX3bq+Syhed-f4{bjJf@tM)l5k?~VSPwf((j%_ptxdw--&`)gWpIB)c_x@OstmY*j1
71390 zzI)P~IW%Vr#kWG5QCKqycS}@a!v`hDk+E3ISX}-e?aI;>-vnutJxBWaMMn3RX^K5=
71391 zNRE<!LwR~cUipb#WowQe@riQF{-owpWAl|U^sBj{SGszojeQMQ&D7V@T84F}`MA}w
71392 zcC}Vm7g(2DcUliLA8O4NV=t9|8(QUW16NkRcIaw)t%%@Uk-(?aHR?<1cJa|Y(rQ1D
71394 z>-oRYFH5VvqJO7f)vuY8%qiw<b7whsz17^++|AtG`~x{_?PcyQXRSqLZ^0-g-`bk$
71396 z$QG}aSgxaAw)|XqUOK2>THsR>uTj_VUFMhM`R(d<d0vWffd14+e=_-{RaY^6^r|Mk
71398 zOy48Q@AmZj^nH@^eKBf7TKz#;($S6_4X$?OxyN^z<!_*-&}*Cg5~?lx;@R>Fn0`(^
71399 z^@4su-hEM*?&XM){qwTaq*QK0_R}j;li%szNtv(eSEbC?`0jI(ImwtR`%aw9p6F*!
71402 zME1%j^e1G=OT~2q`cwK-^1SrhfWBGZEb$-pKT7;3eVfGpTO&tx#is1DZM4>qzQ32z
71403 zl>WcB(J~i^(>ge9fU6O$YR(;3=N)s@IM6-Ic3+p{%dy5O{Fb>~roYPXe*Wt1bN11n
71405 zjT!Q}RmS-;@44A{*mzcT)b9Eeb+ne=py#P8^fH;f->ZD}xO$GWML*wYwKx|UGJjHh
71406 z^L>V-XGs2;qn6R*E~B@XVzNZ{-I4F;o_ES}Eo|`m>+UY|dg~r4rFY#!pRHSWw_g3f
71407 z$950=9?P`fU>U_#ukl-N$Wv!m_3rkWk+0h$UN^_Q-yHG2CF1EAyBkYKwEn=j`=wp`
71408 zj^Y~d$b7}G<n{Je8~v`u_kXM9Rkx3}t3G+=_Sd?4-Cc4|V`249V@&UEZ13I1s3XT1
71410 zpjOD^9C>Fh=lr2Fe)mj2e3q{}zXzkw=~C_t&Z~-ZsmZlKlWzn}^&Rz{^0!d@7P*|&
71411 zn_TlVx#njww>LRYD(3JeXGq1lQE6M-l2cxjGr1;ba;8#Thcmg-rn%BqjwaLo6Xq*R
71412 zH~-V)ce!q}@?ZJwUmMeR$K;`LOpSU~_VAfKW1SlHsubL1#x`|TDLCEHU)GPC>&%y|
71413 zs~USZ?ryGb#;vnjFSNJx?P(Z&OZv9Tr}i*jMsRzneYgKUwfuGJ@I3-+)%EH|b(6C7
71415 zBA-80e<=Cob^Mk(UL7wvtJP|W?@{lOocF5t%JUDYvt*fz)y0f!JM)YB@;lv~<-J|R
71416 zXOsBl{Ge>jzSVbyTDEGT_(`_Rm@3=0R6gJR#_%Y0l&Iinb+j1&-Rj+91L?&^gWuJ+
71417 z=!1j&PJU3f|3-;7shcF0y>C$3VtV;&CH)OKcbC5yAC$IuNa8Q_FC;#rpO;v+#-P-4
71418 z2kg@Q-fa-Un0)WnFkX~L6V0@hsbp`{DuaCE)|E{kve9Z+k&UGeQ-{eGE?3J%Hr?Ml
71419 zoF(niQlC_xl-Rwt&DCf|hw>V3c@{rM`h?p4D39*Hmwz`Ks_ILl^BOgI=JrpQc|+s$
71421 zBlAYK?AgX8+w0J*sYA1-4$Yc6G{@9o_;s`9GgeRDaGg#U_k4DHomw?@YSq-KRa2+Y
71423 zn>C-YMlCa5J9TR6)2XRXr=~ugG4<)xv{R?1P9yV%kGNAs8AG+|uc=jkO|ANCdQpE(
71425 zX-u6ajj7Y{>(-dp&6+Z;p1kpT&g7c9Os?5SlWTg;<S})cT+>FAYw9(*wqB!0rNNqd
71427 z8e{s@@N09->(-dp%`va7QLnYEeS^A4Um|n&+W*YiR@=H|>cF%O?|5bLrla>h=Ao6-
71428 zPrmMb{+X-GcRzgc|F~UBnu00E5oPH}S<gG9y$9(r-7Dog$n*00rz!LI8S;FlJi6D;
71429 zRnN6^#kEkywNNFRC_V9x>I!=I+WEUBXN6JTb-9xH=7;5>rA<E~+k1iWQF(rmJS-Va
71430 zE|K_2d1$VbYOa)8#x>kyTspSD`t4-t*Z~YT8OKh-v4hp`C`-ro<Jc)Ub`YOU#j#Ux
71431 z>=Yb36~|7&v4c2v(3)q>W54e8|NRz0+EbABju^WiV-H~LX&8HFjNQE|zXQgefw5;}
71432 z?CBVLGRB^Yq9>u~ncG`oC$5N3m+jwCV!55u+0N-~=XADnI@>v&tKiew!s%T9p3b&S
71434 z%Ie2gKfGw(d*;4p|Mx6^&)WA~@}9HL-TmD8=Po~Y?YSGzz2w}h&b|5EZ=U<mxsRUv
71435 z+<CLkv(DT5yd~$YJnxM2E;#SA=UsQouBYsO%8{q6IpyqAt~}-9^+&H?v;M607q5S0
71436 z{k9M4Q*JutuJw1Wf8dk{KDfsRmuy(GVZ(-tHf-7O^oCbIH0_jp!yOy$+mL=}-iH=`
71437 z=-8veqkeqU3rBa1JB|B|{IvZ~JN&fOr)@ZG(`j2y`|{~~ZoFrszwwEUFaO!VpUq`H
71438 zImH;hEB<4Q4!wD1PhL3|m80RY#u?H(E-#PiYPq2$bWL7&?CH%lYd>$+e!ec(tjYcJ
71439 zy^N#sqwYWHp_86H>5-GJIO)qL-KD0hJ*4-YtTw7k)ivsNnYllzUeJSjcfCZf)@SKU
71440 z^|ktT{eXT<zhDlU^UNjYYV&OK67y>FHuHY-5%YO#z?y3<uvS{@txeWd)~(i7%eS7i
71441 zUTsWk?9o`-II*#zaY^Hv#;uKe8+qfoX1h7Jxv;sixxRUE^Qz{p&HI{p^SM^1HMg~}
71442 zwW_tgb#d$J)-A1jT50RqcC$UFy`a6KeR})C_7&}$+FRRk`^okzebf5(kh%DYeH;2V
71445 zo3Co~hfAri%h-HXn_u?H`nIaiSGD=WrHrjheZH#AA1bA{UF!2yZT@g6^>yiOm%99s
71447 zwcXfURg<f0${eay@8^4SOJ&rJ6ur6KQtR?nZT?W+*kimmcVx-EN9XvZ)QuE%`KmU5
71449 z+#aXo_BbVv?D6%b)aR?({E<DPw|>1NMP0tC&DXVMkL{gx^;2W&*E>>-%^Rv)-AK{<
71451 zHosf48nKr*ZLi<x+~N9-%{OcFhw{wYlFe~SHpeO1>?zqCQ?gl;JGM1OmRy%VvLE!8
71452 zJhnCJ^Ud0P#SEsm#=5q?V{^@#+&?*LpQBbEwd|-3M{POkqJ<YOUbT41oa+}~xOm-r
71453 zURiwk;_DaRvH1SQ>Efr)-2cqO&s=@xhBG&v`Q<aWtlPTIUia9#=ReT?z&;<Cy>8LE
71454 z73)q}ch0)Y*4?u1>NV@vT)5`)HBYU1<-JqZ+_3V#HTSNGSH|yM@ZJ?`FIfB8wb!kE
71457 z$4-C#{q6V9e*Zq(TWa)7Ze-3-e;J);)_l^e`DAaNIW|xI>4{gLc=M8{^dowksZZ*h
71458 zw96s8zh(7X*1zQ<bEdhcxy)Q+o?~8SUTfZAK2-jVKWmE2!k1bnTW499Sl3v$TlZU!
71459 zS}!y@jk%45ja7~Hjf)#sH*Rj+-S8VvHeP8?YwpopB=fR$&5N2_nm0DTwc^=htYc<3
71462 z_f+4jo#~xDJ4-sNI_o=|WcGGb=k8;tAG^n~OFQ;4_Z|};^Yj^yp0Vwq(+@iTpwAw3
71464 z;Ld@E1|A=HdD7sd-6t)Xw0hE6lP;Zf?W9{L-7_hk^z@)HICF6C!KH&I4sIB{c<{=>
71465 zn-8@Iw+_04Ki+NM-A>-^@MW`>ow4lvWuINP$Fh~n77e~Md0_IclNU`saq{}fn<ig1
71466 z`PRwzPR=JkH>Evg?v#a7j-7JGl#8ZZIpyXl_e@ErJUvxUojrB`sYg#eed>i%|6=O(
71467 zQ}3Mm(9}n#K0mE9ZI@~LPFp_hlxgQo+q~?$Ww$Qdy3F70tlh5IZPQ_M58L;!!w)-o
71468 z+I7=zn|ANCc-m7t7(2|`Vc#8=?{Ml47wqsCJKV6tH+OJ%cw&cFr_Y?e=k#UM*GxZW
71470 zn|aa9Ei-SNdH2k4=94pD-EroQ`|P-E$JINYwc{l_UbW*bJKnRSzvB}-zA|gtta-DR
71471 z%sO$_hFO=)x@OjGv+keu=&a{=8rW&~ofhqM;!bDnbn#AC?R4u-_wAJL^xW*u>^ZaN
71474 z#wmGZ{^;3m--s=)&o^uHN6)<LN>SsKGBSVU+-tbxy4>Nd9Gh>BQ;Ipx()IbOHh<*Y
71475 zwYPp_+pj*~9H$g>oTcmYRc-#zZ~n*jk<ocWbsL*&)_&d`lecO6+Q;UaHMzqx*U{~z
71476 zd$y-8*R1`#S-WIiuByo$KDvg^Z^K8$$n)Yr&(YqSr+V^6&U;7hgR!|o$7x-@S(`s{
71477 zuHIX6?+8$rZ`S6Ip2d!Cy}Ep}Hh=Vtx~`PoBd<4q<eX|`kLk@F-paZWpso~ioTcmY
71478 zRc-#rIcabGdi!);zBx`Q<~U2&=d0TM?)<N}kJOC-y}4%X=gl#Bo3^jLZUh*cJ3J#D
71479 z-ClJgKyR*D`+2i=$+}!slRJEL4UYgrJ#pj+Fu7&~7@Mbh^18n}?HvKe<_;aFb@^s(
71481 z`KmU5sN}Idx;J-Z{d#+KT`A@`OV{VC+WevW@y7O%x)Go^*R1`#S^N3AT(c&(TVii}
71482 z)r|nXxn}L>&Dzh`<(f6Q!!2Tr=%u}RW>22tZ;JIE-D7iyO03H_Yx9Tl#_qYXxuZ+&
71483 zJ-U1I%Wbc(Uwyt=n?GDi@6lafm%99J{d$k?-rV7>tUJ2vN-@V-x;|gk<`0!Twzu@=
71484 zj;vpAkF6`k9B1kJd{vwOf3^2EKvpH$fnH{weD}R~-+ixMRaZk%4MkN!mx^k{)F8yr
71485 zH8f@rqFF=`EreJCV@x0dA%t0kp{S;dYL-F07-JUWUX~zOmLM=epf*N`Ac!{0vX~$+
71489 zph{?-OP0(2RXl#_#w@jsE8SEcSb2^DL+z-%?=MB3hoivC11rx_V5pmWL(fY-rL!iM
71496 zxa^GV!t9#&KYjnu`=7sm<^9|5KbfwlH%#xCKB;b8-L$&-b*r*lYcJN`{_fK6c7J!v
71498 zKFGfO_Vf3yzIXS%FDFf%G<VYSTsb!~*Oi-{Tb}F7eVY3$cRqJB_c$NqoAP7x)ANh+
71501 z+A(!fk|zpI-}0jYg4?Kc-U%~*jw$f+4#$Dz{!Eaoh3CL>e^!dKMOLvzvbJC?JO`HB
71502 z`HWz|$CRbEVG67~u<{%QhT8cI-(N~_DTgVr^1#Y-6d3ByPWTpZ99ZtpA^3LiS~%{{
71505 zaq}ak6<awDEO+}jR5L9v90!)Wed`L_fO_aDwVE*pmb;@0*k-Pba~xQ1`$BI1!z|Ux
71506 z<v&bapBIo9e2P=fa$vdZbE;WZ(JZTImP9kKHbWJgF$b2rJ}<B-mr|T^mIKRezq)`@
71509 zM9Za?FIt|o2CYL|J6or<E@)lV`iZ<HA1R>*snKeZnyr?pKDARFR%g^T_2Av;-KKZP
71510 zPPjJV-h}7xY^xnwJEnF@?cCbl+GVYKTaUJ$YrWa}c!U^HKcZvA<Pmd5EFZCP#HS;U
71511 zs8>)nJ-aUW02V_xY=Z-)XLlLynx0+MRo~Ut)%EVJcOP|$u323RyH<5=?%LgTr0a}s
71512 z)#LPZy-=^wTl7ACLSN9gOwTUJG-f(8(=ziiD>9q<zn#08d6;<>)CV2Gq+rgN&M}iq
71513 zM@#3%oG9HWJq(ryy}^#)P;ff98r%<FW=q-D?1b#B?BZ-sc6)Yz_C)ql_D=R$F3dIO
71515 zALL(#bzyrrF`OMP3)hF+!-L`H;g#@S_@WRMnhWC#GYg9f-Gyz1eTCzNi-p^Tr%^6y
71516 ziaMjI(fnvtv^m-{P{;W1X_w*^LNE}{_HtZS(L^aQ)UE-e8gcKRQefqQwTPp@P%96t
71518 z&rx8gU1vfq!ak-HSb1ROISLH5D>tx3G#^n4tUR#t90i8jwHnkS&POyKQh8wIISLH5
71519 zv;3|_m{tBpDX{Xu%5xMLYF9K+i?EL<1y&wdd5!`@?HU1W5zR-G0xJ)!JV$|{c2xki
71522 zG#^n4tUR#t90i8j87^uO=Odp2D-WzZM}eWgFK#9$RyD}ca*CX%hw9E@(XggrV~1@V
71523 zwsY7axxDE>(}|{wO^=4xHN6_WYxJSfr$%2Medm{h(NE=ixmE6!$K-i=Lp~f_9^5>5
71525 zNS!mioO|kd+xfN|Z4Vn>4k-<39Wr6atRahs^gsknFczl6LRbx38k-wC8>ckRZCu{i
71527 zC!I%dTeb?t=#xr(m;oaROeo4E%hHvVem=u29jC<k$!B)em!Fq01H$lnEqDDHj?-u9
71530 zr-ok|e!F>M^Wx@N!=E;*=KALL=I-Xb&09>FpDmZj9=T2KlgH%+Q<5LZm#VB<)%bz@
71533 zFQEj@&<Rsu4lIFg*b4jLD4d1s@Bm)u(mT;Rv))<w&Z>7B-|2W~qHfh=^;A7iuh6}E
71534 zyFQ>#>Wlh|_OABc_HFI^+NZbAYhSLPWJIPe)0XMV%*-sxtjTQ7?8+R;oXK3x+-pB(
71537 zDoGhG2OEU{#pp)^HsJh#84!k73-mcQ;5_0p|7~QysKZZ#84%`|RrlLG-zLm(`Ryb1
71539 zvaJa0L;B4UZdDYSr@;&e^IH$@ml{+PFq&LRtc$i-{O?1o4YlZLFtIHYoW@wvpHp>L
71542 zJmGo^Gho9>CLCtzY?qs}ePUz8;}2L8>#{cBo{`Vii!b|63!fnu$u*`2xi9HK-jomH
71543 z{-WtEPE@niQqv0AsSc^rre}Cxy=-c08s9X%X+hJfrcF(|pf1_<aW*W4Uf2nT;51x=
71544 z`|vWiKX)v5E_WmMF!wTFuDeioqwYc7%Qxn~vEq%5`H}f?Z;X9oT7KFahu-*H*XfaZ
71545 zf}W+9=pMa2Kkv=XH>bQg_sxTEo_zC?K4@Akm-L;=&LsI4VH7rp<HMQZqOd#M7VZm=
71548 z=e%etaPd=W<!MiZ#!qQFpGBXaQedc+$InkGFf^UdqR-F8PpOs1&(FnADV~S$zj*YY
71549 zh*DtX@!W(RP2ipgQ@gUot?w{%-#574rSibaa}*f5BY!LZC=~gn`JVi?{OJ6o{OtVx
71550 z{PFyS%Fa-7p{Yqfk$X%{dO_ZjPgI~9RcFJBhTewl4F?*Y3=u=>hO{-DY`EC)#gMKc
71552 z0^BO@DDE#FFJ6Gh@T&N-R4$DyjW5m6<<hFs=9>LA$7;^i+|aExFUnE5xje2stvtWH
71553 zvb?eUX@9?PrQWP}>!bR-zM&tQe&C=?M`m(nZf04gH?wnK@23|*DHu7h_tVy3Z*VL)
71555 zf8TNzag^3Hy-ZDmS7vka;5<<c(MTCr_uzH5SR*hRv5zRFwNWoq8{t*E{xi}i!Zi$D
71556 zfy~MKKEf>>pQKMiTRK=07)i=-AFeXjjBUUK5b=8q?&?gpR>h2~!~9u2zgFesIZEp=
71558 zqsqQTxc`l*-<NY&GU61Y<pE0qBS{(VdD`9v&bOEWVYpA_uI0n|)n|Uc<s)%j9+9Wz
71559 zRe4W-sY2DHI@Q$p1o32@-a&OrT~@c%QwX2|M#JQ|Z&H3(d3(Z%+P>NywFlum+<=F*
71560 zr{cZ#;FT`v=47SaeDhA+q<5NL$0>bT-_}oSpVq0m`nvYI?z&IvcGrDYH?eM3-Qv2l
71562 zXH|Akw#~dXXJ!{AJ0kAM9?720Ud`Uiewhn%O}R0-$+<bXWx1Z**4)1SRd<haukv;I
71563 zw*2_~^!$SSs{E#8-QDN;%lSL`XJHUFhGW9X;hb=JxH0@RJQAJ_uZ8!+mxa1QTVY~h
71564 zc42X{_u<~c(ZadH4bv-np7e^wM$@AC(ekJ_+7TU$PDYoa+tHJvE;bfBi&Km9i>r#8
71568 zDw>q@G(K_tg3}@rI4!6oWk6V^jpO^FhVcVtz(@ikNf{7U(d7G~hVcVtKv-%6_5+o~
71569 z%pWUvcUSV?P?!N>c%~h<^;}K34&vK{_+3YBzznx0x%vKHM-sPGwPOP&)_ToYuZi`(
71570 zBxOKYMU$T&d}3`-f~JKceo%}bd`ZmwIRke;9^VGcfH1l)0=Mj~CY&F9hUYEZ6%{x?
71575 zt7y{123)6O28<*yl9T~q6;1v--Y3=u{Eo+xz(`UCgiR2u#YVA191thOd2vHL5YJ^O
71577 z!Zz3k$KWhngM08)D_yVK^msj8q~CwqXLkRd_Piu|US9@?3?_hx--~j0%kX2y4EMii
71578 zf6Lz`!?(a^e$UO_AH&acm;oaRj3i}1n7_Km-QmFZ17^TT0wYNo5ay35yL%c?8|XYA
71580 zv6fM+SOyb7<a=VX*qPKT7m|AAMgLmOiE^e~C|AioQ?u-s$K^SBUEY_^lvaaOyPBY8
71581 zs0C`dTCcXLed?$>TUkX9B^U|gP2I8xx?v0Kh2wA$Zoy-%b)#<A6Z8zdK(Ek!dWYVp
71582 zkLt7fn!c-_3Af%z$ClE++mR)g03v=}W5<+y8K1c8>C#aZ9BV{kjZmyu1`|LeE*t){
71583 zx_?hgluLlf0Fl825OK>yA1V`ROT;IDh(bDW*-KkKE^*65A1V`e6&a4T7R8EXFabo;
71584 z-a`8JOxH>I%<XNs6d0Nk&1lrDM$Kx}NFy*d0&63%HUhB`7#o4L5m*}m+31%K_wTqq
71585 zvON>Od|(+&01=s-VC}csa9;NbAfk|tv~`BdlrJ+yELN>>NxUW4Kl;<mi=bSbQj@FQ
71586 zG5mb<n%3nbZ@xX|?Wt`i;(z_+OR+xZ%yRC$@)@S~iR+&z`I@#iS^3dmE-4z#1!AaZ
71587 zGWX%4*^pLqNiot~Al^2Y6u%_e&3%-)Ky-+A%<nPcTjt&=#v1Y~=91z&qRZUBYc3Fz
71590 zmlXe<xs=#yE-C(db1AVcIUD+aFqabl(p<{Cjdq&*|70#HJ{AAU=-DOywfX(`d6xR`
71591 ziMr(U?#hYkb?|-ozL4-I@FxQFNIf#C4W_+Lzn>-jzUJijpX$taHl12bDiuY2l0x-K
71592 z3e_hmRBuwK+1%r_sW&O}wz>b3Nr`%s62D^Z-!Xo#PyAk=_`TkEeYLrNWV};veDi&C
71594 zyW{OiV&SMGqt1-FH|lxEn0P;zj^2)CE%RDd3}4-{vE|d2rk2i@sm9Jt#@C0%X>mo|
71596 z@JO<i1V$1VN$@1gi1?#c-2?9tpW)H1?nGA|(dCnHc;E0H!w(LRhBuFxG~$C1OX9E9
71597 z#BYe*;;3m6-xkkgBuAP&I!i8*>*Y>)M4pv5O&?pwtK8I7HD9e(TTL4{-qG})`VvBD
71599 zPUg#?6to3h!3V+8pf@=c{#<e@e2^X5-!_JR&t*M7a$K_9YLQj6$SPVS(V|#OFqI5V
71600 zbD(S6I+3>1DVHp_T4WV1vWgZ-v?$gROeI5IFXxDtU5eAna>;Vn^Hj5}qFGkaERkl#
71601 zSgcrkF_o-5kS9n>CdVbq{S@W2$SPVS(V|#OFqI6g^zFFR<GEzH)q+!s=aS`i9Es|n
71604 zq@F`$+LC)<IxH~n)pO#8xSxz*4{hyf-8N#?h|R6XTQ7__GUCjzYjHb8&Xvm>UJNP0
71605 zebXM_p&R7^d14@Mr>%^%Jo_YW0lH(U6?-X*Q;CMd%pYq>JyJt#s6jSJBn5=vIl|Ph
71606 znBf_~R2yb-xH=MN9f=c%@ySfFN3R#3iL>z@7vh?@r?*#T8itP?K7RO&w`RPxaQMRE
71607 ztA=l`-&=pK{-_))r^)$prQ9TUnU>L+=F!cQnrF9+Z<*1&w7I8wTg$?hRV|xaj<lR<
71609 zsb<r{nxf{YC8~Si-Q;^7GrWq<z6a7U?i<`P`?jc%9w(H`fDNa-83Z@S`QG<)VK<XA
71610 z)B1zzqYUTZZb5T!`gWu3Zl0A%tR++)Xr6LOnkp_)B-i=*FfBtaxoS%MshY#`io7GA
71613 zy-n}a$Mpq$Q$HGB9^M+~{^1LTuQFY``b>MKD>EyzII||RC9^kkG;=O<Bl9Rw!JuGt
71614 zFeR8DtPZvW`;*-Q?gcNhrEFVvQg%*uMRs#`Pxe^$LiSenX)esQCi?;`$*s@r%pJ*{
71616 z6iS8W!nppuXp)_2Dm&7Y_m_{CFBGO1<`-5LHWfZC94?$LTq)cwd>Q4Up;2cvEm|0L
71620 zK$ySw)oQ|Cr8Z%f&R$xp(pG@afUs0jGm@H-^usA82Fzj^Y8z!hnCjQX#i^M%HHlL*
71623 z*3R=vc*Sb>sp@CEJQo`+Lo_BJ)a|vp)a~Eekib$|B`n@g-tW`+d4+}qmP&@E^0a(V
71624 zDyxL`*UGt;`fnt6{h}+0-z`2%EyV8(m$_rxib&#jCyf&`yjCrJCd_~^ywc8<#Lw=t
71627 zC#H#cV!7xQ+r++LThJr?bwaj{jy;XTxa)q>T<;QpC6FD5^<{kWy~-(cVskv#lzXLj
71629 z+cG`z?s}O?a1p+cOJ%p*B6rIph24eE<Z083zN?iUq&xIP{Xuj$dREL8hZe^ar-*bW
71630 z!S>DE`2wE;L+LD{JICTv+B3907Mdbo-4Ar%L%u9#m3J6UJ9nJJU!`K-4>;}0o>o93
71635 zrX`<_Hv240R&XBFVZ38=vYXaIxmpZK>f8D7Ob5C#-<ltnpPoOIKb5~MR*H@Ns}ru8
71636 z9R57ngDc)SX2C%Dr#XVAGalE~0*_!~pRZ-o#&0Xr+`#FRj6PalaHFZ*7(MkaX865s
71637 zN9tX+L|jVNC&b?Yj7!p>vZL7vc}d=u&yt-2#wF`?SD|kJ!gycn?6PEE)n)zP033%4
71638 za1$PBq3d*8?(^K`+@1XK{CVA#dzOq!KFYre>+)mrlk;=Jws1l?Q_nJaDn6-ak3Oo;
71639 z>FfG|ewis{S~KJO&+6Hj*_k<%`8;zub0_mG2$J1YCnvk9q8$R9w-C*Xm;yuTTgb23
71641 zBxU&h?XESbUi-Kst#n3*J}WITKEpBMuS?u9L5XbenM7|G{EdjK2|o>%#N)2^4TjU*
71643 zozbE#Im)1_B=!zwKv>#(#HEHxVustD-Hs%FUzP+;U))#3?<2oQ>eddl=SdlEx7fZM
71644 zeoorr!7P=;&q-T6n6-=9@u~x{MeKD}8pJJ*%3Sqw*(-O*gYsnZmW<c&HK>l{+`Gle
71645 z84-KcQFTt;P!H5gD97`OsO-~PBTaWYXG<l4k)#Zl^|h$hur}aaOII{dNnj)?!?i|i
71649 zKcBBBqGW}7lzb%-u`B2&{Qu_bigzl0sraJeh060+p1ktRl_#t`+Y57zG&$-WF~sDm
71650 z`C^#KS^Gqj$z2BxKO_&C-&f=nG0fz&)8cKD+y0#xZgSii(O`1jzZb10=baTpP44>-
71651 zqS@rYb7F+ag_lH&$%%h0hM3&=H%97-dSb%=SpC?9f2y9E@PDiR)`Wkio|%w;r~c09
71652 zd~WjU2-c?~#4rA<gddx$<{N#R@ICpx{%>M_k}ni;&F6;C9lmsU&zn<CPwr96B$LLA
71653 zP5W|(>Fb{{Z{Ekr*-r6#zIk$`+$cYlhvnz;O3S?Fef5vu+}X0X`MSI-pR2NJH*es%
71654 zYGtw~Z2bPcsUDjusXqBqeb$=?n(x0kw&hu?ZW%2q{f4;KtT$I>%zUs&`wo-?!_$5X
71656 zjswH3E!6*%0-@Fl>VHasP#Zt?KW2cKjT!qNGeE4{)Cvnt`QIY;i&Nr?Y1_V%WjRuI
71657 z$q$n6Q+5oSIP~c-UAu4CYPmld3A!s^B;{)|+S&fDdImWd3S(dj%pJB1mO;<3OI}%t
71659 zu-ujcY#sF=rNGJqE6-72Xj(R~J(96TGPX!!iDc}Mj1^oA0_noNBugUm_U>rhZd#@@
71660 zO_^LJHkK~LJ1M-?f$~I;lOHSO!+~5^`TKe&$5{f1D9^%m#O5Ak^M}Od55*4i)}LVN
71661 zie<7-?n=(!x+xzkW%|HlObszdEmP~&c6C6VQddn6_!SIF>W6u-5;nnZ_v|gx!k?f&
71662 z(93k6-j$61-qepXD$|e|lbM{%YOT*~&m72{%3RGn$h-;$B`0ak3swf3g5AN<;B0U`
71664 z<~QYc=a1&k=C9`;<X?oPur-_zeh@AT`@&t}(ePY&Gkjc7g@(eI!sNo7!m`5p!uG;}
71665 z!l}a5!h^!AXizjJni9>6Rz{nm-O<tLY;-+(5WOgtP;HkNeET9#>J*oEquS1fmJE02
71666 zoL#=otJ|n0inT*ARw&j6#af`4_$3p&Wa5@2X34}WnOG%>v*L-+E1#Hm3+(^UDG6L?
71668 z37iKo2ZsCYYifyN?NE#rinT$p7APiu$;2+1xFv~MGVw|#R!QQlc%ob-|CgN<<hbwu
71669 za+Un=YN6cE|I`x2+MyUL6l(*P$JEXLG<M0vElJFhiB~eQN-s{^YVzwn%xPOK@5GO(
71670 zo!Q~*e@=^SZBa{T{qIw2g<@@>^*@zQTUa!9T>rbw#w?k5as7`aU4MpE{O{L&nD-$6
71671 zhr|Y|h4LQH|I`v%|NFGZ^FOr#%VXN(_@Bm(>wlN^IR2;cN+woG;^gXojswGSU&XHj
71674 zkz!ReJ(?#r3AY#Lw!HjV%CBBe>h{@O>jkkYB}q@ySTQkP`zK~b>&1d-pI8~4MLo^5
71677 zJH{)Ao+c}YI)mxKqM$q29vlij53UCHP2aKXo+~2kN|Z_-&Y~3I{spT1i`Av7Xi`=5
71678 zC{~MPbx2l&bmY_ZDz0_@IvM;gP~~6jni-e-UryqGfhzxE?NU{&QdMkHtVODdJ*tW|
71682 zzt3D76l(#_|B;hB-Pk1)w<Ix3CSJ+JY9*V+6fsY%5?jPRaWdZfO+1&SWQ=!~T$Fql
71683 zuqPhng~{@Ia(Y-!HLD5ggMpc#&ruCl<K-NV1H<unkE?~}z;J&qhgzaoI}~FDmgguC
71686 z`@Z$t(6(GxYem~02wv4&-RgCfcD|S>W;r&W6c@xz)XwiFPqL0Y37%u3Pu4@8%+_Ie
71687 zRUwzt_*tiQ<Vn|&CynDNo3z<&ek&oM)6h4P-E+SsJLR{N9dzH7UCti5za^KbdexZh
71691 zraUM)TK=-RkC9^x`Ih{)3HdAXR}A@%>@vUKlkXWG@0%)<RXiZ4$!X^PzMNr*`^>*3
71693 zJYepJ<zaLGV`+M#rZ0HT+|SGN=6*q5F!zh{qPbs^m(2aL{8MxPGx-B^|DpV$x&OKR
71694 zb94U-`6F}xOZkPl|3~>B&HcW-Z|)D|Uzz)Vl8?;&vHTlz|FQhBx&N*F&qAq48Goue
71695 zW&D}!2P;k9Xf*d$Wjv!MsY&Mk>+09deY%=%?laVEbDyJr+uZ-D`ftqrpD9z*s&&eg
71696 zRQ0j?Lv#NZ>R+1sPPNnAKUM$A-2bimx8{C89X0o3>X-oa$Lf#G?-S~zxyL)uN_9$|
71697 zGQU4p|C{;O|6Tnb=J#b~o>Bc!-7xo?>i;tL|67@7QID0$sp|hx|F2Lc%Vf<xgwWg@
71698 zVWPQz556aq9;ds^{nzwAG56olzhUmbsejYt%8V&Jt)?!VC6**5GCdt8{%-b<%zvLH
71699 zwXjS77xUlIB&19K*!*`~$Yf6kOaE8%-?2n*Tmmfr6Z78*^J|h=E?22;F+{L`j5o+1
71701 zhM3=PnF~aVxuh6jE-Bi~CB<lSN%70(0#l>@7v}y?%q7JP5yvyjTvGhE=2Bvfspqt*
71702 zQ{!4`y}7j5Xf7@Oxw(|sZZ0Kui2u=$-R4qgAL_>@Wxi?$>Y}p)bulT4#iR@tlQLLL
71703 z%3WpG>5^{KZAm)*Bk)49oAaB=Zq9``ZO!j*o4P69)A?O<kL#m1<5U)d<8(G8u6-Jk
71705 z>X5k~R;C70f297%+>gd36*?eZfiXB-7_JI8hr7e0;o0~M*+N)oEQ~HpF3ip!$)6UT
71706 zVyc)gRwQ309ucRLd>?-or3c<pm7U`$t%S5+o_{nD&Smj$P9LR}kXRpP|5asgXYr+Z
71708 zC1(K7(2I1B-kR)nc2VEfUuMEgb7p+9yID_Wd-DC>)y)0OtDrt;4<-k5gB8KXWCh2W
71711 z6#(hP;XZOw!KI3kcT>UV?ns*(meSN)R4>O<d-VWw&jogAYOi+WH#qkC+?H}*FQsnH
71713 znx+EP%keZ7uwF{jRG@k}o~8oUOKF-4Sg)?4SFw3tv1N)2YrO`H6<Duk^>ShD)48Gj
71715 zgj;`DT?+ZieK%SEDduS~Yl!!ak&{jPGX2W&bJOp-BcCXx2B|hRLCsVP)oQg_JyNfr
71717 zJ*FkP-}Fi@ireCe)UsZ-nbyz@xj?Q;b|F4&+Cx`OA2MF`-m1pOy}to#Q*FK8GgwNW
71719 zZi@!DhH*&6<QmLuO-9?+Zm5Z3nHmJ=MT21f=yu9-z0ss-zWB-dx9^MBUormt&Vc$k
71721 zXKpd~AIKk=@Rc!zIcko%|Bm_{bN>VN2j>1G^&<iBt1#Z&--UOLU%EuM@k9LO)n(HY
71722 zPj>2(6XgeTX?#k-z}q&SWgDu-s;O$8T4~<3d)0AuN!^LhKuGo{pP8(P*#-yURBlf2
71723 zFnDQt&|~3Bc15-?yEA(bZo?C;lik`T<#c|H^Y)R+|7j06rML&2a<^rTHK-~Y6r%xH
71724 z4Nye`Fd8(gL08eBiH1rW+L!m4-|O&YY25tN(`Q%x?=@c*SXm&lnvvD4tRE7HAMI=)
71725 z=6-LHhSqFoRVB1yLc339!}`?i-O`Yn38~nSim_Ezu~o9Ra$$Yyw|Kf8+wp2XF4R}=
71726 z^G@5j)pn%%mZ{TMn_73TINraXS0EeZXw!<HYihDSxzn_0PxbHU70=#}Pfqn-r8a4y
71727 zcB#Yaw7RTrtEUj?@z4MrFbO_@C8mDa3VY#LrrF8QxUcRqKj-@)abF+T5m>Kc_2LnP
71728 zuOCyO<5hHQ3YR-<xjU9&Q=DqltVWHjp-;>C#ScZtYTSMLEyE=hb3ZgUD&gi$%ltlx
71729 z-FM3p+H?7)=OFk!jc>N6S9+pZ<!O|sNjn7hQo6l#!KLx5_YcG+n?Dx;mu%Pf^qdFl
71730 zD=k8CJw7>`ShH4?O{;LMm@4LpWyvm|2a>kKZSmCfTpLU&pMrc!J-?RmJg&Re5^t?#
71731 zy!FlZnOn<vaV_!UTE>fOi5J&0UgUP{!!<gUc5`Q!SSnYj6{du-f7EA`!L!^n@p?A$
71732 zC!dY%_=oR>Z`jlLhJB2m>pY~b0pfkAcl7VPdc)KgFO!ve<AlFUSY>?1CzTT6v-t0H
71733 z49PtM#g$W@oIf^$iIsB4klZs-HVjDlW1BP-Fi(P68VZm9`RqIK7xt!~c_`UM*6w=|
71735 z_#CeE_q-b7o|j11u-W&2#I$!Xb5qKfg#qHGGN!3K=4pChd2XH#(~3S|V}~lS0~5P#
71737 zGQ2^gYw3JRU?eF6!u*onCvbhxCun`p=h)y%0wYNou*|PJTw4Lzn${E_lltUirat-D
71739 z6RAcxSFKH?nO*#X?e+1xub-q%H2w9M=+AKk`>%~3<JF}#f3M@%(_W|9FJK(|AHxXt
71741 zvi4H#?b;`Gy7*EaDK(YG)-}X)tu<q6CfCeKzAlM(obQasy~~5j?d6H6mQ3H0KabP>
71743 zE0o^f2a6+euF1>mO}l)*JTA}4>+*qosp^t_=;H5$H>%z0vt*ygCj;LJFM!ps1@^-U
71749 zyZO3yFYO2TIo?vP&2PhEPWx7C2Q)~Jay_oKj$X;=a6M-A@*4cGeBZ&{kDKa+Dtdv{
71750 z3rH_8o`fo%q+wG^{R`;XtX@?`uVVH3q0?H-%~v%j6$Xp6X2YSVB+j)p$U|u;O+sle
71751 zR9c%-hHbO8EJtx@yB|4boL(9>rBp94dZCJ58aAa=uV(b>Dtd8PyLUKOu5g;B{^dQ%
71754 zvC+_W-+oOP4r%?1>u(y`o=NTNg(`Y!SnFSGuO>F6`Io+LXjq$n{m_0-fS!cGoqB^$
71755 z1GlXLe})b-+z;q+bX(^49_Wc0{0TmIEM}df+dX5(ZQHLK(CyDZVupJmA3C}%`&rMi
71756 za9jJBxOFq_VbHU~{l3XJJFndDbEN5x8Sa~O3tO|go~I0-biU51<EXV?cXq~4e_n@w
71757 znuc3m{PSz*sT=-z>)pbw8C*%saPQ6aE$+o)Nx%Q*_BHWYzh8Y8yqhZiX|0$w^v{Z|
71759 zooXjj;<0g?8mSe2o7C;U(=h{JBq;;JZ2N-72~3<o;shp6VB&Noe~MXrJv945yq?8>
71761 z4h2jo%=|O!tZw|3j?erP-FpY5@E0RElz&>CYmp>&<Jo?n{gku)@KQ&*Nsraj)IN1w
71763 zm`l`eanp@T<Jo@PyRorDmDqua9nbb-=H>uPEBfecKczNyJlkK%!71tO59Ru}cR(jc
71764 zx!Hai)-6+51DD2_`T07X<@T9hW;Y02vik%r+36g*&v0q)6STDVIW}14m+jtxG_#t0
71765 z^0A<0`(wu@f99P^QU-*TM3WdJCW|=(t0IplC*MCZ<-AV#^`lKyOK2_H>saVY0wYNo
71766 zPPx=e{!G13XuY|?vB96cr;?NbVevU^i&Ytpn>RE2M>9NAFSxywoYv9n@6p6R*6-1N
71767 z{dH>nBIoh{LC)aEb!TVL=d3A@zlOdbZUq;`L-K}6`>UAYdTOn(drH~<D?Jw(GyGn1
71771 zZAdx}4=lG@=sX4Hz7`-_xVa8IOW@{tS032dWEBo9w_0QsE!ZO*w<V71pwB`n*Uol5
71773 z7Rzv5j%)mGN4NhyA`OLEwG-~~=qLXU`06w1aZQf<9j@K}$T4R4ZPMeVhGn?l5znyv
71775 z67lZJ{`eavm2!s}Fp|JXQU-)oH2Hfo`NZ1bGGHWuk)#X=t7rmZ1ODy_Ghifvk)#X=
71776 zt7!7SqVkEg!DYZm0wYNo5H=}Y^V|Qmd1T7>`2OAEx5|C;guE<o%cm-5a`u>H4~tdm
71777 z6SZ4U*Yosp-KTfzgZh+dQJ+><)Lr#ue1@>T+}~avlxfdQgie?YvtcQ$hi%Df&U2=f
71780 zbo>-c0wYNot~acY?WiXvw9I}iXqo+(l-Z93EwdjBT4p~M=??jB4x{xqt-W#GO>1si
71781 zZ(H(pqqJ@vZ}WsD^u6NNr>-P0l9b{13a-;_?#H9FnBh9z)~9%smP%q)8KoTrr>c(9
71783 z^}~$Xo3#&<Gd<#(qbzW*7qj?xt-!r?%+gSr31!(8)22Hn&nM@+Yc<sL5T>aGYK_{W
71784 z_Nf!<vbtm1a1o4*=f`0otbwg?08YYXxSO2vK2mq-*?Ot&HSNA5`n0~P@97tra@@|#
71785 z%+4%JMn#Wg&Sq|A9+?Da2s(o)!Q5bZurb&b91YF|H-pF7AlsPj%udTL%&yLE$?nUZ
71789 z-6%aQy{swMwAPHTnNhQ#W>wARnq4(VYR=SLt+`k8yd0LB%45q@%k#=B%6;XX<wNCD
71790 z<;&$e<)^hlZDZ}|+R3$ZYM0iouiaj|zxG7!#oAl7kLy%jeO-Iq#JX8^i-k;5-f#1i
71791 zQ9HHLCicUnZ+%P^BX7gf)-oUsy-t4gTYNy|ZCK3XT#BCyl3EedN=W>?X;|t9&FZDJ
71792 z5|Y!)@roY-5j?`JNH{kYEbSdg1+EW)dGA0fxEgFKSh`^#6?}P{3NGI;kP3Jlm(ny9
71794 zG!^)AL;avxy_BY@z?U03=TvzY;Z&gCQ~BX~om9ZP?qm60Cl!2d-;Z2b@O!#YMK9&H
71795 zEa3SFO4C%JvnU)-QvvIxG))Dnm*cV5YMB(Hv=Wl5={O!g9j6!5kNQLMH8bXwHwmYg
71796 z(n?59FUQk14lZewRzh-bK8~mU#dR2_9}W1I)?t)?G~i$Sj-WL4FMUUFJoPWO7t@ah
71799 zH+(h<waca()~i{2G2JlWUurMqcGM{TTl`<zo5Ku`Ty+n;=ddJZKv>$&ap!1VlFp-I
71800 z287ub548b*i{-Pl#fxpg-_BtMgxNN#E9tX!1D4_$W~@syp)j*87iufsp#%5I{eJp7
71801 z#|nSO8Z-MAqdj#$wK20bq(1|X84zacD&Mo10b#cG^u0|bF~j2)>x5g2xgNsIzK{J>
71806 zLOfov^4Ju*df7Hm9@E-@+c}-qBwuxYgBy<9=RFO_#YuNb|LPs-f0q5*>6_eVGO4XY
71807 z5x-eAOcBcb7kjhKybZ>R31X7*>I{>w=9;{;SS%AO#Txii6Y5XlhPmH>zcBZ|fScxi
71808 z6MkgwKZ0B4ehdE6-2W1;nEMs@GjsnlxN7cK;Roja1Gr}H*Wicd{zJHK?$_bZ&Hc~g
71811 diff --git a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/full-font.tests b/src/third_par…
71813 --- a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/full-font.tests
71814 +++ b/src/third_party/harfbuzz-ng/src/test/subset/data/tests/full-font.tests
71815 @@ -9,4 +9,5 @@ drop-hints.txt
71821 diff --git a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/layout.notonastaliqurdu.tests b…
71823 --- a/src/third_party/harfbuzz-ng/src/test/subset/data/tests/layout.notonastaliqurdu.tests
71824 +++ b/src/third_party/harfbuzz-ng/src/test/subset/data/tests/layout.notonastaliqurdu.tests
71825 @@ -1,5 +1,6 @@
71827 NotoNastaliqUrdu-Bold.ttf
71828 +NotoNastaliqUrdu-Regular.ttf
71832 @@ -11,4 +12,5 @@ SUBSETS:
71838 diff --git a/src/third_party/harfbuzz-ng/src/test/subset/run-tests.py b/src/third_party/harfbuzz-ng…
71840 --- a/src/third_party/harfbuzz-ng/src/test/subset/run-tests.py
71841 +++ b/src/third_party/harfbuzz-ng/src/test/subset/run-tests.py
71842 @@ -11,7 +11,6 @@ import sys
71846 -import hashlib
71850 @@ -63,11 +62,11 @@ def run_test (test, should_check_ots):
71854 - expected_hash = hashlib.sha224(fp.read()).hexdigest()
71857 - actual_hash = hashlib.sha224(fp.read()).hexdigest()
71860 - if expected_hash == actual_hash:
71863 print ("Checking output with ots-sanitize.")
71865 diff --git a/src/third_party/harfbuzz-ng/src/util/Makefile.sources b/src/third_party/harfbuzz-ng/sr…
71867 --- a/src/third_party/harfbuzz-ng/src/util/Makefile.sources
71868 +++ b/src/third_party/harfbuzz-ng/src/util/Makefile.sources
71869 @@ -4,6 +4,8 @@ HB_VIEW_sources = \
71870 font-options.hh \
71871 hb-view.cc \
71872 helper-cairo-ansi.hh \
71873 + helper-cairo-ft.hh \
71874 + helper-cairo-user.hh \
71875 helper-cairo.hh \
71876 main-font-text.hh \
71878 diff --git a/src/third_party/harfbuzz-ng/src/util/ansi-print.hh b/src/third_party/harfbuzz-ng/src/u…
71880 --- a/src/third_party/harfbuzz-ng/src/util/ansi-print.hh
71881 +++ b/src/third_party/harfbuzz-ng/src/util/ansi-print.hh
71882 @@ -249,7 +249,7 @@ block_best (const biimage_t &bi, bool *inverse)
71886 - /* Make the sums cummulative */
71888 for (unsigned int i = 1; i < bi.height; i++) {
71889 row_sum[i] += row_sum[i - 1];
71890 row_sum_i[i] += row_sum_i[i - 1];
71891 diff --git a/src/third_party/harfbuzz-ng/src/util/font-options.hh b/src/third_party/harfbuzz-ng/src…
71893 --- a/src/third_party/harfbuzz-ng/src/util/font-options.hh
71894 +++ b/src/third_party/harfbuzz-ng/src/util/font-options.hh
71895 @@ -53,11 +53,13 @@ struct font_options_t : face_options_t
71909 @@ -73,10 +75,10 @@ static struct supported_font_funcs_t {
71917 - {"ot", hb_ot_font_set_funcs},
71921 @@ -94,6 +96,8 @@ font_options_t::post_parse (GError **error)
71930 @@ -137,6 +141,14 @@ font_options_t::post_parse (GError **error)
71945 @@ -265,7 +277,11 @@ font_options_t::add_options (option_parser_t *parser)
71947 {"font-ptem", 0, 0,
71948 … G_OPTION_ARG_DOUBLE, &this->ptem, "Set font point-size (default: 0; disabled)", "point-size"},
71949 + {"font-slant", 0, 0,
71950 + G_OPTION_ARG_DOUBLE, &this->slant, "Set synthetic slant (default: 0)", "slant ratio; …
71951 {"font-funcs", 0, 0, G_OPTION_ARG_STRING, &this->font_funcs, text, "impl"},
71952 + {"sub-font", 0, G_OPTION_FLAG_HIDDEN,
71953 + G_OPTION_ARG_NONE, &this->sub_font, "Create a sub-font (default: false)", "boolean"},
71954 …{"ft-load-flags", 0, 0, G_OPTION_ARG_INT, &this->ft_load_flags, "Set FreeType load-flags (defaul…
71957 diff --git a/src/third_party/harfbuzz-ng/src/util/hb-ot-shape-closure.cc b/src/third_party/harfbuzz…
71959 --- a/src/third_party/harfbuzz-ng/src/util/hb-ot-shape-closure.cc
71960 +++ b/src/third_party/harfbuzz-ng/src/util/hb-ot-shape-closure.cc
71961 @@ -59,8 +59,8 @@ struct shape_closure_consumer_t
71965 - template <typename text_options_t>
71966 - bool consume_line (text_options_t &text_opts)
71972 diff --git a/src/third_party/harfbuzz-ng/src/util/hb-subset.cc b/src/third_party/harfbuzz-ng/src/ut…
71974 --- a/src/third_party/harfbuzz-ng/src/util/hb-subset.cc
71975 +++ b/src/third_party/harfbuzz-ng/src/util/hb-subset.cc
71976 @@ -740,7 +740,7 @@ subset_main_t::add_options ()
71977 …{"glyphs-", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK, (gpointer) &parse_glyphs, "Specify …
71980 - {"glyphs-file", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_file_for<parse_glyphs>, "Specif…
71981 + {"glyphs-file", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_file_for<parse_glyphs>, "Specif…
71983 …K, (gpointer) &parse_text, "Specify text to include in the subset. Use --text-=... to subtract c…
71984 …{"text-", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_CALLBACK, (gpointer) &parse_text, "Specify text…
71985 diff --git a/src/third_party/harfbuzz-ng/src/util/helper-cairo-ft.hh b/src/third_party/harfbuzz-ng/…
71988 --- /dev/null
71989 +++ b/src/third_party/harfbuzz-ng/src/util/helper-cairo-ft.hh
71990 @@ -0,0 +1,120 @@
71998 + * software and its documentation for any purpose, provided that the
72002 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
72010 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
72011 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
72020 +#include "font-options.hh"
72022 +#include <cairo-ft.h>
72023 +#include <hb-ft.h>
72042 + * TODO Perhaps add API to hb-ft to encapsulate this code. */
72055 + const char *blob_data = hb_blob_get_data (font_opts->blob, &blob_length);
72060 + font_opts->face_index,
72075 + const int *coords = hb_font_get_var_coords_normalized (font_opts->font, &num_coords);
72081 + for (unsigned int i = 0; i < num_coords; i++)
72089 + cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, font_opts->ft_load_flags);
72111 diff --git a/src/third_party/harfbuzz-ng/src/util/helper-cairo-user.hh b/src/third_party/harfbuzz-n…
72114 --- /dev/null
72115 +++ b/src/third_party/harfbuzz-ng/src/util/helper-cairo-user.hh
72116 @@ -0,0 +1,316 @@
72124 + * software and its documentation for any purpose, provided that the
72128 + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
72136 + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
72137 + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
72146 +#include "font-options.hh"
72151 +#include "hb-blob.hh"
72230 + cairo_scale (cr, +1./x_scale, -1./y_scale);
72246 + if (unlikely (src->length < length))
72249 + memcpy (data, src->arrayZ, length);
72270 + cairo_scale (cr, +1./x_scale, -1./y_scale);
72273 + hb_bytes_t bytes = blob->as_bytes ();
72335 + for (unsigned i = 0; i < len; i++)
72403 + hb_font_reference (font_opts->font),
72408 + hb_face_t *face = hb_font_get_face (font_opts->font);
72425 + /* Ignoring SVG for now, since we cannot render it. */
72433 diff --git a/src/third_party/harfbuzz-ng/src/util/helper-cairo.hh b/src/third_party/harfbuzz-ng/src…
72435 --- a/src/third_party/harfbuzz-ng/src/util/helper-cairo.hh
72436 +++ b/src/third_party/harfbuzz-ng/src/util/helper-cairo.hh
72437 @@ -29,10 +29,11 @@
72439 #include "view-options.hh"
72440 #include "output-options.hh"
72441 +#include "helper-cairo-ft.hh"
72442 +#include "helper-cairo-user.hh"
72444 -#include <cairo-ft.h>
72445 -#include <hb-ft.h>
72446 -#include FT_MULTIPLE_MASTERS_H
72450 #include "helper-cairo-ansi.hh"
72452 @@ -65,74 +66,27 @@ _cairo_eps_surface_create_for_stream (cairo_write_func_t write_func,
72456 -
72457 -static FT_Library ft_library;
72458 -
72459 -#ifdef HAVE_ATEXIT
72460 -static inline
72461 -void free_ft_library ()
72465 - FT_Done_FreeType (ft_library);
72471 -#endif
72477 hb_font_t *font = hb_font_reference (font_opts->font);
72480 - /* We cannot use the FT_Face from hb_font_t, as doing so will confuse hb_font_t because
72481 - * cairo will reset the face size. As such, create new face...
72482 - * TODO Perhaps add API to hb-ft to encapsulate this code. */
72483 - FT_Face ft_face = nullptr;//hb_ft_font_get_face (font);
72484 - if (!ft_face)
72485 - {
72486 - if (!ft_library)
72487 - {
72488 - FT_Init_FreeType (&ft_library);
72489 -#ifdef HAVE_ATEXIT
72490 - atexit (free_ft_library);
72491 -#endif
72492 - }
72493 -
72494 - unsigned int blob_length;
72495 - const char *blob_data = hb_blob_get_data (font_opts->blob, &blob_length);
72496 -
72497 - if (FT_New_Memory_Face (ft_library,
72498 - (const FT_Byte *) blob_data,
72499 - blob_length,
72500 - font_opts->face_index,
72501 - &ft_face))
72502 - fail (false, "FT_New_Memory_Face fail");
72503 - }
72504 - if (!ft_face)
72505 - {
72506 - /* This allows us to get some boxes at least... */
72507 - cairo_face = cairo_toy_font_face_create ("@cairo:sans",
72508 - CAIRO_FONT_SLANT_NORMAL,
72509 - CAIRO_FONT_WEIGHT_NORMAL);
72510 - }
72514 - {
72515 -#ifdef HAVE_FT_SET_VAR_BLEND_COORDINATES
72516 - unsigned int num_coords;
72517 - const int *coords = hb_font_get_var_coords_normalized (font, &num_coords);
72518 - if (num_coords)
72519 - {
72520 - FT_Fixed *ft_coords = (FT_Fixed *) calloc (num_coords, sizeof (FT_Fixed));
72521 - if (ft_coords)
72522 - {
72523 - for (unsigned int i = 0; i < num_coords; i++)
72524 - ft_coords[i] = coords[i] << 2;
72525 - FT_Set_Var_Blend_Coordinates (ft_face, num_coords, ft_coords);
72526 - free (ft_coords);
72527 - }
72528 - }
72529 -#endif
72532 - cairo_face = cairo_ft_font_face_create_for_ft_face (ft_face, font_opts->ft_load_flags);
72533 - }
72537 @@ -140,6 +94,9 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
72539 font_opts->font_size_x,
72540 font_opts->font_size_y);
72542 + font_matrix.xy = -font_opts->slant * font_opts->font_size_x;
72547 @@ -165,17 +122,10 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
72551 - bool ret = false;
72552 -#ifdef FT_HAS_COLOR
72553 - FT_Face ft_face = cairo_ft_scaled_font_lock_face (scaled_font);
72554 - if (ft_face)
72555 - {
72556 - if (FT_HAS_COLOR (ft_face))
72557 - ret = true;
72558 - cairo_ft_scaled_font_unlock_face (scaled_font);
72559 - }
72560 -#endif
72561 - return ret;
72569 @@ -427,11 +377,11 @@ static const char *helper_cairo_supported_formats[] =
72573 - typename output_options_t>
72578 - output_options_t *out_opts,
72583 diff --git a/src/third_party/harfbuzz-ng/src/util/main-font-text.hh b/src/third_party/harfbuzz-ng/s…
72585 --- a/src/third_party/harfbuzz-ng/src/util/main-font-text.hh
72586 +++ b/src/third_party/harfbuzz-ng/src/util/main-font-text.hh
72587 @@ -31,8 +31,14 @@
72589 /* main() body for utilities taking font and processing text.*/
72591 -template <typename consumer_t, typename font_options_t, typename text_options_t>
72592 -struct main_font_text_t : option_parser_t, font_options_t, text_options_t, consumer_t
72604 @@ -53,8 +59,8 @@ struct main_font_text_t : option_parser_t, font_options_t, text_options_t, consu
72608 - font_options_t::add_options (this);
72609 - text_options_t::add_options (this);
72615 diff --git a/src/third_party/harfbuzz-ng/src/util/shape-options.hh b/src/third_party/harfbuzz-ng/sr…
72617 --- a/src/third_party/harfbuzz-ng/src/util/shape-options.hh
72618 +++ b/src/third_party/harfbuzz-ng/src/util/shape-options.hh
72619 @@ -51,6 +51,8 @@ struct shape_options_t
72628 @@ -90,185 +92,22 @@ struct shape_options_t
72632 - hb_buffer_t *text_buffer = nullptr;
72633 - if (verify)
72634 - {
72635 - text_buffer = hb_buffer_create ();
72636 - hb_buffer_append (text_buffer, buffer, 0, -1);
72637 - }
72638 -
72642 - *error = "All shapers failed.";
72650 - if (verify && !verify_buffer (buffer, text_buffer, font, error))
72651 - goto fail;
72652 -
72653 - if (text_buffer)
72654 - hb_buffer_destroy (text_buffer);
72655 -
72659 - if (text_buffer)
72660 - hb_buffer_destroy (text_buffer);
72661 -
72665 - bool verify_buffer (hb_buffer_t *buffer,
72666 - hb_buffer_t *text_buffer,
72667 - hb_font_t *font,
72668 - const char **error=nullptr)
72669 - {
72670 - if (!verify_buffer_monotone (buffer, error))
72671 - return false;
72672 - if (!verify_buffer_safe_to_break (buffer, text_buffer, font, error))
72673 - return false;
72674 - return true;
72675 - }
72676 -
72677 - bool verify_buffer_monotone (hb_buffer_t *buffer, const char **error=nullptr)
72678 - {
72679 - /* Check that clusters are monotone. */
72680 - if (cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES ||
72681 - cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
72682 - {
72683 - bool is_forward = HB_DIRECTION_IS_FORWARD (hb_buffer_get_direction (buffer));
72684 -
72685 - unsigned int num_glyphs;
72686 - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, &num_glyphs);
72687 -
72688 - for (unsigned int i = 1; i < num_glyphs; i++)
72689 - if (info[i-1].cluster != info[i].cluster &&
72690 - (info[i-1].cluster < info[i].cluster) != is_forward)
72691 - {
72692 - if (error)
72693 - *error = "clusters are not monotone.";
72694 - return false;
72695 - }
72696 - }
72697 -
72698 - return true;
72699 - }
72700 -
72701 - bool verify_buffer_safe_to_break (hb_buffer_t *buffer,
72702 - hb_buffer_t *text_buffer,
72703 - hb_font_t *font,
72704 - const char **error=nullptr)
72705 - {
72706 - if (cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES &&
72707 - cluster_level != HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
72708 - {
72709 - /* Cannot perform this check without monotone clusters.
72710 - * Then again, unsafe-to-break flag is much harder to use without
72711 - * monotone clusters. */
72712 - return true;
72713 - }
72714 -
72715 - /* Check that breaking up shaping at safe-to-break is indeed safe. */
72716 -
72717 - hb_buffer_t *fragment = hb_buffer_create_similar (buffer);
72718 - hb_buffer_t *reconstruction = hb_buffer_create_similar (buffer);
72719 -
72720 - unsigned int num_glyphs;
72721 - hb_glyph_info_t *info = hb_buffer_get_glyph_infos (buffer, &num_glyphs);
72722 -
72723 - unsigned int num_chars;
72724 - hb_glyph_info_t *text = hb_buffer_get_glyph_infos (text_buffer, &num_chars);
72725 -
72726 - /* Chop text and shape fragments. */
72727 - bool forward = HB_DIRECTION_IS_FORWARD (hb_buffer_get_direction (buffer));
72728 - unsigned int start = 0;
72729 - unsigned int text_start = forward ? 0 : num_chars;
72730 - unsigned int text_end = text_start;
72731 - for (unsigned int end = 1; end < num_glyphs + 1; end++)
72732 - {
72733 - if (end < num_glyphs &&
72734 - (info[end].cluster == info[end-1].cluster ||
72735 - info[end-(forward?0:1)].mask & HB_GLYPH_FLAG_UNSAFE_TO_BREAK))
72736 - continue;
72737 -
72738 - /* Shape segment corresponding to glyphs start..end. */
72739 - if (end == num_glyphs)
72740 - {
72741 - if (forward)
72742 - text_end = num_chars;
72743 - else
72744 - text_start = 0;
72745 - }
72746 - else
72747 - {
72748 - if (forward)
72749 - {
72750 - unsigned int cluster = info[end].cluster;
72751 - while (text_end < num_chars && text[text_end].cluster < cluster)
72752 - text_end++;
72753 - }
72754 - else
72755 - {
72756 - unsigned int cluster = info[end - 1].cluster;
72757 - while (text_start && text[text_start - 1].cluster >= cluster)
72758 - text_start--;
72759 - }
72760 - }
72761 - assert (text_start < text_end);
72762 -
72763 - if (0)
72764 - printf("start %d end %d text start %d end %d\n", start, end, text_start, text_end);
72765 -
72766 - hb_buffer_clear_contents (fragment);
72767 -
72768 - hb_buffer_flags_t flags = hb_buffer_get_flags (fragment);
72769 - if (0 < text_start)
72770 - flags = (hb_buffer_flags_t) (flags & ~HB_BUFFER_FLAG_BOT);
72771 - if (text_end < num_chars)
72772 - flags = (hb_buffer_flags_t) (flags & ~HB_BUFFER_FLAG_EOT);
72773 - hb_buffer_set_flags (fragment, flags);
72774 -
72775 - hb_buffer_append (fragment, text_buffer, text_start, text_end);
72776 - if (!hb_shape_full (font, fragment, features, num_features, shapers))
72777 - {
72778 - if (error)
72779 - *error = "All shapers failed while shaping fragment.";
72780 - hb_buffer_destroy (reconstruction);
72781 - hb_buffer_destroy (fragment);
72782 - return false;
72783 - }
72784 - hb_buffer_append (reconstruction, fragment, 0, -1);
72785 -
72786 - start = end;
72787 - if (forward)
72788 - text_start = text_end;
72789 - else
72790 - text_end = text_start;
72791 - }
72792 -
72793 - bool ret = true;
72794 - hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
72795 - if (diff)
72796 - {
72797 - if (error)
72798 - *error = "Safe-to-break test failed.";
72799 - ret = false;
72800 -
72801 - /* Return the reconstructed result instead so it can be inspected. */
72802 - hb_buffer_set_length (buffer, 0);
72803 - hb_buffer_append (buffer, reconstruction, 0, -1);
72804 - }
72805 -
72806 - hb_buffer_destroy (reconstruction);
72807 - hb_buffer_destroy (fragment);
72808 -
72809 - return ret;
72810 - }
72811 -
72815 @@ -299,6 +138,7 @@ struct shape_options_t
72823 @@ -422,6 +262,7 @@ shape_options_t::add_options (option_parser_t *parser)
72824 …{"utf8-clusters", 0, 0, G_OPTION_ARG_NONE, &this->utf8_clusters, "Use UTF8 byte indices, not char…
72825 …{"cluster-level", 0, 0, G_OPTION_ARG_INT, &this->cluster_level, "Cluster merging level (default:…
72826 …{"normalize-glyphs",0, 0, G_OPTION_ARG_NONE, &this->normalize_glyphs, "Rearrange glyph clusters in…
72827 + {"unsafe-to-concat",0, 0, G_OPTION_ARG_NONE, &this->unsafe_to_concat, "Produce unsafe-to-conca…
72828 …{"verify", 0, 0, G_OPTION_ARG_NONE, &this->verify, "Perform sanity checks on shaping results", …
72829 {"num-iterations", 'n', G_OPTION_FLAG_IN_MAIN,
72830 G_OPTION_ARG_INT, &this->num_iterations, "Run shaper N times (default: 1)", "N"},
72831 diff --git a/src/third_party/icu/README.chromium b/src/third_party/icu/README.chromium
72833 --- a/src/third_party/icu/README.chromium
72835 @@ -264,3 +264,8 @@ D. Local Modifications
72836 - upstream bug:
72837 https://unicode-org.atlassian.net/browse/ICU-21865
72842 + - https://github.com/unicode-org/icu/pull/2070
72843 + - https://unicode-org.atlassian.net/browse/ICU-22005
72844 \ No newline at end of file
72845 diff --git a/src/third_party/icu/patches/formatted_string_builder.patch b/src/third_party/icu/patch…
72848 --- /dev/null
72850 @@ -0,0 +1,191 @@
72851 +diff --git a/source/i18n/formatted_string_builder.cpp b/source/i18n/formatted_string_builder.cpp
72853 +--- a/source/i18n/formatted_string_builder.cpp
72854 ++++ b/source/i18n/formatted_string_builder.cpp
72855 +@@ -6,6 +6,7 @@
72862 + #include "unicode/unum.h" // for UNumberFormatFields literals
72863 +@@ -197,6 +198,9 @@ FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const Unic…
72864 + int32_t thisLength = endThis - startThis;
72865 + int32_t otherLength = endOther - startOther;
72866 + int32_t count = otherLength - thisLength;
72873 +@@ -221,6 +225,9 @@ int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UE…
72883 +@@ -255,12 +262,18 @@ int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t coun…
72889 ++ U_ASSERT(getCapacity() - fZero >= fLength);
72893 + if (index == 0 && fZero - count >= 0) {
72895 + fZero -= count;
72898 +- } else if (index == fLength && fZero + fLength + count < getCapacity()) {
72899 ++ } else if (index == fLength && count <= getCapacity() - fZero - fLength) {
72902 + return fZero + fLength - count;
72903 +@@ -275,18 +288,26 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_…
72907 +- if (fLength + count > oldCapacity) {
72908 +- if ((fLength + count) > INT32_MAX / 2) {
72909 +- // If we continue, then newCapacity will overflow int32_t in the next line.
72913 ++ return -1;
72921 + return -1;
72923 +- int32_t newCapacity = (fLength + count) * 2;
72924 +- int32_t newZero = newCapacity / 2 - (fLength + count) / 2;
72927 ++ newZero = (newCapacity - newLength) / 2;
72930 +- auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * newCapacity));
72931 +- auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * newCapacity));
72937 +@@ -315,10 +336,8 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t…
72941 +- fZero = newZero;
72942 +- fLength += count;
72944 +- int32_t newZero = oldCapacity / 2 - (fLength + count) / 2;
72945 ++ newZero = (oldCapacity - newLength) / 2;
72949 +@@ -331,18 +350,20 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_…
72952 + sizeof(Field) * (fLength - index));
72953 +-
72954 +- fZero = newZero;
72955 +- fLength += count;
72957 +- U_ASSERT((fZero + index) >= 0);
72964 +- // TODO: Reset the heap here? (If the string after removal can fit on stack?)
72967 ++ U_ASSERT(count <= (fLength - index));
72968 ++ U_ASSERT(index <= getCapacity() - fZero);
72971 +- U_ASSERT(position >= 0);
72975 + sizeof(char16_t) * (fLength - index - count));
72976 +diff --git a/source/test/intltest/formatted_string_builder_test.cpp b/source/test/intltest/formatt…
72978 +--- a/source/test/intltest/formatted_string_builder_test.cpp
72979 ++++ b/source/test/intltest/formatted_string_builder_test.cpp
72980 +@@ -22,6 +22,7 @@ class FormattedStringBuilderTest : public IntlTest {
72988 +@@ -50,6 +51,7 @@ void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const
72996 +@@ -308,6 +310,45 @@ void FormattedStringBuilderTest::testCodePoints() {
73042 \ No newline at end of file
73043 diff --git a/src/third_party/icu/source/i18n/formatted_string_builder.cpp b/src/third_party/icu/sou…
73045 --- a/src/third_party/icu/source/i18n/formatted_string_builder.cpp
73046 +++ b/src/third_party/icu/source/i18n/formatted_string_builder.cpp
73047 @@ -6,6 +6,7 @@
73054 #include "unicode/unum.h" // for UNumberFormatFields literals
73055 @@ -197,6 +198,9 @@ FormattedStringBuilder::splice(int32_t startThis, int32_t endThis, const Unicod
73056 int32_t thisLength = endThis - startThis;
73057 int32_t otherLength = endOther - startOther;
73058 int32_t count = otherLength - thisLength;
73065 @@ -221,6 +225,9 @@ int32_t FormattedStringBuilder::append(const FormattedStringBuilder &other, UErr
73075 @@ -255,12 +262,18 @@ int32_t FormattedStringBuilder::prepareForInsert(int32_t index, int32_t count…
73081 + U_ASSERT(getCapacity() - fZero >= fLength);
73085 if (index == 0 && fZero - count >= 0) {
73087 fZero -= count;
73090 - } else if (index == fLength && fZero + fLength + count < getCapacity()) {
73091 + } else if (index == fLength && count <= getCapacity() - fZero - fLength) {
73094 return fZero + fLength - count;
73095 @@ -275,18 +288,26 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t…
73099 - if (fLength + count > oldCapacity) {
73100 - if ((fLength + count) > INT32_MAX / 2) {
73101 - // If we continue, then newCapacity will overflow int32_t in the next line.
73105 + return -1;
73113 return -1;
73115 - int32_t newCapacity = (fLength + count) * 2;
73116 - int32_t newZero = newCapacity / 2 - (fLength + count) / 2;
73119 + newZero = (newCapacity - newLength) / 2;
73122 - auto newChars = static_cast<char16_t *> (uprv_malloc(sizeof(char16_t) * newCapacity));
73123 - auto newFields = static_cast<Field *>(uprv_malloc(sizeof(Field) * newCapacity));
73129 @@ -315,10 +336,8 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t …
73133 - fZero = newZero;
73134 - fLength += count;
73136 - int32_t newZero = oldCapacity / 2 - (fLength + count) / 2;
73137 + newZero = (oldCapacity - newLength) / 2;
73141 @@ -331,18 +350,20 @@ int32_t FormattedStringBuilder::prepareForInsertHelper(int32_t index, int32_t…
73144 sizeof(Field) * (fLength - index));
73145 -
73146 - fZero = newZero;
73147 - fLength += count;
73149 - U_ASSERT((fZero + index) >= 0);
73156 - // TODO: Reset the heap here? (If the string after removal can fit on stack?)
73159 + U_ASSERT(count <= (fLength - index));
73160 + U_ASSERT(index <= getCapacity() - fZero);
73163 - U_ASSERT(position >= 0);
73167 sizeof(char16_t) * (fLength - index - count));
73168 …--git a/src/third_party/icu/source/test/intltest/formatted_string_builder_test.cpp b/src/third_par…
73170 --- a/src/third_party/icu/source/test/intltest/formatted_string_builder_test.cpp
73171 +++ b/src/third_party/icu/source/test/intltest/formatted_string_builder_test.cpp
73172 @@ -22,6 +22,7 @@ class FormattedStringBuilderTest : public IntlTest {
73180 @@ -50,6 +51,7 @@ void FormattedStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const
73188 @@ -308,6 +310,45 @@ void FormattedStringBuilderTest::testCodePoints() {
73234 diff --git a/src/third_party/leveldatabase/env_chromium.cc b/src/third_party/leveldatabase/env_chro…
73236 --- a/src/third_party/leveldatabase/env_chromium.cc
73238 @@ -5,12 +5,12 @@
73248 -#include "base/cxx17_backports.h"
73252 @@ -624,7 +624,7 @@ int GetCorruptionCode(const leveldb::Status& status) {
73256 - const size_t kNumPatterns = base::size(patterns);
73258 for (size_t i = 0; i < kNumPatterns; ++i) {
73261 @@ -637,7 +637,7 @@ int GetCorruptionCode(const leveldb::Status& status) {
73263 // + 1 for the "other" error that is returned when a corruption message
73265 - return base::size(patterns) + 1;
73270 diff --git a/src/third_party/libxml/BUILD.gn b/src/third_party/libxml/BUILD.gn
73272 --- a/src/third_party/libxml/BUILD.gn
73274 @@ -75,6 +75,7 @@ config("libxml_warnings") {
73282 @@ -98,6 +99,7 @@ static_library("xml_reader") {
73290 @@ -112,6 +114,7 @@ static_library("xml_writer") {
73298 @@ -119,6 +122,7 @@ static_library("libxml_utils") {
73306 @@ -155,7 +159,6 @@ static_library("libxml") {
73310 - #"src/DOCBparser.c",
73314 @@ -170,14 +173,12 @@ static_library("libxml") {
73318 - "src/elfgcchack.h",
73325 - "src/include/libxml/DOCBparser.h",
73329 diff --git a/src/third_party/libxml/README.chromium b/src/third_party/libxml/README.chromium
73331 --- a/src/third_party/libxml/README.chromium
73333 @@ -1,7 +1,7 @@
73336 -Version: eab86522163ec52602a020f62baa9f6cf87ec870
73337 -CPEPrefix: cpe:/a:xmlsoft:libxml2:2.9.12
73343 @@ -12,7 +12,6 @@ libxml2 from libxml.org.
73347 -- chromium-issue-599427.patch: workaround for VS 2015 Update 2 code-gen bug
73348 - chromium-issue-628581.patch: See https://crbug.com/628581#c18
73349 - chromium-issue-894933.patch: Use ptrdiff_t instead of unsigned long for
73351 diff --git a/src/third_party/libxml/chromium/chromium-issue-599427.patch b/src/third_party/libxml/c…
73354 --- a/src/third_party/libxml/chromium/chromium-issue-599427.patch
73356 @@ -1,28 +0,0 @@
73357 ---- a/xmlstring.c 2016-05-13 17:24:58.870079372 +0900
73358 -+++ b/xmlstring.c 2016-04-25 13:58:09.879238595 +0900
73359 -@@ -835,16 +835,20 @@
73360 - while ( len-- > 0) {
73361 - if ( !*ptr )
73362 - break;
73363 -- if ( (ch = *ptr++) & 0x80)
73364 -- while ((ch<<=1) & 0x80 ) {
73365 -- if (*ptr == 0) break;
73366 -+ if ( (ch = *ptr++) & 0x80) {
73367 -+ // Workaround for an optimization bug in VS 2015 Update 2, remove
73368 -+ // once the fix is released. crbug.com/599427
73369 -+ // https://connect.microsoft.com/VisualStudio/feedback/details/2582138
73370 -+ xmlChar ch2 = ch;
73371 -+ while ((ch2<<=1) & 0x80 ) {
73372 - ptr++;
73373 -- }
73374 -+ if (*ptr == 0) break;
73375 -+ }
73376 -+ }
73377 - }
73378 - return (ptr - utf);
73379 - }
73380 -
73381 --
73382 - /**
73383 - * xmlUTF8Strndup:
73384 - * @utf: the input UTF8 *
73385 diff --git a/src/third_party/libxml/chromium/roll.py b/src/third_party/libxml/chromium/roll.py
73387 --- a/src/third_party/libxml/chromium/roll.py
73389 @@ -1,4 +1,4 @@
73390 -#!/usr/bin/env python
73394 # Use of this source code is governed by a BSD-style license that can be
73395 @@ -66,7 +66,6 @@ import tempfile
73399 - 'chromium-issue-599427.patch',
73400 'chromium-issue-628581.patch',
73401 'libxml2-2.9.4-security-xpath-nodetab-uaf.patch',
73402 'chromium-issue-708434.patch',
73403 @@ -97,7 +96,6 @@ SHARED_XML_CONFIGURE_OPTIONS = [
73404 ('--without-c14n', 'c14n=no'),
73405 ('--without-catalog', 'catalog=no'),
73406 ('--without-debug', 'xml_debug=no'),
73407 - ('--without-docbook', 'docb=no'),
73408 ('--without-ftp', 'ftp=no'),
73409 ('--without-http', 'http=no'),
73410 ('--without-iconv', 'iconv=no'),
73411 @@ -115,6 +113,7 @@ SHARED_XML_CONFIGURE_OPTIONS = [
73412 ('--without-valid', 'valid=no'),
73413 ('--without-xinclude', 'xinclude=no'),
73414 ('--without-xptr', 'xptr=no'),
73415 + ('--without-xptr-locs', 'xptr_locs=no'),
73416 ('--without-zlib', 'zlib=no'),
73419 @@ -320,7 +319,8 @@ def prepare_libxml_distribution(src_path, libxml2_repo_path, temp_dir):
73423 - ['git', 'log', '-n', '1', '--pretty=format:%H', 'HEAD'])
73424 + ['git', 'log', '-n', '1', '--pretty=format:%H',
73427 'git archive HEAD | tar -x -C "%s"' % temp_src_path,
73429 @@ -341,8 +341,8 @@ def prepare_libxml_distribution(src_path, libxml2_repo_path, temp_dir):
73433 - '''END {printf("%s-%s.tar.gz", p, v)}' Makefile''',
73434 - shell=True)
73435 + '''END {printf("%s-%s.tar.xz", p, v)}' Makefile''',
73440 @@ -363,7 +363,7 @@ def roll_libxml_linux(src_path, libxml2_repo_path):
73444 - 'tar xzf %s --strip-components=1' % tar_file,
73445 + 'tar xJf %s --strip-components=1' % tar_file,
73449 @@ -422,8 +422,9 @@ def roll_libxml_mac(src_path, icu4c_path):
73450 sed_in_place('config.h', 's/#define HAVE_RAND_R 1//')
73453 - commit = subprocess.check_output(['awk', '/Version:/ {print $2}',
73454 - 'README.chromium'])
73460 git('commit', '-am', commit_message)
73461 @@ -432,7 +433,8 @@ def roll_libxml_mac(src_path, icu4c_path):
73465 - status = subprocess.check_output(['git', 'status', '-s'])
73467 + '-s']).decode('ascii')
73471 diff --git a/src/third_party/libxml/chromium/xml_reader.cc b/src/third_party/libxml/chromium/xml_re…
73473 --- a/src/third_party/libxml/chromium/xml_reader.cc
73475 @@ -149,19 +149,15 @@ bool XmlReader::GetAllDeclaredNamespaces(
73479 - if (NodeType() != XML_READER_TYPE_TEXT)
73480 - return false;
73481 -
73482 - *content = XmlStringToStdString(xmlTextReaderConstValue(reader_));
73483 - return true;
73488 - if (NodeType() != XML_READER_TYPE_CDATA)
73489 - return false;
73493 - *content = XmlStringToStdString(xmlTextReaderConstValue(reader_));
73494 - return true;
73500 @@ -226,3 +222,11 @@ bool XmlReader::SkipToElement() {
73512 diff --git a/src/third_party/libxml/chromium/xml_reader.h b/src/third_party/libxml/chromium/xml_rea…
73514 --- a/src/third_party/libxml/chromium/xml_reader.h
73516 @@ -64,11 +64,13 @@ class XmlReader {
73517 // Returns false if there are no namespaces declared in the current tag.
73520 - // Sets |content| to the content of the current node if it is a #text/#cdata
73521 - // node.
73522 - // Returns true if the current node is a #text/#cdata node, false otherwise.
73524 + // text, cdata, or significant-whitespace node, respectively.
73532 // false for self-closing elements (e.g. <foo/>). Use IsEmptyElement() to
73533 @@ -101,6 +103,11 @@ class XmlReader {
73537 + // A helper function for GetTextIf*Element() functions above.
73545 diff --git a/src/third_party/libxml/linux/config.h b/src/third_party/libxml/linux/config.h
73547 --- a/src/third_party/libxml/linux/config.h
73548 +++ b/src/third_party/libxml/linux/config.h
73549 @@ -19,13 +19,6 @@
73553 -/* Define to 1 if you have the <ctype.h> header file. */
73554 -#define HAVE_CTYPE_H 1
73555 -
73556 -/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
73557 - */
73558 -#define HAVE_DIRENT_H 1
73559 -
73563 @@ -35,18 +28,9 @@
73567 -/* Define to 1 if you have the <errno.h> header file. */
73568 -#define HAVE_ERRNO_H 1
73569 -
73573 -/* Define to 1 if you have the <float.h> header file. */
73574 -#define HAVE_FLOAT_H 1
73575 -
73576 -/* Define to 1 if you have the `fprintf' function. */
73577 -#define HAVE_FPRINTF 1
73578 -
73582 @@ -68,21 +52,9 @@
73583 /* Define if readline library is there (-lreadline) */
73586 -/* Define to 1 if you have the <limits.h> header file. */
73587 -#define HAVE_LIMITS_H 1
73588 -
73589 -/* Define to 1 if you have the `localtime' function. */
73590 -#define HAVE_LOCALTIME 1
73591 -
73595 -/* Define to 1 if you have the <malloc.h> header file. */
73596 -#define HAVE_MALLOC_H 1
73597 -
73598 -/* Define to 1 if you have the <math.h> header file. */
73599 -#define HAVE_MATH_H 1
73600 -
73604 @@ -94,9 +66,6 @@
73608 -/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
73609 -/* #undef HAVE_NDIR_H */
73610 -
73614 @@ -106,18 +75,12 @@
73618 -/* Define to 1 if you have the `printf' function. */
73619 -#define HAVE_PRINTF 1
73620 -
73627 -/* Define to 1 if you have the `rand' function. */
73628 -#define HAVE_RAND 1
73629 -
73633 @@ -127,30 +90,12 @@
73637 -/* Define to 1 if you have the `signal' function. */
73638 -#define HAVE_SIGNAL 1
73639 -
73640 -/* Define to 1 if you have the <signal.h> header file. */
73641 -#define HAVE_SIGNAL_H 1
73642 -
73646 -/* Define to 1 if you have the `sprintf' function. */
73647 -#define HAVE_SPRINTF 1
73648 -
73649 -/* Define to 1 if you have the `srand' function. */
73650 -#define HAVE_SRAND 1
73651 -
73652 -/* Define to 1 if you have the `sscanf' function. */
73653 -#define HAVE_SSCANF 1
73654 -
73658 -/* Define to 1 if you have the <stdarg.h> header file. */
73659 -#define HAVE_STDARG_H 1
73660 -
73664 @@ -160,26 +105,15 @@
73668 -/* Define to 1 if you have the `strftime' function. */
73669 -#define HAVE_STRFTIME 1
73670 -
73677 -/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
73678 - */
73679 -/* #undef HAVE_SYS_DIR_H */
73680 -
73684 -/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
73685 - */
73686 -/* #undef HAVE_SYS_NDIR_H */
73687 -
73691 @@ -198,36 +132,21 @@
73695 -/* Define to 1 if you have the `time' function. */
73696 -#define HAVE_TIME 1
73697 -
73698 -/* Define to 1 if you have the <time.h> header file. */
73699 -#define HAVE_TIME_H 1
73700 -
73707 -/* Define to 1 if you have the `vfprintf' function. */
73708 -#define HAVE_VFPRINTF 1
73709 -
73713 -/* Define to 1 if you have the `vsprintf' function. */
73714 -#define HAVE_VSPRINTF 1
73715 -
73722 -/* Define as const if the declaration of iconv() needs const. */
73723 -/* #undef ICONV_CONST */
73724 -
73725 /* Define to the sub-directory where libtool stores uninstalled libraries. */
73728 @@ -241,7 +160,7 @@
73732 -#define PACKAGE_STRING "libxml2 2.9.12"
73737 @@ -250,7 +169,7 @@
73741 -#define PACKAGE_VERSION "2.9.12"
73744 /* Type cast for the send() function 2nd arg */
73746 @@ -267,7 +186,7 @@
73750 -#define VERSION "2.9.12"
73755 diff --git a/src/third_party/libxml/linux/include/libxml/xmlversion.h b/src/third_party/libxml/linu…
73757 --- a/src/third_party/libxml/linux/include/libxml/xmlversion.h
73759 @@ -29,26 +29,26 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73763 -#define LIBXML_DOTTED_VERSION "2.9.12"
73771 -#define LIBXML_VERSION 20912
73779 -#define LIBXML_VERSION_STRING "20912"
73785 - * extra version information, used to show a CVS compilation
73790 @@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73794 -#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
73799 @@ -229,15 +229,6 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73803 -/**
73804 - * LIBXML_DOCB_ENABLED:
73805 - *
73806 - * Whether the SGML Docbook support is configured in
73807 - */
73808 -#if 0
73809 -#define LIBXML_DOCB_ENABLED
73810 -#endif
73811 -
73815 @@ -256,6 +247,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73822 + * Whether support for XPointer locations is configured in
73831 @@ -456,6 +456,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73847 @@ -475,6 +484,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
73863 diff --git a/src/third_party/libxml/linux/xml2-config b/src/third_party/libxml/linux/xml2-config
73865 --- a/src/third_party/libxml/linux/xml2-config
73866 +++ b/src/third_party/libxml/linux/xml2-config
73867 @@ -58,7 +58,7 @@ while test $# -gt 0; do
73870 --version)
73871 - echo 2.9.12
73876 @@ -86,14 +86,12 @@ while test $# -gt 0; do
73878 libs="-lxml2"
73880 - libs="-lxml2 -licui18n -licuuc -licudata -lm "
73881 + libs="-lxml2 -licui18n -licuuc -licudata -lm "
73884 if [ "-L${libdir}" != "-L/usr/lib" -a "-L${libdir}" != "-L/usr/lib64" ]; then
73885 libs="-L${libdir} $libs"
73887 -
73888 - libs="$libs "
73892 diff --git a/src/third_party/libxml/mac/config.h b/src/third_party/libxml/mac/config.h
73894 --- a/src/third_party/libxml/mac/config.h
73895 +++ b/src/third_party/libxml/mac/config.h
73896 @@ -19,13 +19,6 @@
73900 -/* Define to 1 if you have the <ctype.h> header file. */
73901 -#define HAVE_CTYPE_H 1
73902 -
73903 -/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
73904 - */
73905 -#define HAVE_DIRENT_H 1
73906 -
73910 @@ -35,18 +28,9 @@
73914 -/* Define to 1 if you have the <errno.h> header file. */
73915 -#define HAVE_ERRNO_H 1
73916 -
73920 -/* Define to 1 if you have the <float.h> header file. */
73921 -#define HAVE_FLOAT_H 1
73922 -
73923 -/* Define to 1 if you have the `fprintf' function. */
73924 -#define HAVE_FPRINTF 1
73925 -
73929 @@ -68,21 +52,9 @@
73930 /* Define if readline library is there (-lreadline) */
73933 -/* Define to 1 if you have the <limits.h> header file. */
73934 -#define HAVE_LIMITS_H 1
73935 -
73936 -/* Define to 1 if you have the `localtime' function. */
73937 -#define HAVE_LOCALTIME 1
73938 -
73942 -/* Define to 1 if you have the <malloc.h> header file. */
73943 -/* #undef HAVE_MALLOC_H */
73944 -
73945 -/* Define to 1 if you have the <math.h> header file. */
73946 -#define HAVE_MATH_H 1
73947 -
73951 @@ -94,9 +66,6 @@
73955 -/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
73956 -/* #undef HAVE_NDIR_H */
73957 -
73961 @@ -106,18 +75,12 @@
73965 -/* Define to 1 if you have the `printf' function. */
73966 -#define HAVE_PRINTF 1
73967 -
73974 -/* Define to 1 if you have the `rand' function. */
73975 -#define HAVE_RAND 1
73976 -
73980 @@ -127,30 +90,12 @@
73984 -/* Define to 1 if you have the `signal' function. */
73985 -#define HAVE_SIGNAL 1
73986 -
73987 -/* Define to 1 if you have the <signal.h> header file. */
73988 -#define HAVE_SIGNAL_H 1
73989 -
73993 -/* Define to 1 if you have the `sprintf' function. */
73994 -#define HAVE_SPRINTF 1
73995 -
73996 -/* Define to 1 if you have the `srand' function. */
73997 -#define HAVE_SRAND 1
73998 -
73999 -/* Define to 1 if you have the `sscanf' function. */
74000 -#define HAVE_SSCANF 1
74001 -
74005 -/* Define to 1 if you have the <stdarg.h> header file. */
74006 -#define HAVE_STDARG_H 1
74007 -
74011 @@ -160,26 +105,15 @@
74015 -/* Define to 1 if you have the `strftime' function. */
74016 -#define HAVE_STRFTIME 1
74017 -
74024 -/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
74025 - */
74026 -/* #undef HAVE_SYS_DIR_H */
74027 -
74031 -/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
74032 - */
74033 -/* #undef HAVE_SYS_NDIR_H */
74034 -
74038 @@ -198,36 +132,21 @@
74042 -/* Define to 1 if you have the `time' function. */
74043 -#define HAVE_TIME 1
74044 -
74045 -/* Define to 1 if you have the <time.h> header file. */
74046 -#define HAVE_TIME_H 1
74047 -
74054 -/* Define to 1 if you have the `vfprintf' function. */
74055 -#define HAVE_VFPRINTF 1
74056 -
74060 -/* Define to 1 if you have the `vsprintf' function. */
74061 -#define HAVE_VSPRINTF 1
74062 -
74069 -/* Define as const if the declaration of iconv() needs const. */
74070 -/* #undef ICONV_CONST */
74071 -
74072 /* Define to the sub-directory where libtool stores uninstalled libraries. */
74075 @@ -241,7 +160,7 @@
74079 -#define PACKAGE_STRING "libxml2 2.9.12"
74084 @@ -250,7 +169,7 @@
74088 -#define PACKAGE_VERSION "2.9.12"
74091 /* Type cast for the send() function 2nd arg */
74093 @@ -267,7 +186,7 @@
74097 -#define VERSION "2.9.12"
74102 diff --git a/src/third_party/libxml/mac/include/libxml/xmlversion.h b/src/third_party/libxml/mac/in…
74104 --- a/src/third_party/libxml/mac/include/libxml/xmlversion.h
74106 @@ -29,26 +29,26 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74110 -#define LIBXML_DOTTED_VERSION "2.9.12"
74118 -#define LIBXML_VERSION 20912
74126 -#define LIBXML_VERSION_STRING "20912"
74132 - * extra version information, used to show a CVS compilation
74137 @@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74141 -#define LIBXML_TEST_VERSION xmlCheckVersion(20912);
74146 @@ -229,15 +229,6 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74150 -/**
74151 - * LIBXML_DOCB_ENABLED:
74152 - *
74153 - * Whether the SGML Docbook support is configured in
74154 - */
74155 -#if 0
74156 -#define LIBXML_DOCB_ENABLED
74157 -#endif
74158 -
74162 @@ -256,6 +247,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74169 + * Whether support for XPointer locations is configured in
74178 @@ -456,6 +456,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74194 @@ -475,6 +484,15 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
74210 diff --git a/src/third_party/libxml/src/AUTHORS b/src/third_party/libxml/src/AUTHORS
74213 --- a/src/third_party/libxml/src/AUTHORS
74215 @@ -1,5 +0,0 @@
74216 -Daniel Veillard <daniel@veillard.com>
74217 -Bjorn Reese <breese@users.sourceforge.net>
74218 -William Brack <wbrack@mmm.com.hk>
74219 -Igor Zlatkovic <igor@zlatkovic.com> for the Windows port
74220 -Aleksey Sanin <aleksey@aleksey.com>
74221 diff --git a/src/third_party/libxml/src/CMakeLists.txt b/src/third_party/libxml/src/CMakeLists.txt
74223 --- a/src/third_party/libxml/src/CMakeLists.txt
74225 @@ -26,15 +26,14 @@ set(LIBXML2_WITH_AUTOMATA ON)
74229 -option(LIBXML2_WITH_DOCB "Add Docbook SGML support" ON)
74231 -option(LIBXML2_WITH_FTP "Add the FTP support" ON)
74237 option(LIBXML2_WITH_ISO8859X "Add ISO8859X support if no iconv" ON)
74238 -option(LIBXML2_WITH_LEGACY "Add deprecated APIs for compatibility" ON)
74239 +option(LIBXML2_WITH_LEGACY "Add deprecated APIs for compatibility" OFF)
74243 @@ -60,6 +59,7 @@ option(LIBXML2_WITH_WRITER "Add the xmlWriter saving interface" ON)
74247 +option(LIBXML2_WITH_XPTR_LOCS "Add support for XPointer locations" OFF)
74249 …set(LIBXML2_XMLCONF_WORKING_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Working directory for XML …
74251 @@ -97,7 +97,7 @@ if(LIBXML2_WITH_ZLIB)
74255 -foreach(VARIABLE IN ITEMS WITH_AUTOMATA WITH_C14N WITH_CATALOG WITH_DEBUG WITH_DOCB WITH_EXPR WITH…
74260 @@ -105,10 +105,13 @@ foreach(VARIABLE IN ITEMS WITH_AUTOMATA WITH_C14N WITH_CATALOG WITH_DEBUG WIT…
74264 -set(LIBXML_VERSION ${LIBXML_MAJOR_VERSION}0${LIBXML_MINOR_VERSION}0${LIBXML_MICRO_VERSION})
74265 -set(LIBXML_VERSION_STRING "${LIBXML_VERSION}")
74268 -set(LIBXML_VERSION_NUMBER ${LIBXML_VERSION})
74277 @@ -117,7 +120,7 @@ set(PACKAGE_BUGREPORT "xml@gnome.org")
74281 -set(PACKAGE_URL "http://www.xmlsoft.org/")
74286 @@ -132,9 +135,7 @@ if(ZLIB_FOUND)
74290 -if(MSVC)
74291 - configure_file(include/win32config.h config.h COPYONLY)
74292 -else()
74297 @@ -160,15 +161,11 @@ else()
74301 - check_include_files(ctype.h HAVE_CTYPE_H)
74305 - check_include_files(errno.h HAVE_ERRNO_H)
74307 - check_include_files(float.h HAVE_FLOAT_H)
74309 - check_function_exists(fprintf HAVE_FPRINTF)
74313 @@ -176,34 +173,17 @@ else()
74317 - check_include_files(limits.h HAVE_LIMITS_H)
74318 - check_function_exists(localtime HAVE_LOCALTIME)
74319 - check_include_files(malloc.h HAVE_MALLOC_H)
74320 - check_include_files(math.h HAVE_MATH_H)
74326 - check_function_exists(printf HAVE_PRINTF)
74327 - check_include_files(pthread.h HAVE_PTHREAD_H)
74329 - check_function_exists(rand HAVE_RAND)
74333 - check_include_files(signal.h HAVE_SIGNAL_H)
74334 - check_function_exists(snprintf HAVE_SNPRINTF)
74335 - check_function_exists(sprintf HAVE_SPRINTF)
74336 - check_function_exists(srand HAVE_SRAND)
74337 - check_function_exists(sscanf HAVE_SSCANF)
74339 - check_include_files(stdarg.h HAVE_STDARG_H)
74341 - check_include_files(stdlib.h HAVE_STDLIB_H)
74342 - check_function_exists(strftime HAVE_STRFTIME)
74343 - check_include_files(strings.h HAVE_STRINGS_H)
74344 - check_include_files(string.h HAVE_STRING_H)
74348 @@ -211,31 +191,9 @@ else()
74352 - check_function_exists(time HAVE_TIME)
74353 - check_include_files(time.h HAVE_TIME_H)
74356 - check_function_exists(vfprintf HAVE_VFPRINTF)
74357 - check_function_exists(vsnprintf HAVE_VSNPRINTF)
74358 - check_function_exists(vsprintf HAVE_VSPRINTF)
74360 - check_c_source_compiles("
74361 - #include <stdlib.h>
74362 - #include <iconv.h>
74363 - extern
74364 - #ifdef __cplusplus
74365 - \"C\"
74366 - #endif
74367 - #if defined(__STDC__) || defined(__cplusplus)
74368 - size_t iconv(iconv_t cd, char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft);
74369 - #else
74370 - size_t iconv();
74371 - #endif
74372 - int main() { return 0; }
74373 - " ICONV_CONST_TEST)
74374 - if(NOT ICONV_CONST_TEST)
74375 - set(ICONV_CONST "const")
74376 - endif()
74380 @@ -247,7 +205,6 @@ else()
74384 - check_include_files("float.h;stdarg.h;stdlib.h;string.h" STDC_HEADERS)
74388 @@ -285,7 +242,6 @@ else()
74392 - configure_file(config.h.cmake.in config.h)
74396 @@ -295,7 +251,6 @@ set(
74400 - include/libxml/DOCBparser.h
74404 @@ -398,10 +353,6 @@ if(WIN32)
74408 -if(LIBXML2_WITH_SAX1)
74409 - list(APPEND LIBXML2_SRCS DOCBparser.c)
74410 -endif()
74411 -
74415 @@ -409,6 +360,8 @@ endif()
74423 set(XML_CFLAGS "-DLIBXML_STATIC")
74424 @@ -418,6 +371,8 @@ if(LIBXML2_WITH_THREADS)
74433 @@ -441,7 +396,7 @@ endif()
74437 - set(M_LIBS "-lm")
74438 + set(LIBM "-lm")
74442 @@ -532,6 +487,7 @@ if(LIBXML2_WITH_PROGRAMS)
74450 @@ -547,29 +503,32 @@ if(LIBXML2_WITH_TESTS)
74459 - testC14N
74462 - testHTML
74465 - testReader
74467 - testRegexp
74468 - testRelax
74469 - testSAX
74470 - testSchemas
74471 - testURI
74472 - testXPath
74488 + add_test(NAME runtest COMMAND runtest --out ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE…
74492 @@ -579,22 +538,7 @@ if(LIBXML2_WITH_TESTS)
74496 - if(Threads_FOUND)
74497 - set(
74498 - TESTS_THREADS
74499 - runtest
74500 - testThreads
74501 - )
74502 - foreach(TEST ${TESTS_THREADS})
74503 - add_executable(${TEST} ${TEST}.c)
74504 - if(WIN32)
74505 - target_compile_definitions(${TEST} PRIVATE HAVE_WIN32_THREADS)
74506 - endif()
74507 - target_link_libraries(${TEST} LibXml2 Threads::Threads)
74508 - endforeach()
74509 - add_test(NAME runtest COMMAND runtest --out ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAK…
74510 - add_test(NAME testThreads COMMAND testThreads WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
74511 - endif()
74516 @@ -647,10 +591,16 @@ if(LIBXML2_WITH_PYTHON)
74520 -install(FILES libxml.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 COMPONENT documentation)
74521 +install(FILES doc/xml2-config.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
74524 -install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/libxml2 COMPONENT documentation PA…
74534 libxml2-config.cmake.cmake.in libxml2-config.cmake
74535 @@ -683,13 +633,13 @@ install(
74539 -configure_file(include/libxml/xmlversion.h.in libxml/xmlversion.h)
74540 -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml/xmlversion.h DESTINATION ${CMAKE_INSTALL_INCLUDED…
74541 -
74543 - configure_file(include/libxml/xmlwin32version.h.in libxml/xmlwin32version.h)
74544 - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml/xmlwin32version.h DESTINATION ${CMAKE_INSTALL_IN…
74545 + configure_file(include/win32config.h config.h COPYONLY)
74547 + configure_file(config.h.cmake.in config.h)
74554 @@ -699,26 +649,30 @@ endif()
74555 set(XML_INCLUDEDIR "-I\${includedir}/libxml2")
74556 set(XML_LIBDIR "-L\${libdir}")
74557 set(XML_LIBS "-lxml2")
74558 -set(XML_PRIVATE_LIBS "${Z_LIBS} ${LZMA_LIBS} ${THREAD_LIBS} ${ICONV_LIBS} ${ICU_LIBS} ${M_LIBS}")
74564 -set(prefix "\${pcfiledir}/${PACKAGE_RELATIVE_PATH}")
74573 configure_file(libxml-2.0.pc.in libxml-2.0.pc @ONLY)
74574 …install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml-2.0.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgcon…
74576 -set(prefix "\$(cd \"\$(dirname \"\$0\")\"; pwd -P)/..")
74578 + set(prefix "\$(cd \"\$(dirname \"\$0\")\"; pwd -P)/..")
74580 configure_file(xml2-config.in xml2-config @ONLY)
74581 …install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/xml2-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPO…
74583 set(XML_INCLUDEDIR "-I${CMAKE_INSTALL_FULL_INCLUDEDIR}/libxml2")
74584 set(XML_LIBDIR "-L${CMAKE_INSTALL_FULL_LIBDIR}")
74585 -configure_file(xml2Conf.sh.in xml2Conf.sh @ONLY)
74586 -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/xml2Conf.sh DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONEN…
74590 diff --git a/src/third_party/libxml/src/ChangeLog b/src/third_party/libxml/src/ChangeLog
74593 --- a/src/third_party/libxml/src/ChangeLog
74595 @@ -1,19678 +0,0 @@
74596 -Fri Jul 10 16:11:34 CEST 2009 Daniel Veillard <daniel@veillard.com>
74597 -
74598 - * parser.c: fix a regression in entity parsing when using the reader
74599 - introduced because we were not reusing _private on entities parsing
74600 - context
74601 -
74602 -Thu Jul 9 10:21:00 CEST 2009 Daniel Veillard <daniel@veillard.com>
74603 -
74604 - Aleksey Sanin support for c14n 1.1
74605 - * c14n.c include/libxml/c14n.h: adds support for C14N 1.1,
74606 - new flags at the API level
74607 - * runtest.c Makefile.am testC14N.c xmllint.c: add support in CLI
74608 - tools and test binaries
74609 - * result/c14n/1-1-without-comments/* test/c14n/1-1-without-comments/*:
74610 - add a new batch of tests
74611 -
74612 -Thu Jul 9 08:52:35 CEST 2009 Daniel Veillard <daniel@veillard.com>
74613 -
74614 - * config.h.in: update of libtool seems to have modified it
74615 - * python/libxml2class.txt: python update modified the order
74616 - of classes apparently
74617 -
74618 -Thu Jul 9 08:43:06 CEST 2009 Daniel Veillard <daniel@veillard.com>
74619 -
74620 - * tree.c: avoid calling xmlAddID with NULL values
74621 - * parser.c: add a few xmlInitParser in some entry points
74622 -
74623 -Fri Jun 19 19:51:08 CEST 2009 Rob Richards <rrichards@cdatazone.org>
74624 -
74625 - * parser.c: use options from current parser context when creating
74626 - a parser context within xmlParseCtxtExternalEntity
74627 - * xmlwriter.c: fix error message when unable to create output file
74628 -
74629 -Thu Jun 4 11:17:23 CEST 2009 Daniel Veillard <daniel@veillard.com>
74630 -
74631 - * c14n.c debugXML.c doc/examples/io2.c parser.c schematron.c
74632 - valid.c xmlschemas.c xmlwriter.c xpath.c: use %s to printf string
74633 - patch by Christian Persch, fixes #581612
74634 -
74635 -Thu Jun 4 11:06:07 CEST 2009 Daniel Veillard <daniel@veillard.com>
74636 -
74637 - * parser.c threads.c: change the threading initialization sequence
74638 - as suggested by Igor Novoseltsev to avoid crash if xmlInitParser()
74639 - is called from a thread which is not the main one, should fix
74640 - #584605
74641 -
74642 -Fri May 15 17:54:48 CEST 2009 Daniel Veillard <daniel@veillard.com>
74643 -
74644 - * HTMLparser.c: make sure we keep line numbers fixes #580705
74645 - based Aaron Patterson patch
74646 -
74647 -Tue May 12 09:13:58 CEST 2009 Daniel Veillard <daniel@veillard.com>
74648 -
74649 - * HTMLparser.c: a broken HTML table attributes initialization,
74650 - fixes #581803, by Roland Steiner <rolandsteiner@google.com>
74651 -
74652 -Tue May 12 08:54:20 CEST 2009 Daniel Veillard <daniel@veillard.com>
74653 -
74654 - * libxml2.doap: adding RDF dope file.
74655 -
74656 -Tue May 12 08:42:52 CEST 2009 Daniel Veillard <daniel@veillard.com>
74657 -
74658 - * configure.in: adapt the extra version detection code to git
74659 -
74660 -Wed Apr 29 16:09:38 CEST 2009 Rob Richards <rrichards@cdatazone.org>
74661 -
74662 - * parser.c: do not set error code in xmlNsWarn
74663 -
74664 -Wed Apr 15 11:18:24 CEST 2009 Daniel Veillard <daniel@veillard.com>
74665 -
74666 - * include/libxml/parser.h include/libxml/xmlwriter.h
74667 - include/libxml/relaxng.h include/libxml/xmlversion.h.in
74668 - include/libxml/xmlwin32version.h.in include/libxml/valid.h
74669 - include/libxml/xmlschemas.h include/libxml/xmlerror.h: change
74670 - ATTRIBUTE_PRINTF into LIBXML_ATTR_FORMAT to avoid macro name
74671 - collisions with other packages and headers as reported by
74672 - Belgabor and Mike Hommey
74673 -
74674 -Thu Apr 2 13:57:15 CEST 2009 Daniel Veillard <daniel@veillard.com>
74675 -
74676 - * error.c: fix structured error handling problems #564217
74677 -
74678 -Thu Mar 26 19:08:08 CET 2009 Rob Richards <rrichards@cdatazone.org>
74679 -
74680 - * parser.c: use options from current parser context when creating
74681 - an entity parser context
74682 -
74683 -Wed Mar 25 11:40:34 CET 2009 Daniel Veillard <daniel@veillard.com>
74684 -
74685 - * doc/*: updated SVN URL for GNOME as pointed by Vincent Lefevre
74686 - and regenerated docs
74687 -
74688 -Wed Mar 25 11:21:26 CET 2009 Daniel Veillard <daniel@veillard.com>
74689 -
74690 - * parser.c: hide the nbParse* variables used for debugging
74691 - as pointed by Mike Hommey
74692 -
74693 -Wed Mar 25 10:50:05 CET 2009 Daniel Veillard <daniel@veillard.com>
74694 -
74695 - * include/wsockcompat.h win32/Makefile.bcb xpath.c: fixes for
74696 - Borland/CodeGear/Embarcadero compilers by Eric Zurcher
74697 -
74698 -Wed Mar 25 10:43:07 CET 2009 Daniel Veillard <daniel@veillard.com>
74699 -
74700 - * xpath.c: xmlXPathRegisterNs should not allow enpty prefixes
74701 -
74702 -Mon Mar 23 20:27:15 CET 2009 Daniel Veillard <daniel@veillard.com>
74703 -
74704 - * tree.c: add a missing check in xmlAddSibling, patch by Kris Breuker
74705 - * xmlIO.c: avoid xmlAllocOutputBuffer using XML_BUFFER_EXACT which
74706 - leads to performances problems especially on Windows.
74707 -
74708 -Tue Mar 3 14:30.28 HKT 2009 William Brack <wbrack@mmm.com.hk>
74709 -
74710 - * trio.h: changed include of config.h to be surrounded by
74711 - quotation marks #570806
74712 -
74713 -Sat Feb 21 10:20:34 CET 2009 Daniel Veillard <daniel@veillard.com>
74714 -
74715 - * threads.c parser.c: more warnings about xmlCleanupThreads and
74716 - xmlCleanupParser to avoid troubles like #571409
74717 -
74718 -Fri Feb 20 09:40:04 CET 2009 Daniel Veillard <daniel@veillard.com>
74719 -
74720 - * xmlwriter.c: cleanups and error reports when xmlTextWriterVSprintf
74721 - fails, by Jinmei Tatuya
74722 -
74723 -Fri Feb 20 09:18:56 CET 2009 Daniel Veillard <daniel@veillard.com>
74724 -
74725 - * xmlwriter.c: remove a couple of leaks on errors reported by
74726 - Jinmei Tatuya
74727 -
74728 -Sun Jan 18 22:37:59 CET 2009 Daniel Veillard <daniel@veillard.com>
74729 -
74730 - * configure.in doc/xml.html doc/*: preparing 0.7.3 release
74731 - * include/libxml/parserInternals.h SAX2.c: fix a typo in a name
74732 -
74733 -Sun Jan 18 21:48:28 CET 2009 Daniel Veillard <daniel@veillard.com>
74734 -
74735 - * include/libxml/parser.h include/libxml/xmlwriter.h
74736 - include/libxml/relaxng.h include/libxml/xmlversion.h.in
74737 - include/libxml/xmlwin32version.h.in include/libxml/valid.h
74738 - include/libxml/xmlschemas.h include/libxml/xmlerror.h:
74739 - port patch from Marcus Meissner to add gcc checking for
74740 - printf like functions parameters, should fix #65068
74741 - * doc/apibuild.py doc/*: modified the script accordingly
74742 - and regenerated
74743 - * xpath.c xmlmemory.c threads.c: fix a few warnings
74744 -
74745 -Sun Jan 18 20:40:42 CET 2009 Daniel Veillard <daniel@veillard.com>
74746 -
74747 - * include/libxml/xmlwin32version.h.in: windows header should
74748 - get the same define
74749 -
74750 -Sun Jan 18 18:22:33 CET 2009 Daniel Veillard <daniel@veillard.com>
74751 -
74752 - * include/libxml/xmlversion.h.in include/libxml/xmlmemory.h:
74753 - apply patch from Marcus Meissner to add gcc attribute alloc_size
74754 - should fix #552505
74755 - * doc/apibuild.py doc/* testapi.c: regenerate the API
74756 - * include/libxml/parserInternals.h: fix a comment problem raised
74757 - by apibuild.py
74758 -
74759 -Sun Jan 18 16:39:01 CET 2009 Daniel Veillard <daniel@veillard.com>
74760 -
74761 - * threads.c: also remove pthread key when stopping thread
74762 - support, patch based on Alex Ott one should fix #564723
74763 -
74764 -Sun Jan 18 15:55:18 CET 2009 Daniel Veillard <daniel@veillard.com>
74765 -
74766 - * threads.c: patch from Daniel Zimmermann fixing a memory leak
74767 - in an edge case, solves #562230
74768 -
74769 -Sun Jan 18 15:06:05 CET 2009 Daniel Veillard <daniel@veillard.com>
74770 -
74771 - * include/libxml/parserInternals.h SAX2.c: add a new define
74772 - XML_MAX_TEXT_LENGTH limiting the maximum size of a single text
74773 - node, the defaultis 10MB and can be removed with the HUGE
74774 - parsing option
74775 -
74776 -Mon Jan 05 18:28:41 CET 2009 Rob Richards <rrichards@cdatazone.org>
74777 -
74778 - * include/libxml/parser.h parser.c: add XML_PARSE_OLDSAX parser
74779 - option to enable pre 2.7 SAX behavior.
74780 -
74781 -Wed Dec 31 23:11:37 CET 2008 Rob Richards <rrichards@cdatazone.org>
74782 -
74783 - * tree.c: set doc on last child tree in xmlAddChildList for
74784 - bug #546772. Fix problem adding an attribute via with xmlAddChild
74785 - reported by Kris Breuker.
74786 -
74787 -Sun Dec 27 14:16:13 CET 2008 Rob Richards <rrichards@cdatazone.org>
74788 -
74789 - * xmlwriter.c: fix indenting in xmlTextWriterFullEndElement for
74790 - bug# 554353.
74791 -
74792 -Thu Nov 27 16:24:52 CET 2008 Daniel Veillard <daniel@veillard.com>
74793 -
74794 - * include/libxml/tree.h tree.c python/generator.py: adds
74795 - element traversal support
74796 - * valid.c: avoid a warning
74797 - * doc/*: regenerated
74798 -
74799 -Mon Nov 17 16:56:18 CET 2008 Daniel Veillard <daniel@veillard.com>
74800 -
74801 - * SAX2.c parser.c: fix for CVE-2008-4226, a memory overflow
74802 - when building gigantic text nodes, and a bit of cleanup
74803 - to better handled out of memory problem in that code.
74804 - * tree.c: fix for CVE-2008-4225, lack of testing leads to
74805 - a busy loop test assuming one have enough core memory.
74806 -
74807 -Thu Nov 6 14:34:35 CET 2008 Daniel Veillard <daniel@veillard.com>
74808 -
74809 - * xmllint.c: Matthias Kaehlcke reported a build problem when
74810 - not compiling HTML support in.
74811 -
74812 -Fri Oct 17 15:24:08 CEST 2008 Daniel Veillard <daniel@veillard.com>
74813 -
74814 - * configure.in doc/Makefile.am: patch from Adrian Bunk which
74815 - adds --disable-rebuild-docs to avoid rebuilding them
74816 -
74817 -Fri Oct 3 09:43:45 CEST 2008 Daniel Veillard <daniel@veillard.com>
74818 -
74819 - * configure.in doc/* NEWS: preparing the release of 2.7.2
74820 - * dict.c: fix the Solaris portability issue
74821 - * parser.c: additional cleanup on #554660 fix
74822 - * test/ent13 result/ent13* result/noent/ent13*: added the
74823 - example in the regression test suite.
74824 - * HTMLparser.c: handle leading BOM in htmlParseElement()
74825 -
74826 -Thu Oct 2 22:53:39 CEST 2008 Daniel Veillard <daniel@veillard.com>
74827 -
74828 - * parser.c: fix a nasty bug introduced when cleaning up
74829 - entities processing in 2.7.x , fixes #554660
74830 -
74831 -Thu Sep 25 18:04:20 CEST 2008 Daniel Veillard <daniel@veillard.com>
74832 -
74833 - * HTMLparser.c: fix an HTML parsing error on large data sections
74834 - reported by Mike Day
74835 - * test/HTML/utf8bug.html result/HTML/utf8bug.html.err
74836 - result/HTML/utf8bug.html.sax result/HTML/utf8bug.html: add the
74837 - reproducer to the test suite
74838 -
74839 -Thu Sep 25 17:35:57 CEST 2008 Daniel Veillard <daniel@veillard.com>
74840 -
74841 - * runxmlconf.c: fix compilation if XPath is not included
74842 -
74843 -Thu Sep 25 16:54:04 CEST 2008 Daniel Veillard <daniel@veillard.com>
74844 -
74845 - * xmlreader.c: patch from Riccardo Scussat fixing custom error
74846 - handlers problems.
74847 -
74848 -Thu Sep 25 16:30:11 CEST 2008 Daniel Veillard <daniel@veillard.com>
74849 -
74850 - * include/libxml/xmlsave.h xmlsave.c: new options to serialize
74851 - as XML/HTML/XHTML and restore old entry point behaviours
74852 -
74853 -Mon Sep 1 16:49:05 CEST 2008 Daniel Veillard <daniel@veillard.com>
74854 -
74855 - * doc/xml.html doc/news.html configure.in python/setup.py NEWS:
74856 - prepare release of 2.7.1
74857 -
74858 -Mon Sep 1 15:35:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
74859 -
74860 - * schematron.c xpath.c: applied a couple of patches from Martin
74861 - avoiding some leaks, fixinq QName checks in XPath, XPath debugging
74862 - and schematron code cleanups.
74863 - * python/tests/Makefile.am python/tests/xpathleak.py: add the
74864 - specific regression tests, just tweak it to avoid output by default
74865 -
74866 -Mon Sep 1 15:02:05 CEST 2008 Daniel Veillard <daniel@veillard.com>
74867 -
74868 - * trionan.c: Borland C fix from Moritz Both
74869 - * testapi.c: regenerate, workaround a problem for buffer testing
74870 - * xmlIO.c HTMLtree.c: new internal entry point to hide even better
74871 - xmlAllocOutputBufferInternal
74872 - * tree.c: harden the code around buffer allocation schemes
74873 - * parser.c: restore the warning when namespace names are not absolute
74874 - URIs
74875 - * runxmlconf.c: continue regression tests if we get the expected
74876 - number of errors
74877 - * Makefile.am: run the python tests on make check
74878 - * xmlsave.c: handle the HTML documents and trees
74879 - * python/libxml.c: convert python serialization to the xmlSave APIs
74880 - and avoid some horrible hacks
74881 -
74882 -Sat Aug 30 16:58:40 CEST 2008 Daniel Veillard <daniel@veillard.com>
74883 -
74884 - * configure.in, doc/*: preparing 2.7.0 release
74885 - * tree.c: remove some testing traces
74886 - * parser.c xmlIO.c xmlschemas.c: remove some warnings
74887 -
74888 -Sat Aug 30 14:50:16 CEST 2008 Daniel Veillard <daniel@veillard.com>
74889 -
74890 - * include/libxml/tree.h tree.c: make a new kind of buffer where
74891 - shrinking and adding in head can avoid reallocation or full
74892 - buffer memmoves
74893 - * encoding.c xmlIO.c: use the new kind of buffers for output
74894 - buffers
74895 -
74896 -Sat Aug 30 10:18:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
74897 -
74898 - * doc/* testapi.c: regenerated
74899 -
74900 -Fri Aug 29 21:53:12 CEST 2008 Daniel Veillard <daniel@veillard.com>
74901 -
74902 - * doc/examples/reader3.c: patch from Robert Schwebel , allows to
74903 - compile the example if configured without output support fixes
74904 - #545582
74905 - * Makefile.am: add testrecurse to the make check tests
74906 - * HTMLparser.c: if the parser got a encoding argument it should be
74907 - used over what the meta specifies, patch fixing #536346
74908 -
74909 -Fri Aug 29 14:41:38 CEST 2008 Daniel Veillard <daniel@veillard.com>
74910 -
74911 - * parser.c: a couple more fixes
74912 - * nanohttp.c nanoftp.c: patch from Andreas Färber to compile on Haiku
74913 - fixes #527880
74914 - * doc/examples/*: regenerated
74915 -
74916 -Thu Aug 28 17:31:46 CEST 2008 Daniel Veillard <daniel@veillard.com>
74917 -
74918 - * parser.c include/libxml/parser.h: completely different fix for
74919 - the recursion detection based on entity density, big cleanups
74920 - in the entity parsing code too
74921 - * result/*.sax*: the parser should not ask for used defined versions
74922 - of the predefined entities
74923 - * testrecurse.c: automatic test for entity recursion checks
74924 - * Makefile.am: added testrecurse
74925 - * test/recurse/lol* test/recurse/good*: a first set of tests for
74926 - the recursion
74927 -
74928 -Wed Aug 27 21:55:34 CEST 2008 Daniel Veillard <daniel@veillard.com>
74929 -
74930 - * include/libxml/xmlerror.h parser.c: a bit of cleanup and
74931 - added checks based on the regression tests of the xmlconf suite
74932 -
74933 -Wed Aug 27 19:22:35 CEST 2008 Daniel Veillard <daniel@veillard.com>
74934 -
74935 - * uri.c: bug in parsing RFC 3986 uris with port numbers
74936 -
74937 -Wed Aug 27 17:30:48 CEST 2008 Daniel Veillard <daniel@veillard.com>
74938 -
74939 - * configure.in Makefile.am: add an --with-coverage configure option
74940 - and a 'make cov' target based on gcc profiling and the lcov
74941 - tool. Currently at 68.9% coverage out of 'make check' and
74942 - runsuite executions.
74943 - * xmlreader.c: remove warnings due to C++ comments
74944 -
74945 -Wed Aug 27 15:00:54 CEST 2008 Daniel Veillard <daniel@veillard.com>
74946 -
74947 - * include/libxml/parserInternals.h parser.c: cleanup entity
74948 - pushing error handling based on a patch from Ashwin
74949 -
74950 -Wed Aug 27 13:41:26 CEST 2008 Daniel Veillard <daniel@veillard.com>
74951 -
74952 - * threads.c: fix a small initialization problem raised by Ashwin
74953 - * testapi.c gentest.py: increase testing especially for document
74954 - with an internal subset, and entities
74955 - * tree.c: fix a deallocation issue when unlinking entities from
74956 - a document.
74957 - * valid.c: fix a missing entry point test not found previously.
74958 - * doc/*: regenerated the APIs, docs etc.
74959 -
74960 -Tue Aug 26 15:02:58 CEST 2008 Daniel Veillard <daniel@veillard.com>
74961 -
74962 - * include/libxml/parser.h parser.c xmllint.c: strengthen some
74963 - of the internal parser limits, add an XML_PARSE_HUGE option
74964 - to bypass them all. More internal parser limits will still need
74965 - to be added.
74966 -
74967 -Tue Aug 26 09:42:08 CEST 2008 Daniel Veillard <daniel@veillard.com>
74968 -
74969 - * Makefile.am: add the testchar to 'make check'
74970 - * xmlschemas.c: Volker Grabsch pointed out a typo
74971 - * xmlregexp.c: production [19] from XML Schemas regexps were a
74972 - mistake removed in version REC-xmlschema-2-20041028, Volker Grabsch
74973 - provided a patch to remove it
74974 - * test/schemas/regexp-char-ref_0.xml test/schemas/regexp-char-ref_0.xsd
74975 - test/schemas/regexp-char-ref_1.xsd result/schemas/regexp-char-ref_0_0
74976 - result/schemas/regexp-char-ref_1_0: Volker Grabsch also provided
74977 - regression tests for this
74978 -
74979 -Tue Aug 26 09:25:39 CEST 2008 Daniel Veillard <daniel@veillard.com>
74980 -
74981 - * include/libxml/parser.h xinclude.c xmllint.c: patch based on
74982 - Wieant Nielander contribution to add the option of not doing
74983 - URI base fixup in XInclude
74984 -
74985 -Mon Aug 25 16:52:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
74986 -
74987 - * xmlreader.c: applied patch from Aswin to fix tree skipping
74988 - * include/libxml/entities.h entities.c: fixed a comment and
74989 - added a new xmlNewEntity() entry point
74990 - * runtest.c: be less verbose
74991 - * tree.c: space and tabs cleanups
74992 -
74993 -Mon Aug 25 10:56:30 CEST 2008 Daniel Veillard <daniel@veillard.com>
74994 -
74995 - * include/libxml/entities.h entities.c SAX2.c parser.c: rework
74996 - the patch to avoid some ABI issue with people allocating
74997 - entities structure directly
74998 -
74999 -Wed Aug 20 19:02:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
75000 -
75001 - * include/libxml/parser.h include/libxml/entities.h entities.c
75002 - parserInternals.c parser.c: fix for CVE-2008-3281
75003 -
75004 -Sun Aug 10 17:06:13 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75005 -
75006 - * dict.c: fix non GNUC builds.
75007 -
75008 -Fri Aug 8 14:13:06 CEST 2008 Daniel Veillard <daniel@veillard.com>
75009 -
75010 - * makefile.am: adding a check-valgrind target
75011 -
75012 -Fri Aug 8 14:01:59 CEST 2008 Daniel Veillard <daniel@veillard.com>
75013 -
75014 - * Makefile.am testdict.c: add the new test in 'make check' and
75015 - update it to check subdictionaries processing.
75016 -
75017 -Fri Aug 8 12:07:20 CEST 2008 Daniel Veillard <daniel@veillard.com>
75018 -
75019 - * testdict.c: added a program to regression test the dictionary code
75020 - * dict.c: improve the lookup efficiency by caching the key.
75021 -
75022 -Thu Aug 7 18:30:55 CEST 2008 Daniel Veillard <daniel@veillard.com>
75023 -
75024 - * dict.c: chased and found a couple of nasty issues
75025 -
75026 -Thu Aug 7 15:51:31 CEST 2008 Sven Herzberg <sven@imendio.com>
75027 -
75028 - Bug 546629 – runtests doesn't pass on my mac
75029 - Reviewed by William M. Brack.
75030 -
75031 - * runtest.c: use libpthread on Mac OS X as well
75032 -
75033 -Wed Aug 6 12:24:33 CEST 2008 Daniel Veillard <daniel@veillard.com>
75034 -
75035 - * uri.c: allow [ and ] in fragment identifiers, 3986 disallow them
75036 - but it's widely used for XPointer, and would break DocBook
75037 - processing among others
75038 -
75039 -Wed Aug 6 11:32:21 CEST 2008 Daniel Veillard <daniel@veillard.com>
75040 -
75041 - * dict.c: change the big key algorithm to work properly with QName
75042 - too, fix a bug with dict size and sub dictionaries
75043 -
75044 -Mon Aug 4 17:27:27 CEST 2008 Daniel Veillard <daniel@veillard.com>
75045 -
75046 - * uri.c include/libxml/uri.h: rewrite the URI parser to update to
75047 - rfc3986 (from 2396)
75048 - * test/errors/webdav.xml result/errors/webdav.xml*: removed the
75049 - error test, 'DAV:' is a correct URI under 3986
75050 - * Makefile.am: small cleanup in make check
75051 -
75052 -Thu Jul 31 21:49:45 CEST 2008 Daniel Veillard <daniel@veillard.com>
75053 -
75054 - * runxmlconf.c: more progresses against the official regression tests
75055 - * runsuite.c: small cleanup for non-leak reports
75056 - * include/libxml/tree.h: parsing flags and other properties are
75057 - now added to the document node, this is generally useful and
75058 - allow to make Name and NmToken validations based on the parser
75059 - flags, more specifically the 5th edition of XML or not
75060 - * HTMLparser.c tree.c: small side effects for the previous changes
75061 - * parser.c SAX2.c valid.c: the bulk of the changes are here,
75062 - the parser and validation behaviour can be affected, parsing
75063 - flags need to be copied, lot of changes. Also fixing various
75064 - validation problems in the regression tests.
75065 -
75066 -Thu Jul 31 10:15:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
75067 -
75068 - * runxmlconf.c: added a skipped list, insert rmt-ns10-035
75069 - * Makefile.am: improve 'make check'
75070 - * include/libxml/xmlerror.h parser.c: clean up namespace errors
75071 - checking and reporting, errors when a document is labelled
75072 - as UTF-16 while it is parsed as UTF-8 and no encoding was given
75073 - explicitly.
75074 - * result/errors/webdav.xml.*: some warnings are no recategorized
75075 - as Namespace errors
75076 -
75077 -Wed Jul 30 14:55:54 CEST 2008 Daniel Veillard <daniel@veillard.com>
75078 -
75079 - * include/libxml/xmlmemory.h xmlmemory.c: add xmlMemDisplayLast to
75080 - help debug incremental memory leaks, and some cleanups
75081 - * runxmlconf.c: use that new call and avoid ever touching the
75082 - system catalog in the regression tests
75083 -
75084 -Wed Jul 30 14:33:33 CEST 2008 Daniel Veillard <daniel@veillard.com>
75085 -
75086 - * parser.c include/libxml/xmlerror.h: an XML-1.0 document can't load
75087 - an 1.1 entity
75088 - * runxmlconf.c: when using entities make sure we load them
75089 -
75090 -Tue Jul 29 18:43:07 CEST 2008 Daniel Veillard <daniel@veillard.com>
75091 -
75092 - * parser.c: fix a bug not detecting cross entity comments probably
75093 - when comment parsing got optimized.
75094 - * Makefile.am: add make check
75095 - * runxmlconf.c: fix the log file name
75096 -
75097 -Tue Jul 29 18:09:26 CEST 2008 Daniel Veillard <daniel@veillard.com>
75098 -
75099 - * runxmlconf.c Makefile.am: add a C program to run the W3C test
75100 - suite, work in progress
75101 - * xmllint.c: add a new option --oldxml10 to use the old parser
75102 - * parser.c: fix the XML_PARSE_OLD10 processing of the new option
75103 - and a bug in version parsing
75104 -
75105 -Tue Jul 29 11:12:40 CEST 2008 Daniel Veillard <daniel@veillard.com>
75106 -
75107 - * xpath.c: space and tabs cleanup
75108 -
75109 -Tue Jul 29 10:59:36 CEST 2008 Daniel Veillard <daniel@veillard.com>
75110 -
75111 - * include/libxml/parser.h include/libxml/xmlerror.h parser.c:
75112 - implement XML-1.0 5th edition, add parser option XML_PARSE_OLD10
75113 - to stick to old behaviour
75114 - * testapi.c gentest.py: modified slightly and regenerated
75115 - * Makefile.am: add testchar
75116 -
75117 -Thu Jul 24 16:57:20 CEST 2008 Daniel Veillard <daniel@veillard.com>
75118 -
75119 - * Makefile.am testchar.c Makefile.tests README.tests: add a
75120 - new regression test program for testing character ranges and
75121 - UTF8 encoding/decoding
75122 -
75123 -Wed Jul 23 15:32:39 CEST 2008 Daniel Veillard <daniel@veillard.com>
75124 -
75125 - * libxml.spec.in: fix the build root
75126 -
75127 -Wed Jul 16 22:28:48 PDT 2008 William Brack <wbrack@mmm.com.hk>
75128 -
75129 - * pattern.c: fix problem with xmlStreamPop when pattern includes
75130 - a "." element (see discussion on libxslt list)
75131 -
75132 -Mon Jul 7 15:49:59 CEST 2008 Daniel Veillard <daniel@veillard.com>
75133 -
75134 - * SAX2.c: fix line number on text nodes, problem raised by Ralf Junker
75135 -
75136 -Sun Jun 29 17:04:28 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75137 - * xmlschemas.c: fix crash with invalid whitespace facet
75138 -
75139 -Wed Jun 11 10:13:02 CEST 2008 Daniel Veillard <daniel@veillard.com>
75140 -
75141 - * doc/xml.html doc/FAQ.html: add a section in the FAQ about
75142 - multithread and xmlCleanupParser
75143 -
75144 -Tue Jun 10 16:52:17 CEST 2008 Daniel Veillard <daniel@veillard.com>
75145 -
75146 - * catalog.c: apply a couple of fixes based on a Coverity report
75147 - forwarded by Derrick Price.
75148 - * VxWorks/README VxWorks/Makefile VxWorks/build.sh: instructions
75149 - Makefile, and shell script to build on VxWorks 6.4+ provided by
75150 - Jim Wert.
75151 -
75152 -Tue Jun 3 18:07:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
75153 -
75154 - * python/generator.py python/setup.py: apply patch from Martin fixing
75155 - python whitespaces
75156 - * NEWS: following previous commit rebuilt now in UTF-8
75157 -
75158 -Mon Jun 2 17:39:42 CEST 2008 Daniel Veillard <daniel@veillard.com>
75159 -
75160 - * ChangeLog: patch from Hans de Goede to switch the file to UTF-8
75161 - * doc/news.xsl: switch to generate the NEWS file in UTF-8 instead of
75162 - ISO-8859-1
75163 -
75164 -Mon May 12 15:12:44 CEST 2008 Daniel Veillard <daniel@veillard.com>
75165 -
75166 - * xmlregexp.c: avoid a regexp crash, should fix #523738
75167 -
75168 -Mon May 12 14:56:06 CEST 2008 Daniel Veillard <daniel@veillard.com>
75169 -
75170 - * xmlschemas.c runtest.c testapi.c include/libxml/xmlreader.h
75171 - python/types.c python/libxml_wrap.h python/libxml.c: fx compilation
75172 - when configured without the reader should fix #513110
75173 - * doc/*: regenerated
75174 -
75175 -Sat May 3 14:33:29 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75176 -
75177 - * dict.c: check for stdint.h and define types when using MSVC
75178 -
75179 -Mon Apr 28 20:06:12 CEST 2008 Daniel Veillard <daniel@veillard.com>
75180 -
75181 - * parserInternals.c: applied patch from Ashwin to avoid a potential
75182 - double-free
75183 -
75184 -Thu Apr 24 13:56:53 CEST 2008 Daniel Veillard <daniel@veillard.com>
75185 -
75186 - * uri.c: applied patch from Ashwin fixing a number of realloc problems
75187 - * HTMLparser.c: improve handling for misplaced html/head/body
75188 -
75189 -Tue Apr 22 10:27:17 CEST 2008 Daniel Veillard <daniel@veillard.com>
75190 -
75191 - * dict.c: improvement on the hashing of the dictionary, with visible
75192 - speed up as the number of strings in the hash increases, work from
75193 - Stefan Behnel
75194 -
75195 -Fri Apr 11 14:44:00 CEST 2008 Daniel Veillard <daniel@veillard.com>
75196 -
75197 - * include/libxml/xmlschemas.h xmlschemas.c: added new function
75198 - xmlSchemaValidCtxtGetParserCtxt based on Holger Kaelberer patch
75199 - * doc/apibuild.py doc/*: regenerated the doc, chased why the new
75200 - function didn't got any documentation, added more checking in the
75201 - generator
75202 - * include/libxml/relaxng.h include/libxml/schematron.h
75203 - include/libxml/xmlschemas.h include/libxml/c14n.h
75204 - include/libxml/xmlregexp.h include/libxml/globals.h
75205 - include/libxml/xmlreader.h threads.c xmlschemas.c: various changes
75206 - and cleanups following the new reports
75207 -
75208 -
75209 -Thu Apr 10 10:07:00 CEST 2008 Daniel Veillard <daniel@veillard.com>
75210 -
75211 - * Makefile.am: extend the cleanup rule
75212 - * xmlschemas.c: space cleanup
75213 -
75214 -Wed Apr 9 19:43:25 CEST 2008 Rob Richards <rrichards@ctindustries.net>
75215 -
75216 - * include/wsockcompat.h: support older win32 platforms when building
75217 - with newer versions of VS
75218 -
75219 -Tue Apr 8 16:56:07 CEST 2008 Daniel Veillard <daniel@veillard.com>
75220 -
75221 - * configure.in NEWS doc/*: preparing release of 2.6.32
75222 -
75223 -Tue Apr 8 10:19:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
75224 -
75225 - * tree.c: fix a bug introduced when fixing #438208 and reported by
75226 - Ashwin
75227 - * python/generator.py: fix an infinite loop bug
75228 -
75229 -Mon Apr 7 14:44:51 CEST 2008 Daniel Veillard <daniel@veillard.com>
75230 -
75231 - * xmlreader.c: fix a link to XmlNodeType doc reported by Martijn Arts
75232 - * docs/*: rebuilt
75233 -
75234 -Fri Apr 4 18:09:50 CEST 2008 Daniel Veillard <daniel@veillard.com>
75235 -
75236 - * parser.c: improve the *Recover* functions documentation
75237 -
75238 -Thu Apr 3 14:57:15 CEST 2008 Daniel Veillard <daniel@veillard.com>
75239 -
75240 - * parser.c: patch from Mark Rowe fixing BOM or encoding detection
75241 - in external parsed entities, should fix #440415
75242 -
75243 -Thu Apr 3 13:16:01 CEST 2008 Daniel Veillard <daniel@veillard.com>
75244 -
75245 - * tree.c: fix some problems with the *EatName functions when
75246 - running out of memory raised by Eric Schrock , should fix #438208
75247 -
75248 -Thu Apr 3 12:41:29 CEST 2008 Daniel Veillard <daniel@veillard.com>
75249 -
75250 - * xmlschemastypes.c: horror around the definition of the lexical
75251 - values for decimal and derived types, fixing to reject empty
75252 - values, should fix #503268
75253 -
75254 -Thu Apr 3 11:44:57 CEST 2008 Daniel Veillard <daniel@veillard.com>
75255 -
75256 - * encoding.c: buffer may not be large enough to convert to
75257 - UCS4, patch from Christian Fruth , fixes #504015
75258 -
75259 -Thu Apr 3 11:02:02 CEST 2008 Daniel Veillard <daniel@veillard.com>
75260 -
75261 - * HTMLparser.c: apparently it's okay to forget the semicolon after
75262 - entity refs in HTML, fixing char refs parsing accordingly based on
75263 - T. Manske patch, this should fix #517653
75264 -
75265 -Thu Apr 3 09:30:29 CEST 2008 Daniel Veillard <daniel@veillard.com>
75266 -
75267 - * error.c: avoid a scary realloc() loop should fix #520383
75268 -
75269 -Thu Apr 3 08:22:52 CEST 2008 Daniel Veillard <daniel@veillard.com>
75270 -
75271 - * parser.c: more realloc problems pointed out by Ashwin
75272 -
75273 -Thu Apr 3 07:40:13 CEST 2008 Daniel Veillard <daniel@veillard.com>
75274 -
75275 - * xstc/Makefile.am: applied patch from Mike Hommey fixing distclean,
75276 - fixes #520387
75277 -
75278 -Thu Apr 3 06:52:32 CEST 2008 Daniel Veillard <daniel@veillard.com>
75279 -
75280 - * include/libxml/xpath.h: small doc improvement for xmlXPathContext
75281 - from Jack Jansen, fixes #524759
75282 - * doc/newapi.xsl doc/*: fixed a problem and regenerated the docs
75283 -
75284 -Tue Apr 1 09:59:22 CEST 2008 Daniel Veillard <daniel@veillard.com>
75285 -
75286 - * xpath.c: two patches from Alvaro Herrera to avoid problem when
75287 - running out of memory in XPath evaluations.
75288 -
75289 -Mon Mar 31 11:23:19 CEST 2008 Daniel Veillard <daniel@veillard.com>
75290 -
75291 - * parser.c: lot of out of memory handling fixes from Ashwin
75292 - * elfgcchack.h doc/elfgcchack.xsl: work around a problem with xmlDllMain
75293 - * include/libxml/threads.h: indenting cleanups
75294 -
75295 -Mon Mar 31 10:25:37 CEST 2008 Daniel Veillard <daniel@veillard.com>
75296 -
75297 - * parser.c docs/*: trying to clarify even more the xmlCleanupParser()
75298 - use and the memory documentation
75299 -
75300 -Wed Mar 26 18:39:58 CET 2008 Daniel Veillard <daniel@veillard.com>
75301 -
75302 - * parser.c: changes based on Alex Khesin patch where xmlParseCharRef
75303 - seems to not be checked correctly, fixes #520198
75304 -
75305 -Wed Mar 26 15:03:49 CET 2008 Daniel Veillard <daniel@veillard.com>
75306 -
75307 - * parser.c: patch from Ashwin to avoid a problem of attribute
75308 - redefinition in the DTD. Remove a warning too.
75309 -
75310 -Wed Mar 26 14:38:31 CET 2008 Daniel Veillard <daniel@veillard.com>
75311 -
75312 - * xmlschemas.c: fix a problem in externalSubsetSplit with a patch
75313 - from Ashwin
75314 -
75315 -Tue Mar 25 17:48:02 CET 2008 Daniel Veillard <daniel@veillard.com>
75316 -
75317 - * parser.c: fix various attribute normalisation problems reported
75318 - by Ashwin
75319 - * result/c14n/without-comments/example-4
75320 - result/c14n/with-comments/example-4: this impacted the result of
75321 - two c14n tests :-\
75322 - * test/att9 test/att10 test/att11 result//att9* result//att10*
75323 - result//att11*: added 3 specific regression tests coming from the
75324 - XML spec revision and from Ashwin
75325 -
75326 -Tue Mar 25 14:20:49 CET 2008 Daniel Veillard <daniel@veillard.com>
75327 -
75328 - * uri.c: fix saving for file:///X:/ URI embedding Windows file paths
75329 - should fix #524253
75330 -
75331 -Mon Mar 24 21:42:33 CET 2008 Daniel Veillard <daniel@veillard.com>
75332 -
75333 - * parser.c: fix a problem reported by Ashwin for system parameter
75334 - entities referenced from entities in external subset, add a
75335 - specific loading routine.
75336 - * test/valid/dtds/external.ent test/valid/dtds/external2.ent
75337 - test/valid/t11.xml result/valid/t11.xml*: added the test to
75338 - the regression suite
75339 -
75340 -Mon Mar 24 15:04:54 CET 2008 Daniel Veillard <daniel@veillard.com>
75341 -
75342 - * xmlschemas.c: fix an XML Schemas crash raised by Stefan Behnel
75343 - when testing with W3C test suite
75344 -
75345 -Mon Mar 24 12:12:00 CET 2008 Daniel Veillard <daniel@veillard.com>
75346 -
75347 - * threads.c: check some allocation with Ashwin patch
75348 -
75349 -Wed Mar 19 16:41:52 CET 2008 Daniel Veillard <daniel@veillard.com>
75350 -
75351 - * vms/build_libxml.com: update from Tycho Hilhorst, should fix #523378
75352 -
75353 -Tue Mar 18 09:23:05 CET 2008 Daniel Veillard <daniel@veillard.com>
75354 -
75355 - * threads.c: check some malloc returns with Ashwin patch, add
75356 - error messages and reindent the module.
75357 -
75358 -Fri Mar 14 15:28:43 CET 2008 Daniel Veillard <daniel@veillard.com>
75359 -
75360 - * xmlreader.c: patch from Ashwin removing duplicate tests
75361 -
75362 -Fri Mar 14 13:44:29 CET 2008 Daniel Veillard <daniel@veillard.com>
75363 -
75364 - * include/libxml/schematron.h include/libxml/xmlerror.h schematron.c:
75365 - applied patch from Tobias Minich to allow plugin schematron error
75366 - reporting in the normal error system, should fix #513998
75367 -
75368 -Fri Mar 14 11:52:09 CET 2008 Daniel Veillard <daniel@veillard.com>
75369 -
75370 - * parser.c xinclude.c: patch from Vasily Chekalkin fixes memory
75371 - leaks, should fix 512647
75372 -
75373 -Thu Mar 13 08:17:58 CET 2008 Daniel Veillard <daniel@veillard.com>
75374 -
75375 - * xmlregexp.c: found a nasty bug in regexp automata build,
75376 - reported by Ashwin and Bjorn Reese
75377 -
75378 -Wed Mar 12 18:56:22 CET 2008 Daniel Veillard <daniel@veillard.com>
75379 -
75380 - * HTMLparser.c: patch from Arnold Hendriks improving parsing of
75381 - html within html bogus data, still not a complete fix though
75382 -
75383 -Wed Mar 12 10:22:01 CET 2008 Daniel Veillard <daniel@veillard.com>
75384 -
75385 - * python/types.c: fix a memory error when using namespace nodes
75386 - returned from XPath queries, should fix #521699
75387 - * python/tests/Makefile.am python/tests/xpathns.py: add a specific
75388 - regression test for it
75389 -
75390 -Mon Mar 10 16:25:32 CET 2008 Rob Richards <rrichards@ctindustries.net>
75391 -
75392 - * include/win32config.h: add ICONV_CONST define for win32 build
75393 - to satisfy encoding.c change in rev 3693
75394 -
75395 -Fri Mar 7 17:45:27 CET 2008 Daniel Veillard <daniel@veillard.com>
75396 -
75397 - * xmlsave.c parser.c: fix handling of empty CDATA nodes as
75398 - reported and discussed around #514181 and associated patches
75399 - * test/emptycdata.xml result/emptycdata.xml*
75400 - result/noent/emptycdata.xml: added a specific test in the
75401 - regression suite.
75402 -
75403 -Thu Mar 6 15:23:10 CET 2008 Daniel Veillard <daniel@veillard.com>
75404 -
75405 - * encoding.c: poblem with encoding detection for UTF-16 reported by
75406 - Ashwin and found by Bill
75407 - * test/valid/dtds/utf16b.ent test/valid/dtds/utf16l.ent
75408 - test/valid/UTF16Entity.xml result/valid/UTF16Entity.xml*: added
75409 - the example to the regression tests
75410 -
75411 -Tue Mar 4 14:16:38 CET 2008 Daniel Veillard <daniel@veillard.com>
75412 -
75413 - * xmlwriter.c: patch from Alex Khesin fixing CDATA output after
75414 - a text node.
75415 - * parser.c: fixed the comment for xmlParserCleanup
75416 - * globals.c: fixed indentation
75417 -
75418 -Mon Feb 25 16:42:19 CET 2008 Daniel Veillard <daniel@veillard.com>
75419 -
75420 - * testModule.c: patch from Florent Guiliani to fix build on
75421 - SCO OpenServer
75422 -
75423 -Thu Feb 21 22:46:08 CET 2008 Daniel Veillard <daniel@veillard.com>
75424 -
75425 - * debugXML.c: made one of the changes suggested by Brian Krahmer
75426 - * testRegexp.c: allow to pass '--' on the command line to allow
75427 - regexps starting with the character '-'
75428 -
75429 -Tue Feb 19 08:49:32 CET 2008 Daniel Veillard <daniel@veillard.com>
75430 -
75431 - * python/Makefile.am python/tests/Makefile.am: applied cleanup
75432 - patches for cross compilation and MinGW from Roumen Petrov
75433 -
75434 -Sat Feb 16 11:06:54 CET 2008 Daniel Veillard <daniel@veillard.com>
75435 -
75436 - * xmlIO.c: fix output bug reported by Petr Pajas and analyzed by
75437 - Bill
75438 -
75439 -Fri Feb 15 09:32:11 CET 2008 Daniel Veillard <daniel@veillard.com>
75440 -
75441 - * include/libxml/xmlerror.h tree.c: patch from Julien Charbon
75442 - to simplify the processing of xmlSetProp()
75443 -
75444 -Fri Feb 15 08:45:32 CET 2008 Daniel Veillard <daniel@veillard.com>
75445 -
75446 - * config.h.in configure.in encoding.c: patch from Roumen Petrov
75447 - to detect if iconv() needs a const for the second parameter
75448 -
75449 -Fri Feb 15 08:41:31 CET 2008 Daniel Veillard <daniel@veillard.com>
75450 -
75451 - * macos/src/XMLTestPrefix2.h win32/Makefile.msvc: EOL cleanups
75452 - from Florent Guiliani
75453 -
75454 -Wed Feb 13 10:56:38 CET 2008 Daniel Veillard <daniel@veillard.com>
75455 -
75456 - * xmlwriter.c: applied patch from Alfred Mickautsch to flush the
75457 - output at the end of document.
75458 -
75459 -Fri Feb 8 11:57:03 CET 2008 Daniel Veillard <daniel@veillard.com>
75460 -
75461 - * doc/examples/examples.xml: regenerated, it was truncated.
75462 -
75463 -Fri Feb 8 11:47:18 CET 2008 Daniel Veillard <daniel@veillard.com>
75464 -
75465 - * xmlmodule.c: apply simple patch from Carlo Bramini to avoid
75466 - compilation problems with Mingw32
75467 -
75468 -Fri Feb 8 11:33:15 CET 2008 Daniel Veillard <daniel@veillard.com>
75469 -
75470 - * xmlregexp.c: apply patch from Andrew Tosh to fix behaviour
75471 - when '.' is used in a posCharGroup
75472 - * test/schemas/poschargrp0_0.* result/schemas/poschargrp0_0_0*:
75473 - added the test to the regression suite
75474 -
75475 -Fri Feb 8 10:54:09 CET 2008 Daniel Veillard <daniel@veillard.com>
75476 -
75477 - * dict.c: applied patch from Florent Guilian to remove an
75478 - useless mutex in the xmlDict structure.
75479 -
75480 -Wed Feb 6 17:00:20 CET 2008 Daniel Veillard <daniel@veillard.com>
75481 -
75482 - * SAX2.c: another leak reported by Ashwin
75483 - * xinclude.c: fixed the behaviour when XIncluding a fragment
75484 - of the current document, patch from Chris Ryan
75485 -
75486 -Wed Feb 6 12:10:08 HKT 2008 William Brack <wbrack@mmm.com.hk>
75487 -
75488 - * nanohttp.c: added space for port number (when not 80) in
75489 - xmlNanoHTTPMethodRedir, plus a few more comments. Should
75490 - fix #514521.
75491 -
75492 -Tue Feb 5 09:41:46 CET 2008 Daniel Veillard <daniel@veillard.com>
75493 -
75494 - * schemas.c: apply fix suggested by Ashwin correcting a cut-n-paste
75495 - error about the SAX callback in cdataBlockSplit when streaming
75496 - XSD validation
75497 -
75498 -Tue Feb 5 09:36:46 CET 2008 Daniel Veillard <daniel@veillard.com>
75499 -
75500 - * uri.c: applied a patch based on Petr Sumbera one to avoid a
75501 - problem with paths starting with //
75502 -
75503 -Mon Feb 4 17:48:30 CET 2008 Daniel Veillard <daniel@veillard.com>
75504 -
75505 - * doc/xml.html doc/xmlmem.html: added a small section on returning
75506 - memory to the kernel by compacting the heap provided by Wolfram Sang
75507 -
75508 -Fri Jan 25 20:01:42 CET 2007 Rob Richards <rrichards@ctindustries.net>
75509 -
75510 - * include/win32config.h win32/Makefile.msvc: fix build under VS 2008.
75511 - patch by David Wimsey
75512 -
75513 -Thu Jan 24 15:37:04 CET 2008 Daniel Veillard <daniel@veillard.com>
75514 -
75515 - * parser.c: fix a memory leak in internal subset parsing with
75516 - a fix from Ashwin
75517 - * test/errors/content1.xml result/errors/content1.xml*:
75518 - add test to regressions
75519 -
75520 -Fri Jan 11 09:00:09 CET 2008 Daniel Veillard <daniel@veillard.com>
75521 -
75522 - * configure.in doc/*: preparing release of 2.6.31
75523 -
75524 -Fri Jan 11 08:58:49 CET 2008 Daniel Veillard <daniel@veillard.com>
75525 -
75526 - * parser.c: avoid a warning on 64bits introduced earlier
75527 - * parserInternals.c: make more checking on the UTF-8 input
75528 -
75529 -Fri Jan 11 15:37:05 CST 2008 Daniel Veillard <daniel@veillard.com>
75530 -
75531 - * HTMLparser.c: avoid stopping parsing when encountering
75532 - out of range characters in an HTML file, report and
75533 - continue processing instead, should fix #472696
75534 -
75535 -Fri Jan 11 15:13:35 CST 2008 Daniel Veillard <daniel@veillard.com>
75536 -
75537 - * check-relaxng-test-suite2.py check-relaxng-test-suite.py
75538 - Makefile.am python/tests/Makefile.am python/Makefile.am
75539 - check-xsddata-test-suite.py: patches from John Carr to
75540 - start cleaning up 'make diskcheck' problems c.f. #506228
75541 -
75542 -Fri Jan 11 14:48:40 CST 2008 Daniel Veillard <daniel@veillard.com>
75543 -
75544 - * xmllint.c: apply fix from Stefan Kost to avoid a crash
75545 - in xmllint, fixes 504284
75546 -
75547 -Fri Jan 11 14:39:03 CST 2008 Daniel Veillard <daniel@veillard.com>
75548 -
75549 - * xml2-config.in: apply patch from Fred Crozat to avoid
75550 - outputting -L/usr/lib from xml2-config, fixes #497012
75551 -
75552 -Fri Jan 11 14:18:09 CST 2008 Daniel Veillard <daniel@veillard.com>
75553 -
75554 - * HTMLparser.c: fix definition for <embed> to avoid error
75555 - when saving back, patch from Stefan Behnel fixing 495213
75556 -
75557 -Fri Jan 11 14:06:09 CST 2008 Daniel Veillard <daniel@veillard.com>
75558 -
75559 - * parser.c: applied patch from Christian Schmidt fixing a
75560 - column counter update problem, fixes #472696
75561 -
75562 -Fri Jan 11 13:22:14 CST 2008 Daniel Veillard <daniel@veillard.com>
75563 -
75564 - * parser.c: handle a erroneous parsing of attributes in
75565 - case said attribute has been redeclared in the DTD with a
75566 - different type
75567 - * hash.c: fix the hash scanner to not crash if a first element
75568 - from the hash list is been removed in the callback
75569 -
75570 -Wed Jan 9 10:15:50 CST 2008 Daniel Veillard <daniel@veillard.com>
75571 -
75572 - * xmlwriter.c: fix indentation in xmlTextWriterFullEndElement,
75573 - as raised by Felipe Pena, should fix #508156
75574 -
75575 -Tue Dec 6 11:07:42 CET 2007 Rob Richards <rrichards@ctindustries.net>
75576 -
75577 - * pattern.c: fix crash from double free of name for bug #501760
75578 -
75579 -Fri Nov 23 11:47:48 CET 2007 Daniel Veillard <daniel@veillard.com>
75580 -
75581 - * threads.c: remove unused variable in __xmlGlobalInitMutexLock
75582 - reported by Hannes Eder
75583 -
75584 -Mon Nov 19 18:39:26 CET 2007 Daniel Veillard <daniel@veillard.com>
75585 -
75586 - * xmlregexp.c: remove a cut-and-paste copy error
75587 -
75588 -Fri Nov 16 11:55:36 CET 2007 Rob Richards <rrichards@ctindustries.net>
75589 -
75590 - * globals.c threads.c include/libxml/threads.h:
75591 - __xmlGlobalInitMutexDestroy() will free global_init_lock on Win32.
75592 - Patch from Marc-Antoine Ruel.
75593 -
75594 -Tue Nov 13 21:26:27 CET 2007 Rob Richards <rrichards@ctindustries.net>
75595 -
75596 - * schematron.c: fix crash/leaks from xmlSchematronParse due to improper
75597 - schema document ownership for bug #495215
75598 -
75599 -Tue Oct 30 21:24:55 CET 2007 Daniel Veillard <daniel@veillard.com>
75600 -
75601 - * xmlmemory.c: xmlFree(NULL) should not crash in debug mode
75602 - should fix #491651
75603 -
75604 -Tue Oct 16 13:58:41 CEST 2007 Daniel Veillard <daniel@veillard.com>
75605 -
75606 - * testURI.c: add a debug option printing all the fields within
75607 - the parsed URI structure
75608 -
75609 -Wed Oct 10 10:25:52 CEST 2007 Daniel Veillard <daniel@veillard.com>
75610 -
75611 - * xmlsave.c: fix to avoid a crash when dumping an attribute from
75612 - an XHTML document, patch contributed to fix #485298
75613 -
75614 -Tue Aug 28 19:32:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
75615 -
75616 - * xmlregexp.c: another nasty regexp case fixed.
75617 - * test/regexp/ranges2 result/regexp/ranges2: added to regression
75618 - suite
75619 -
75620 -Fri Aug 24 10:58:58 HKT 2007 William Brack <wbrack@mmm.com.hk>
75621 -
75622 - * nanohttp.c: Enhanced to include port number (if not == 80) on the
75623 - "Header:" URL (bug #469681).
75624 - * xmlregexp.c: Fixed a typo causing a warning message.
75625 -
75626 -Thu Aug 23 22:48:20 CEST 2007 Daniel Veillard <daniel@veillard.com>
75627 -
75628 - * nanohttp.c: fix an open() call with creation without 3rd argument
75629 - hopefully that interface is never used.
75630 -
75631 -Thu Aug 23 17:00:49 CEST 2007 Daniel Veillard <daniel@veillard.com>
75632 -
75633 - * configure.in doc/*: preparing release of 2.6.30
75634 -
75635 -Thu Aug 23 20:58:28 HKT 2007 William Brack <wbrack@mmm.com.hk>
75636 -
75637 - * xpath.c: fixed xmlXPathCompOpEvalPositionalPredicate problem
75638 - with object caching (bug #469410)
75639 -
75640 -Thu Aug 23 11:28:38 CEST 2007 Daniel Veillard <daniel@veillard.com>
75641 -
75642 - * xmlschemas.c test/schemas/*455953* result/schemas/bug455953*:
75643 - applied patch from Frank Gross fixing Schemas IDC import bug
75644 - #455953 and also add the test to the regression suite
75645 -
75646 -Wed Aug 22 18:29:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75647 -
75648 - * xmlregexp.c: try to fix for the nth time the automata generation
75649 - in case of complex ranges. I suppose that time it is actually okay
75650 -
75651 -Tue Aug 14 15:51:05 CEST 2007 Daniel Veillard <daniel@veillard.com>
75652 -
75653 - * parser.c: aligned xmlSAXUserParseMemory() to match
75654 - xmlSAXUserParseFile() logic based on Ashwin post, and ifdef
75655 - cleanup
75656 -
75657 -Tue Aug 14 11:42:27 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75658 -
75659 - * xmlIO.c: fixed windows path determination (patch from
75660 - Roland Schwarz, bug #462877)
75661 - * win32/Makefile.mingw win32/configure.js: fixed mingw build
75662 - (patch from Roland Schwarz, bug #462877)
75663 -
75664 -Wed Aug 1 09:50:12 CEST 2007 Daniel Veillard <daniel@veillard.com>
75665 -
75666 - * parser.c: fixed a parser bug where invalid char in comment may
75667 - not be detected, reported by Ashwin Sinha
75668 - * test/errors/comment1.xml result/errors/comment1.xml*: added
75669 - the example to the regression suite
75670 -
75671 -Thu Jul 26 13:42:26 CEST 2007 Daniel Veillard <daniel@veillard.com>
75672 -
75673 - * xmlsave.c: fixed problem reported on bug #460415
75674 -
75675 -Thu Jul 19 18:10:58 PDT 2007 William Brack <wbrack@mmm.com.hk>
75676 -
75677 - * uri.c: applied patch from from Patrik Fimml. Fixes bug #458268.
75678 -
75679 -Wed Jul 18 11:05:08 PDT 2007 William Brack <wbrack@mmm.com.hk>
75680 -
75681 - * xinclude.c: applied patch from bug #454608 from Patrik Fimml.
75682 - Fixes bug #454608.
75683 -
75684 -Wed Jul 11 19:57:59 CEST 2007 Daniel Veillard <daniel@veillard.com>
75685 -
75686 - * xmlschemas.c: applied patch for xsi:nil from Frank Gross, this
75687 - should fix bug #358125
75688 -
75689 -Wed Jul 4 17:44:20 CEST 2007 Daniel Veillard <daniel@veillard.com>
75690 -
75691 - * xmlwriter.c: patch from Dodji Seketeli to avoid a leak on repeated
75692 - uses of xmlTextWriterStartDocument()
75693 -
75694 -Tue Jun 26 13:30:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75695 -
75696 - * xmlschemas.c: fix a crash on solaris when a printf %s with a NULL
75697 - argument occurs, should fix #450936
75698 -
75699 -Wed Jun 13 13:33:38 PDT 2007 William Brack <wbrack@mmm.com.hk>
75700 -
75701 - * xpath.c: fixed problem in previous fix to xmlXPathNodeSetSort
75702 -
75703 -Tue Jun 12 18:17:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
75704 -
75705 - * doc/* configure.in NEWS: release of libxml2 2.6.29
75706 - * valid.c: patch from Dagfinn I. Mannsåker for idness of name
75707 - in HTML, c.f. bug #305885.
75708 -
75709 -Tue Jun 12 17:14:08 CEST 2007 Daniel Veillard <daniel@veillard.com>
75710 -
75711 - * SAX2.c: fixing bug #319964, parsing of HTML attribute really
75712 - should not have namespace processing.
75713 -
75714 -Tue Jun 12 16:42:14 CEST 2007 Daniel Veillard <daniel@veillard.com>
75715 -
75716 - * parser.c: fixed the push mode when a big comment occurs before
75717 - an internal subset, should close bug #438835
75718 - * test/comment6.xml result//comment6.xml*: added a special
75719 - test in the regression suite
75720 -
75721 -Tue Jun 12 15:41:09 CEST 2007 Daniel Veillard <daniel@veillard.com>
75722 -
75723 - * parser.c: fix bug #414846 where invalid characters in attributes
75724 - would sometimes not be detected.
75725 - * test/errors/attr4.xml result/errors/attr4.xml*: added a specific
75726 - test case to the regression tests
75727 -
75728 -Tue Jun 12 14:23:24 CEST 2007 Daniel Veillard <daniel@veillard.com>
75729 -
75730 - * xstc/Makefile.am: apply patch from Ryan Hill to cope with changes
75731 - in GNU tar, should fix #396751
75732 -
75733 -Tue Jun 12 12:03:36 CEST 2007 Daniel Veillard <daniel@veillard.com>
75734 -
75735 - * python/types.c: try to allow compilation on old python version
75736 - should fix #398125
75737 -
75738 -Tue Jun 12 11:48:15 CEST 2007 Daniel Veillard <daniel@veillard.com>
75739 -
75740 - * HTMLtree.c: htmlNodeDumpFormatOutput didn't handle XML_ATTRIBUTE_NODe
75741 - fixes bug #438390
75742 -
75743 -Tue Jun 12 11:37:55 CEST 2007 Daniel Veillard <daniel@veillard.com>
75744 -
75745 - * xmlIO.c: workaround misgenerated file: URIs c.f. #437385
75746 -
75747 -Tue Jun 12 11:22:47 CEST 2007 Daniel Veillard <daniel@veillard.com>
75748 -
75749 - * relaxng.c: fixed bug #407436 a crash in a specific case of
75750 - Relax-NG validation
75751 -
75752 -Tue Jun 12 11:12:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75753 -
75754 - * catalog.c: fixed bug #383687, some case of recursion on next
75755 - were not caught in the catalog code.
75756 -
75757 -Tue Jun 12 10:37:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75758 -
75759 - * HTMLparser.c: fixed bug #381877, avoid reading over the end
75760 - of stream when generating an UTF-8 encoding error.
75761 -
75762 -Tue Jun 12 10:16:48 CEST 2007 Daniel Veillard <daniel@veillard.com>
75763 -
75764 - * parser.c: fixed bug #366161, trivially added the check in
75765 - xmlCtxtReset()
75766 -
75767 -Fri Jun 8 21:48:21 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75768 -
75769 - * win32/configure.js win32/Makefile.msvc: add --vcmanifest flag (yes/no)
75770 - for VC8 build support to embed manifest within files. Under MS VC, build
75771 - libxml2_a_dll.lib by default (LIBXML_STATIC_FOR_DLL flag).
75772 -
75773 -Fri Jun 8 21:37:46 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75774 -
75775 - * threads.c include/libxml/threads.h: use specified calling convention
75776 - for xmlDllMain. Old SDKs (VC6) only support InterlockedCompareExchange.
75777 - add xmlDllMain to header for win32 when building for static dll
75778 -
75779 -Fri Jun 8 10:51:28 CEST 2007 Rob Richards <rrichards@ctindustries.net>
75780 -
75781 - * xmlwriter.c: fixed problem with namespace declaration being
75782 - written more than once per element start tag
75783 -
75784 -Wed Jun 6 10:18:28 PDT 2007 William Brack <wbrack@mmm.com.hk>
75785 -
75786 - * xpath.c: fixed problem with xmlXPathNodeSetSort;
75787 - fixed problem with xmlXPathNodeTrailingSorted (both bug#413451)
75788 -
75789 -Wed May 30 22:05:08 PDT 2007 William Brack <wbrack@mmm.com.hk>
75790 -
75791 - * xpath.c: fixed problem with string value for PI node
75792 - (bug #442275)
75793 -
75794 -Mon May 28 16:14:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75795 -
75796 - * uri.c: fix bug reported by François Delyon
75797 -
75798 -Tue May 22 08:59:48 PDT 2007 William Brack <wbrack@mmm.com.hk>
75799 -
75800 - * encoding.c: Fixed typo in xmlCharEncFirstLine pointed out
75801 - by Mark Rowe (bug #440159)
75802 - * include/libxml/xmlversion.h.in: Added check for definition of
75803 - _POSIX_C_SOURCE to avoid warnings on Apple OS/X (patch from
75804 - Wendy Doyle and Mark Rowe, bug #346675)
75805 - * schematron.c, testapi.c, tree.c, xmlIO.c, xmlsave.c: minor
75806 - changes to fix compilation warnings - no change to logic.
75807 -
75808 -Tue May 15 22:18:08 PDT 2007 William Brack <wbrack@mmm.com.hk>
75809 -
75810 - * nanohttp.c: small enhancement to last fix, pointed out
75811 - by Alex Cornejo
75812 -
75813 -Tue May 15 12:38:38 PDT 2007 William Brack <wbrack@mmm.com.hk>
75814 -
75815 - * nanohttp.c: fixed problem on gzip streams (bug #438045)
75816 - * xpath.c: fixed minor spot of redundant code - no logic change.
75817 -
75818 -Fri May 11 22:45:18 HKT 2007 William Brack <wbrack@mmm.com.hk>
75819 -
75820 - * xpath.c: enhanced the coding for xmlXPathCastNumberToString
75821 - in order to produce the required number of significant digits
75822 - (bug #437179)
75823 -
75824 -Thu May 10 01:52:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75825 -
75826 - * list.c: applied patch to fix xmlListAppend() from
75827 - Georges-André SILBER
75828 - * valid.c: also fix the place where it was called.
75829 -
75830 -Wed May 2 18:47:33 CEST 2007 Daniel Veillard <daniel@veillard.com>
75831 -
75832 - * parser.c: tried to fix an error problem on entity content failure
75833 - reported by Michael Day
75834 -
75835 -Wed May 2 18:23:35 CEST 2007 Daniel Veillard <daniel@veillard.com>
75836 -
75837 - * configure.in: typo patch from Bjorn Reese
75838 -
75839 -Wed May 2 18:12:58 CEST 2007 Daniel Veillard <daniel@veillard.com>
75840 -
75841 - * HTMLparser.c: applied patch from Michael Day to add support for
75842 - <embed>
75843 -
75844 -Thu Apr 26 10:58:50 CEST 2007 Daniel Veillard <daniel@veillard.com>
75845 -
75846 - * HTMLparser.c: Jean-Daniel Dupas pointed a couple of problems
75847 - in htmlCreateDocParserCtxt.
75848 -
75849 -Thu Apr 26 10:36:26 CEST 2007 Daniel Veillard <daniel@veillard.com>
75850 -
75851 - * uri.c include/libxml/uri.h: patch from Richard Jones to save
75852 - the query part in raw form.
75853 - * libxml2-python-api.xml: also added accessor for the python bindings
75854 -
75855 -Wed Apr 25 15:57:32 CEST 2007 Daniel Veillard <daniel@veillard.com>
75856 -
75857 - * xstc/Makefile.am doc/examples/Makefile.am Makefile.am: applied
75858 - patch from Richard Jones to for the silent flag on valgrind
75859 - when doing "make valgrind"
75860 - * xmlregexp.c: raise a regexp error when '\' is misused to escape
75861 - a standard character.
75862 -
75863 -Tue Apr 24 20:15:14 CEST 2007 Daniel Veillard <daniel@veillard.com>
75864 -
75865 - * tree.c: Richard Jones reported xmlBufferAdd (buf, "", -1), fixing it
75866 -
75867 -Tue Apr 24 10:59:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
75868 -
75869 - * uri.c: fix xmlURIUnescapeString comments which was confusing
75870 -
75871 -Wed Apr 18 09:52:25 CEST 2007 Daniel Veillard <daniel@veillard.com>
75872 -
75873 - * include/win32config.h libxml.h: new patch from Andreas Stricke to
75874 - better integrate support for Windows CE
75875 -
75876 -Tue Apr 17 16:50:12 CEST 2007 Daniel Veillard <daniel@veillard.com>
75877 -
75878 - * doc/* configure.in NEWS: release of libxml2 2.6.28
75879 -
75880 -Tue Apr 17 14:47:42 CEST 2007 Daniel Veillard <daniel@veillard.com>
75881 -
75882 - * catalog.c libxml.h win32/wince/wincecompat.h win32/wince/wincecompat.c
75883 - xmlIO.c nanohttp.c nanoftp.c trio.c triostr.c triostr.h: applied
75884 - patch from Andreas Stricke to ease the compilation on Windows CE
75885 -
75886 -Tue Apr 17 14:34:45 CEST 2007 Daniel Veillard <daniel@veillard.com>
75887 -
75888 - * xmllint.c catalog.c: "xmllint unusable on win32" so applied
75889 - a libxml2 patch from Christian Ehrlicher
75890 -
75891 -Mon Apr 16 09:05:01 CEST 2007 Daniel Veillard <daniel@veillard.com>
75892 -
75893 - * HTMLparser.c: change the way script/style are parsed to
75894 - not try to detect comments, reported by Mike Day
75895 - * result/HTML/doc3.*: affects the result of that test
75896 -
75897 -Wed Apr 11 22:38:18 HKT 2007 William Brack <wbrack@mmm.com.hk>
75898 -
75899 - * xmlregexp.c: small enhancement for quantifier range with
75900 - min occurs of 0; fixes bug 425542.
75901 -
75902 -Fri Mar 30 14:41:57 CEST 2007 Daniel Veillard <daniel@veillard.com>
75903 -
75904 - * xmlIO.c: applied change from Michael Day to avoid a problem when
75905 - compiled without zlib support.
75906 -
75907 -Wed Mar 21 17:58:13 CET 2007 Daniel Veillard <daniel@veillard.com>
75908 -
75909 - * include/libxml/xpath.h: applied documentation patch from James Dennett
75910 -
75911 -Wed Mar 21 21:20:48 HKT 2007 William Brack <wbrack@mmm.com.hk>
75912 -
75913 - * xmlregexp.c: fixed problem with 0x2d in Char Range (bug #420596)
75914 - * test/regexp/bug420596, result/regexp/bug420596: added regression
75915 - test for this
75916 -
75917 -Wed Mar 21 14:23:08 HKT 2007 William Brack <wbrack@mmm.com.hk>
75918 -
75919 - * HTMLparser.c: fixed memory access error on parsing of meta data
75920 - which had errors (bug #382206). Also cleaned up a few warnings
75921 - by adding some additional DECL macros.
75922 -
75923 -Tue Mar 20 09:58:13 CET 2007 Daniel Veillard <daniel@veillard.com>
75924 -
75925 - * nanoftp.c: applied patch from Björn Wiberg to try to fix again
75926 - the silly __ss_family problem on various AIXes, should fix #420184
75927 -
75928 -Wed Mar 14 20:30:38 HKT 2007 William Brack <wbrack@mmm.com.hk>
75929 -
75930 - * configure.in: corrected small error in last commit
75931 - * xmlreader.c: corrected small typo in last commit
75932 -
75933 -Wed Mar 14 19:35:28 HKT 2007 William Brack <wbrack@mmm.com.hk>
75934 -
75935 - * xmlschemas.c: fixed problem with referenced attribute groups
75936 - (bug #417621)
75937 - * configure.in: re-ordered some includes for types.h / socket.h
75938 - (bug #416001)
75939 -
75940 -Fri Mar 9 17:54:40 CET 2007 Daniel Veillard <daniel@veillard.com>
75941 -
75942 - * xmlreader.c: applied patch from Julien Reichel cleaning up mode
75943 - and state internal flags mixups
75944 -
75945 -Wed Mar 7 16:18:18 HKT 2007 William Brack <wbrack@mmm.com.hk>
75946 -
75947 - * xpath.c: fixed xmlXPathCmpNodes for incorrect result on certain
75948 - cases when comparing identical nodes (bug #415567) with patch
75949 - from Oleg Paraschenko
75950 -
75951 -Fri Feb 16 09:13:38 PST 2007 William Brack <wbrack@mmm.com.hk>
75952 -
75953 - * python/libxml.py: fixed tab problem with patch from
75954 - Andreas Hanke (bug #408626)
75955 -
75956 -Thu Feb 15 12:43:28 PST 2007 William Brack <wbrack@mmm.com.hk>
75957 -
75958 - * doc/xml.html: Changed all references to libxml2 CVS over to
75959 - the corresponding SVN. A few other spelling/grammar/links
75960 - also changed.
75961 - * doc/libxml2-api.xml, doc/*.html: Regenerated all docs.
75962 -
75963 -Tue Feb 13 18:15:58 PST 2007 William Brack <wbrack@mmm.com.hk>
75964 -
75965 - * xpath.c: Fixed memory bug with invalid function reported by
75966 - Francois Delyon on mailing list
75967 -
75968 -Mon Feb 12 16:40:48 PST 2007 William Brack <wbrack@mmm.com.hk>
75969 -
75970 - * xinclude.c: fixed problem with invalid char encountered
75971 - during text include (reported on xslt mailing list)
75972 -
75973 -Mon Feb 12 18:30:01 CET 2007 Daniel Veillard <daniel@veillard.com>
75974 -
75975 - * Makefile.am: small cleanup to avoid packaging .svn
75976 - * libxml.h threads.c parser.c: applied patch to avoid a problem
75977 - in concurrent threaded initialization fix from Ted Phelps
75978 -
75979 -Thu Feb 08 15:35:18 PST 2007 William Brack <wbrack@mmm.com.hk>
75980 -
75981 - * parser.c: added a GROW when parsing complex comments (bug #405666)
75982 - * gentest.py, testapi.c: added a hack to prevent destruction of any
75983 - param with 'destroy' in it's description (i.e. param destroyed by
75984 - the routine under test, so shouldn't be destroyed by testapi)
75985 - * xmlreader.c: added freeing of 'input' param even on error
75986 - (fixes leak detected by testapi)
75987 -
75988 -Wed Jan 31 10:25:38 PST 2007 William Brack <wbrack@mmm.com.hk>
75989 -
75990 - * testAutomata.c, testRegexp.c, testThreads.c, testThreadsWin32.c,
75991 - xmlwriter.c: repositioned #include for libxml.h to avoid
75992 - compilation error on some architectures (bug #398277)
75993 - * fixed screwed-up ChangeLog (deleted some duplicate entries)
75994 -
75995 -Fri Jan 26 00:05:18 PST 2007 William Brack <wbrack@mmm.com.hk>
75996 -
75997 - * implemented patch from Stéphane Bidoul for uri.c (bug #389767)
75998 -
75999 -Thu Jan 25 11:15:08 PST 2007 William Brack <wbrack@mmm.com.hk>
76000 -
76001 - * xpath.c: added checks for alloc fail on calls to
76002 - xmlXPathNewContext (libxslt bug #400242)
76003 -
76004 -Thu Jan 11 15:38:08 PST 2007 William Brack <wbrack@mmm.com.hk>
76005 -
76006 - * Re-generated the documentation (API chunks 27-29 were missing)
76007 - (also causes changes to testapi.c, elfgcchack.h and
76008 - win32/libxml2.def.src)
76009 -
76010 -Tue Jan 9 22:24:26 CET 2007 Daniel Veillard <daniel@veillard.com>
76011 -
76012 - * python/libxml.c: fix a memory leak in the python string handling
76013 - when SAX event are passed back to the python handlers
76014 -
76015 -Thu Jan 4 18:27:49 CET 2007 Daniel Veillard <daniel@veillard.com>
76016 -
76017 - * xmlreader.c: fix xmlTextReaderSetup() description
76018 - * test/relaxng/empty1.rng test/relaxng/comps_0.xml
76019 - test/relaxng/empty1_0.xml test/relaxng/comps.rng
76020 - test/relaxng/empty0.rng test/relaxng/empty0_0.xml
76021 - test/relaxng/empty1_1.xml: tests which were apparently
76022 - never committed to CVS
76023 -
76024 -Wed Jan 3 16:05:21 PST 2007 Aleksey Sanin <aleksey@aleksey.com>
76025 -
76026 - * xmlreader.c include/libxml/xmlreader.h win32/libxml2.def.src:
76027 - expose xmlTextReaderSetup() function
76028 -
76029 -Wed Jan 3 16:14:13 CET 2007 Daniel Veillard <daniel@veillard.com>
76030 -
76031 - * configure.in: adapt the extra versioning code to SVN
76032 -
76033 -Thu Dec 14 16:52:34 CET 2006 Daniel Veillard <daniel@veillard.com>
76034 -
76035 - * python/generator.py python/libxml.py: apparently id() sometimes
76036 - generate negative values and %X outputs -XXXX :-(
76037 -
76038 -Mon Dec 4 10:30:25 CET 2006 Daniel Veillard <daniel@veillard.com>
76039 -
76040 - * parser.c include/libxml/tree.h: patch from Michael Day on standalone
76041 - and XML declaration detection, and associated documentation change
76042 -
76043 -Mon Dec 4 10:27:01 CET 2006 Daniel Veillard <daniel@veillard.com>
76044 -
76045 - * xinclude.c: another XInclude user data propagation patch from
76046 - Michael Day
76047 -
76048 -Thu Nov 23 17:22:03 CET 2006 Daniel Veillard <daniel@veillard.com>
76049 -
76050 - * HTMLparser.c: applied patch from Steven Rainwater to fix
76051 - UTF8ToHtml behaviour on code points which are not mappable to
76052 - predefined HTML entities, fixes #377544
76053 -
76054 -Thu Nov 23 17:11:23 CET 2006 Daniel Veillard <daniel@veillard.com>
76055 -
76056 - * xpath.c: fixed a bug where the principal node type of an axis
76057 - wasn't tested on name check, fixes bug #377432
76058 -
76059 -Wed Nov 8 10:19:27 CET 2006 Daniel Veillard <daniel@veillard.com>
76060 -
76061 - * HTMLparser.c: change htmlCtxtReset() following Michael Day bug
76062 - report and suggestion.
76063 -
76064 -Mon Nov 6 09:56:41 CET 2006 Daniel Veillard <daniel@veillard.com>
76065 -
76066 - * uri.c: applied patch from Igor for path conversion on Windows
76067 -
76068 -Thu Nov 2 11:29:17 CET 2006 Daniel Veillard <daniel@veillard.com>
76069 -
76070 - * xmlregexp.c: another small change on the algorithm for the
76071 - elimination of epsilon transitions, should help on #362989 too
76072 -
76073 -Wed Nov 1 16:33:10 CET 2006 Daniel Veillard <daniel@veillard.com>
76074 -
76075 - * tree.c: applied documentation patches from Markus Keim
76076 - * xmlregexp.c: fixed one bug and added a couple of optimisations
76077 - while working on bug #362989
76078 -
76079 -Fri Oct 27 14:54:07 CEST 2006 Daniel Veillard <daniel@veillard.com>
76080 -
76081 - * HTMLparser.c: applied a reworked version of Usamah Malik patch
76082 - to avoid growing the parser stack in some autoclose cases, should
76083 - fix #361221
76084 -
76085 -Thu Oct 26 10:54:40 CEST 2006 Daniel Veillard <daniel@veillard.com>
76086 -
76087 - * xpath.c: William spotted an obvious bug
76088 -
76089 -Wed Oct 25 18:04:50 CEST 2006 Daniel Veillard <daniel@veillard.com>
76090 -
76091 - * NEWS configure.in testapi.c doc//*: preparing release of
76092 - libxml2-2.6.27
76093 - * include/libxml/tree.h: fix a small problem with preproc flags
76094 -
76095 -Fri Oct 20 14:55:47 CEST 2006 Daniel Veillard <daniel@veillard.com>
76096 -
76097 - * tree.c: fix comment for xmlDocSetRootElement c.f. #351981
76098 - * xmllint.c: order XPath elements when using --shell
76099 -
76100 -Tue Oct 17 23:23:26 CEST 2006 Daniel Veillard <daniel@veillard.com>
76101 -
76102 - * xmlregexp.c: applied fix from Christopher Boumenot for bug
76103 - #362714 on regexps missing ']'
76104 -
76105 -Tue Oct 17 22:32:42 CEST 2006 Daniel Veillard <daniel@veillard.com>
76106 -
76107 - * parserInternals.c: applied patch from Marius Konitzer to avoid
76108 - leaking in xmlNewInputFromFile() in case of HTTP redirection
76109 -
76110 -Tue Oct 17 22:19:02 CEST 2006 Daniel Veillard <daniel@veillard.com>
76111 -
76112 - * HTMLparser.c: fix one problem found in htmlCtxtUseOptions()
76113 - and pointed in #340591
76114 -
76115 -Tue Oct 17 22:04:31 CEST 2006 Daniel Veillard <daniel@veillard.com>
76116 -
76117 - * HTMLparser.c: fixed the 2 stupid bugs affecting htmlReadDoc() and
76118 - htmlReadIO() this should fix #340322
76119 -
76120 -Tue Oct 17 21:39:23 CEST 2006 Daniel Veillard <daniel@veillard.com>
76121 -
76122 - * xpath.c: applied patch from Olaf Walkowiak which should fix #334104
76123 -
76124 -Tue Oct 17 18:12:34 CEST 2006 Daniel Veillard <daniel@veillard.com>
76125 -
76126 - * HTMLparser.c: fixing HTML minimized attribute values to be generated
76127 - internally if not present, fixes bug #332124
76128 - * result/HTML/doc2.htm.sax result/HTML/doc3.htm.sax
76129 - result/HTML/wired.html.sax: this affects the SAX event stream for
76130 - a few test cases
76131 -
76132 -Tue Oct 17 17:56:31 CEST 2006 Daniel Veillard <daniel@veillard.com>
76133 -
76134 - * HTMLparser.c: fixing HTML entities in attributes parsing bug #362552
76135 - * result/HTML/entities2.html* test/HTML/entities2.html: added to
76136 - the regression suite
76137 -
76138 -Tue Oct 17 01:21:37 CEST 2006 Daniel Veillard <daniel@veillard.com>
76139 -
76140 - * xmllint.c: started to switch xmllint to use xmlSaveDoc to test
76141 - #342556
76142 - * xmlsave.c: fixed #342556 easy and a whole set of problems with
76143 - encodings, BOM and xmlSaveDoc()
76144 -
76145 -Mon Oct 16 15:14:53 CEST 2006 Daniel Veillard <daniel@veillard.com>
76146 -
76147 - * HTMLparser.c: fix #348252 if the document clains to be in a
76148 - different encoding in the meta tag and it's obviously wrong,
76149 - don't screw up the end of the content.
76150 -
76151 -Mon Oct 16 11:32:09 CEST 2006 Daniel Veillard <daniel@veillard.com>
76152 -
76153 - * HTMLparser.c: fix a chunking and script bug #347708
76154 -
76155 -Mon Oct 16 09:51:05 CEST 2006 Daniel Veillard <daniel@veillard.com>
76156 -
76157 - * HTMLparser.c: remove a warning
76158 - * encoding.c: check with uppercase for AIX iconv() should fix #352644
76159 - * doc/examples/Makefile.am: partially handle one bug report
76160 -
76161 -Sun Oct 15 22:31:42 CEST 2006 Daniel Veillard <daniel@veillard.com>
76162 -
76163 - * parser.c: fix the patch for unreproductable #343000 but
76164 - also fix a line/column keeping error
76165 - * result/errors/attr1.xml.err result/errors/attr2.xml.err
76166 - result/errors/name.xml.err result/errors/name2.xml.err
76167 - result/schemas/anyAttr-processContents-err1_0_0.err
76168 - result/schemas/bug312957_1_0.err: affected lines in error output
76169 - of the regression tests
76170 -
76171 -Sat Oct 14 10:46:46 CEST 2006 Daniel Veillard <daniel@veillard.com>
76172 -
76173 - * tree.c: fixing bug #344390 with xmlReconciliateNs
76174 -
76175 -Sat Oct 14 00:31:49 CEST 2006 Daniel Veillard <daniel@veillard.com>
76176 -
76177 - * xmllint.c: added --html --memory to test htmlReadMemory to
76178 - test #321632
76179 - * HTMLparser.c: added various initialization calls which may help
76180 - #321632 but not conclusive
76181 - * testapi.c tree.c include/libxml/tree.h: fixed compilation with
76182 - --with-minimum --with-sax1 and --with-minimum --with-schemas
76183 - fixing #326442
76184 -
76185 -Fri Oct 13 18:30:55 CEST 2006 Daniel Veillard <daniel@veillard.com>
76186 -
76187 - * relaxng.c: fix a Relax-NG bug related to element content processing,
76188 - fixes bug #302836
76189 - * test/relaxng/302836.rng test/relaxng/302836_0.xml
76190 - result/relaxng/302836*: added to regression tests
76191 -
76192 -Fri Oct 13 14:42:44 CEST 2006 Daniel Veillard <daniel@veillard.com>
76193 -
76194 - * parser.c: fix a problem in xmlSplitQName resulting in bug #334669
76195 -
76196 -Fri Oct 13 12:27:22 CEST 2006 Daniel Veillard <daniel@veillard.com>
76197 -
76198 - * parser.c: fixed xmlIOParseDTD handling of @input in error case,
76199 - Should fix #335085
76200 - * testapi.c: reset the http_proxy env variable to not waste time
76201 - on regression tests
76202 -
76203 -Thu Oct 12 23:07:43 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76204 -
76205 - * xmlIO.c: fix Windows compile - missing xmlWrapOpen.
76206 -
76207 -Thu Oct 12 18:21:18 CEST 2006 Daniel Veillard <daniel@veillard.com>
76208 -
76209 - * parser.c: fixed the heuristic used when trying to detect mixed-content
76210 - elememts if the parser wants to treat ignorable whitespaces
76211 - in a non-standard way, should fix bug #300263
76212 -
76213 -Thu Oct 12 14:52:38 CEST 2006 Daniel Veillard <daniel@veillard.com>
76214 -
76215 - * parser.c: fix a first arg error in SAX callback pointed out by
76216 - Mike Hommey, and another one still hanging around. Should fix #342737
76217 -
76218 -Wed Oct 11 23:11:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76219 -
76220 - * include/libxml/xmlversion.h.in: fix comment on versions
76221 - * xmlmemory.c: do not spend too much time digging in dumped memory
76222 -
76223 -Wed Oct 11 18:40:00 CEST 2006 Daniel Veillard <daniel@veillard.com>
76224 -
76225 - * valid.c: fixed a weird error where validity context would not
76226 - show up if warnings were disabled pointed out by Bob Stayton
76227 - * xmlIO.c doc/generator.py: cleanup and fix to regenerate the docs
76228 - * doc//* testapi.c: rebuilt the docs
76229 -
76230 -Wed Oct 11 14:32:00 CEST 2006 Daniel Veillard <daniel@veillard.com>
76231 -
76232 - * libxml-2.0.pc.in: applied patch from Mikhail Zabaluev to separate
76233 - library flags for shared and static builds, fixes #344594. If this
76234 - bites you, use xml2-config.
76235 -
76236 -Wed Oct 11 11:27:37 CEST 2006 Daniel Veillard <daniel@veillard.com>
76237 -
76238 - * python/Makefile.am: remove the build path recorded in the python
76239 - shared module as Peter Breitenlohner pointed out, should fix #346022
76240 -
76241 -Wed Oct 11 11:14:51 CEST 2006 Daniel Veillard <daniel@veillard.com>
76242 -
76243 - * xmlIO.c: applied patch from Mikhail Zabaluev fixing the conditions
76244 - of unescaping from URL to filepath, should fix #344588.
76245 -
76246 -Wed Oct 11 10:24:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76247 -
76248 - * configure.in xstc/Makefile.am: applied patch from Peter Breitenlohner
76249 - for wget detection and fix of a Python path problem, should fix
76250 - #340993
76251 -
76252 -Tue Oct 10 22:02:29 CEST 2006 Daniel Veillard <daniel@veillard.com>
76253 -
76254 - * include/libxml/entities.h entities.c SAX2.c parser.c: trying to
76255 - fix entities behaviour when using SAX, had to extend entities
76256 - content and hack on the entities processing code, but that should
76257 - fix the long standing bug #159219
76258 -
76259 -Tue Oct 10 14:36:18 CEST 2006 Daniel Veillard <daniel@veillard.com>
76260 -
76261 - * uri.c include/libxml/uri.h: add a new function xmlPathToUri()
76262 - to provide a clean conversion when setting up a base
76263 - * SAX2.c tree.c: use said function when setting up doc->URL
76264 - or using the xmlSetBase function. Should fix #346261
76265 -
76266 -Tue Oct 10 11:05:59 CEST 2006 Daniel Veillard <daniel@veillard.com>
76267 -
76268 - * xmlIO.c: applied a portability patch from Emelyanov Alexey
76269 -
76270 -Tue Oct 10 10:52:01 CEST 2006 Daniel Veillard <daniel@veillard.com>
76271 -
76272 - * parser.c: applied and slightly modified a patch from Michael Day to
76273 - keep _private in the parser context when parsing external entities
76274 -
76275 -Tue Oct 10 10:33:43 CEST 2006 Daniel Veillard <daniel@veillard.com>
76276 -
76277 - * python/libxml.py python/types.c: applied patch from Ross Reedstrom,
76278 - Brian West and Stefan Anca to add XPointer support to the Python bindings
76279 -
76280 -Fri Sep 29 11:13:59 CEST 2006 Daniel Veillard <daniel@veillard.com>
76281 -
76282 - * xmlsave.c: fixed a comment
76283 - * xinclude.c include/libxml/xinclude.h: applied a patch from Michael Day
76284 - to add a new function providing the _private field for the generated
76285 - parser contexts xmlXIncludeProcessFlagsData()
76286 -
76287 -Thu Sep 21 10:36:11 CEST 2006 Daniel Veillard <daniel@veillard.com>
76288 -
76289 - * xmlIO.c: applied patch from Michael Day doing some refactoring
76290 - for the catalog entity loaders.
76291 -
76292 -Thu Sep 21 08:53:06 CEST 2006 Daniel Veillard <daniel@veillard.com>
76293 -
76294 - * HTMLparser.c include/libxml/HTMLparser.h: exports htmlNewParserCtxt()
76295 - as Michael Day pointed out this is needed to use htmlCtxtRead*()
76296 -
76297 -Tue Sep 19 14:42:59 CEST 2006 Daniel Veillard <daniel@veillard.com>
76298 -
76299 - * parser.c: applied patch from Ben Darnell on #321545, I could not
76300 - reproduce the problem but 1/ this is safe 2/ it's better to be safe.
76301 -
76302 -Sat Sep 16 16:02:23 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76303 -
76304 - * tree.c: xmlTextConcat works with comments and PI nodes (bug #355962).
76305 - * parser.c: fix resulting tree corruption when using XML namespace
76306 - with existing doc in xmlParseBalancedChunkMemoryRecover.
76307 -
76308 -Fri Sep 1 11:52:55 CEST 2006 Daniel Veillard <daniel@veillard.com>
76309 -
76310 - * xmlIO.c: another patch from Emelyanov Alexey to clean up a few things
76311 - in the previous patch.
76312 -
76313 -Wed Aug 30 15:10:09 CEST 2006 Daniel Veillard <daniel@veillard.com>
76314 -
76315 - * xmlIO.c: applied patch from Roland Schwingel to fix the problem
76316 - with file names in UTF-8 on Windows, and compat on older win9x
76317 - versions.
76318 -
76319 -Tue Aug 22 16:51:22 CEST 2006 Daniel Veillard <daniel@veillard.com>
76320 -
76321 - * valid.c: fixed a bug #203125 in Red hat bugzilla, crashing PHP4
76322 - on validation errors, the heuristic to guess is a vctxt user
76323 - pointer is the parsing context was insufficient.
76324 -
76325 -Mon Aug 21 10:40:10 CEST 2006 Daniel Veillard <daniel@veillard.com>
76326 -
76327 - * doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml:
76328 - applied patch to man pages from Daniel Leidert and regenerated
76329 -
76330 -Thu Aug 17 00:48:31 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76331 -
76332 - * xmlwriter.c: Add a document to the xmlwriter structure and
76333 - pass document when writing attribute content for encoding support.
76334 -
76335 -Wed Aug 16 01:15:12 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76336 -
76337 - * HTMLtree.c xmlsave.c: Add linefeeds to error messages allowing
76338 - for consistent handling.
76339 -
76340 -Tue Aug 15 15:02:18 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76341 -
76342 - * xpath.c: Applied the proposed fix for the documentation
76343 - of xmlXPathCastToString(); see bug #346202.
76344 -
76345 -Tue Aug 15 14:49:18 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76346 -
76347 - * xmlschemas.c: While investigating bug #350247, I noticed
76348 - that xmlSchemaIDCMatcher structs are massively recreated
76349 - although only a maximum of 3 structs is used at the same
76350 - time; added a cache for those structures to the
76351 - validation context.
76352 -
76353 -Sat Aug 12 16:12:53 CEST 2006 Daniel Veillard <daniel@veillard.com>
76354 -
76355 - * xmlschemas.c: applied patch from Marton Illes to fix an allocation
76356 - bug in xmlSchemaXPathEvaluate should close #351032
76357 -
76358 -Mon Aug 7 13:08:46 CEST 2006 Daniel Veillard <daniel@veillard.com>
76359 -
76360 - * xmlschemas.c: applied patch from Bertrand Fritsch to fix a bug in
76361 - xmlSchemaClearValidCtxt
76362 -
76363 -Fri Aug 4 14:50:41 CEST 2006 Daniel Veillard <daniel@veillard.com>
76364 -
76365 - * python/generator.py: fixed the conversion of long parameters
76366 -
76367 -Thu Jul 13 15:03:11 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76368 -
76369 - * xmlsave.c: Removed the automatic generation of CDATA sections
76370 - for the content of the "script" and "style" elements when
76371 - serializing XHTML. The issue was reported by Vincent Lefevre,
76372 - bug #345147.
76373 - * result/xhtml1 result/noent/xhtml1: Adjusted regression test
76374 - results due to the serialization change described above.
76375 -
76376 -Thu Jul 13 08:32:21 CEST 2006 Daniel Veillard <daniel@veillard.com>
76377 -
76378 - * configure.in parser.c xmllint.c include/libxml/parser.h
76379 - include/libxml/xmlversion.h.in: applied patch from Andrew W. Nosenko
76380 - to expose if zlib support was compiled in, in the header, in the
76381 - feature API and in the xmllint --version output.
76382 -
76383 -Thu Jul 13 08:24:14 CEST 2006 Daniel Veillard <daniel@veillard.com>
76384 -
76385 - * SAX2.c: refactor to use normal warnings for entities problem
76386 - and not straight SAX callbacks.
76387 -
76388 -Wed Jul 12 17:13:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76389 -
76390 - * xmlschemas.c: Fixed bug #347316, reported by David Belius:
76391 - The simple type, which was the content type definition
76392 - of a complex type, which in turn was the base type of a
76393 - extending complex type, was missed to be set on this
76394 - extending complex type in the derivation machinery.
76395 -
76396 -Mon Jul 3 13:36:43 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76397 -
76398 - * xpath.c: Changed xmlXPathCollectAndTest() to use
76399 - xmlXPathNodeSetAddNs() when adding a ns-node in case of
76400 - NODE_TEST_TYPE (the ns-node was previously added plainly
76401 - to the list). Since for NODE_TEST_ALL and NODE_TEST_NAME
76402 - this specialized ns-addition function was already used,
76403 - I assume it was missed to be used with NODE_TEST_TYPE.
76404 -
76405 -Mon Jul 3 10:57:33 CEST 2006 Daniel Veillard <daniel@veillard.com>
76406 -
76407 - * HTMLparser.c: applied const'ification of strings patch from
76408 - Matthias Clasen
76409 -
76410 -Thu Jun 29 13:51:12 CEST 2006 Daniel Veillard <daniel@veillard.com>
76411 -
76412 - * threads.c: patch from Andrew W. Nosenko, xmlFreeRMutex forgot to
76413 - destroy the condition associated to the mutex.
76414 -
76415 -Thu Jun 29 12:48:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76416 -
76417 - * xpath.c: Fixed a double-free in xmlXPathCompOpEvalToBoolean(),
76418 - revealed by a Libxslt regression test.
76419 -
76420 -Thu Jun 29 12:28:07 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76421 -
76422 - * xpath.c: Enhanced xmlXPathCompOpEvalToBoolean() to be also
76423 - usable outside predicate evaluation; the intention is to
76424 - use it via xmlXPathCompiledEvalToBoolean() for XSLT tests,
76425 - like in <xsl:if test="/foo">.
76426 -
76427 -Wed Jun 28 19:11:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76428 -
76429 - * xpath.c: Fix a memory leak which occurred when using
76430 - xmlXPathCompiledEvalToBoolean().
76431 -
76432 -Mon Jun 26 17:24:28 UTC 2006 William Brack <wbrack@mmm.com.hk>
76433 -
76434 - * python/libxml.c, python/libxml.py, python/tests/compareNodes.py,
76435 - python/tests/Makefile.am:
76436 - Added code submitted by Andreas Pakulat to provide node
76437 - equality, inequality and hash functions, plus a single
76438 - test program to check the functions (bugs 345779 + 345961).
76439 -
76440 -Mon Jun 26 18:38:51 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76441 -
76442 - * xpath.c: Added xmlXPathCompiledEvalToBoolean() to the API and
76443 - adjusted/added xmlXPathRunEval(), xmlXPathRunStreamEval(),
76444 - xmlXPathCompOpEvalToBoolean(), xmlXPathNodeCollectAndTest()
76445 - to be aware of a boolean result request. The new function
76446 - is now used to evaluate predicates.
76447 -
76448 -Mon Jun 26 16:22:50 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76449 -
76450 - * xpath.c: Fixed an bug in xmlXPathCompExprAdd(): the newly
76451 - introduced field @rewriteType on xmlXPathStepOp was not
76452 - initialized to zero here; this could lead to the activation
76453 - of the axis rewrite code in xmlXPathNodeCollectAndTest() when
76454 - @rewriteType is randomly set to the value 1. A test
76455 - (hardcoding the initial value to 1) revealed that the
76456 - resulting incorrect behaviour is similar to the behaviour
76457 - as described by Arnold Hendriks on the mailing list; so I
76458 - hope that will fix the issue.
76459 -
76460 -Fri Jun 23 18:26:08 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76461 -
76462 - * xpath.c: Fixed an error in xmlXPathEvalExpr(), which
76463 - was introduced with the addition of the d-o-s rewrite
76464 - and made xpath.c unable to compile if XPATH_STREAMING
76465 - was not defined (reported by Kupriyanov Anatolij -
76466 - #345752). Fixed the check for d-o-s rewrite
76467 - to work on the correct XPath string, which is ctxt->base
76468 - and not comp->expr in this case.
76469 -
76470 -Mon Jun 19 12:23:41 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76471 -
76472 - * xpath.c: Added optimization for positional predicates
76473 - (only short-hand form "[n]"), which have a preceding
76474 - predicate: "/foo[descendant::bar][3]".
76475 -
76476 -Sun Jun 18 20:59:02 EDT 2006 Daniel Veillard <daniel@veillard.com>
76477 -
76478 - * parser.c: try to fix the crash raised by the parser in
76479 - recover mode as pointed by Ryan Phillips
76480 -
76481 -Sun Jun 18 18:44:56 EDT 2006 Daniel Veillard <daniel@veillard.com>
76482 -
76483 - * python/types.c: patch from Nic Ferrier to provide a better type
76484 - mapping from XPath to python
76485 -
76486 -Sun Jun 18 18:35:50 EDT 2006 Daniel Veillard <daniel@veillard.com>
76487 -
76488 - * runtest.c: applied patch from Boz for VMS and reporting
76489 - Schemas errors.
76490 -
76491 -Sun Jun 18 18:22:25 EDT 2006 Daniel Veillard <daniel@veillard.com>
76492 -
76493 - * testapi.c: applied patch from Felipe Contreras when compiling
76494 - with --with-minimum
76495 -
76496 -Fri Jun 16 21:37:44 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76497 -
76498 - * tree.c include/libxml/tree.h: Fixed a bug in
76499 - xmlDOMWrapAdoptNode(); the tree traversal stopped if the
76500 - very first given node had an attribute node :-( This was due
76501 - to a missed check in the traversal mechanism.
76502 - Expanded the xmlDOMWrapCtxt: it now holds the namespace map
76503 - used in xmlDOMWrapAdoptNode() and xmlDOMWrapCloneNode() for
76504 - reusal; so the map-items don't need to be created for every
76505 - cloning/adoption. Added a callback function to it for
76506 - retrieval of xmlNsPtr to be set on node->ns; this is needed
76507 - for my custom handling of ns-references in my DOM wrapper.
76508 - Substituted code which created the XML namespace decl on
76509 - the doc for a call to xmlTreeEnsureXMLDecl(). Removed
76510 - those nasty "warnings" from the docs of the clone/adopt
76511 - functions; they work fine on my side.
76512 -
76513 -Mon Jun 12 13:23:11 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76514 -
76515 - * result/pattern/namespaces: Adjusted the result of a
76516 - regression test, since the fix of xmlGetNodePath() revealed a
76517 - bug in this test result.
76518 -
76519 -Mon Jun 12 13:06:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76520 -
76521 - * tree.c: Got rid of a compiler warning in xmlGetNodePath().
76522 -
76523 -Mon Jun 12 12:54:25 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76524 -
76525 - * tree.c: Fixed xmlGetNodePath() to generate the node test "*"
76526 - for elements in the default namespace, rather than generating
76527 - an unprefixed named node test and losing the namespace
76528 - information.
76529 -
76530 -Fri Jun 9 21:45:02 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76531 -
76532 - * include/libxml/parser.h: Clarified in the docs that the tree
76533 - must not be tried to be modified if using the parser flag
76534 - XML_PARSE_COMPACT as suggested by Stefan Behnel
76535 - (#344390).
76536 -
76537 -Tue Jun 6 17:50:43 CEST 2006 Daniel Veillard <daniel@veillard.com>
76538 -
76539 - * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.26
76540 -
76541 -Tue Jun 6 17:25:23 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76542 -
76543 - * xpath.c: Fixed self-invented a segfault in xmlXPathCtxtCompile(),
76544 - when the expression was not valid and @comp was NULL and I
76545 - tried to do the d-o-s rewrite.
76546 -
76547 -Tue Jun 6 15:19:57 CEST 2006 Daniel Veillard <daniel@veillard.com>
76548 -
76549 - * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.25
76550 -
76551 -Tue Jun 6 11:28:15 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76552 -
76553 - * xpath.c: Enabled the compound traversal again; I added a
76554 - check to use this only if the have an expression starting
76555 - with the document node; so in the case of "//foo", we
76556 - already know at compilation-time, that there will be only
76557 - 1 initial context node. Added the rewrite also to
76558 - xmlXPathEvalExpr().
76559 -
76560 -Tue Jun 6 10:23:10 CEST 2006 Daniel Veillard <daniel@veillard.com>
76561 -
76562 - * xinclude.c: fix bug #343968, include='text' can't lead to a
76563 - recursion.
76564 -
76565 -Fri Jun 2 22:47:08 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76566 -
76567 - * xpath.c: Disabled the compound traversal for the release;
76568 - I need first to assure that this is done only if we have
76569 - 1 initial node.
76570 -
76571 -Wed May 31 13:53:41 PST 2006 Aleksey Sanin <aleksey@aleksey.com>
76572 -
76573 - * xpath.c: fixed memory leak in xpath error reporting
76574 -
76575 -Wed May 31 15:30:16 CEST 2006 Daniel Veillard <daniel@veillard.com>
76576 -
76577 - * libxml.h triodef.h: applied patch from Olli Savia for LynxOS
76578 -
76579 -Wed May 31 14:33:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76580 -
76581 - * xpath.c include/libxml/xpath.h runsuite.c:
76582 - Changed the name of the recently added public function
76583 - xmlXPathContextSetObjectCache() to
76584 - xmlXPathContextSetCache(); so a more generic one, in
76585 - case we decide to cache more things than only XPath
76586 - objects.
76587 -
76588 -Tue May 30 21:36:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76589 -
76590 - * xpath.c: Optimized xmlXPathNodeCollectAndTest() and
76591 - xmlXPathNodeCollectAndTestNth() to evaluate a compound
76592 - traversal of 2 axes when we have a "//foo" expression.
76593 - This is done with a rewrite of the XPath AST in
76594 - xmlXPathRewriteDOSExpression(); I added an additional field
76595 - to xmlXPathStepOp for this (but the field's name should be
76596 - changed). The mechanism: the embracing descendant-or-self
76597 - axis traversal (also optimized to return only nodes which
76598 - can hold elements), will produce context nodes for the
76599 - inner traversal of the child axis. This way we avoid a full
76600 - node-collecting traversal of the descendant-or-self axis.
76601 - Some tests indicate that this can reduce execution time of
76602 - "//foo" to 50%. Together with the XPath object cache this
76603 - all significantly speeds up libxslt.
76604 -
76605 -Tue May 30 11:38:47 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76606 -
76607 - * xmlschemas.c: A warning will now be reported in the value of
76608 - the XSD attribute 'schemaLocation' does not consist of tuples
76609 - (namespace-name, document-URI). A warning will be reported
76610 - if a schema document could not be found at the specified
76611 - location (via 'schemaLocation' or
76612 - 'noNamespaceSchemaLocation').
76613 - * include/libxml/xmlerror.h: Added XML_SCHEMAV_MISC to
76614 - xmlParserErrors.
76615 -
76616 -Tue May 30 11:21:34 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76617 -
76618 - * xpath.c: Enhanced xmlXPathNodeCollectAndTest() to avoid
76619 - recreation (if possible) of the node-set which is used to
76620 - collect the nodes in the current axis for the current context
76621 - node. Especially for "//foo" this will decrease dramatically
76622 - the number of created node-sets, since for each node in the
76623 - result node-set of the evaluation of descendant-or-self::node()
76624 - a new temporary node-set was created. Added node iterator
76625 - xmlXPathNextChildElement() as a tiny optimization for
76626 - child::foo.
76627 -
76628 -Mon May 29 18:06:17 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76629 -
76630 - * xpath.c include/libxml/xpath.h: Added an XPath object cache.
76631 - It sits on an xmlXPathContext and need to be explicitly
76632 - activated (or deactivated again) with
76633 - xmlXPathContextSetObjectCache(). The cache consists of 5
76634 - lists for node-set, string, number, boolean and misc XPath
76635 - objects. Internally the xpath.c module will use object-
76636 - deposition and -acquisition functions which will try to reuse
76637 - as many XPath objects as possible, and fallback to normal
76638 - free/create behaviour if no cache is available or if the cache
76639 - is full.
76640 - * runsuite.c: Adjusted to deactivate the cache for XML Schema
76641 - tests if a cache-creation is turned on by default for the whole
76642 - library, e.g. for testing purposes of the cache. It is
76643 - deactivated here in order to avoid confusion of the memory leak
76644 - detection in runsuite.c.
76645 -
76646 -Wed May 24 10:54:25 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76647 -
76648 - * xpath.c: Removed a memcpy if xmlXPathNodeSetMerge(); it
76649 - seems we really need to walk the whole list, since those
76650 - nasty namespace nodes need to be added with
76651 - xmlXPathNodeSetDupNs(); thus a pure memcpy is not possible.
76652 - A flag on the node-set indicating if namespace nodes are in
76653 - the set would help here; this is the 3rd flag which would
76654 - be useful with node-sets. The current flags I have in mind:
76655 - 1) Is a node-set already sorted?
76656 - This would allow for rebust and optimizable sorting
76657 - behaviour.
76658 - 2) Of what type are the nodes in the set (or of mixed type)?
76659 - This would allow for faster merging of node-sets.
76660 - 3) Are namespace nodes in the set?
76661 - This would allow to skip all the namespace node specific
76662 - special handling. Faster node-set merging if the first
76663 - set is empty; just memcpy the set.
76664 -
76665 -Mon May 22 17:14:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76666 -
76667 - * xpath.c: Optimization of count(): eliminated sorting
76668 - (see bug #165547). Optimization of XPATH_OP_FILTER if the
76669 - predicate is a [1] (disable with XP_OPTIMIZED_FILTER_FIRST if
76670 - it produces trouble). Tiny opt in xmlXPathNodeSetMerge().
76671 -
76672 -Mon May 22 13:33:12 CEST 2006 Rob Richards <rrichards@ctindustries.net>
76673 -
76674 - * tree.c: Revert behavior change in xmlSetProp to handle attributes
76675 - with colons in name and no namespace.
76676 -
76677 -Fri May 19 21:56:43 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76678 -
76679 - * xpath.c: Substituted all remaining calls to xmlXPathCmpNodes()
76680 - for xmlXPathCmpNodesExt(). Tiny further enhancement of
76681 - xmlXPathCmpNodesExt(). Added additional checks in various code
76682 - parts to avoid calling sorting or merging functions if the
76683 - node-set(s) don't need them; i.e., if they are empty or contain
76684 - just one node.
76685 -
76686 -Fri May 19 13:16:58 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76687 -
76688 - * xpath.c: Optimized the comparison for non-element nodes
76689 - in xmlXPathCmpNodesExt(); the comparison is used for sorting
76690 - of node-sets. This enhancement is related to bug #165547.
76691 - There are other places where the old comparison function
76692 - xmlXPathCmpNodes() is still called, but I currently don't
76693 - know exactly what those calls are for; thus if they can be
76694 - substituted (if it makes sense) for the new function.
76695 -
76696 -Tue May 16 16:55:13 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76697 -
76698 - * xpath.c: Applied patch from Rob Richards, fixing a potential
76699 - memory leak in xmlXPathTryStreamCompile(), when a list of
76700 - namespaces was assigned to the XPath compilation context;
76701 - here a new namespace list was created and passed to
76702 - xmlPatterncompile(); but this list was not freed afterwards.
76703 - Additionally we avoid now in xmlXPathTryStreamCompile() to
76704 - compile the expression, if it has a colon - indicating
76705 - prefixed name tests - and no namespace list was given. The
76706 - streaming XPath mechanism needs a namespace list at
76707 - compilation time (unlike normal XPath, where we can bind
76708 - namespace names to prefixes at execution time).
76709 - * pattern.c: Enhanced to use a string dict for local-names,
76710 - ns-prefixes and namespace-names.
76711 - Fixed xmlStreamPushInternal() not to use string-pointer
76712 - comparison if a dict is available; this won't work, since
76713 - one does not know it the given strings originate from the
76714 - same dict - and they normally don't do, since e.g.
76715 - namespaces are hold on xmlNs->href. I think this would be
76716 - worth an investigation: if we can add a @doc field to xmlNs
76717 - and put the @href in to a additionan namespace dict hold
76718 - in xmlDoc. Daniel will surely not like this idea :-) But
76719 - evaluation of tons of elements/attributes in namespaces
76720 - with xmlStrEqual() isn't the way we should go forever.
76721 -
76722 -Thu May 11 18:03:49 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76723 -
76724 - * xmlschemas.c: Fixed bug #341337, reported by David Grohmann.
76725 - The code expected a node (xmlNodePtr) on the info for a
76726 - non-existent default attribute, which clearly cannot be
76727 - expected, since the attribute does not exist. I can only
76728 - guess that this sneaked trying to eliminate the query
76729 - for the owner-element, which is unavoidable actually.
76730 - Note that creation of default attributes won't have an
76731 - effect if validating via SAX/XMLReader; i.e., the processor
76732 - won't fire additional start-attribute events (I'm not even
76733 - sure if Libxml2 has such a SAX-event; I think it hands them
76734 - all over in the start-element event).
76735 -
76736 -Tue May 9 21:47:58 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76737 -
76738 - * xmlschemas.c: Fixed bug #341150, reported by Michael Romer.
76739 - In xmlSchemaBuildContentModelForSubstGroup(),
76740 - xmlAutomataNewOnceTrans2() was incorrectly used instead of
76741 - xmlAutomataNewTransition2() to mimic a xs:choice for
76742 - substitution-groups.
76743 - * test/schemas/subst-group-1_1.xsd
76744 - test/schemas/subst-group-1_0.xml
76745 - result/schemas/subst-group-1_0_1
76746 - result/schemas/subst-group-1_0_1.err: Added regression test
76747 - supplied by Michael Romer for bug #341150.
76748 -
76749 -Sat May 6 11:05:24 HKT 2006 William M. Brack <wbrack@mmm.com.hk>
76750 -
76751 - * relaxng.c: Fixed compilation error with patch supplied by
76752 - Graham Bennett.
76753 -
76754 -Thu May 4 19:14:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76755 -
76756 - * xmlschemas.c: We'll raise an internal error and stop
76757 - validation now when an entity is found in the instance
76758 - document, since we don't support automatic entity
76759 - substitution by the schema processor (yet?) -
76760 - see bug #340316, reported by Nick Wellnhofer.
76761 -
76762 -Wed May 3 15:16:00 CEST 2006 Daniel Veillard <daniel@veillard.com>
76763 -
76764 - * configure.in: applied another Python detection patch from Joseph Sacco
76765 - * libxml.spec.in: cleanup the changelog section, asciifies the spec file
76766 - too
76767 -
76768 -Tue May 2 22:34:54 CEST 2006 Daniel Veillard <daniel@veillard.com>
76769 -
76770 - * xmlIO.c: fix a mix of code and declarations showing up on Windows
76771 - patch from Kjartan Maraas, fixing #340404
76772 -
76773 -Tue May 2 14:24:40 CEST 2006 Daniel Veillard <daniel@veillard.com>
76774 -
76775 - * encoding.c: fixing bug #340398 xmlCharEncOutFunc writing to
76776 - input buffer
76777 -
76778 -Fri Apr 28 18:29:22 CEST 2006 Daniel Veillard <daniel@veillard.com>
76779 -
76780 - * NEWS configure.in doc//*: preparing 2.6.24 release, fixed Python
76781 - paths at the last moment
76782 - * relaxng.c testapi.c tree.c: fix some comments
76783 -
76784 -Thu Apr 27 10:15:45 CEST 2006 Daniel Veillard <daniel@veillard.com>
76785 -
76786 - * xmlIO.c: applied patch from Roland Schwingel to allow UTF-8
76787 - file paths on Windows
76788 -
76789 -Thu Apr 27 10:10:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76790 -
76791 - * xmlwriter.c: patch from Jason Viers for line breaks after EndPI
76792 -
76793 -Tue Apr 25 22:22:58 CEST 2006 Daniel Veillard <daniel@veillard.com>
76794 -
76795 - * tree.c: fix compilation without tree
76796 -
76797 -Tue Apr 25 18:17:37 CEST 2006 Daniel Veillard <daniel@veillard.com>
76798 -
76799 - * xmllint.c: applied patch from Gary Coady to really make sure
76800 - xmllint --nonet would not reach the network, should fix #337483.
76801 -
76802 -Tue Apr 25 14:52:15 CEST 2006 Daniel Veillard <daniel@veillard.com>
76803 -
76804 - * configure.in: applied patch from Joseph Sacco changing slightly
76805 - the python detection scheme should fix bug #338526
76806 -
76807 -Mon Apr 24 10:50:19 CEST 2006 Daniel Veillard <daniel@veillard.com>
76808 -
76809 - * parser.c: fix the error message for invalid code point in content
76810 - c.f. bug #339311
76811 -
76812 -Wed Apr 19 13:16:23 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76813 -
76814 - * xmlschemas.c test/schemas/restriction-enum-1*
76815 - result/schemas/restriction-enum-1*: Fixed incorrect
76816 - validation of restricted enumerations. Added related
76817 - regression tests.
76818 -
76819 -Thu Apr 13 09:47:25 CEST 2006 Daniel Veillard <daniel@veillard.com>
76820 -
76821 - * xmlschemas.c: fixing a deallocation problem in xmlSchemaAddSchemaDoc()
76822 - in case of errors, should fix bug #338303
76823 -
76824 -Thu Apr 13 09:31:45 CEST 2006 Daniel Veillard <daniel@veillard.com>
76825 -
76826 - * relaxng.c: fixing a deallocation problem in xmlRelaxNGParse()
76827 - in case of errors, should fix bug #338306
76828 -
76829 -Thu Apr 6 10:22:17 CEST 2006 Daniel Veillard <daniel@veillard.com>
76830 -
76831 - * doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml:
76832 - applied man page improvements from Daniel Leidert
76833 -
76834 -Mon Mar 27 11:44:07 CEST 2006 Daniel Veillard <daniel@veillard.com>
76835 -
76836 - * xmlschemas.c: removed unused code or variables, from Stefan Kost
76837 - fixing #336163 and #336164
76838 -
76839 -Mon Mar 27 11:38:21 CEST 2006 Daniel Veillard <daniel@veillard.com>
76840 -
76841 - * xmlschemas.c: applied patch from Stefan Kost fixing #336160
76842 -
76843 -Mon Mar 27 11:23:39 CEST 2006 Daniel Veillard <daniel@veillard.com>
76844 -
76845 - * chvalid.c genChRanges.py genUnicode.py xmlunicode.c
76846 - include/libxml/chvalid.h include/libxml/xmlunicode.h: applied
76847 - patches from Aivars Kalvans to make unicode tables const, fixes
76848 - bug #336096, this also updates to Unicode 4.01 final with a couple
76849 - of character ranges fixes.
76850 -
76851 -Mon Mar 27 00:51:40 CEST 2006 Daniel Veillard <daniel@veillard.com>
76852 -
76853 - * chvalid.c genChRanges.py include/libxml/chvalid.h: fixed bug
76854 - #335603 and resync'ed genChRanges.py to the expected output.
76855 -
76856 -Wed Mar 22 00:14:34 CET 2006 Daniel Veillard <daniel@veillard.com>
76857 -
76858 - * xmlregexp.c: applied patch from Youri Golovanov fixing bug
76859 - #316338 and adding a couple of optimizations in the regexp
76860 - compilation engine.
76861 - * test/regexp/bug316338 result/regexp/bug316338: added regression
76862 - tests based on the examples provided in the bug report.
76863 -
76864 -Fri Mar 10 08:40:55 EST 2006 Daniel Veillard <daniel@veillard.com>
76865 -
76866 - * c14n.c encoding.c xmlschemas.c xpath.c xpointer.c: fix a few
76867 - warning raised by gcc-4.1 and latest changes
76868 -
76869 -Fri Mar 10 01:34:42 CET 2006 Daniel Veillard <daniel@veillard.com>
76870 -
76871 - * runtest.c schematron.c testAutomata.c tree.c valid.c xinclude.c
76872 - xmlcatalog.c xmlreader.c xmlregexp.c xpath.c: end of first
76873 - pass on coverity reports.
76874 -
76875 -Thu Mar 9 19:36:14 CET 2006 Daniel Veillard <daniel@veillard.com>
76876 -
76877 - * relaxng.c xmlschemas.c xmlschemastypes.c: more cleanups based
76878 - on coverity reports.
76879 -
76880 -Thu Mar 9 17:47:40 CET 2006 Daniel Veillard <daniel@veillard.com>
76881 -
76882 - * SAX2.c catalog.c encoding.c entities.c example/gjobread.c
76883 - python/libxml.c: more cleanups based on coverity reports.
76884 -
76885 -Thu Mar 9 15:12:19 CET 2006 Daniel Veillard <daniel@veillard.com>
76886 -
76887 - * HTMLparser.c parser.c parserInternals.c pattern.c uri.c: a bunch
76888 - of small cleanups based on coverity reports.
76889 -
76890 -Thu Mar 9 09:42:10 CET 2006 Daniel Veillard <daniel@veillard.com>
76891 -
76892 - * win32/Makefile.bcb: added schematron as pointed out by Eric Zurcher
76893 -
76894 -Tue Mar 7 09:50:09 CET 2006 Daniel Veillard <daniel@veillard.com>
76895 -
76896 - * xml2-config.in: fix Red Hat bug #184170
76897 -
76898 -Mon Mar 6 14:21:08 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76899 -
76900 - * tree.c: Simplified usage of the internal xmlNsMap. Added a
76901 - "strict" lookup for namespaces based on a prefix. Fixed a
76902 - namespace processing issue in the clone-node function, which
76903 - occurred if a @ctxt argument was given.
76904 -
76905 -Fri Mar 3 17:44:10 CET 2006 Rob Richards <rrichards@ctindustries.net>
76906 -
76907 - * valid.c: fix HTML attribute ID checking for input element.
76908 - Maintain current attribute "name" behavior for now.
76909 -
76910 -Thu Mar 2 18:59:50 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76911 -
76912 - * tree.c: Bundled lookup of attr-nodes and retrieving their
76913 - values into the functions xmlGetPropNodeInternal() and
76914 - xmlGetPropNodeValueInternal(). Changed relevant code
76915 - to use those functions.
76916 -
76917 -Mon Feb 27 20:42:04 CET 2006 Daniel Veillard <daniel@veillard.com>
76918 -
76919 - * xpath.c: workaround HP-UX compiler bug by Rick Jones
76920 -
76921 -Mon Feb 27 10:57:05 CET 2006 Daniel Veillard <daniel@veillard.com>
76922 -
76923 - * python/libxml2.py: remove a tab, as pointed out on IRC
76924 -
76925 -Sat Feb 25 18:12:10 CET 2006 Rob Richards <rrichards@ctindustries.net>
76926 -
76927 - * tree.c: Fix the add sibling functions when passing attributes.
76928 - Modify testing for ID in xmlSetProp.
76929 - No longer remove IDness when unlinking or replacing an attribute.
76930 -
76931 -Fri Feb 24 21:20:33 CET 2006 Daniel Veillard <daniel@veillard.com>
76932 -
76933 - * catalog.c: Martin Cole pointed out a bug in xmlCatalogAdd()
76934 - if /etc/xml/catalog doesn't exist.
76935 -
76936 -Thu Feb 23 23:06:18 CET 2006 Daniel Veillard <daniel@veillard.com>
76937 -
76938 - * doc//*: updated the Ruby bindings links, and regenerated the
76939 - docs.
76940 -
76941 -Thu Feb 23 09:12:27 CET 2006 Daniel Veillard <daniel@veillard.com>
76942 -
76943 - * catalog.c: improve catalog debugging message patch from Rick Jones
76944 -
76945 -Wed Feb 22 16:09:10 CET 2006 Daniel Veillard <daniel@veillard.com>
76946 -
76947 - * python/types.c: Nic Ferrier found debug statement left in the
76948 - XPath conversion code
76949 -
76950 -Tue Feb 21 20:23:14 CET 2006 Daniel Veillard <daniel@veillard.com>
76951 -
76952 - * doc/xmllint.1 doc/xmllint.xml: small man page improvements from
76953 - Daniel Leidert
76954 -
76955 -Mon Feb 20 15:45:19 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76956 -
76957 - * xmlschemas.c: Fixed a side-effect of the previous XSI bugfix:
76958 - The constructor needs a bucket to be assigned during component
76959 - fixup.
76960 -
76961 -Mon Feb 20 14:32:36 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76962 -
76963 - * xmlschemas.c xmlschemastypes.c: Fixed xs:boolean to reject
76964 - the empty string (reported by Bas Driessen on the mailing-list).
76965 - Fixed schema XSI-acquisition and construction: the schemata
76966 - (xmlSchema) didn't get the targetNamespace in some cases, thus
76967 - the component resolution mechanism failed to work. The XSI
76968 - stuff needs to be tested more intensively; think about how
76969 - to test this for regression.
76970 -
76971 -Mon Feb 20 09:57:41 CET 2006 Daniel Veillard <daniel@veillard.com>
76972 -
76973 - * doc/xmllint.1 doc/xmllint.xml: more man page improvements from
76974 - Daniel Leidert
76975 -
76976 -Sun Feb 19 22:31:33 CET 2006 Daniel Veillard <daniel@veillard.com>
76977 -
76978 - * doc/xmllint.1 doc/xmllint.xml: man page improvements from Daniel
76979 - Leidert, c.f. #331290
76980 -
76981 -Sun Feb 19 17:54:04 CET 2006 Daniel Veillard <daniel@veillard.com>
76982 -
76983 - * xmllint.c: fix an error report when using --path and --valid
76984 - closes bug #331290
76985 -
76986 -Sun Feb 19 16:20:43 CET 2006 Daniel Veillard <daniel@veillard.com>
76987 -
76988 - * relaxng.c: trying to fix #331062, this is again a problem
76989 - around interleave, there is no good fix unless reimplementing
76990 - but this works around some cases and allow to validate in that
76991 - case.
76992 -
76993 -Wed Feb 15 11:55:22 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
76994 -
76995 - * tree.c: Fixed bug #328896 reported by Liron. The path
76996 - for text- and CDATA-section-nodes was computed incorrectly
76997 - in xmlGetNodePath().
76998 -
76999 -Sun Feb 12 20:12:22 CET 2006 Daniel Veillard <daniel@veillard.com>
77000 -
77001 - * xmlregexp.c: bug fixes for #327167 as well as some cleanups
77002 - and more thorough tests on atoms comparisons.
77003 -
77004 -Thu Feb 9 10:07:20 CET 2006 Daniel Veillard <daniel@veillard.com>
77005 -
77006 - * include/wsockcompat.h: patch from Eric Zurcher to compile with
77007 - Borland C++ 6
77008 -
77009 -Sun Feb 5 04:03:59 CET 2006 Daniel Veillard <daniel@veillard.com>
77010 -
77011 - * parser.c: bill pointed out a missing block in xmlParseComment
77012 - trying to fill with a normal processing of the given character.
77013 -
77014 -Sun Feb 5 03:41:39 CET 2006 Daniel Veillard <daniel@veillard.com>
77015 -
77016 - * parser.c: fixed the comment streaming bug raised by Graham Bennett
77017 - * test/badcomment.xml result//badcomment.xml*: added to the regression
77018 - suite.
77019 -
77020 -Fri Feb 3 17:36:41 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77021 -
77022 - * include/libxml/tree.h: Added the xmlDOMWrapCloneNode() to
77023 - the header file.
77024 -
77025 -Fri Feb 3 17:29:22 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77026 -
77027 - * tree.c: Added an initial version of xmlDOMWrapCloneNode() to
77028 - the API. It will be used to reflect DOM's Node.cloneNode and
77029 - Document.importNode methods.
77030 - The pros: 1) non-recursive, 2) optimized ns-lookup
77031 - (mostly pointer comparison), 3) user defined ns-lookup,
77032 - 4) save ns-processing. The function is in an unfinished
77033 - and experimental state and should be only used to test it.
77034 -
77035 -Fri Feb 3 10:42:48 CET 2006 Daniel Veillard <daniel@veillard.com>
77036 -
77037 - * uri.c: applied patch from Rob Richards fixing the URI regressions
77038 - tests on Windows which seems to indicate bad escaping.
77039 -
77040 -Thu Feb 2 13:11:26 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77041 -
77042 - * tree.c: Fixed some bugs xmlDOMWrapReconcileNamespaces() wrt
77043 - the previous addition of the removal of redundant ns-decls.
77044 -
77045 -Wed Feb 1 17:32:25 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77046 -
77047 - * tree.c: Enhanced xmlDOMWrapReconcileNamespaces() to remove
77048 - redundant ns-decls if the option XML_DOM_RECONNS_REMOVEREDUND
77049 - was given. Note that I haven't moved this option to the
77050 - header file yet; so just call this function with an @option
77051 - of 1 to test the behaviour.
77052 -
77053 -Wed Feb 1 12:21:08 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77054 -
77055 - * tapi.c win32/Makefile.*: Added changed as proposed on
77056 - the mailing list by venkat naidu in order to compile
77057 - testapi.c on windows.
77058 -
77059 -Thu Jan 19 09:57:28 CET 2006 Daniel Veillard <daniel@veillard.com>
77060 -
77061 - * configure.in xml2-config.in: trying to fix windows/configure
77062 - issues reported by Tim Van Holder
77063 -
77064 -Wed Jan 18 18:21:15 CET 2006 Daniel Veillard <daniel@veillard.com>
77065 -
77066 - * HTMLparser.c libxml.h parser.c: try to fix xmlParseInNodeContext
77067 - when operating on an HTML document.
77068 -
77069 -Mon Jan 9 17:27:15 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77070 -
77071 - * relaxng.c include/libxml/relaxng.h: Added
77072 - xmlRelaxNGSetParserStructuredErrors() to the API.
77073 -
77074 -Mon Jan 9 15:33:16 CET 2006 Daniel Veillard <daniel@veillard.com>
77075 -
77076 - * parser.c: reverted first patches for #319279 which led to #326295
77077 - and fixed the problem in xmlParseChunk() instead
77078 - * test/ent11 result//ent11*: added test for #326295 to the regression
77079 - suite
77080 -
77081 -Thu Jan 5 16:25:06 CET 2006 Daniel Veillard <daniel@veillard.com>
77082 -
77083 - * NEWS configure.in libxml.spec.in testapi.c doc/*: updated the news
77084 - regenerated the docs, preparing for release of 2.6.23
77085 - * pattern.c xmlschemas.c: fixed some comments
77086 -
77087 -Thu Jan 5 15:48:27 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77088 -
77089 - * test/XPath/docs/nodes test/XPath/tests/nodespat
77090 - result/XPath/tests/nodespat: Added regression tests for
77091 - the latest XPath/pattern fixes.
77092 -
77093 -Thu Jan 5 15:43:38 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77094 -
77095 - * pattern.c: Another fix to handle "foo//.": "foo" was not
77096 - included in the resulting node-set.
77097 -
77098 -Thu Jan 5 13:22:29 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77099 -
77100 - * pattern.c xpath.c include/libxml/pattern.h:
77101 - Fixed bug #322928, reported by Erich Schubert: The bug was
77102 - in pattern.c, which is used for a tiny subset of xpath
77103 - expression which can be evaluated in an optimized way.
77104 - The doc-node was never considered when evaluating "//"
77105 - expressions. Additionally, we fixed resolution
77106 - to nodes of any type in pattern.c; i.e. a "//." didn't work
77107 - yet, as it did select only element-nodes. Due to this
77108 - issue the pushing of nodes in xpath.c needed to be adjusted
77109 - as well.
77110 -
77111 -Wed Jan 4 18:07:47 CET 2006 Daniel Veillard <daniel@veillard.com>
77112 -
77113 - * parser.c: tiny refactoring patch from Bjorn Reese
77114 -
77115 -Wed Jan 4 15:00:51 CET 2006 Daniel Veillard <daniel@veillard.com>
77116 -
77117 - * SAX2.c: fix bug #324432 with <xml:foo/>
77118 - * test/ns7 result/ns7*: added to the regression tests
77119 -
77120 -Wed Jan 4 10:53:56 CET 2006 Daniel Veillard <daniel@veillard.com>
77121 -
77122 - * include/wsockcompat.h: applied patch from Mark Junker, fixing a
77123 - MinGW compilation problem, should close bug #324943
77124 -
77125 -Tue Jan 3 11:49:54 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
77126 -
77127 - * xmlschemas.c: Removed last dependency on the obsolete enum
77128 - xmlSchemaValidError.
77129 -
77130 -Mon Jan 2 11:20:00 CET 2006 Daniel Veillard <daniel@veillard.com>
77131 -
77132 - * xmlreader.c include/libxml/xmlreader.h xmlschemas.c: compilation
77133 - and doc build fixes from Michael Day
77134 -
77135 -Wed Dec 28 22:12:34 CET 2005 Daniel Veillard <daniel@veillard.com>
77136 -
77137 - * xmlregexp.c: bug in xmlRegExecPushString2() pointed out by
77138 - Sreeni Nair.
77139 -
77140 -Tue Dec 20 16:55:31 CET 2005 Rob Richards <rrichards@ctindustries.net>
77141 -
77142 - * tree.c: fix bug #322136 in xmlNodeBufGetContent when entity ref is
77143 - a child of an element (fix by Oleksandr Kononenko).
77144 - * HTMLtree.c include/libxml/HTMLtree.h: Add htmlDocDumpMemoryFormat.
77145 -
77146 -Tue Dec 20 11:43:06 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77147 -
77148 - * xmlschemas.c xmlstring.c: Fixed a segfault during
77149 - text concatenation when validating a node tree:
77150 - xmlStrncat was called with a @len of -1; but unlike
77151 - xmlStrncatNew, it does not calculate the length
77152 - automatically in such a case (reported by Judy Hay
77153 - on the mailing list).
77154 - Updated the descriptions of the involved string
77155 - functions to note this.
77156 -
77157 -Thu Dec 15 12:11:07 CET 2005 Daniel Veillard <daniel@veillard.com>
77158 -
77159 - * nanohttp.c: applied patch from Gary Coady to accept gzipped
77160 - http resources.
77161 -
77162 -Wed Dec 14 18:41:26 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77163 -
77164 - * win32/configure.js: Added enable/disable of runtime
77165 - debugging (LIBXML_DEBUG_RUNTIME).
77166 -
77167 -Wed Dec 14 18:11:50 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77168 -
77169 - * include/libxml/xmlversion.h.in: Fixed to define
77170 - LIBXML_DEBUG_RUNTIME on the basis of @WITH_RUN_DEBUG@.
77171 -
77172 -Tue Dec 13 12:49:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77173 -
77174 - * test/schemas/bug321475* result/schemas/bug321475*:
77175 - Added regression test for bug #321475 (reported by
77176 - Gabor Nagy). Fixing of bug #323510 seemed to have
77177 - fixed this bug as well.
77178 -
77179 -Mon Dec 12 16:19:16 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77180 -
77181 - * test/schemas/bug323510* result/schemas/bug323510*:
77182 - Added regression test for bug #323510.
77183 -
77184 -Mon Dec 12 16:11:13 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77185 -
77186 - * xmlschemas.c: Workaround for bug #323510 (reported by
77187 - Jonathan Filiatrault): substituted the epsilon transition
77188 - for a labelled transition, in order to avoid a bug in
77189 - xmlregexp.c which eliminated the epsilon transition and
77190 - marked the initial state as final.
77191 -
77192 -Mon Dec 12 14:25:46 CET 2005 Daniel Veillard <daniel@veillard.com>
77193 -
77194 - * xmlreader.c: Gary Coady pointed a memory leak in
77195 - xmlTextReaderReadInnerXml() applied patch fixing #323864
77196 -
77197 -Sat Dec 10 12:08:28 CET 2005 Daniel Veillard <daniel@veillard.com>
77198 -
77199 - * HTMLparser.c configure.in parserInternals.c runsuite.c runtest.c
77200 - testapi.c xmlschemas.c xmlschemastypes.c xmlstring.c: fixed a number
77201 - of warnings shown by HP-UX compiler and reported by Rick Jones
77202 -
77203 -Fri Dec 9 18:57:31 CET 2005 Rob Richards <rrichards@ctindustries.net>
77204 -
77205 - * xmlwriter.c: Insert space between pubid and sysid when both
77206 - passed to xmlTextWriterStartDTD and indenting not being used.
77207 - Remove no longer used Mem callbacks.
77208 -
77209 -Fri Dec 9 11:01:16 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77210 -
77211 - * runsuite.c: Changed to instantly mark instance-tests as
77212 - failed if the corresponding schema was invalid. This
77213 - reflects the side of the Python code for the XML Schema test
77214 - suite. We now get the same number of failed tests on both
77215 - sides.
77216 -
77217 -Wed Dec 7 14:59:01 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77218 -
77219 - * xmlreader.c include/libxml/xmlreader.h: Added
77220 - xmlTextReaderSchemaValidateCtxt() to the API.
77221 -
77222 -Wed Dec 7 12:59:56 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77223 -
77224 - * xmlschemas.c: Fixed a segfault: the instance document was
77225 - still tried to be validated, if the schema, dynamically
77226 - acquired using XSI was invalid, thus mangled. The
77227 - validation will stop (or rather won't validate) now in
77228 - such a case. The schema parser error code will be set
77229 - on the validion context now; this is somehow not nice,
77230 - but it assures that the validation context indicates an
77231 - error in there was a parser error.
77232 -
77233 -Tue Dec 6 18:57:23 CET 2005 Daniel Veillard <daniel@veillard.com>
77234 -
77235 - * xmlreader.c: small doc patch from Aron Stansvik
77236 - * legacy.c: another doc patch for a deprecated API
77237 -
77238 -Mon Dec 5 16:23:49 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77239 -
77240 - * Makefile.am: Tiny change for 'make tests': raised
77241 - the number of expected failures for James Clark's
77242 - XML Schema datatype tests from 10 to 11. The additional
77243 - reported error was agreed to be correct long time ago,
77244 - but we missed to adjust the message reported by
77245 - the testing script.
77246 -
77247 -Fri Dec 2 13:51:14 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77248 -
77249 - * result/schemas/decimal* result/schemas/bug322411*:
77250 - Added missing regression test results for the latest IDC
77251 - and xs:decimal bugs.
77252 -
77253 -Wed Nov 30 12:22:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77254 -
77255 - * test/schemas/decimal* test/schemas/bug322411*: Added
77256 - regression tests for the latest IDC and xs:decimal bugs.
77257 -
77258 -Wed Nov 30 11:57:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77259 -
77260 - * xmlschemas.c: Fixed bubbling of duplicate IDC nodes: the
77261 - parent's list of duplicates was filled with NULLs instead
77262 - of the nodes under certain conditions. This lead to a
77263 - segfault when the list's entries were accessed.
77264 -
77265 -Mon Nov 28 17:28:53 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77266 -
77267 - * xmlschemastypes.c: Fixed parsing of xs:decimal to
77268 - allow/deny special lexical forms. Fixed the totalDigits
77269 - for values in the range (x < 1) && (x > -1) && (x != 0);
77270 - E.g "0.123" has now a totalDigits of 3 (was 4 previously).
77271 - Adjusted the comparison function for decimals due to this
77272 - change. As a side effect comparison against zeroes was
77273 - optimized.
77274 -
77275 -Mon Nov 28 13:25:11 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77276 -
77277 - * xmlschemas.c: An assignment to a local variable, which was
77278 - used to access the IDC node list, was missing after the
77279 - reallocation of the list (reported by Fabrice GUY
77280 - bug #322411). Renamed the define ENABLE_IDC_NODE_TABLES
77281 - to ENABLE_IDC_NODE_TABLES_TEST and *disabled* it, since
77282 - it is used to force bubbling of IDC node tables even
77283 - if not necessary; this was intended to be used for test
77284 - purposes, but I obviously missed to disable it (although
77285 - it apparently helped finding the bug).
77286 -
77287 -Wed Nov 23 17:34:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77288 -
77289 - * xmlschemas.c: In xmlSchemaAssembleByXSI() the return value
77290 - of xmlSchemaGetMetaAttrInfo() was not assigned to anything;
77291 - this caused XSI-driven-dynamic schema acquisition to fail
77292 - with @noNamespaceSchemaLocation (reported by Julien Lamy
77293 - on the mailing list).
77294 -
77295 -Tue Nov 22 18:31:34 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77296 -
77297 - * xmlschemas.c: Fixed a bug in xmlSchemaFindRedefCompInGraph()
77298 - which caused the search for components to stop at the
77299 - first encountered attribute group component.
77300 - Fixed error report in xmlSchemaCheckSRCRedefineFirst(): the
77301 - designation of a not-found component was not reported.
77302 -
77303 -Mon Nov 21 12:23:28 CET 2005 Daniel Veillard <daniel@veillard.com>
77304 -
77305 - * xmlschemastypes.c: Albert Chin found another signed/unsigned problem
77306 - in the date and time code raised on IRIX 6.5
77307 -
77308 -Fri Nov 18 18:13:38 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77309 -
77310 - * xmlschemas.c include/libxml/xmlschemas.h:
77311 - Added xmlSchemaSetParserStructuredErrors() to the API.
77312 - Fixed channeling of error relevant information to
77313 - subsequent parser/validation contexts.
77314 -
77315 -Thu Nov 17 14:11:43 CET 2005 Daniel Veillard <daniel@veillard.com>
77316 -
77317 - * parserInternals.c: removed unreachable code pointed out by
77318 - Oleksandr Kononenko, fixes bug #321695
77319 -
77320 -Thu Nov 17 08:24:31 CET 2005 Daniel Veillard <daniel@veillard.com>
77321 -
77322 - * parser.c: use ctxt->standalone = -2 to indicate that the
77323 - XMLDecl was parsed but no standalone attribute was found,
77324 - suggested by Michael Day to detect if an XMLDecl was found.
77325 -
77326 -Tue Nov 15 09:49:24 CET 2005 Daniel Veillard <daniel@veillard.com>
77327 -
77328 - * runtest.c: Hisashi Fujinaka pointed that errors in Schemas tests
77329 - were not properly reported.
77330 -
77331 -Sun Nov 13 13:42:41 CET 2005 Daniel Veillard <daniel@veillard.com>
77332 -
77333 - * xmlIO.c: applied patch from Geert Jansen to remove xmlBufferClose()
77334 - which is not needed.
77335 -
77336 -Fri Nov 11 13:48:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77337 -
77338 - * xmlschemas.c: Changed xmlSchemaFormatIDCKeySequence()
77339 - to use xmlSchemaGetCanonValueWhtspExt() in order to
77340 - correctly report values for xs:anySimpleType.
77341 - * test/schemas/idc-keyref-err1*
77342 - result/schemas/idc-keyref-err1*: Added a test for this change.
77343 -
77344 -Wed Nov 9 13:07:24 EST 2005 Rob Richards <rrichards@ctindustries.net>
77345 -
77346 - * xmlIO.c xmlwriter.c: function consolidation when writing to xmlBuffer.
77347 - Return error condition not len if xmlwriter fails writing to buffer.
77348 -
77349 -Wed Nov 9 09:54:54 CET 2005 Daniel Veillard <daniel@veillard.com>
77350 -
77351 - * xmlsave.c xmlIO.c include/libxml/xmlIO.h include/libxml/xmlsave.h:
77352 - applied patch from Geert Jansen to implement the save function to
77353 - a xmlBuffer, and a bit of cleanup.
77354 -
77355 -Mon Nov 7 14:58:39 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77356 -
77357 - * xmlschemas.c xmlschemastypes.c: Fixed the type of the
77358 - totalDigits value to be positiveInteger.
77359 - Fixed crash in an error report function when we gave it
77360 - the document node; only element and attribute nodes are
77361 - processed now (reported by Rob Richards).
77362 -
77363 -Tue Nov 1 16:22:29 CET 2005 Daniel Veillard <daniel@veillard.com>
77364 -
77365 - * xmlregexp.c: fix bug #319897, problem with counted atoms
77366 - when the transition itself is counted too
77367 - * result/regexp/hard test/regexp/hard: augmented the regression
77368 - tests with the problem exposed.
77369 -
77370 -Tue Nov 1 11:54:39 CET 2005 Daniel Veillard <daniel@veillard.com>
77371 -
77372 - * win32/Makefile.mingw include/win32config.h: applied patch from
77373 - Mark Junker to fix compilation with MinGW
77374 -
77375 -Fri Oct 28 18:36:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
77376 -
77377 - * libxml.3: tiny fix from Albert Chin
77378 - * runsuite.c runtest.c testapi.c: portability cleanup for arch
77379 - needing trio for *printf
77380 -
77381 -Fri Oct 28 12:21:39 EDT 2005 Rob Richards <rrichards@ctindustries.net>
77382 -
77383 - * tree.c: add additional checks to prevent tree corruption. fix problem
77384 - copying attribute using xmlDocCopyNode from one document to another.
77385 -
77386 -Fri Oct 28 17:58:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
77387 -
77388 - * config.h.in configure.in vms/config.vms macos/src/config-mac.h:
77389 - cleanup from Albert Chin
77390 - * doc/Makefile.am: html/index.sgml doesn't exist anymore
77391 -
77392 -Fri Oct 28 16:53:51 CEST 2005 Daniel Veillard <daniel@veillard.com>
77393 -
77394 - * xmlIO.c xmlmodule.c: more portability patches from Albert Chin for
77395 - HP-UX and AIX
77396 -
77397 -Fri Oct 28 10:36:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
77398 -
77399 - * xmlmodule.c configure.in: applied 2 patches from Albert Chin for
77400 - module portability
77401 -
77402 -Fri Oct 28 10:24:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
77403 -
77404 - * error.c: fixing a portability problem on some old Unices with
77405 - patch from Albert Chin
77406 -
77407 -2005-10-27 Aleksey Sanin <aleksey@aleksey.com>
77408 -
77409 - * c14n.c result/c14n/exc-without-comments/test-2
77410 - test/c14n/exc-without-comments/test-2.xml
77411 - test/c14n/exc-without-comments/test-2.xpath: fixing
77412 - bug in exc-c14n namespace visibility + test case (bug #319367)
77413 -
77414 -Thu Oct 27 16:10:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
77415 -
77416 - * python/libxml.py: remove warnings to stdout patch from Nic Ferrier
77417 -
77418 -Thu Oct 27 13:54:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
77419 -
77420 - * valid.c xmlregexp.c include/libxml/valid.h
77421 - include/libxml/xmlregexp.h: avoid function parameters names 'list'
77422 - as this seems to give troubles with VC6 and stl as reported by
77423 - Samuel Diaz Garcia.
77424 -
77425 -Wed Oct 26 10:59:21 CEST 2005 Daniel Veillard <daniel@veillard.com>
77426 -
77427 - * parserInternals.c: fix a problem in some error case on Solaris
77428 - when passed a NULL filename, pointed by Albert Chin.
77429 -
77430 -Tue Oct 25 14:34:58 CEST 2005 Daniel Veillard <daniel@veillard.com>
77431 -
77432 - * HTMLparser.c: script HTML parser error fix, corrects bug #319715
77433 - * result/HTML/53867* test/HTML/53867.html: added test from Michael Day
77434 - to the regression suite
77435 -
77436 -Tue Oct 25 14:21:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
77437 -
77438 - * HTMLparser.c: typo fix from Michael Day
77439 -
77440 -Mon Oct 24 20:16:23 EDT 2005 Rob Richards <rrichards@ctindustries.net>
77441 -
77442 - * tree.c: fix issue adding non-namespaced attributes in xmlAddChild(),
77443 - xmlAddNextSibling() and xmlAddPrevSibling() (bug #319108) - part 1.
77444 -
77445 -Sat Oct 22 10:00:41 HKT 2005 William Brack <wbrack@mmm.com.hk>
77446 -
77447 - * parser.c: fixed second spot where CRLF split between chunks
77448 - could cause trouble (bug #319279)
77449 - * gentest.py, testapi.c: fixed two problems involved with
77450 - --with-minimum compilation (compilation errors with schematron
77451 - and formal expressions tests)
77452 -
77453 -Fri Oct 21 10:50:14 EDT 2005 Rob Richards <rrichards@ctindustries.net>
77454 -
77455 - * xmlsave.c: prevent output of fragment tags when serializing XHTML.
77456 -
77457 -Wed Oct 19 16:53:47 BST 2005 Daniel Veillard <daniel@veillard.com>
77458 -
77459 - * xmlregexp.c: committing a some fixes and debug done yesterday in
77460 - the London airport.
77461 -
77462 -Thu Oct 20 12:54:23 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77463 -
77464 - * xmlschemas.c: Removed creation of a temporary parser context
77465 - during validation when processing xsi:type; this previously
77466 - added a string to the dict of the schema - to assure thread
77467 - safety, we don't want to modify a given schema during
77468 - validation.
77469 -
77470 -Thu Oct 20 17:05:29 HKT 2005 William Brack <wbrack@mmm.com.hk>
77471 -
77472 - * xmlwriter.c: fixed problem in xmlTextWriterVSprintf caused by
77473 - misuse of vsnprintf
77474 - * configure.in, config.h.in: added a configuration check for
77475 - va_copy and added a define for VA_COPY for xmlwriter.c fix
77476 - * parser.c: fixed problem with CRLF split between chunks (bug
77477 - #319279) (fix provided by Brion Vibber)
77478 -
77479 -Wed Oct 19 18:49:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77480 -
77481 - * xmlschemas.c: Fixed a potential memory leak in
77482 - xmlSchemaCheckCSelectorXPath() when an internal error occurs.
77483 - Fixed setting of ctxt->err to the given error code in
77484 - the parsing error functions.
77485 - * pattern.c: Added internal xmlCompileIDCXPathPath() as a
77486 - starting point for IDC XPath compilation; this and some other
77487 - tiny changes fixes issues regarding whitespace in the
77488 - expressions and IDC selector/field relevant restrictions of
77489 - the subset of XPath. Fixed a missing blocking of attributes
77490 - in xmlStreamPushInternal().
77491 -
77492 -Mon Oct 17 15:06:05 EDT 2005 Daniel Veillard <daniel@veillard.com>
77493 -
77494 - * runtest.c: removed the error message
77495 - * relaxng.c xmlschemas.c: removed 2 instability warnings from function
77496 - documentation
77497 - * include/libxml/schemasInternals.h: changed warning about API stability
77498 - * xmlregexp.c: trying to improve runtime execution of non-deterministic
77499 - regexps and automata. Not fully finished but should be way better.
77500 -
77501 -Mon Oct 17 16:12:02 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77502 -
77503 - * xmlschemas.c: Fixed a memory leak in
77504 - xmlSchemaContentModelDump(). Added output of local types
77505 - in xmlSchemaElementDump(). Tiny cosmetical changes to the
77506 - dump output.
77507 -
77508 -Mon Oct 17 14:29:08 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77509 -
77510 - * tree.c pattern.c: Silenced intel compiler warnings (reported
77511 - by Kjartan Maraas, bug #318517).
77512 - * xmlschemas.c: The above changes in pattern.c revealed an
77513 - inconsistency wrt IDCs: we now _only_ pop XPath states, if
77514 - we really pushed them beforehand; this was previously not
77515 - checked for the case when we discover an element node to be
77516 - invalid wrt the content model.
77517 - Fixed segfault in xmlSchemaGetEffectiveValueConstraint().
77518 -
77519 -Fri Oct 14 16:40:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77520 -
77521 - * result/schemas/*.err: Adapted regression test results.
77522 -
77523 -Fri Oct 14 16:21:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77524 -
77525 - * xmlschemas.c: Fixed some identity-constraint issues:
77526 - Restructured IDC node-tables
77527 - Allowed IDCs to resolve also to nodes of complex type with
77528 - simple content.
77529 - Added check for keyrefs with references to keyrefs.
77530 - IDC target-nodes were interfering with IDC node-tables,
77531 - since they used one list of entries only. I separated this
77532 - one big list into 3 lists: 1 for IDC node-table entries,
77533 - 1 for _duplicates_ of IDC node-table entries and 1 for
77534 - IDC target-nodes. More code, but cleaner and it works at last.
77535 - Keyrefs will fail to resolve to duplicate key/unique entries.
77536 - I thought this was already working this way, but it didn't.
77537 - The wording of the definition for [node table] in the spec
77538 - can lead to a scenario, where keyrefs resolve perfectly, even
77539 - if the relevant key-sequences of the referenced key/unique have
77540 - duplicates in the subtree. Currently only Saxon 8.5.1 is
77541 - dissallowing resolution to duplicate entries correctly - we
77542 - will follow Saxon here.
77543 - Removed some intel compiler warnings (reported by
77544 - Kjartan Maraas, bug #318517).
77545 - * pattern.c: Fixed an IDC-XPath problem when resolving to
77546 - attributes.
77547 -
77548 -Mon Oct 14 01:15:14 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77549 - * nanohttp.c include/wsockcompat.h: applied patch from Kolja Nowak
77550 - to use getaddrinfo() if supported in Windows build (bug# 317431).
77551 -
77552 -Mon Oct 10 15:33:48 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77553 -
77554 - * result/schemas/*: Adapted regression test results.
77555 -
77556 -Mon Oct 10 15:12:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77557 -
77558 - * xmlschemas.c include/libxml/schemasInternals.h
77559 - include/libxml/xmlerror.h: Initial implementation for
77560 - redefinitions; this still misses checks for restrictions
77561 - of the content model of complex types.
77562 - Fixed default/fixed values for attributes (looks like they
77563 - did not work in the last releases).
77564 - Completed constraints for attribute uses.
77565 - Separated attribute derivation from attribute constraints.
77566 - Completed constraints for attribute group definitions.
77567 - Disallowing <import>s of schemas in no target namespace if the
77568 - importing schema is a chameleon schema. This contradicts
77569 - the way Saxon, Xerces-J, XSV and IBM's SQC works, but the
77570 - W3C XML Schema WG, thinks it is correct to disallow such
77571 - imports.
77572 - Added cos-all-limited constraints.
77573 - Restructured reference resolution to model groups and element
77574 - declarations.
77575 - Misc cleanup.
77576 -
77577 -Fri Oct 7 04:34:12 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77578 -
77579 - * schematron.c xmlregexp.c: remove warnings under Windows.
77580 -
77581 -Wed Sep 28 23:42:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
77582 -
77583 - * parser.c: applied patch from Massimo Morara fixing bug #317447
77584 - about risk of invalid write in xmlStringLenDecodeEntities
77585 -
77586 -Tue Sep 27 11:20:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
77587 -
77588 - * error.c: Adrian Mouat pointed out redundancies in xmlReportError()
77589 -
77590 -Mon Sep 26 19:18:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
77591 -
77592 - * xmlregexp.c: seems a test to avoid duplicate transition is
77593 - really needed at all times. Luka Por gave an example hitting
77594 - this. Changed back the internal API.
77595 -
77596 -Thu Sep 22 13:14:07 CEST 2005 Daniel Veillard <daniel@veillard.com>
77597 -
77598 - * xmlreader.c: fixing leak in xmlTextReaderReadString() #316924
77599 -
77600 -Thu Sep 15 16:12:44 CEST 2005 Daniel Veillard <daniel@veillard.com>
77601 -
77602 - * uri.c: more fixes to the behaviour of xmlBuildRelativeURI
77603 -
77604 -Thu Sep 15 15:08:21 CEST 2005 Daniel Veillard <daniel@veillard.com>
77605 -
77606 - * xmlregexp.c: detect combinatory explosion and return with
77607 - a runtime error in those case, c.f. #316338 though maybe we
77608 - should not see such an explosion with that specific regexp,
77609 - more checking needs to be done.
77610 -
77611 -Wed Sep 14 19:52:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77612 -
77613 - * include/libxml/schemasInternals.h: Added some comments for the
77614 - struct fields.
77615 -
77616 -Wed Sep 14 13:24:27 HKT 2005 William Brack <wbrack@mmm.com.hk>
77617 -
77618 - * uri.c: fixed problem when xmlBuildRelativeURI was given a
77619 - blank path (bug 316224)
77620 -
77621 -Mon Sep 12 23:41:40 CEST 2005 Daniel Veillard <daniel@veillard.com>
77622 -
77623 - * NEWS configure.in doc//*: release of 2.6.22 updated doc and
77624 - rebuild.
77625 - * xmlsave.c include/libxml/xmlsave.h: added XML_SAVE_NO_XHTML
77626 - xmlSaveOption
77627 - * xmlschemas.c: minor cleanups
77628 -
77629 -Mon Sep 12 21:42:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77630 -
77631 - * test/schemas/import1_0.xsd: And adapting another one.
77632 -
77633 -Mon Sep 12 21:29:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77634 -
77635 - * result/schemas/derivation-ok-extension_0_0: Adapted result.
77636 -
77637 -Mon Sep 12 21:20:41 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77638 -
77639 - * result/schemas/allsg_0_3.err result/schemas/allsg_0_4.err
77640 - result/schemas/changelog093_1_0.err
77641 - result/schemas/derivation-ok-extension_0_0.err
77642 - result/schemas/import1_0_0.err
77643 - result/schemas/derivation-ok-restriction-2-1-1_0_0.err:
77644 - Adapted regression results.
77645 -
77646 -Mon Sep 12 21:00:53 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77647 -
77648 - * xmlschemas.c include/libxml/schemasInternals.h
77649 - include/libxml/xmlerror.h: Completion of the schema graph.
77650 - Centralisation, more robustness of the schema document
77651 - acquisition story. Centralised and restructured component fixup.
77652 - Fixed attribute derivation when 'prohibiting' attribute uses.
77653 - Added warnings: when schema documents cannot be localized
77654 - during imports; when we get duplicate and pointless attribute
77655 - prohibitions. Changed error reports for IDCs to report
77656 - the relevant IDC designation as well (requested by GUY Fabrice).
77657 - Misc code-cleanup.
77658 -
77659 -Mon Sep 12 16:02:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
77660 -
77661 - * xmlsave.c: applied second patch from David Madore to be less intrusive
77662 - when handling scripts and style elements in XHTML1 should fix #316041
77663 - * test/xhtml1 result//xhtml1\*: updated the test accordingly
77664 -
77665 -Mon Sep 12 15:09:09 CEST 2005 Daniel Veillard <daniel@veillard.com>
77666 -
77667 - * libxml.spec.in doc/devhelp/*: finished the integration with
77668 - devhelp, completing the index and inserted into the gtk-doc
77669 - database at "make install" stage
77670 -
77671 -Mon Sep 12 14:14:12 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77672 -
77673 - * include/libxml/xmlsave.h xmlsave.c: add XML_SAVE_NO_EMPTY save option
77674 - and use option from xmlSaveCtxtPtr rather than global during output.
77675 - * xmlsave.c: fix some output formatting for meta element under XHTML.
77676 -
77677 -Mon Sep 12 11:12:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
77678 -
77679 - * include/libxml/parser.h parser.c xmllint.c: damn XML_FEATURE_UNICODE
77680 - clashes with Expat headers rename to XML_WITH_ to fix bug #316053.
77681 - * doc/Makefile.am: build devhelp before the examples.
77682 - * doc/*: regenerated the API
77683 -
77684 -Mon Sep 12 02:03:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
77685 -
77686 - * xmlsave.c: fix bug #316034, where xmlElemDump() can crash if
77687 - given a document pointer instead of an element
77688 -
77689 -Mon Sep 12 01:26:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
77690 -
77691 - * doc/devhelp/devhelp.xsl: improvements on the html generation,
77692 - should be complete with navigation, what is left done is glueing
77693 -
77694 -Mon Sep 12 00:03:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
77695 -
77696 - * configure.in doc/Makefile.am doc/apibuild.py doc/libxml2-api.xml
77697 - doc/devhelp/*: started work needed to generate devhelp content,
77698 - not too hard based on the existing format and extractor.
77699 -
77700 -Fri Sep 9 12:56:19 CEST 2005 Daniel Veillard <daniel@veillard.com>
77701 -
77702 - * parser.c: fixes bug #315617 when using push CDATA in some cases.
77703 -
77704 -Thu Sep 8 23:39:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
77705 -
77706 - * xmllint.c: patch from Stéphane Bidoul to compile without schematron
77707 -
77708 -Wed Sep 7 00:16:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
77709 -
77710 - * debugXML.c: patch from Oleg Paraschenko to fix xmlDebugDumpNode()
77711 - when handled a namespace node.
77712 -
77713 -Sun Sep 4 23:36:45 CEST 2005 Daniel Veillard <daniel@veillard.com>
77714 -
77715 - * NEWS elfgcchack.h testapi.c doc/*: updated the docs and rebuild
77716 - releasing 2.6.21
77717 - * include/libxml/threads.h threads.c: removed xmlIsThreadsEnabled()
77718 - * threads.c include/libxml/threads.h xmllint.c: added the more
77719 - generic xmlHasFeature() as suggested by Bjorn Reese, xmllint uses it.
77720 -
77721 -Sun Sep 4 22:45:49 CEST 2005 Daniel Veillard <daniel@veillard.com>
77722 -
77723 - * configure.in doc/* configure.in: prepare for release
77724 - * xpath.c: work for #303289, fix a formatting bug for MIN_INT
77725 -
77726 -Sun Sep 4 15:48:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
77727 -
77728 - * relaxng.c: real fix for #314881 and #314759 is was a bit more complex
77729 - than initially expected as ctxt->error == NULL had behaviour side
77730 - effects at the compilation level itself.
77731 -
77732 -Sun Sep 4 14:01:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
77733 -
77734 - * pattern.c xpath.c include/libxml/pattern.h: fixing yet another
77735 - pattern induced XPath bug #314282
77736 - * relaxng.c: reverted back last change it was seriously broken
77737 -
77738 -Sat Sep 3 16:51:55 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77739 -
77740 - * xmlsave.c: check for NULL to prevent crash with meta elements
77741 -
77742 -Sat Sep 3 16:26:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
77743 -
77744 - * relaxng.c: structured error reporting problem with Relax-NG
77745 - should fix #314881 and #314759
77746 -
77747 -Sat Sep 3 15:42:29 CEST 2005 Daniel Veillard <daniel@veillard.com>
77748 -
77749 - * pattern.c: fixes a portability problem raised by C370 on Z/OS
77750 -
77751 -Sat Sep 3 15:26:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
77752 -
77753 - * SAX2.c tree.c valid.c: fixing a number of issues raised by xml:id
77754 - but more generally related to attributes and ID handling, fixes
77755 - #314358 among other things
77756 -
77757 -Fri Sep 2 14:26:43 CEST 2005 Daniel Veillard <daniel@veillard.com>
77758 -
77759 - * encoding.c parserInternals.c: avoid passing a char[] as snprintf
77760 - first argument.
77761 - * threads.c include/libxml/threads.h: implemented xmlIsThreadsEnabled()
77762 - based on Andrew W. Nosenko idea.
77763 - * doc/* elfgcchack.h: regenerated the API
77764 -
77765 -Thu Sep 1 14:44:42 CEST 2005 Daniel Veillard <daniel@veillard.com>
77766 -
77767 - * configure.in: the use of AM_PATH_PYTHON is not portable enough
77768 - reverting back to AM_PATH_PROG
77769 -
77770 -Thu Sep 1 11:42:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
77771 -
77772 - * HTMLparser.c: Applied the last patch from Gary Coady for #304637
77773 - changing the behaviour when text nodes are found in body
77774 - * result/HTML/*: this changes the output of some tests
77775 -
77776 -Thu Sep 1 11:22:37 CEST 2005 Daniel Veillard <daniel@veillard.com>
77777 -
77778 - * doc/downloads.html doc/xml.html: adding reference to Bull AIX rpms
77779 - c.f. #160598
77780 -
77781 -Wed Aug 31 11:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
77782 -
77783 - * xml2-config.in: removed the obsolete --libtool-libs option, c.f.
77784 - bug #314853
77785 -
77786 -Fri Aug 26 17:33:26 CEST 2005 Rob Richards <rrichards@ctindustries.net>
77787 -
77788 - * xmlsave.c: move handling of meta element for http-equiv in XHTML docs
77789 - to serialization and no longer modify internal tree.
77790 -
77791 -Fri Aug 26 00:51:58 CEST 2005 Daniel Veillard <daniel@veillard.com>
77792 -
77793 - * libxml.spec.in: the profiling usually don't work, disabled
77794 - * doc/*: rebuilt
77795 -
77796 -Thu Aug 25 23:47:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
77797 -
77798 - * configure.in: trying to fix the first part of #310033 by
77799 - detecting gcc <= 3.2
77800 -
77801 -Thu Aug 25 22:13:37 CEST 2005 Daniel Veillard <daniel@veillard.com>
77802 -
77803 - * error.c: fixed bug #310033, the URI extraction code given a
77804 - node is a bit twisted and broke in the last months.
77805 -
77806 -Thu Aug 25 16:18:15 CEST 2005 Daniel Veillard <daniel@veillard.com>
77807 -
77808 - * debugXML.c result/XPath/xptr/strrange2: uninitialized field and
77809 - fix on test.
77810 -
77811 -Thu Aug 25 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com>
77812 -
77813 - * debugXML.c: change verbosity depending on API
77814 - * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: get back
77815 - to previous outputs
77816 -
77817 -Thu Aug 25 15:14:56 CEST 2005 Daniel Veillard <daniel@veillard.com>
77818 -
77819 - * HTMLparser.c parser.c SAX2.c debugXML.c tree.c valid.c xmlreader.c
77820 - xmllint.c include/libxml/HTMLparser.h include/libxml/parser.h:
77821 - added a parser XML_PARSE_COMPACT option to allocate small
77822 - text nodes (less than 8 bytes on 32bits, less than 16bytes on 64bits)
77823 - directly within the node, various changes to cope with this.
77824 - * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: this
77825 - slightly change the output
77826 -
77827 -Thu Aug 25 12:16:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
77828 -
77829 - * configure.in: patch from Andrew W. Nosenko, use se $GCC = 'yes'
77830 - instead of $CC = 'gcc' because GCC may have a different name
77831 -
77832 -Thu Aug 25 00:18:20 CEST 2005 Daniel Veillard <daniel@veillard.com>
77833 -
77834 - * configure.in: changes the way the python binary is found, should
77835 - also fix bug #308004
77836 -
77837 -Wed Aug 24 16:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
77838 -
77839 - * parser.c: found another bug while looking at #309616 on missing
77840 - entities.
77841 - * result/ent2.sax* result/ent7.sax* result/xml2.sax*: this changed the
77842 - SAX stream in missing conditions for a few tests
77843 -
77844 -Wed Aug 24 16:19:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
77845 -
77846 - * encoding.c: applied the patch suggested #309565 which can avoid
77847 - looping in error conditions.
77848 -
77849 -Wed Aug 24 16:04:17 CEST 2005 Daniel Veillard <daniel@veillard.com>
77850 -
77851 - * SAX2.c tree.c: line numbers are now carried by most nodes, fixing
77852 - xmlGetLineNo() c.f. bug #309205
77853 -
77854 -Wed Aug 24 14:43:34 CEST 2005 Daniel Veillard <daniel@veillard.com>
77855 -
77856 - * encoding.c error.c include/libxml/xmlerror.h: finally converted
77857 - the encoding module to the common error reporting mechanism
77858 - * doc/* doc/html/libxml-xmlerror.html: rebuilt
77859 -
77860 -Wed Aug 24 11:35:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
77861 -
77862 - * xpath.c: removed a potentially uninitialized variable error
77863 - * python/generator.py: fixed a deprecation warning
77864 - * python/tests/tstLastError.py: silent the damn test when Okay !
77865 -
77866 -Wed Aug 24 00:11:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
77867 -
77868 - * SAX2.c globals.c runtest.c testC14N.c testapi.c tree.c
77869 - include/libxml/SAX2.h include/libxml/xmlregexp.h: fixed compilation
77870 - when configured --without-sax1 and other cleanups fixes bug #172683
77871 - * doc/* elfgcchack.h: regenerated
77872 -
77873 -Tue Aug 23 20:05:05 CEST 2005 Daniel Veillard <daniel@veillard.com>
77874 -
77875 - * parser.c: fixed bug #170489 reported by Jirka Kosek
77876 - * test/valid/objednavka.xml test/valid/dtds/objednavka.dtd
77877 - result/valid/objednavka*: added the test to the regression suite.
77878 -
77879 -Tue Aug 23 18:04:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
77880 -
77881 - * HTMLparser.c include/libxml/HTMLparser.h: added a recovery mode
77882 - for the HTML parser based on the suggestions of bug #169834 by
77883 - Paul Loberg
77884 -
77885 -Tue Aug 23 15:38:46 CEST 2005 Daniel Veillard <daniel@veillard.com>
77886 -
77887 - * elfgcchack.h testapi.c doc/*: regenerated
77888 - * schematron.c: fixed a compilation problem
77889 - * xmlregexp.c include/libxml/xmlregexp.h: some cleanups and one bug fix
77890 - * result/expr/base: slightly changes the number of Cons.
77891 -
77892 -Mon Aug 22 23:19:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
77893 -
77894 - * elfgcchack.h testapi.c doc/*: rescanned code and rebuilt
77895 - * xmlregexp.c: small cleanup
77896 - * include/libxml/schematron.h include/libxml/xmlexports.h
77897 - include/libxml/xmlversion.h.in: cleanup problems from code scanner
77898 -
77899 -Mon Aug 22 18:00:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
77900 -
77901 - * xmlschemastypes.c: applied patch from Kuba Nowakowski fixing bug
77902 - #313982
77903 - * result/schemas/bug313982* test/schemas/bug313982*: also added
77904 - the test case to the regression suite.
77905 -
77906 -Mon Aug 22 17:50:20 CEST 2005 Daniel Veillard <daniel@veillard.com>
77907 -
77908 - * testRegexp.c: printed the wrong string
77909 -
77910 -Mon Aug 22 16:42:07 CEST 2005 Daniel Veillard <daniel@veillard.com>
77911 -
77912 - * testRegexp.c xmlregexp.c include/libxml/xmlregexp.h: exported
77913 - xmlExpExpDerive(), added it to the testRegexp command line
77914 - tool when providing multiple expressions.
77915 -
77916 -Mon Aug 22 14:57:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
77917 -
77918 - * Makefile.am result/expr/base test/expr/base: added the first
77919 - regression test suite set for the new expression support
77920 -
77921 -Mon Aug 22 13:49:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
77922 -
77923 - * valid.c: fixed an uninitialized variable
77924 - * xmlregexp.c include/libxml/xmlregexp.h: extended the API to
77925 - add the parser, serializer and some debugging
77926 - * include/libxml/xmlversion.h.in: made the new support compiled
77927 - by default if Schemas is included
77928 - * testRegexp.c: cleanup and integration of the first part of the
77929 - new code with a special switch
77930 - * xmllint.c: show up Expr in --version if compiled in
77931 - * include/libxml/tree.h: moved the xmlBuffer definition up
77932 -
77933 -Mon Aug 22 12:11:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77934 -
77935 - * xmlschemas.c: Some preparation for the creation of a graph
77936 - of imported/included/redefined schemas; this is needed for
77937 - at least the redefinitions.
77938 - Centralized the creation of the parser context in one function.
77939 -
77940 -Mon Aug 22 02:19:33 CEST 2005 Daniel Veillard <daniel@veillard.com>
77941 -
77942 - * xmlregexp.c include/libxml/xmlregexp.h: pushing the formal expression
77943 - handling code to have it in CVs from now. Not plugged, and misses
77944 - APIs it's not compiled in yet.
77945 -
77946 -Sat Aug 20 23:13:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
77947 -
77948 - * xmlreader.c: applied another patch from Rob Richards to fix
77949 - xmlTextReaderGetAttributeNs and xmlTextReaderMoveToAttributeNs
77950 -
77951 -Wed Aug 17 09:06:33 CEST 2005 Daniel Veillard <daniel@veillard.com>
77952 -
77953 - * xmlreader.c: applied patch from Rob Richards to fix
77954 - xmlTextReaderGetAttribute behaviour with namespace declarations
77955 -
77956 -Fri Aug 12 14:12:56 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77957 -
77958 - * xmlschemas.c include/libxml/xmlerror.h:
77959 - Changed output for keyref-match errors; the target-node will
77960 - be now reported rather than the scope-node of the keyref
77961 - definition - allowing easier chasing of instance errors.
77962 - This was reported by Guy Fabrice to the mailing list.
77963 - Some initial parsing code for schema redefinitions.
77964 - * result/schemas/bug303566_1_1.err
77965 - result/schemas/bug312957_1_0.err: Adapted test results due
77966 - to the keyref changes.
77967 -
77968 -Fri Aug 12 12:17:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
77969 -
77970 - * valid.c: applied patch from Derek Poon fixing bug #310692
77971 -
77972 -Wed Aug 10 23:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
77973 -
77974 - * xmlschemas.c: fix for bug #312945 as pointed by Dean Hill, the
77975 - context type was not always properly initialized.
77976 -
77977 -Wed Aug 10 18:21:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
77978 -
77979 - * relaxng.c: fixed bug #307377 about validation of choices in
77980 - list values.
77981 - * test/relaxng/307377* result/relaxng/307377* Makefile.am runtest.c:
77982 - added examples to the regression tests, problem is that streaming
77983 - version gives slightly more information.
77984 -
77985 -Wed Aug 10 15:25:53 CEST 2005 Daniel Veillard <daniel@veillard.com>
77986 -
77987 - * xinclude.c: fixed bug #302302, nasty but the fix is rather simple.
77988 -
77989 -Wed Aug 10 11:59:46 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
77990 -
77991 - * result/schemas/any6_1_0*: Added missing test results.
77992 -
77993 -Tue Aug 9 23:37:22 CEST 2005 Daniel Veillard <daniel@veillard.com>
77994 -
77995 - * xmlregexp.c: fixed a determinism detection problem exposed by
77996 - ##other tests committed by Kasimier, also added a small speedup
77997 - of determinism detection.
77998 - * test/results/any6_2_0* any8_1_0* any7_1_2* any7_2_2*: added
77999 - the results to the regression tests now
78000 -
78001 -Tue Aug 9 15:54:09 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78002 -
78003 - * test/schemas/any7_2.xml test/schemas/any6_2.xsd
78004 - test/schemas/any8_1.xsd test/schemas/any8_0.xml:
78005 - Added some more tests for element wildcards.
78006 -
78007 -Tue Aug 9 14:22:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78008 -
78009 - * xmlschemas.c: Fixed #312957 reported by Carol Hunter:
78010 - streaming XPath states were not popped in every case,
78011 - thus failed to resolve correctly for subsequent input.
78012 - * test/schemas/bug312957* result/schemas/bug312957*:
78013 - Added the test submitted by Carol Hunter.
78014 -
78015 -Tue Aug 9 13:07:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
78016 -
78017 - * xmlregexp.c xmlschemas.c: trying to nail down the remaining
78018 - ##other issues
78019 - * result/schemas/any7* test/schemas/any7: completed the tests
78020 - and added the results
78021 - * result/schemas/any3_0_0.err result/schemas/any5_0_0.err
78022 - result/schemas/any5_1_0.err: this slightly changes the output
78023 - from 3 existing tests
78024 -
78025 -Mon Aug 8 22:33:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
78026 -
78027 - * nanoftp.c nanohttp.c xmlschemastypes.c: applied patch from
78028 - Marcus Boerger to remove warnings on Windows.
78029 -
78030 -Mon Aug 8 16:43:04 CEST 2005 Daniel Veillard <daniel@veillard.com>
78031 -
78032 - * xmlsave.c include/libxml/xmlsave.h: fixed #145092 by adding
78033 - an xmlSaveOption to omit XML declaration
78034 -
78035 -Mon Aug 8 15:44:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
78036 -
78037 - * HTMLtree.c: fixed bug #310333 with a patch close to the provided
78038 - patch for HTML UTF-8 serialization
78039 - * result/HTML/script2.html: this changed the output of that test
78040 -
78041 -Mon Aug 8 15:01:51 CEST 2005 Daniel Veillard <daniel@veillard.com>
78042 -
78043 - * xmlregexp.c: fixed bug #310264, basically it's about reentrancy
78044 - of count based transition, when going though the counter must
78045 - be reset to 0
78046 - * test/schemas/bug310264* result/schemas/bug310264*: added the
78047 - regression test.
78048 -
78049 -Mon Aug 8 14:40:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78050 -
78051 - * xmlschemas.c: Fixed a memory leak: xmlSchemaFreeAnnot() was
78052 - only freeing the first annotation in the list.
78053 -
78054 -Mon Aug 8 09:44:34 CEST 2005 Daniel Veillard <daniel@veillard.com>
78055 -
78056 - * xmlreader.c: applied patch from Rob Richards fixing
78057 - xmlTextReaderGetAttribute
78058 -
78059 -Mon Aug 8 01:41:53 CEST 2005 Daniel Veillard <daniel@veillard.com>
78060 -
78061 - * HTMLparser.c: fixed an uninitialized memory access spotted by
78062 - valgrind
78063 -
78064 -Sun Aug 7 12:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com>
78065 -
78066 - * test/relaxng/docbook_0.xml: get rid of the dependency on a locally
78067 - installed DTD
78068 - * uri.c include/libxml/uri.h xmlIO.c nanoftp.c nanohttp.c: try to
78069 - cleanup the Path/URI conversion mess, needed fixing in various
78070 - layers and a new API to the uri module which also fixes #306861
78071 - * runtest.c: integrated a regression test specific to check the
78072 - URI conversions done before calling the I/O handlers.
78073 -
78074 -Sat Aug 6 11:06:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78075 -
78076 - * doc/XSLT.html doc/xml.html: small doc fix for #312647
78077 -
78078 -Tue Aug 2 13:26:42 CEST 2005 Daniel Veillard <daniel@veillard.com>
78079 -
78080 - * win32/configure.js: applied patch from Rob Richards to allow
78081 - disabling modules in win32, fixes #304071
78082 -
78083 -Mon Aug 1 07:18:53 CEST 2005 Daniel Veillard <daniel@veillard.com>
78084 -
78085 - * python/libxml.c: applied fix from Jakub Piotr Clapa for
78086 - xmlAttr.parent(), closing #312181
78087 -
78088 -Sun Jul 31 18:48:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
78089 -
78090 - * schematron.c: report improvement
78091 - * test/schematron/zvon* result/schematron/zvon*: more tests
78092 -
78093 -Sun Jul 31 16:02:59 CEST 2005 Daniel Veillard <daniel@veillard.com>
78094 -
78095 - * win32/Makefile.msvc win32/configure.js: applied patch from Rob
78096 - Richards to add schematron to the build on Windows
78097 - * test/schematron/zvon3* result/schematron/zvon3*: second test
78098 - * test/schematron/zvon10* result/schematron/zvon10*: this is the
78099 - real second test 10 and 2 are swapped.
78100 -
78101 -Sun Jul 31 15:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78102 -
78103 - * schematron.c: more bug fixes, improve the error reporting.
78104 - * test/schematron/zvon2* result/schematron/zvon2*: second test
78105 -
78106 -Sun Jul 31 14:15:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78107 -
78108 - * schematron.c xmllint.c: fixing the loop bug, fixing schematron
78109 - text error rendering
78110 - * Makefile.am result/schematron/* test/schematron/zvon1*.sct:
78111 - started integrating within "make tests"
78112 -
78113 -Sat Jul 30 17:26:58 EDT 2005 Daniel Veillard <daniel@veillard.com>
78114 -
78115 - * test/schematron/*: a few first tests from Zvon unfortunately
78116 - with the old syntax
78117 -
78118 -Sat Jul 30 17:08:07 EDT 2005 Daniel Veillard <daniel@veillard.com>
78119 -
78120 - * schematron.c xmllint.c include/libxml/schematron.h: committing
78121 - work done on the plane last week-end
78122 -
78123 -Sat Jul 30 15:16:29 CEST 2005 Daniel Veillard <daniel@veillard.com>
78124 -
78125 - * runtest.c: allows an extra argument to subset the tests
78126 - * xmlregexp.c: big speedup for validation, basically avoided
78127 - transition creation explosion when removing epsilon transition
78128 -
78129 -Sat Jul 30 00:00:46 CEST 2005 Daniel Veillard <daniel@veillard.com>
78130 -
78131 - * Makefile.am globals.c parserInternals.c xmlreader.c xmlunicode.c
78132 - xmlwriter.c: more cleanups based on sparse reports, added
78133 - "make sparse"
78134 -
78135 -Fri Jul 29 12:11:25 CEST 2005 Daniel Veillard <daniel@veillard.com>
78136 -
78137 - * python/libxml.c: don't output any message on failed resolver lookups,
78138 - better done by the python user provided resolver layer.
78139 -
78140 -Fri Jul 29 01:48:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
78141 -
78142 - * HTMLparser.c SAX2.c encoding.c globals.c parser.c relaxng.c
78143 - runsuite.c runtest.c schematron.c testHTML.c testReader.c
78144 - testRegexp.c testSAX.c testThreads.c valid.c xinclude.c xmlIO.c
78145 - xmllint.c xmlmodule.c xmlschemas.c xpath.c xpointer.c: a lot of
78146 - small cleanups based on Linus' sparse check output.
78147 -
78148 -Thu Jul 28 21:28:33 CEST 2005 Daniel Veillard <daniel@veillard.com>
78149 -
78150 - * include/libxml/Makefile.am: added schematron.h, oops ...
78151 -
78152 -Thu Jul 28 02:38:21 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78153 -
78154 - * xmlschemastypes.c: Added creation of the content type of
78155 - xs:anyType. This is needed when trying to extend xs:anyType
78156 - (although it makes no sense to extend it; IMHO the schema
78157 - people should have ruled this out). This was reported
78158 - by Yong Chen to the mailing list.
78159 - * xmlschemas.c: Fixed handling of xs:anyType in
78160 - xmlSchemaCheckCOSCTExtends() (reported by Young Chen). Tiny
78161 - adjustment to an error report output.
78162 - * test/schemas/extension2* result/schemas/extension2*:
78163 - Added a test case provided by Young Chen.
78164 -
78165 -Mon Jul 25 11:41:18 PDT 2005 William Brack <wbrack@mmm.com.hk>
78166 -
78167 - * uri.c: enhanced xmlBuildRelativeURI to allow the URI and the
78168 - base to be in "relative" form
78169 -
78170 -Sun Jul 24 10:25:41 EDT 2005 Daniel Veillard <daniel@veillard.com>
78171 -
78172 - * schematron.c xmllint.c: started adding schematron to the xmllint
78173 - tool, the report infrastructure is gonna be fun.
78174 -
78175 -Sat Jul 23 23:23:51 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78176 -
78177 - * test/schemas/any6* test/schemas/any7*: Added regression tests
78178 - (they fail currently), but did not added results yet.
78179 -
78180 -Sat Jul 23 23:07:05 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78181 -
78182 - * xmlschemas.c: Removed the workaround code in
78183 - xmlSchemaValidateElemWildcard() for the <any> wildcard
78184 - with namespace == ##other. Support for such wildcards was
78185 - implemented by Daniel at the automaton level recently, and
78186 - the workaround code iterfered with it.
78187 -
78188 -Sat Jul 23 10:55:50 EDT 2005 Daniel Veillard <daniel@veillard.com>
78189 -
78190 - * pattern.c include/libxml/pattern.h: changed xmlPatterncompile
78191 - signature to pass an int and not an enum since it can generate
78192 - ABI compat troubles.
78193 - * include/libxml/schematron.h schematron.c: adding the new
78194 - schematron code, work in progress lots to be left and needing
78195 - testing
78196 - * include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in
78197 - Makefile.am configure.in: integration of schematron into the
78198 - build
78199 - * xpath.c include/libxml/xpath.h: adding flags to control compilation
78200 - options right now just XML_XPATH_CHECKNS.
78201 -
78202 -Sat Jul 23 16:39:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78203 -
78204 - * xmlschemas.c: Removed an "internal error" message from
78205 - xmlSchemaBuildAContentModel() when an empty model group
78206 - definition is hit.
78207 -
78208 -Sat Jul 23 00:34:07 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78209 -
78210 - * pattern.c: Changed xmlCompileStepPattern() and
78211 - xmlCompileAttributeTest() to handle the "xml" prefix without
78212 - caring if the XML namespace was supplied by the user.
78213 -
78214 -Fri Jul 22 00:08:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78215 -
78216 - * xmlschemas.c: Fixed xmlSchemaPSimpleTypeErr(), which did not
78217 - output the given string arguments correctly.
78218 -
78219 -Thu Jul 21 09:21:00 EDT 2005 Daniel Veillard <daniel@veillard.com>
78220 -
78221 - * error.c globals.c parser.c runtest.c testHTML.c testSAX.c
78222 - threads.c valid.c xmllint.c xmlreader.c xmlschemas.c xmlstring.c
78223 - xmlwriter.c include/libxml/parser.h include/libxml/relaxng.h
78224 - include/libxml/valid.h include/libxml/xmlIO.h
78225 - include/libxml/xmlerror.h include/libxml/xmlexports.h
78226 - include/libxml/xmlschemas.h: applied a patch from Marcus Boerger
78227 - to fix problems with calling conventions on Windows this should
78228 - fix #309757
78229 -
78230 -Wed Jul 20 14:45:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
78231 -
78232 - * parser.c: an optimization of the char data inner loop,
78233 - can gain up to 10% in pure SAX2 parsing speed
78234 - * xmlschemas.c: applied patch from Kupriyanov Anatolij fixing
78235 - a bug in XML Schemas facet comparison #310893
78236 -
78237 -Tue Jul 19 17:27:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78238 -
78239 - * xmlregexp.c xmlschemas.c: fixed the error reporting for
78240 - not transitions
78241 - * result/schemas/any5_0_0* result/schemas/any5_0_2*
78242 - result/schemas/any5_1_0*: fixed output
78243 -
78244 -Tue Jul 19 15:34:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
78245 -
78246 - * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: fixing
78247 - bug #172215 about foreign namespaces by adding support for
78248 - negated string transitions. Error messages still need to be
78249 - improved.
78250 - * test/schemas/any5* result/schemas/any5*: adding regression
78251 - tests for this.
78252 -
78253 -Tue Jul 19 12:33:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78254 -
78255 - * tree.c: applied patch from Alexander Pohoyda fixing xmlGetNodePath
78256 - on namespaced attributes #310417.
78257 -
78258 -Mon Jul 18 23:01:15 CEST 2005 Daniel Veillard <daniel@veillard.com>
78259 -
78260 - * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: --nonet was
78261 - ducplicated
78262 -
78263 -Mon Jul 18 20:49:28 CEST 2005 Daniel Veillard <daniel@veillard.com>
78264 -
78265 - * xmlschemas.c: fixed xsd:all when used in conjunction with
78266 - substitution groups
78267 - * test/schemas/allsg_* result/schemas/allsg_*: adding specific
78268 - regression tests, strangely missing from NIST/Sun/Microsoft
78269 - testsuites
78270 -
78271 -Sun Jul 17 07:11:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
78272 -
78273 - * xmlschemas.c: fixed bug #307508, a bad automata was built but
78274 - this showed as an indeterminist result
78275 -
78276 -Thu Jul 14 17:53:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
78277 -
78278 - * xmlschemastypes.c: found the last bug raised by NIST tests in
78279 - comparing base64 strings, result from runsuite:
78280 - ## NIST test suite for Schemas version NIST2004-01-14
78281 - Ran 23170 tests (3953 schemata), no errors
78282 -
78283 -Thu Jul 14 14:57:36 CEST 2005 Daniel Veillard <daniel@veillard.com>
78284 -
78285 - * testRegexp.c: fixed where xmlMemoryDump() should be called.
78286 - * xmlregexp.c: fixed handling of {0}, \n, \r and \t, two bugs
78287 - affecting NIST regression tests
78288 -
78289 -Thu Jul 14 11:30:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78290 -
78291 - * configure.in: applied a patch from Gerrit P. Haase to add
78292 - module support on cygwin
78293 -
78294 -Thu Jul 14 10:56:42 CEST 2005 Daniel Veillard <daniel@veillard.com>
78295 -
78296 - * HTMLparser.c: fixed a potential buffer overrun error introduced
78297 - on last commit to htmlParseScript() c.f. #310229
78298 -
78299 -Thu Jul 14 23:48:17 PDT 2005 William Brack <wbrack@mmm.com.hk>
78300 -
78301 - * xpath.c: Changed the behaviour of xmlXPathEqualNodeSetFloat to
78302 - return TRUE if a nodeset with a numeric value of NaN is compared
78303 - for inequality with any numeric value (bug 309914).
78304 -
78305 -Thu Jul 14 01:03:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
78306 -
78307 - * error.c relaxng.c xmlreader.c xmlschemas.c include/libxml/relaxng.h
78308 - include/libxml/xmlschemas.h: applied patch from Marcus Boerger
78309 - to route relaxng and schemas error messages when using the reader
78310 - through the structured interface if activated.
78311 - * elfgcchack.h doc/* testapi.c: rebuilt since this add new APIs
78312 - to test.
78313 -
78314 -Wed Jul 13 18:35:47 CEST 2005 Daniel Veillard <daniel@veillard.com>
78315 -
78316 - * HTMLparser.c: applied UTF-8 script parsing bug #310229 fix from
78317 - Jiri Netolicky
78318 - * result/HTML/script2.html* test/HTML/script2.html: added the test
78319 - case from the regression suite
78320 -
78321 -Tue Jul 12 17:08:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
78322 -
78323 - * nanohttp.c: fixed bug #310105 with http_proxy environments with
78324 - patch provided by Peter Breitenlohner
78325 -
78326 -Mon Jul 11 00:28:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
78327 -
78328 - * Makefile.am NEWS configure.in doc/*: preparing release 2.6.20
78329 - * xmllint.c: removed a compilation problem
78330 -
78331 -Sun Jul 10 23:33:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
78332 -
78333 - * xstc/Makefile.am README README.tests Makefile.tests Makefile.am:
78334 - preparing to make testsuite releases along with code source releases
78335 - * gentest.py testapi.c: fixed a couple of problem introduced by
78336 - the new Schemas support for Readers
78337 - * xpath.c: fixed the XPath attribute:: bug #309580, #309864 in a crude
78338 - but simple way.
78339 - * xmlschemas.c include/libxml/tree.h: fixed a couple of problems
78340 - raised by the doc builder.
78341 - * doc/*: made rebuild
78342 -
78343 -Sun Jul 10 21:51:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
78344 -
78345 - * xmlschemas.c: fixed a bug introduced on last commit
78346 -
78347 -Sun Jul 10 21:00:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
78348 -
78349 - * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: fixed a typo
78350 - pointed by Jeroen Ruigrok
78351 - * include/libxml/xmlreader.h include/libxml/xmlschemas.h: increased
78352 - the APIs for xmlReader schemas validation support
78353 - * xmllint.c xmlreader.c xmlschemas.c: xmlReader schemas validation
78354 - implementation and testing as xmllint --stream --schema ...
78355 -
78356 -Sun Jul 10 16:11:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78357 -
78358 - * include/libxml/xmlwin32version.h.in: try to avoid conflicts.
78359 -
78360 -Sat Jul 9 19:29:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
78361 -
78362 - * parser.c: fix for #309761 from Dylan Shell
78363 - * xmlschemas.c include/libxml/xmlschemas.h: added xmlSchemaSAXPlug
78364 - and xmlSchemaSAXUnplug generic APIs for SAX Schemas validation.
78365 - * xmllint.c: couple of fixes plus added descriptions for --sax and
78366 - --sax1
78367 -
78368 -Fri Jul 8 23:35:00 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78369 -
78370 - * xmlschemas.c: Added c-props-correct constraint to check
78371 - for equal cardinality of keyref/key.
78372 - * include/libxml/xmlerror.h: Added an error code.
78373 -
78374 -Fri Jul 8 21:56:04 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78375 -
78376 - * pattern.c: Fixed evaluation of attributes. Actually only
78377 - attribute at the first level were evaluated (e.g. "@attr");
78378 - expression like "foo/@attr" always failed.
78379 -
78380 -Fri Jul 8 20:04:29 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78381 -
78382 - * xmlschemas.c: tiny fix in xmlSchemaValidateStream() if a
78383 - user-provided SAX handler is given.
78384 -
78385 -Fri Jul 8 19:25:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78386 -
78387 - * parser.c: fix some potential leaks in error cases.
78388 - * xmllint.c: added --sax, to allow testing of --schemas --sax and
78389 - various other combinations.
78390 - * xmlschemas.c: fix a couple of tiny problems in
78391 - xmlSchemaValidateStream()
78392 -
78393 -Fri Jul 8 18:34:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78394 -
78395 - * xmlschemas.c: Changed xmlSchemaValidateFile() to use
78396 - xmlSchemaValidateStream() internally.
78397 -
78398 -Fri Jul 8 17:02:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
78399 -
78400 - * test/relaxng/docbook_0.xml: added the missing entity to the
78401 - document internal subset to avoid errors if the DocBook catalogs
78402 - are not there
78403 - * xmlschemas.c: first cut at implementing xmlSchemaValidateStream()
78404 - untested yet
78405 -
78406 -Wed Jul 6 15:45:48 PDT 2005 William Brack <wbrack@mmm.com.hk>
78407 -
78408 - * parser.c: fixed problem with free on dupl attribute in
78409 - dtd (bug309637).
78410 - * test/errors/attr3.xml, result/errors/attr3.*: added
78411 - regression test for this
78412 -
78413 -Wed Jul 6 13:11:35 PDT 2005 William Brack <wbrack@mmm.com.hk>
78414 -
78415 - * win32/Makefile.msvc: try again to fix file format for Windows
78416 -
78417 -Wed Jul 6 12:20:13 PDT 2005 William Brack <wbrack@mmm.com.hk>
78418 -
78419 - * win32/Makefile.msvc: removed spurious ^M
78420 - * runtest.c: added check for option O_BINARY
78421 - * test/schemas/bug309338*, result/schemas/bug309338*: changed
78422 - sticky tag to 'binary'
78423 -
78424 -Wed Jul 6 10:38:02 PDT 2005 William Brack <wbrack@mmm.com.hk>
78425 -
78426 - * debugXML.c: excluded content string check for XML_ELEMENT_DECL
78427 - in xmlCtxtGenericNodeCheck
78428 - * runtest.c: changed "open" calls to include O_BINARY for Windows
78429 -
78430 -Wed Jul 6 17:14:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
78431 -
78432 - * parser.c: fixing bug #166777 (and #169838), it was an heuristic
78433 - in areBlanks which failed.
78434 - * result/winblanks.xml* result/noent/winblanks.xml test/winblanks.xml:
78435 - added the input file to the regression tests
78436 -
78437 -Wed Jul 6 13:40:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78438 -
78439 - * xmlschemastypes.c: Fixed bug #309338, reported by Kupriyanov
78440 - Anotolij.
78441 - * test/schemas/bug309338* result/schemas/bug309338*:
78442 - Added a regression test for the above bug.
78443 -
78444 -Tue Jul 5 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com>
78445 -
78446 - * Makefile.am: first steps toward a testsuite dist
78447 - * SAX2.c include/libxml/xmlerror.h: fixed bug #307870
78448 -
78449 -Tue Jul 5 12:38:36 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78450 -
78451 - * runsuite.c runtest.c: Tiny portability adjustment for win.
78452 - * win32/Makefile.*: Added runtest.exe and runsuite.exe to
78453 - be created.
78454 -
78455 -Mon Jul 4 17:44:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78456 -
78457 - * runsuite.c: first stb at unimplemnted detection
78458 - * runtest.c: fixing Windows code
78459 -
78460 -Mon Jul 4 17:19:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78461 -
78462 - * runsuite.c: fix on schemas error
78463 - * runtest.c: portability glob() on Windows
78464 -
78465 -Mon Jul 4 16:23:54 CEST 2005 Daniel Veillard <daniel@veillard.com>
78466 -
78467 - * runsuite.c runtest.c: cleanups, logfile and portability
78468 - * xmllint.c: fixed a memory leak
78469 -
78470 -Mon Jul 4 13:11:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
78471 -
78472 - * parser.c: fixed a bug failing to detect UTF-8 violations in
78473 - CData in push mode.
78474 - * result/errors/cdata.xml* test/errors/cdata.xml: added the test
78475 - to the regressions
78476 -
78477 -Mon Jul 4 11:26:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
78478 -
78479 - * debugXML.c: added enhancement for #309057 in xmllint shell
78480 -
78481 -Mon Jul 4 00:58:44 CEST 2005 Daniel Veillard <daniel@veillard.com>
78482 -
78483 - * HTMLparser.c: applied patch from James Bursa fixing an html parsing
78484 - bug in push mode
78485 - * result/HTML/repeat.html* test/HTML/repeat.html: added the test to the
78486 - regression suite
78487 -
78488 -Sun Jul 3 23:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com>
78489 -
78490 - * testapi.c tree.c: fixing a leak detected by testapi in
78491 - xmlDOMWrapAdoptNode, and fixing another side effect in testapi
78492 - seems to pass tests fine now.
78493 - * include/libxml/parser.h parser.c: xmlStopParser() is no more limited
78494 - to push mode
78495 - * error.c: remove a warning
78496 - * runtest.c xmllint.c: avoid compilation errors if only some parts
78497 - of the library are compiled in.
78498 -
78499 -Mon Jul 4 00:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com>
78500 -
78501 - * gentest.py testapi.c: fix a problem with previous patch to
78502 - testapi.c
78503 -
78504 -Sun Jul 3 22:59:28 CEST 2005 Daniel Veillard <daniel@veillard.com>
78505 -
78506 - * runsuite.c runtest.c tree.c: fixing compilations when
78507 - disabling parts of the library at configure time.
78508 -
78509 -Sun Jul 3 18:17:58 CEST 2005 Daniel Veillard <daniel@veillard.com>
78510 -
78511 - * parserInternals.c: fix bug raised by zamez on IRC
78512 - * testapi.c: regenerated, seems to pop-up leaks in new tree functions
78513 - * tree.c: added comments missing.
78514 - * doc/*: regenerated
78515 -
78516 -Sun Jul 3 18:06:55 CEST 2005 Daniel Veillard <daniel@veillard.com>
78517 -
78518 - * testapi.c runsuite.c runtest.c: fixing #307823 and a couple of
78519 - assorted bugs
78520 - * python/generator.py python/libxml2-python-api.xml: fixed
78521 - conditionals in generator too
78522 - * doc/apibuild.py doc/libxml2-api.xml doc/* elfgcchack.h: some
78523 - cleanups too and rebuilt
78524 -
78525 -Sun Jul 3 16:42:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
78526 -
78527 - * xmlIO.c: fixed bug #307503 misplaced #ifdef
78528 -
78529 -Sun Jul 3 16:34:47 CEST 2005 Daniel Veillard <daniel@veillard.com>
78530 -
78531 - * runsuite.c: expanded test
78532 - * xmlregexp.c: found and fixed the leak exposed by Microsoft regtests
78533 -
78534 -Sat Jul 2 23:38:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78535 -
78536 - * runsuite.c: a bit of progresses on xstc
78537 -
78538 -Sat Jul 2 09:30:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
78539 -
78540 - * runsuite.c: completed the simple checks for Relax-NG suites
78541 - back to the same 11 errors as in the Python runs.
78542 -
78543 -Thu Jun 30 15:01:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
78544 -
78545 - * runtest.c: complete, checking on other platforms is needed
78546 - * README: updated
78547 - * debugXML.c: fix a bug raised by bill on IRC
78548 - * relaxng.c: fix a leak in weird circumstances
78549 - * runsuite.c Makefile.am: standalone test tool against
78550 - the regression suites, work in progress
78551 -
78552 -Tue Jun 28 08:30:26 CEST 2005 Daniel Veillard <daniel@veillard.com>
78553 -
78554 - * runtest.c: adding URI tests
78555 -
78556 -Mon Jun 27 23:55:56 CEST 2005 Daniel Veillard <daniel@veillard.com>
78557 -
78558 - * runtest.c: adding xml:id
78559 -
78560 -Mon Jun 27 23:29:36 CEST 2005 Daniel Veillard <daniel@veillard.com>
78561 -
78562 - * runtest.c: finishing XPath, adding XPointer
78563 -
78564 -Mon Jun 27 17:39:27 CEST 2005 Daniel Veillard <daniel@veillard.com>
78565 -
78566 - * runtest.c: adding more coverage, XInclude and starting XPath
78567 -
78568 -Mon Jun 27 17:02:14 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78569 -
78570 - * tree.c include/libxml/tree.h: Added allocation/deallocation
78571 - functions for the DOM-wrapper context.
78572 -
78573 -Mon Jun 27 15:41:30 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78574 -
78575 - * tree.c: Commented the new functions to be experimental.
78576 -
78577 -Mon Jun 27 14:41:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
78578 -
78579 - * error.c valid.c: working some weird error reporting problem for
78580 - DTD validation.
78581 - * runtest.c: augmented with DTD validation tests
78582 - * result/VC/OneID*: slight change in validation output.
78583 -
78584 -Mon Jun 27 13:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
78585 -
78586 - * runtest.c: added most HTML tests
78587 -
78588 -Mon Jun 27 14:06:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78589 -
78590 - * test/namespaces/reconcile/tests.xml
78591 - test/namespaces/reconcile/tests-to-c.xsl: Added initial tests
78592 - for some new DOM-wrapper helping functions.
78593 -
78594 -Mon Jun 27 14:01:06 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78595 -
78596 - * xstc/xstc-to-python.xsl: Cleanup.
78597 - * xstc/sun-test-def.xml xstc/nist-test-def.xml xstc/ms-test-def.xml:
78598 - Removed, those are not needed anymore due to the new test suite.
78599 -
78600 -Mon Jun 27 11:39:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
78601 -
78602 - * result/*.sax2 MAkefile.am: added SAXv2 regression tests apparently
78603 - missing.
78604 - * runtest.c: added SAX1/SAX2 checks.
78605 -
78606 -Mon Jun 27 12:24:54 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78607 -
78608 - * tree.c include/libxml/tree.h: Added
78609 - xmlDOMWrapReconcileNamespaces(), xmlDOMWrapAdoptNode() and
78610 - xmlDOMWrapRemoveNode() to the API. These are functions intended
78611 - to be used with DOM-wrappers.
78612 -
78613 -Mon Jun 27 10:14:57 CEST 2005 Daniel Veillard <daniel@veillard.com>
78614 -
78615 - * runtest.c: continue to increase the tests
78616 -
78617 -Mon Jun 27 09:21:49 CEST 2005 Daniel Veillard <daniel@veillard.com>
78618 -
78619 - * runtest.c: continue to increase the tests
78620 -
78621 -Mon Jun 27 01:01:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
78622 -
78623 - * runtest.c: continue to increase the tests
78624 -
78625 -Sun Jun 26 20:08:24 CEST 2005 Daniel Veillard <daniel@veillard.com>
78626 -
78627 - * include/libxml/valid.h valid.c: avoid name glob in arguments as
78628 - it matches the glob() routine.
78629 - * runtest.c Makefile.am: first steps toward a C regression test
78630 - framework.
78631 -
78632 -Sat Jun 25 01:37:22 PDT 2005 William Brack <wbrack@mmm.com.hk>
78633 -
78634 - * configure.in: fixed a problem with the detection of
78635 - ss_family for ipV6, as reported on the mailing list by
78636 - Doug Orleans.
78637 -
78638 -Tue Jun 21 10:44:34 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78639 -
78640 - * test/schemas/empty-value* result/schemas/empty-value*:
78641 - Added regression tests (from Dhyanesh).
78642 -
78643 -Tue Jun 21 10:35:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78644 -
78645 - * xmlschemas.c: Fixed NULL values to be validated as empty
78646 - string values (reported by Dhyanesh to the mailing list).
78647 - Adjusted text concatenation of mixed content.
78648 -
78649 -Mon Jun 20 18:11:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
78650 -
78651 - * tree.c valid.c: applied patch from Rob Richards for removal
78652 - of ID (and xml:id)
78653 - * xmlreader.c: applied patch from James Wert implementing
78654 - xmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml
78655 -
78656 -Thu Jun 16 14:38:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78657 -
78658 - * xmlschemas.c: Fixed SAX2 validation: grow of internal
78659 - namespace list, appending of element character content.
78660 - * xstc/xstc.py: Added "--sax" option for SAX2 validation.
78661 -
78662 -Wed Jun 15 15:34:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78663 -
78664 - * xmlschemastypes.c: Added missing function descriptions.
78665 -
78666 -Wed Jun 15 15:26:14 CEST 2005 Daniel Veillard <daniel@veillard.com>
78667 -
78668 - * xmllint.c: if sax1 is used and input is a file use the old
78669 - API xmlParseFile()
78670 - * xmlschemas.c: cleanups
78671 - * doc/* testapi.c elfgcchack.h: rebuilt to add python bindings
78672 - for the new functions in Schemas.
78673 -
78674 -Wed Jun 15 14:50:48 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78675 -
78676 - * xmlschemas.c include/libxml/xmlschemas.h: Added
78677 - xmlSchemaValidateFile() to the public API. This will use
78678 - SAX2-driven validation.
78679 -
78680 -Wed Jun 15 11:11:38 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78681 -
78682 - * result/schemas/bug306806_1_0 result/schemas/bug306806_1_0.err:
78683 - Added schema test results (Tom Browder, bug #306806).
78684 -
78685 -Wed Jun 15 11:08:34 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78686 -
78687 - * test/schemas/bug306806_1.xsd test/schemas/bug306806_0.xml:
78688 - Added schema tests submitted by Tom Browder (bug #306806).
78689 -
78690 -Tue Jun 14 15:03:22 PDT 2005 William Brack <wbrack@mmm.com.hk>
78691 -
78692 - * pattern.c: adjusted last change to xmlCompilePathPattern,
78693 - fixed one compilation warning
78694 -
78695 -Tue Jun 14 21:19:16 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78696 -
78697 - * pattern.c: Some changes/fixes to the streaming evaluation.
78698 - * xmlschemas.c: A bit of support for parsing the schema for
78699 - schema. Fixed attribute derivation when the use is
78700 - "prohibited" and was "optional". Fixed an attribute construction
78701 - bug, a left-over from the time, where <complexContent>,
78702 - <extension>, etc. where created as structs.
78703 -
78704 -Tue Jun 14 12:35:12 CEST 2005 Daniel Veillard <daniel@veillard.com>
78705 -
78706 - * libxml-2.0.pc.in: removed a redundant include path
78707 -
78708 -Mon Jun 13 14:58:33 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78709 -
78710 - * xstc/Makefile.am: Some more adjustments.
78711 -
78712 -Mon Jun 13 14:35:59 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78713 -
78714 - * xstc/Makefile.am: Changed test extraction process, since some
78715 - boxes don't know about "tar --strip-path".
78716 -
78717 -Mon Jun 13 13:39:43 CEST 2005 Daniel Veillard <daniel@veillard.com>
78718 -
78719 - * relaxng.c: fixed a bug exposed by Rob Richards in the mailing-list
78720 - * result//compare0* test//compare0*: added the regression test in
78721 - the suite as this went unnoticed !
78722 -
78723 -Wed Jun 9 11:07:42 PDT 2005 William Brack <wbrack@mmm.com.hk>
78724 -
78725 - * pattern.c, xpath.c, include/libxml/pattern.h: Further
78726 - enhancement for XPath streaming, consolidated with
78727 - schemas usage of pattern.c. Added a new enum
78728 - xmlPatternFlags.
78729 - * doc/*, testapi.c, elfgcchack.h: updated to reflect new
78730 - enum.
78731 - * test/XPath/tests/mixedpat, test/XPath/docs/mixed,
78732 - result/XPath/mixedpat: added regression test for problems
78733 - reported in bug306348
78734 -
78735 -Thu Jun 9 16:51:31 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78736 -
78737 - * xmlschemastypes.c: Changed non-prefixed QNames to be bound to a
78738 - default namespace if existent.
78739 -
78740 -Thu Jun 9 15:11:38 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78741 -
78742 - * xmlschemastypes.c: Fixed a bug which I invented: hexBinary's string
78743 - values were not duplicated corrently when creating a computed value
78744 - in xmlSchemaValAtomicType.
78745 -
78746 -Thu Jun 9 13:20:57 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78747 -
78748 - * xmlschemas.c result/schemas/include1_0_0.err:
78749 - Fixed an attribute fixed/default value constraint error.
78750 -
78751 -Thu Jun 9 12:51:23 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78752 -
78753 - * result/schemas/*: Adapted regression test results.
78754 -
78755 -Thu Jun 9 12:22:45 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78756 -
78757 - * xmlschemas.c xmlschemastypes.c include/libxml/schemasInternals.h
78758 - include/libxml/xmlschemastypes.h: Changed the validation process
78759 - to be able to work in streaming mode. Some datatype fixes,
78760 - especially for list and union types. Due to the changes the
78761 - error report output has changed in most cases. Initial migration to
78762 - functions usable by both, the parser and the validator. This should
78763 - ease a yet-to-come XS construction API in the long term as well.
78764 -
78765 -Thu Jun 9 10:16:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
78766 -
78767 - * parser.c: applied patch from Malcolm Rowe to avoid namespace
78768 - troubles on rollback parsing of elements start #304761
78769 - * test/nsclean.xml result/noent/nsclean.xml result/nsclean.xml*:
78770 - added it to the regression tests.
78771 -
78772 -Thu Jun 9 00:33:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
78773 -
78774 - * parser.c include/libxml/xmlerror.h: applied patch from Rob Richards
78775 - for xml:space and xml:lang handling with SAX2 api.
78776 -
78777 -Wed Jun 8 19:41:38 CEST 2005 Daniel Veillard <daniel@veillard.com>
78778 -
78779 - * globals.c: applied patch from Morten Welinder, closing bug #306901
78780 - on compiling subsets of the library
78781 -
78782 -Wed Jun 8 19:11:42 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78783 -
78784 - * xstc/Makefile.am xstc.py xstc-to-python.xsl: Adapted the
78785 - XS tests to use the new release of tests and test-definitions.
78786 -
78787 -2005-06-07 Aleksey Sanin <aleksey@aleksey.com>
78788 -
78789 - * c14n.c: fix rendering of attributes when parent node
78790 - is not in the node set
78791 -
78792 -2005-06-06 Aleksey Sanin <aleksey@aleksey.com>
78793 -
78794 - * c14n.c: fixed xml attributes processing bug in exc c14n
78795 - * xmllint.c: added --exc-c14n command line option
78796 -
78797 -Mon Jun 6 06:43:33 PDT 2005 William Brack <wbrack@mmm.com.hk>
78798 -
78799 - * xpath.c, pattern.c: Enhanced xmlXPathRunStreamEval, fixed
78800 - handling of depth/level for cases like union operator
78801 - (bug #306348 reported by Bob Stayton). Also enhanced
78802 - several comments throughout pattern.c.
78803 - * doc/apibuild.py: fixed problem in handling of
78804 - 'signed' declaration. Rebuilt the docs.
78805 -
78806 -Tue May 31 20:35:27 PDT 2005 William Brack <wbrack@mmm.com.hk>
78807 -
78808 - * xinclude.c: Enhanced handling of xml:base for included
78809 - elements, fixing bugs 169209 and 302353.
78810 -
78811 -Wed May 25 18:59:53 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78812 -
78813 - * xmlschemas.c: Fixed facet errors to be channelled back for
78814 - union type members; facet-validation will stop now on the
78815 - first error. Reported by GUY Fabrice to the mailing-list.
78816 - * xmlschemastypes.c: Changed to ignore lengh-related facet
78817 - validation for QNames and NOTATIONs as proposed by the
78818 - schema people.
78819 - * test/schemas/union2* result/schemas/union2*: Added
78820 - regression tests for union types (by GUY Fabrice).
78821 -
78822 -Fri May 20 20:48:08 CEST 2005 Daniel Veillard <daniel@veillard.com>
78823 -
78824 - * xmlsave.c: applied patch from Mark Vakoc fixing saving of
78825 - CDATA with NULL content.
78826 -
78827 -Thu May 12 15:14:26 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78828 -
78829 - * xmlschemastypes.c: Changed the VALID_TZO macro to restrict
78830 - the timezone to -840 to 840.
78831 -
78832 -Thu May 12 15:05:11 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78833 -
78834 - * xmlschemastypes.c: Applied patch from Steve Nairn (bug #303670)
78835 - for "signed int" of the date-time timezone field. Silenced
78836 - a warning.
78837 -
78838 -Wed May 11 20:04:09 CEST 2005 Daniel Veillard <daniel@veillard.com>
78839 -
78840 - * tree.c: applied patch for replaceNode from Brent Hendricks
78841 -
78842 -Tue May 10 17:27:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
78843 -
78844 - * tree.c: fixed bug #303682 of a leak reported by Malcolm Rowe
78845 -
78846 -Tue May 10 11:50:16 CEST 2005 Daniel Veillard <daniel@veillard.com>
78847 -
78848 - * testapi.c: applied patch from Steve Nairn tof fix the compilation
78849 - problem exposed in bug #303640
78850 -
78851 -Tue May 10 11:11:26 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78852 -
78853 - * test/schemas/bug303566_1* result/schemas/bug303566_1_1*:
78854 - Added regression a test provided by Heiko Oberdiek (bug #303566).
78855 -
78856 -Mon May 9 17:56:58 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78857 -
78858 - * pattern.c: Changed the XPath "." to resolve only on the first
78859 - level for XML Schema IDCs (bug #303566 reported by Heiko Oberdiek).
78860 - This should not affect pattern-like resolution on every level.
78861 -
78862 -Sun May 8 13:35:39 CEST 2005 Daniel Veillard <daniel@veillard.com>
78863 -
78864 - * xmlmemory.c: fixed #169630 segfault in xmlMemDisplay
78865 -
78866 -Fri May 6 13:40:03 CEST 2005 Daniel Veillard <daniel@veillard.com>
78867 -
78868 - * nanoftp.c: fixing bug #303068 increasing the nanoftp buffer.
78869 - * doc/apibuild.py: fixed __attribute() parsing problem
78870 - * doc/* testapi.c: regenerated the descriptions and docs.
78871 -
78872 -Wed May 4 11:16:00 CEST 2005 Daniel Veillard <daniel@veillard.com>
78873 -
78874 - * Makefile.am configure.in threads.c: on linux/gcc use weak definitions
78875 - to avoid linking with pthread library on non-threaded environments.
78876 - * xpath.c: applied patch from Mark Vakoc w.r.t. a buggy namespace
78877 - list allocation.
78878 -
78879 -Fri Apr 29 11:27:37 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78880 -
78881 - * parser.c: Fixed a test for duplicate attributes: Non-prefixed
78882 - attributes were treated as being bound to the default namespace.
78883 -
78884 -Tue Apr 19 17:51:32 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78885 -
78886 - * xmlschemastypes.c: Fixed date-time related validation
78887 - (reported by David Crossley, bug #300576).
78888 -
78889 -Tue Apr 19 16:55:40 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78890 -
78891 - * xmlschemas.c xmlregexp.c: Removed 5 unnecessary
78892 - dereferences (reported by Andriy, bug #301074).
78893 -
78894 -Tue Apr 19 22:33:18 HKT 2005 William Brack <wbrack@mmm.com.hk>
78895 -
78896 - * xpath.c: Added some code to avoid integer overflow for
78897 - ceil, floor and round functions (bug 301162)
78898 -
78899 -Tue Apr 19 13:21:54 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78900 -
78901 - * xmlschemas.c: Removed workaround for bug #172215, since it
78902 - does more harm in some scenarios. Added some of the
78903 - "Particle Restriction OK" constraints - not yet enabled.
78904 -
78905 -Mon Apr 18 13:02:55 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78906 -
78907 - * result/schemas/changelog093*: Added test results.
78908 -
78909 -Mon Apr 18 12:42:14 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78910 -
78911 - * xmlschemas.c: Added output of canonical values in
78912 - identity-constraint error messages.
78913 - * xmlschemastypes.c include/libxml/xmlschemastypes.h:
78914 - Added xmlSchemaGetCanonValueWhtsp() to the API.
78915 - Further enhancement of the canonical value
78916 - conversion.
78917 - * test/schemas/changelog093_0.*: Added test with an XSD
78918 - submitted by Randy J. Ray.
78919 -
78920 -Fri Apr 15 09:33:21 HKT 2005 William Brack <wbrack@mmm.com.hk>
78921 -
78922 - * valid.c: Applied Daniel's fix for memory leak in dtd
78923 - prefix (bug 300550).
78924 - * xpath.c: minor change to comment only
78925 -
78926 -Thu Apr 14 20:52:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
78927 -
78928 - * xmlmemory.c: added the call to the breakpoint routine
78929 - when a monitored block is reallocated or freed
78930 -
78931 -Wed Apr 13 05:55:51 CEST 2005 Daniel Veillard <daniel@veillard.com>
78932 -
78933 - * nanohttp.c: applied patch from Aron Stansvik for bug #172525
78934 - about HTTP query string parameter being lost
78935 -
78936 -Tue Apr 12 04:03:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
78937 -
78938 - * python/libxml.c python/libxml.py: applied patch from Brent Hendricks
78939 - adding namespace removal at the python level #300209
78940 - * python/tests/Makefile.am python/tests/nsdel.py: added the regression
78941 - test
78942 -
78943 -Sun Apr 10 09:03:22 HKT 2005 William Brack <wbrack@mmm.com.hk>
78944 -
78945 - * xpath.c: fixed several places where memory cleanup was not
78946 - properly done after an error was detected (problem was
78947 - reported on the mailing list by Pawel Palucha)
78948 -
78949 -Fri Apr 8 21:58:04 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78950 -
78951 - * xmlschemas.c: Added substitution group constraints; changed
78952 - the build of the pre-computed substitution groups. Channeled
78953 - errors during xsi assembling of schemas to the validation
78954 - context. Fixed a big memory leak, which occurred when using
78955 - IDCs: the precomputed value of attributes was not freed if
78956 - the attribute did not resolve to an IDC field (discovered
78957 - with the help of Randy J. Ray's schema, posted to the
78958 - xmlschema-dev maling list).
78959 -
78960 -Fri Apr 8 13:22:01 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
78961 -
78962 - * xmlschemas.c: Added "Particle correct 2" to parsing of model groups.
78963 - Added handling substitution groups inside <choice> and <sequence>;
78964 - for <all> this is not supported yet. Changed circular checks for
78965 - model groups definitions. "memberTypes" are processed at different
78966 - levels now: component resolution first, construction later; this
78967 - goes hand in hand with a global change to handle component
78968 - resolution in a distinct phase. Fixed invalid default values for
78969 - elements to mark the schema as invalid; this just resulted in an
78970 - error report previously, but the schema was handled as valid.
78971 - Separated the assignment of the model groups to referencing
78972 - model group definition references (i.e. particles); this was
78973 - needed to perform the circularity check for model group definitions.
78974 - Added "Element Declaration Properties Correct (e-props-correct)"
78975 - constraints. Separated component resolution for simple/complex
78976 - types.
78977 - * include/libxml/schemasInternals.h: Added a flag for substitution
78978 - group heads.
78979 -
78980 -Wed Apr 6 23:14:03 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>
78981 -
78982 - * win32/Makefile.*: make install cleanup
78983 -
78984 -Wed Apr 6 22:42:23 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>
78985 -
78986 - * win32/Makefile.mingw: fixed mingw compilation
78987 - * testModule.c: removed mingw warnings
78988 -
78989 -Wed Apr 6 21:59:11 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>
78990 -
78991 - * .cvsignore: added Eclipse project files to ignore list
78992 -
78993 -Wed Apr 6 16:08:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
78994 -
78995 - * xpath.c: fixed the bug in lang() as raised by Elliotte Rusty Harold
78996 - * result/XPath/tests/langsimple test/XPath/tests/langsimple
78997 - test/XPath/docs/lang: added a regression test
78998 -
78999 -Tue Apr 5 23:48:35 CEST 2005 Daniel Veillard <daniel@veillard.com>
79000 -
79001 - * nanoftp.c: applied fix from Rob Richards to compile on Windows.
79002 -
79003 -Tue Apr 5 17:02:58 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79004 -
79005 - * xmlschemas.c: Added "Type Derivation OK (Complex)" constraints
79006 - and anchored them in the "Element Locally Valid (Element)"
79007 - constraints. This restricts the type substitution via "xsi:type".
79008 -
79009 -Tue Apr 5 13:10:06 CEST 2005 Daniel Veillard <daniel@veillard.com>
79010 -
79011 - * xmlschemas.c: patch from Matthew Burgess to improve some schemas
79012 - facets validation messages.
79013 -
79014 -Sat Apr 2 12:48:41 CEST 2005 Daniel Veillard <daniel@veillard.com>
79015 -
79016 - * doc/* configure.in NEWS: preparing release 2.6.19, updated docs and
79017 - rebuilding.
79018 -
79019 -Sat Apr 2 13:27:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
79020 -
79021 - * xstc/Makefile.am: integrated fixup-tests.py
79022 -
79023 -Fri Apr 1 19:14:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
79024 -
79025 - * xmlschemastypes.c: fixed a lack of comment and missing test for
79026 - a pointer in the API.
79027 -
79028 -Fri Apr 1 17:54:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79029 -
79030 - * xstc/fixup-tests.py: A tiny script to fixup some of the schema
79031 - files used for the tests.
79032 -
79033 -Fri Apr 1 17:33:50 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79034 -
79035 - * xmlschemas.c include/libxml/schemasInternals.h
79036 - result/schemas/src-element2-*.err result/schemas/element-*.err:
79037 - Committing again, since the CVS server aborted.
79038 -
79039 -Fri Apr 1 15:29:27 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net>
79040 -
79041 - * xmlschemastypes.c: Corrected 'length' facet validation for
79042 - QNames and notations. Corrected xmlSchemaGetCanonValue: some
79043 - data types did not return a value if already in normalized
79044 - form.
79045 - * xmlschemas.c include/libxml/schemasInternals.h:
79046 - Eliminated creation of structs for <restriction>, <extension>,
79047 - <simpleContent>, <complexContent>, <list> and <union>: the
79048 - information is now set directly on the corresponding simple/
79049 - complex type. Added some more complex type constraints.
79050 - Added facet derivation constraints. Introduced "particle"
79051 - components, which seem to be really needed if applying
79052 - constraints. Corrected/change some of the parsing functions.
79053 - This is all a bit scary, since a significant change to the code.
79054 - * result/schemas/src-element2-*.err result/schemas/element-*.err:
79055 - Adapted regression test results.
79056 -
79057 -Fri Apr 1 16:07:59 CEST 2005 Daniel Veillard <daniel@veillard.com>
79058 -
79059 - * doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h
79060 - format to cope with gcc4 change of aliasing allowed scopes, had
79061 - to add extra information to doc/libxml2-api.xml to separate
79062 - the header from the c module source.
79063 - * *.c: updated all c library files to add a #define bottom_xxx
79064 - and reimport elfgcchack.h thereafter, and a bit of cleanups.
79065 - * doc//* testapi.c: regenerated when rebuilding the API
79066 -
79067 -Thu Mar 31 17:20:32 CEST 2005 Daniel Veillard <daniel@veillard.com>
79068 -
79069 - * xmlsave.c: fixed bug reported by Petr Pajas, in the absence of
79070 - encoding UTF-8 should really be assumed. This may break if
79071 - the HTTP headers indicates for example ISO-8859-1 since this
79072 - then becomes a well formedness error.
79073 -
79074 -Thu Mar 31 16:57:18 CEST 2005 Daniel Veillard <daniel@veillard.com>
79075 -
79076 - * SAX.c: fixed #172260 redundant assignment.
79077 - * parser.c include/libxml/parser.h: fixed xmlSAXParseDoc() and
79078 - xmlParseDoc() signatures #172257.
79079 -
79080 -Thu Mar 31 16:11:10 CEST 2005 Daniel Veillard <daniel@veillard.com>
79081 -
79082 - * parser.c: fix potential crash if ctxt->sax->ignorableWhitespace
79083 - is NULL as reported by bug #172255
79084 -
79085 -Thu Mar 31 15:36:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
79086 -
79087 - * relaxng.c: fixed a problem in Relax-NG validation #159968
79088 - * test/relaxng/list.* result/relaxng/list_*: added the test
79089 - to the regression suite