From d253e5038c4384312c498ea77370f7352be49d82 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:50:56 +0200 Subject: [PATCH 1/3] feat(sln): remove all obsolete api references --- Directory.Packages.props | 8 +- .../$CDRepository/repository.config | 94 ---- .../DancingGoat/.config/dotnet-tools.json | 2 +- .../SampleDataGeneratorApplication.cs | 12 +- .../Articles/ArticlesViewComponent.cs | 6 +- .../ViewComponents/Cafe/Default.cshtml | 14 +- .../CafeCardSectionViewComponent.cs | 39 +- .../CafeCardSectionViewModel.cs | 10 + .../CafeCardSection/Default.cshtml | 10 +- .../TrackingConsentViewComponent.cs | 4 +- .../ProductCardListViewModel.cs | 2 +- .../ProductCardProperties.cs | 4 +- .../ProductCardSchemaFilter.cs | 17 + .../ProductCardWidget/ProductCardViewModel.cs | 8 +- .../ProductCardWidgetViewComponent.cs | 13 +- .../DancingGoatCoffeeController.cs | 48 ++ .../DancingGoatContactsController.cs | 9 +- .../DancingGoatGrinderController.cs | 48 ++ .../DancingGoatProductController.cs | 97 ++++ .../Controllers/SiteMapController.cs | 117 ++++ examples/DancingGoat/DancingGoatConstants.cs | 2 +- examples/DancingGoat/Data/Template.zip | Bin 4954357 -> 5103094 bytes .../DancingGoat/Export-DeploymentPackage.ps1 | 104 ---- .../FormConsentContactGroupGenerator.cs | 5 +- .../DataProtection/FormConsentGenerator.cs | 4 +- .../Models/ContentRepositoryBase.cs | 65 +-- .../Reusable/Banner/Banner.generated.cs | 2 + .../Models/Reusable/Cafe/Cafe.generated.cs | 2 + .../Models/Reusable/Cafe/CafeRepository.cs | 15 +- .../Models/Reusable/Cafe/CafeViewModel.cs | 4 +- .../Reusable/Coffee/Coffee.generated.cs | 32 +- .../Reusable/Coffee/CoffeeRepository.cs | 67 --- .../Reusable/Contact/Contact.generated.cs | 2 + .../Reusable/Contact/ContactRepository.cs | 5 +- .../Models/Reusable/Event/Event.generated.cs | 2 + .../Models/Reusable/Event/EventViewModel.cs | 2 +- .../Reusable/Grinder/Grinder.generated.cs | 72 +++ .../Models/Reusable/Image/Image.generated.cs | 2 + .../Models/Reusable/Image/ImageRepository.cs | 5 +- .../Reusable/Product/ProductRepository.cs | 164 ++++++ .../Reusable/Reference/Reference.generated.cs | 2 + .../SocialLink/SocialLink.generated.cs | 2 + .../SocialLink/SocialLinkRepository.cs | 5 +- .../Models/Reusable/Tag/TagViewModel.cs | 45 ++ .../Reusable/Taxonomy/TaxonomyViewModel.cs | 33 ++ .../Models/Schema/IProductFields.generated.cs | 51 ++ .../Models/Schema/ISEOFields.generated.cs | 12 + .../ArticlePage/ArticlePage.generated.cs | 9 + .../ArticlePage/ArticlePageRepository.cs | 23 +- .../WebPage/ArticlePage/ArticleViewModel.cs | 5 +- .../ArticlesSection.generated.cs | 9 + .../ArticlesSectionRepository.cs | 4 +- .../ArticlesSectionViewModel.cs | 9 +- .../CoffeePage/CoffeeDetailViewModel.cs | 30 ++ .../Models/WebPage/CoffeePage/CoffeePage.cs | 13 + .../CoffeePage/CoffeePage.generated.cs | 43 ++ .../ConfirmationPage.generated.cs | 9 + .../ConfirmationPageRepository.cs | 4 +- .../ContactsPage/ContactsIndexViewModel.cs | 6 + .../ContactsPage/ContactsPage.generated.cs | 9 + .../ContactsPage/ContactsPageRepository.cs | 33 +- .../GrinderPage/GrinderDetailViewModel.cs | 30 ++ .../Models/WebPage/GrinderPage/GrinderPage.cs | 13 + .../GrinderPage/GrinderPage.generated.cs | 43 ++ .../WebPage/HomePage/HomePage.generated.cs | 9 + .../WebPage/HomePage/HomePageRepository.cs | 4 +- .../LandingPage/LandingPage.generated.cs | 9 + .../LandingPage/LandingPageRepository.cs | 4 +- .../NavigationItem.generated.cs | 3 + .../NavigationItemRepository.cs | 4 +- .../PrivacyPage/PrivacyPage.generated.cs | 9 + .../PrivacyPage/PrivacyPageRepository.cs | 4 +- .../WebPage/ProductPage/IProductPage.cs | 17 + .../ProductPage/ProductListItemViewModel.cs | 24 + .../ProductPage/ProductListViewModel.cs | 8 + .../ProductPage/ProductPageRepository.cs | 151 ++++++ .../ProductSectionRepository.cs | 82 +++ .../ProductsSection.generated.cs | 37 ++ .../Models/WebPage/SEOSchemaDataRetriever.cs | 37 ++ examples/DancingGoat/Program.cs | 25 +- examples/DancingGoat/README.md | 4 +- examples/DancingGoat/Readme.txt | 4 - .../DancingGoatSamplesModule.cs | 36 +- .../SampleContactInfoIdentityCollector.cs | 4 +- .../SampleMemberInfoIdentityCollector.cs | 0 .../PersonalDataCollectors/CollectedColumn.cs | 0 .../SampleContactDataCollector.cs | 24 +- .../SampleContactDataCollectorCore.cs | 24 +- .../SampleMemberDataCollector.cs | 0 .../SampleMemberDataCollectorCore.cs | 0 .../HumanReadablePersonalDataWriter.cs | 0 .../Writers/IPersonalDataWriter.cs | 0 .../Writers/XmlPersonalDataWriter.cs | 0 .../SampleContactPersonalDataEraser.cs | 20 +- .../SampleMemberPersonalDataEraser.cs | 0 .../EmailActivityTrackingEvaluator.cs | 49 ++ .../Services/IServiceCollectionExtensions.cs | 9 +- .../StorageInitializationModule.cs | 94 ---- .../Views/DancingGoatCoffee/Detail.cshtml | 41 ++ .../Views/DancingGoatContacts/Index.cshtml | 19 +- .../Views/DancingGoatGrinder/Detail.cshtml | 41 ++ .../Views/DancingGoatProduct/Filter.cshtml | 15 + .../Views/DancingGoatProduct/Index.cshtml | 29 + .../DancingGoatProduct/ProductsList.cshtml | 18 + .../DisplayTemplates/ProductListItem.cshtml | 15 + .../EditorTemplates/TagViewModel.cshtml | 10 + .../Views/Shared/_DancingGoatLayout.cshtml | 4 + .../Views/Shared/_LandingPageLayout.cshtml | 5 + .../DancingGoat/Views/_ViewImports.cshtml | 3 +- .../510968cb-ef94-433c-ac43-2ae7679e92d4.jpg | Bin 0 -> 23639 bytes .../a0fee33a-d7bc-4f4e-ad0b-5154e0c131b3.jpg | Bin 0 -> 23639 bytes .../12d13cb4-6639-4166-9de1-8a1377cc840d.jpg | Bin 0 -> 21768 bytes .../390a5c69-11e2-41f0-9cb0-a716af074393.jpg | Bin 0 -> 25422 bytes .../6af2458f-e1b7-4d0c-b0aa-769f0e677551.jpg | Bin 0 -> 25422 bytes .../c7037ecc-202b-423a-bce7-12d010eb7c2f.jpg | Bin 0 -> 21768 bytes examples/DancingGoat/packages.lock.json | 502 ++++++++---------- .../wwwroot/Content/Styles/Controls.less | 186 +++++++ .../wwwroot/Content/Styles/Landing-page.css | 11 + .../wwwroot/Content/Styles/Products.less | 132 +++++ .../wwwroot/Content/Styles/Site.css | 352 +++++++++++- .../wwwroot/Content/Styles/Site.less | 4 + .../Content/Styles/TrackingConsent.less | 16 + .../wwwroot/Scripts/formAutoPost.js | 44 ++ .../packages.lock.json | 447 +++++++--------- .../packages.lock.json | 451 ++++++++-------- 125 files changed, 3237 insertions(+), 1363 deletions(-) delete mode 100644 examples/DancingGoat/$CDRepository/repository.config create mode 100644 examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewModel.cs create mode 100644 examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardSchemaFilter.cs create mode 100644 examples/DancingGoat/Controllers/DancingGoatCoffeeController.cs create mode 100644 examples/DancingGoat/Controllers/DancingGoatGrinderController.cs create mode 100644 examples/DancingGoat/Controllers/DancingGoatProductController.cs create mode 100644 examples/DancingGoat/Controllers/SiteMapController.cs delete mode 100644 examples/DancingGoat/Export-DeploymentPackage.ps1 delete mode 100644 examples/DancingGoat/Models/Reusable/Coffee/CoffeeRepository.cs create mode 100644 examples/DancingGoat/Models/Reusable/Grinder/Grinder.generated.cs create mode 100644 examples/DancingGoat/Models/Reusable/Product/ProductRepository.cs create mode 100644 examples/DancingGoat/Models/Reusable/Tag/TagViewModel.cs create mode 100644 examples/DancingGoat/Models/Reusable/Taxonomy/TaxonomyViewModel.cs create mode 100644 examples/DancingGoat/Models/Schema/IProductFields.generated.cs create mode 100644 examples/DancingGoat/Models/WebPage/CoffeePage/CoffeeDetailViewModel.cs create mode 100644 examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.cs create mode 100644 examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.generated.cs create mode 100644 examples/DancingGoat/Models/WebPage/GrinderPage/GrinderDetailViewModel.cs create mode 100644 examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.cs create mode 100644 examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.generated.cs create mode 100644 examples/DancingGoat/Models/WebPage/ProductPage/IProductPage.cs create mode 100644 examples/DancingGoat/Models/WebPage/ProductPage/ProductListItemViewModel.cs create mode 100644 examples/DancingGoat/Models/WebPage/ProductPage/ProductListViewModel.cs create mode 100644 examples/DancingGoat/Models/WebPage/ProductPage/ProductPageRepository.cs create mode 100644 examples/DancingGoat/Models/WebPage/ProductsSection/ProductSectionRepository.cs create mode 100644 examples/DancingGoat/Models/WebPage/ProductsSection/ProductsSection.generated.cs delete mode 100644 examples/DancingGoat/Readme.txt rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/DancingGoatSamplesModule.cs (79%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/IdentityCollectors/SampleContactInfoIdentityCollector.cs (91%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/IdentityCollectors/SampleMemberInfoIdentityCollector.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/CollectedColumn.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/SampleContactDataCollector.cs (80%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/SampleContactDataCollectorCore.cs (97%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/SampleMemberDataCollector.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/SampleMemberDataCollectorCore.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/Writers/HumanReadablePersonalDataWriter.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/Writers/IPersonalDataWriter.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataCollectors/Writers/XmlPersonalDataWriter.cs (100%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataErasers/SampleContactPersonalDataEraser.cs (90%) rename examples/DancingGoat/{DataProtectionSamples => Samples/DataProtection}/PersonalDataErasers/SampleMemberPersonalDataEraser.cs (100%) create mode 100644 examples/DancingGoat/Samples/EmailActivityTracking/EmailActivityTrackingEvaluator.cs delete mode 100644 examples/DancingGoat/StorageInitializationModule.cs create mode 100644 examples/DancingGoat/Views/DancingGoatCoffee/Detail.cshtml create mode 100644 examples/DancingGoat/Views/DancingGoatGrinder/Detail.cshtml create mode 100644 examples/DancingGoat/Views/DancingGoatProduct/Filter.cshtml create mode 100644 examples/DancingGoat/Views/DancingGoatProduct/Index.cshtml create mode 100644 examples/DancingGoat/Views/DancingGoatProduct/ProductsList.cshtml create mode 100644 examples/DancingGoat/Views/Shared/DisplayTemplates/ProductListItem.cshtml create mode 100644 examples/DancingGoat/Views/Shared/EditorTemplates/TagViewModel.cshtml create mode 100644 examples/DancingGoat/assets/ContentItems/1e/1efd72c9-f3ff-4fbf-ac90-f18b7fe7b40e/cc721195-df8f-4799-b974-5ade63036cab/510968cb-ef94-433c-ac43-2ae7679e92d4.jpg create mode 100644 examples/DancingGoat/assets/ContentItems/60/60771371-3371-42cd-a101-8ffb6d90f318/cc721195-df8f-4799-b974-5ade63036cab/a0fee33a-d7bc-4f4e-ad0b-5154e0c131b3.jpg create mode 100644 examples/DancingGoat/assets/ContentItems/8a/8a4b970a-99d0-404a-8e9c-82a188731328/cc721195-df8f-4799-b974-5ade63036cab/12d13cb4-6639-4166-9de1-8a1377cc840d.jpg create mode 100644 examples/DancingGoat/assets/ContentItems/da/da0f6058-65b8-48d1-838d-b4d164839cb9/cc721195-df8f-4799-b974-5ade63036cab/390a5c69-11e2-41f0-9cb0-a716af074393.jpg create mode 100644 examples/DancingGoat/assets/ContentItems/dd/dde0b153-206f-4adc-924a-8d6e16a7df9e/cc721195-df8f-4799-b974-5ade63036cab/6af2458f-e1b7-4d0c-b0aa-769f0e677551.jpg create mode 100644 examples/DancingGoat/assets/ContentItems/fe/fe59453e-5e59-422f-97b7-0da25ac54354/cc721195-df8f-4799-b974-5ade63036cab/c7037ecc-202b-423a-bce7-12d010eb7c2f.jpg create mode 100644 examples/DancingGoat/wwwroot/Content/Styles/Controls.less create mode 100644 examples/DancingGoat/wwwroot/Content/Styles/Products.less create mode 100644 examples/DancingGoat/wwwroot/Scripts/formAutoPost.js diff --git a/Directory.Packages.props b/Directory.Packages.props index c68d9ca..56ef35c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,10 +7,10 @@ true - - - - + + + + diff --git a/examples/DancingGoat/$CDRepository/repository.config b/examples/DancingGoat/$CDRepository/repository.config deleted file mode 100644 index b764a63..0000000 --- a/examples/DancingGoat/$CDRepository/repository.config +++ /dev/null @@ -1,94 +0,0 @@ - - - - - CreateUpdate - - - - - - - - cms.class - cms.consent - cms.contenttype - cms.contentlanguage - cms.scheduledtask - cms.settingscategory - cms.settingskey - cms.user - cms.role - cms.channel - cms.websitechannel - cms.websitecaptchasettings - cms.contentitem - cms.pagetemplateconfiguration - - cms.headlesschannel - cms.headlessitem - - media.library - media.file - - om.activitytype - om.recipientlist - om.contactgroup - cms.formclass - cms.formfeaturedfield - - emaillibrary.emailchannel - emaillibrary.emailchannelsender - emaillibrary.emailconfiguration - emaillibrary.emailtemplatecontenttype - emaillibrary.recipientlistsettings - emaillibrary.sendconfiguration - emaillibrary.emailtemplate - - ma.automationprocess - ma.automationstep - ma.automationaction - ma.automationtemplate - cms.objectworkflowtrigger - cms.workflowtransition - - cms.webpageitem - cms.webpageurlpath - cms.webpageformerurlpath - om.trackedwebsite - cms.form - - cms.contentworkflow - cms.contentworkflowcontenttype - cms.contentworkflowstep - cms.contentworkflowsteprole - - - - - - - - - - cms.contentitemcommondata - - - - - - - - \ No newline at end of file diff --git a/examples/DancingGoat/.config/dotnet-tools.json b/examples/DancingGoat/.config/dotnet-tools.json index 62b7618..d6bdc96 100644 --- a/examples/DancingGoat/.config/dotnet-tools.json +++ b/examples/DancingGoat/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "kentico.xperience.dbmanager": { - "version": "28.3.1", + "version": "29.5.3", "commands": [ "kentico-xperience-dbmanager" ] diff --git a/examples/DancingGoat/AdminComponents/Apps/SampleDataGenerator/SampleDataGeneratorApplication.cs b/examples/DancingGoat/AdminComponents/Apps/SampleDataGenerator/SampleDataGeneratorApplication.cs index f4435ee..92a0588 100644 --- a/examples/DancingGoat/AdminComponents/Apps/SampleDataGenerator/SampleDataGeneratorApplication.cs +++ b/examples/DancingGoat/AdminComponents/Apps/SampleDataGenerator/SampleDataGeneratorApplication.cs @@ -41,9 +41,9 @@ public class SampleDataGeneratorApplication : OverviewPageBase private readonly IFormBuilderConfigurationSerializer formBuilderConfigurationSerializer; private readonly IEventLogService eventLogService; private readonly IInfoProvider consentInfoProvider; - private readonly IBizFormInfoProvider bizFormInfoProvider; - private readonly IContactGroupInfoProvider contactGroupInfoProvider; - private readonly ISettingsKeyInfoProvider settingsKeyInfoProvider; + private readonly IInfoProvider bizFormInfoProvider; + private readonly IInfoProvider contactGroupInfoProvider; + private readonly IInfoProvider settingsKeyInfoProvider; private readonly IInfoProvider websiteChannelInfoProvider; @@ -61,9 +61,9 @@ public SampleDataGeneratorApplication( IFormBuilderConfigurationSerializer formBuilderConfigurationSerializer, IEventLogService eventLogService, IInfoProvider consentInfoProvider, - IBizFormInfoProvider bizFormInfoProvider, - IContactGroupInfoProvider contactGroupInfoProvider, - ISettingsKeyInfoProvider settingsKeyInfoProvider, + IInfoProvider bizFormInfoProvider, + IInfoProvider contactGroupInfoProvider, + IInfoProvider settingsKeyInfoProvider, IInfoProvider websiteChannelInfoProvider) { this.formBuilderConfigurationSerializer = formBuilderConfigurationSerializer; diff --git a/examples/DancingGoat/Components/ViewComponents/Articles/ArticlesViewComponent.cs b/examples/DancingGoat/Components/ViewComponents/Articles/ArticlesViewComponent.cs index 757ced9..3675cda 100644 --- a/examples/DancingGoat/Components/ViewComponents/Articles/ArticlesViewComponent.cs +++ b/examples/DancingGoat/Components/ViewComponents/Articles/ArticlesViewComponent.cs @@ -43,7 +43,7 @@ public async Task InvokeAsync(WebPageRelatedItem articl { var languageName = currentLanguageRetriever.Get(); - var articlesSection = await articlesSectionRepository.GetArticlesSection(articlesSectionItem.WebPageGuid, languageName); + var articlesSection = await articlesSectionRepository.GetArticlesSection(articlesSectionItem.WebPageGuid, languageName, HttpContext.RequestAborted); if (articlesSection == null) { return View("~/Components/ViewComponents/Articles/Default.cshtml", ArticlesSectionViewModel.GetViewModel(null, Enumerable.Empty(), string.Empty)); @@ -55,11 +55,11 @@ public async Task InvokeAsync(WebPageRelatedItem articl var models = new List(); foreach (var article in articlePages) { - var model = await ArticleViewModel.GetViewModel(article, urlRetriever, languageName); + var model = await ArticleViewModel.GetViewModel(article, urlRetriever, languageName, HttpContext.RequestAborted); models.Add(model); } - var url = (await urlRetriever.Retrieve(articlesSection, languageName)).RelativePath; + var url = (await urlRetriever.Retrieve(articlesSection, languageName, HttpContext.RequestAborted)).RelativePath; var viewModel = ArticlesSectionViewModel.GetViewModel(articlesSection, models, url); diff --git a/examples/DancingGoat/Components/ViewComponents/Cafe/Default.cshtml b/examples/DancingGoat/Components/ViewComponents/Cafe/Default.cshtml index 144930d..adf016c 100644 --- a/examples/DancingGoat/Components/ViewComponents/Cafe/Default.cshtml +++ b/examples/DancingGoat/Components/ViewComponents/Cafe/Default.cshtml @@ -8,13 +8,11 @@ } else { - -

@Model.Name

- - @if (!string.IsNullOrEmpty(Model.PhotoPath)) - { - @Model.PhotoShortDescription - } -
+

@Model.Name

+ + @if (!string.IsNullOrEmpty(Model.PhotoPath)) + { + @Model.PhotoShortDescription + } } \ No newline at end of file diff --git a/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewComponent.cs b/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewComponent.cs index 2babe51..21e673c 100644 --- a/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewComponent.cs +++ b/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewComponent.cs @@ -1,8 +1,13 @@ using System.Collections.Generic; -using System.Linq; +using System.Threading.Tasks; +using System.Threading; + +using CMS.Websites; using DancingGoat.Models; +using Kentico.Content.Web.Mvc.Routing; + using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ViewComponents; @@ -13,9 +18,37 @@ namespace DancingGoat.ViewComponents /// public class CafeCardSectionViewComponent : ViewComponent { - public ViewViewComponentResult Invoke(IEnumerable cafes) + private readonly ContactsPageRepository contactsPageRepository; + private readonly IWebPageUrlRetriever webPageUrlRetriever; + private readonly IPreferredLanguageRetriever currentLanguageRetriever; + + + public CafeCardSectionViewComponent(IPreferredLanguageRetriever currentLanguageRetriever, ContactsPageRepository contactsPageRepository, IWebPageUrlRetriever webPageUrlRetriever) + { + this.currentLanguageRetriever = currentLanguageRetriever; + this.contactsPageRepository = contactsPageRepository; + this.webPageUrlRetriever = webPageUrlRetriever; + } + + + public async Task InvokeAsync(IEnumerable cafes) { - return View("~/Components/ViewComponents/CafeCardSection/Default.cshtml", cafes.Take(3)); + string languageName = currentLanguageRetriever.Get(); + string contactsPagePath = await GetContactsPagePath(languageName, HttpContext.RequestAborted); + var model = new CafeCardSectionViewModel(cafes, contactsPagePath); + + return View("~/Components/ViewComponents/CafeCardSection/Default.cshtml", model); + } + + + private async Task GetContactsPagePath(string languageName, CancellationToken cancellationToken) + { + const string CONTACTS_PAGE_TREE_PATH = "/Contacts"; + + var contactsPage = await contactsPageRepository.GetContactsPage(CONTACTS_PAGE_TREE_PATH, languageName, cancellationToken); + var url = await webPageUrlRetriever.Retrieve(contactsPage, cancellationToken); + + return url.RelativePath; } } } diff --git a/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewModel.cs b/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewModel.cs new file mode 100644 index 0000000..b913e19 --- /dev/null +++ b/examples/DancingGoat/Components/ViewComponents/CafeCardSection/CafeCardSectionViewModel.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +using DancingGoat.Models; + +namespace DancingGoat.ViewComponents +{ + public record CafeCardSectionViewModel(IEnumerable Cafes, string ContactsPagePath) + { + } +} diff --git a/examples/DancingGoat/Components/ViewComponents/CafeCardSection/Default.cshtml b/examples/DancingGoat/Components/ViewComponents/CafeCardSection/Default.cshtml index 4d3463d..74b7e0d 100644 --- a/examples/DancingGoat/Components/ViewComponents/CafeCardSection/Default.cshtml +++ b/examples/DancingGoat/Components/ViewComponents/CafeCardSection/Default.cshtml @@ -1,15 +1,17 @@ -@using DancingGoat.Models -@model IEnumerable +@using DancingGoat.ViewComponents +@model CafeCardSectionViewModel

@HtmlLocalizer["Taste our coffee"]

- @foreach (var cafe in Model) + @foreach (var cafe in Model.Cafes) {
- + + +
}
diff --git a/examples/DancingGoat/Components/ViewComponents/TrackingConsent/TrackingConsentViewComponent.cs b/examples/DancingGoat/Components/ViewComponents/TrackingConsent/TrackingConsentViewComponent.cs index 5aba6e7..dc70e54 100644 --- a/examples/DancingGoat/Components/ViewComponents/TrackingConsent/TrackingConsentViewComponent.cs +++ b/examples/DancingGoat/Components/ViewComponents/TrackingConsent/TrackingConsentViewComponent.cs @@ -54,7 +54,7 @@ public async Task InvokeAsync() { ConsentShortText = (await consent.GetConsentTextAsync(currentLanguage)).ShortText, ReturnPageUrl = webPageDataContextRetriever.TryRetrieve(out var currentWebPageContext) - ? (await urlRetriever.Retrieve(currentWebPageContext.WebPage.WebPageItemID, currentLanguage)).RelativePath + ? (await urlRetriever.Retrieve(currentWebPageContext.WebPage.WebPageItemID, currentLanguage, cancellationToken: HttpContext.RequestAborted)).RelativePath : (HttpContext.Request.PathBase + HttpContext.Request.Path).Value }; @@ -62,7 +62,7 @@ public async Task InvokeAsync() if ((contact != null) && consentAgreementService.IsAgreed(contact, consent)) { consentModel.IsConsentAgreed = true; - consentModel.PrivacyPageUrl = Url.Content((await urlRetriever.Retrieve(PrivacyPageConstants.PRIVACY_PAGE_TREE_PATH, websiteChannelContext.WebsiteChannelName, currentLanguage)).RelativePath); + consentModel.PrivacyPageUrl = Url.Content((await urlRetriever.Retrieve(PrivacyPageConstants.PRIVACY_PAGE_TREE_PATH, websiteChannelContext.WebsiteChannelName, currentLanguage, cancellationToken: HttpContext.RequestAborted)).RelativePath); } return View("~/Components/ViewComponents/TrackingConsent/Default.cshtml", consentModel); diff --git a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardListViewModel.cs b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardListViewModel.cs index 4089355..7c37d68 100644 --- a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardListViewModel.cs +++ b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardListViewModel.cs @@ -21,7 +21,7 @@ public class ProductCardListViewModel /// /// Collection of products. /// Hydrated ViewModel. - public static ProductCardListViewModel GetViewModel(IEnumerable products) + public static ProductCardListViewModel GetViewModel(IEnumerable products) { var productModels = new List(); diff --git a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardProperties.cs b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardProperties.cs index 009ac5b..cf4a8d3 100644 --- a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardProperties.cs +++ b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardProperties.cs @@ -2,8 +2,6 @@ using CMS.ContentEngine; -using DancingGoat.Models; - using Kentico.PageBuilder.Web.Mvc; using Kentico.Xperience.Admin.Base.FormAnnotations; @@ -17,7 +15,7 @@ public class ProductCardProperties : IWidgetProperties /// /// Selected products. /// - [ContentItemSelectorComponent(Coffee.CONTENT_TYPE_NAME, Label = "Selected products", Order = 1)] + [ContentItemSelectorComponent(typeof(ProductCardSchemaFilter), Label = "Selected products", Order = 1)] public IEnumerable SelectedProducts { get; set; } = new List(); } } diff --git a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardSchemaFilter.cs b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardSchemaFilter.cs new file mode 100644 index 0000000..9f36e5f --- /dev/null +++ b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardSchemaFilter.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +using DancingGoat.Models; + +using Kentico.Xperience.Admin.Base.FormAnnotations; + +namespace DancingGoat.Widgets +{ + /// + /// Product card widget filter for content item selector. + /// + public class ProductCardSchemaFilter : IReusableFieldSchemasFilter + { + /// + IEnumerable IReusableFieldSchemasFilter.AllowedSchemaNames => new List { IProductFields.REUSABLE_FIELD_SCHEMA_NAME }; + } +} diff --git a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardViewModel.cs b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardViewModel.cs index ec7f25f..19936a5 100644 --- a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardViewModel.cs +++ b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardViewModel.cs @@ -32,7 +32,7 @@ public class ProductCardViewModel /// /// Product. /// Hydrated ViewModel. - public static ProductCardViewModel GetViewModel(Coffee product) + public static ProductCardViewModel GetViewModel(IProductFields product) { if (product == null) { @@ -41,9 +41,9 @@ public static ProductCardViewModel GetViewModel(Coffee product) return new ProductCardViewModel { - Heading = product.CoffeeName, - ImagePath = (product.CoffeeImage.FirstOrDefault())?.ImageFile.Url, - Text = product.CoffeeShortDescription + Heading = product.ProductFieldsName, + ImagePath = product.ProductFieldsImage.FirstOrDefault()?.ImageFile.Url, + Text = product.ProductFieldsShortDescription }; } } diff --git a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardWidgetViewComponent.cs b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardWidgetViewComponent.cs index 0a0429a..04a3e77 100644 --- a/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardWidgetViewComponent.cs +++ b/examples/DancingGoat/Components/Widgets/ProductCardWidget/ProductCardWidgetViewComponent.cs @@ -1,7 +1,8 @@ -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Threading.Tasks; +using CMS.ContentEngine; + using DancingGoat.Models; using DancingGoat.Widgets; @@ -26,7 +27,7 @@ public class ProductCardWidgetViewComponent : ViewComponent public const string IDENTIFIER = "DancingGoat.LandingPage.ProductCardWidget"; - private readonly CoffeeRepository repository; + private readonly ProductRepository repository; private readonly IPreferredLanguageRetriever currentLanguageRetriever; @@ -35,7 +36,7 @@ public class ProductCardWidgetViewComponent : ViewComponent /// /// Repository for retrieving products. /// Retrieves preferred language name for the current request. Takes language fallback into account. - public ProductCardWidgetViewComponent(CoffeeRepository repository, IPreferredLanguageRetriever currentLanguageRetriever) + public ProductCardWidgetViewComponent(ProductRepository repository, IPreferredLanguageRetriever currentLanguageRetriever) { this.repository = repository; this.currentLanguageRetriever = currentLanguageRetriever; @@ -46,8 +47,8 @@ public async Task InvokeAsync(ProductCardProperties pro { var languageName = currentLanguageRetriever.Get(); var selectedProductGuids = properties.SelectedProducts.Select(i => i.Identifier).ToList(); - IEnumerable products = (await repository.GetCoffees(selectedProductGuids, languageName)) - .OrderBy(p => selectedProductGuids.IndexOf(p.SystemFields.ContentItemGUID)); + var products = (await repository.GetProducts(selectedProductGuids, languageName)) + .OrderBy(p => selectedProductGuids.IndexOf(((IContentItemFieldsSource)p).SystemFields.ContentItemGUID)); var model = ProductCardListViewModel.GetViewModel(products); return View("~/Components/Widgets/ProductCardWidget/_ProductCardWidget.cshtml", model); diff --git a/examples/DancingGoat/Controllers/DancingGoatCoffeeController.cs b/examples/DancingGoat/Controllers/DancingGoatCoffeeController.cs new file mode 100644 index 0000000..75421af --- /dev/null +++ b/examples/DancingGoat/Controllers/DancingGoatCoffeeController.cs @@ -0,0 +1,48 @@ +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Mvc; + +using CMS.ContentEngine; + +using Kentico.Content.Web.Mvc; +using Kentico.Content.Web.Mvc.Routing; + +using DancingGoat; +using DancingGoat.Controllers; +using DancingGoat.Models; + +[assembly: RegisterWebPageRoute(CoffeePage.CONTENT_TYPE_NAME, typeof(DancingGoatCoffeeController), WebsiteChannelNames = new[] { DancingGoatConstants.WEBSITE_CHANNEL_NAME }, ActionName = nameof(DancingGoatCoffeeController.Detail))] + +namespace DancingGoat.Controllers +{ + public class DancingGoatCoffeeController : Controller + { + private readonly ProductPageRepository productPageRepository; + private readonly IWebPageDataContextRetriever webPageDataContextRetriever; + private readonly IPreferredLanguageRetriever currentLanguageRetriever; + private readonly ITaxonomyRetriever taxonomyRetriever; + + + public DancingGoatCoffeeController(ProductPageRepository productPageRepository, + IWebPageDataContextRetriever webPageDataContextRetriever, + IPreferredLanguageRetriever currentLanguageRetriever, + ITaxonomyRetriever taxonomyRetriever) + { + this.productPageRepository = productPageRepository; + this.webPageDataContextRetriever = webPageDataContextRetriever; + this.currentLanguageRetriever = currentLanguageRetriever; + this.taxonomyRetriever = taxonomyRetriever; + } + + + public async Task Detail() + { + var languageName = currentLanguageRetriever.Get(); + var webPageItemId = webPageDataContextRetriever.Retrieve().WebPage.WebPageItemID; + + var coffee = await productPageRepository.GetProduct(CoffeePage.CONTENT_TYPE_NAME, webPageItemId, languageName, cancellationToken: HttpContext.RequestAborted); + + return View(await CoffeeDetailViewModel.GetViewModel(coffee, languageName, taxonomyRetriever)); + } + } +} diff --git a/examples/DancingGoat/Controllers/DancingGoatContactsController.cs b/examples/DancingGoat/Controllers/DancingGoatContactsController.cs index 24e2191..ceadd78 100644 --- a/examples/DancingGoat/Controllers/DancingGoatContactsController.cs +++ b/examples/DancingGoat/Controllers/DancingGoatContactsController.cs @@ -51,19 +51,22 @@ public async Task Index(CancellationToken cancellationToken) private async Task GetIndexViewModel(ContactsPage contactsPage, CancellationToken cancellationToken) { var languageName = currentLanguageRetriever.Get(); - var cafes = await cafeRepository.GetCompanyCafes(4, languageName, cancellationToken); + var cafes = (await cafeRepository.GetCafes(0, languageName, cancellationToken)).ToList(); + var companyCafes = cafes.Where(c => c.CafeIsCompanyCafe).OrderBy(c => c.CafeName); + var partnerCafes = cafes.Where(c => !c.CafeIsCompanyCafe).OrderBy(c => c.CafeCity); var contact = await contactRepository.GetContact(languageName, HttpContext.RequestAborted); return new ContactsIndexViewModel { CompanyContact = ContactViewModel.GetViewModel(contact), - CompanyCafes = GetCompanyCafesModel(cafes), + CompanyCafes = GetCafesModel(companyCafes), + PartnerCafes = GetCafesModel(partnerCafes), WebPage = contactsPage }; } - private List GetCompanyCafesModel(IEnumerable cafes) + private List GetCafesModel(IEnumerable cafes) { return cafes.Select(cafe => CafeViewModel.GetViewModel(cafe)).ToList(); } diff --git a/examples/DancingGoat/Controllers/DancingGoatGrinderController.cs b/examples/DancingGoat/Controllers/DancingGoatGrinderController.cs new file mode 100644 index 0000000..be3f1a4 --- /dev/null +++ b/examples/DancingGoat/Controllers/DancingGoatGrinderController.cs @@ -0,0 +1,48 @@ +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Mvc; + +using CMS.ContentEngine; + +using Kentico.Content.Web.Mvc; +using Kentico.Content.Web.Mvc.Routing; + +using DancingGoat; +using DancingGoat.Controllers; +using DancingGoat.Models; + +[assembly: RegisterWebPageRoute(GrinderPage.CONTENT_TYPE_NAME, typeof(DancingGoatGrinderController), WebsiteChannelNames = new[] { DancingGoatConstants.WEBSITE_CHANNEL_NAME }, ActionName = nameof(DancingGoatGrinderController.Detail))] + +namespace DancingGoat.Controllers +{ + public class DancingGoatGrinderController : Controller + { + private readonly ProductPageRepository productPageRepository; + private readonly IWebPageDataContextRetriever webPageDataContextRetriever; + private readonly IPreferredLanguageRetriever currentLanguageRetriever; + private readonly ITaxonomyRetriever taxonomyRetriever; + + + public DancingGoatGrinderController(ProductPageRepository productPageRepository, + IWebPageDataContextRetriever webPageDataContextRetriever, + IPreferredLanguageRetriever currentLanguageRetriever, + ITaxonomyRetriever taxonomyRetriever) + { + this.productPageRepository = productPageRepository; + this.webPageDataContextRetriever = webPageDataContextRetriever; + this.currentLanguageRetriever = currentLanguageRetriever; + this.taxonomyRetriever = taxonomyRetriever; + } + + + public async Task Detail() + { + var languageName = currentLanguageRetriever.Get(); + var webPageItemId = webPageDataContextRetriever.Retrieve().WebPage.WebPageItemID; + + var grinder = await productPageRepository.GetProduct(GrinderPage.CONTENT_TYPE_NAME, webPageItemId, languageName, cancellationToken: HttpContext.RequestAborted); + + return View(await GrinderDetailViewModel.GetViewModel(grinder, languageName, taxonomyRetriever)); + } + } +} diff --git a/examples/DancingGoat/Controllers/DancingGoatProductController.cs b/examples/DancingGoat/Controllers/DancingGoatProductController.cs new file mode 100644 index 0000000..511c03d --- /dev/null +++ b/examples/DancingGoat/Controllers/DancingGoatProductController.cs @@ -0,0 +1,97 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +using CMS.ContentEngine; +using CMS.Websites; + +using DancingGoat; +using DancingGoat.Controllers; +using DancingGoat.Models; + +using Kentico.Content.Web.Mvc; +using Kentico.Content.Web.Mvc.Routing; + +using Microsoft.AspNetCore.Mvc; + +[assembly: RegisterWebPageRoute(ProductsSection.CONTENT_TYPE_NAME, typeof(DancingGoatProductController), WebsiteChannelNames = new[] { DancingGoatConstants.WEBSITE_CHANNEL_NAME })] + +namespace DancingGoat.Controllers +{ + public class DancingGoatProductController : Controller + { + private readonly ProductSectionRepository productSectionRepository; + private readonly ProductPageRepository productPageRepository; + private readonly ProductRepository productRepository; + private readonly ITaxonomyRetriever taxonomyRetriever; + private readonly IWebPageUrlRetriever urlRetriever; + private readonly IWebPageDataContextRetriever webPageDataContextRetriever; + private readonly IPreferredLanguageRetriever currentLanguageRetriever; + + + public DancingGoatProductController( + ProductSectionRepository productSectionRepository, + ProductPageRepository productPageRepository, + ProductRepository productRepository, + IWebPageUrlRetriever urlRetriever, + IPreferredLanguageRetriever currentLanguageRetriever, + IWebPageDataContextRetriever webPageDataContextRetriever, + ITaxonomyRetriever taxonomyRetriever) + { + this.productSectionRepository = productSectionRepository; + this.productPageRepository = productPageRepository; + this.productRepository = productRepository; + this.urlRetriever = urlRetriever; + this.webPageDataContextRetriever = webPageDataContextRetriever; + this.currentLanguageRetriever = currentLanguageRetriever; + this.taxonomyRetriever = taxonomyRetriever; + } + + + public async Task Index() + { + var languageName = currentLanguageRetriever.Get(); + var webPage = webPageDataContextRetriever.Retrieve().WebPage; + var productsSection = await productSectionRepository.GetProductsSection(webPage.WebPageItemID, languageName, HttpContext.RequestAborted); + + var products = await GetProducts(languageName, productsSection); + + var taxonomies = new Dictionary(); + var taxonomyNames = new List { "CoffeeProcessing", "CoffeeTastes", "GrinderManufacturer", "GrinderType" }; + foreach (var taxonomyName in taxonomyNames) + { + var taxonomy = await taxonomyRetriever.RetrieveTaxonomy(taxonomyName, languageName); + if (taxonomy.Tags.Any()) + { + taxonomies.Add(taxonomyName, TaxonomyViewModel.GetViewModel(taxonomy)); + } + } + + var listModel = new ProductListViewModel(products, taxonomies); + + return View(listModel); + } + + + [HttpPost($"{{{WebPageRoutingOptions.LANGUAGE_ROUTE_VALUE_KEY}}}/{{controller}}/{{action}}")] + [ValidateAntiForgeryToken] + public async Task Filter(IDictionary filter) + { + var languageName = currentLanguageRetriever.Get(); + var webPage = webPageDataContextRetriever.Retrieve().WebPage; + var productsSection = await productSectionRepository.GetProductsSection(webPage.WebPageItemID, languageName, HttpContext.RequestAborted); + + var products = await GetProducts(languageName, productsSection, filter); + return PartialView("ProductsList", products); + } + + + private async Task> GetProducts(string languageName, ProductsSection productsSection, IDictionary filter = null) + { + var products = await productRepository.GetProducts(languageName, filter ?? new Dictionary(), cancellationToken: HttpContext.RequestAborted); + var productPages = await productPageRepository.GetProducts(productsSection.SystemFields.WebPageItemTreePath, languageName, products, cancellationToken: HttpContext.RequestAborted); + + return productPages.Select(productPage => ProductListItemViewModel.GetViewModel(productPage, urlRetriever, languageName).Result); + } + } +} diff --git a/examples/DancingGoat/Controllers/SiteMapController.cs b/examples/DancingGoat/Controllers/SiteMapController.cs new file mode 100644 index 0000000..28d5fdc --- /dev/null +++ b/examples/DancingGoat/Controllers/SiteMapController.cs @@ -0,0 +1,117 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Xml; + +using CMS.ContentEngine; +using CMS.DataEngine; +using CMS.Websites; + +using DancingGoat.Models; + +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.AspNetCore.Mvc; + +namespace DancingGoat.Controllers +{ + /// + /// Controller for generating a sitemap. + /// + public class SiteMapController : Controller + { + private const string XML_TYPE = "application/xml"; + + private readonly IContentQueryExecutor contentQueryExecutor; + private readonly IWebPageUrlRetriever urlRetriever; + private readonly IInfoProvider contentLanguageProvider; + + + /// + /// Initializes a new instance of the class. + /// + public SiteMapController(IContentQueryExecutor contentQueryExecutor, IWebPageUrlRetriever urlRetriever, IInfoProvider contentLanguageProvider) + { + this.contentQueryExecutor = contentQueryExecutor; + this.urlRetriever = urlRetriever; + this.contentLanguageProvider = contentLanguageProvider; + } + + + [HttpGet] + [Route("/sitemap.xml")] + public async Task Index() + { + var options = new ContentQueryExecutionOptions + { + ForPreview = false, + IncludeSecuredItems = false + }; + + var relativeUrls = new List(); + + foreach (var language in contentLanguageProvider.Get().OrderByDescending(i => i.ContentLanguageIsDefault)) + { + var builder = new ContentItemQueryBuilder().ForContentTypes(p => p.OfReusableSchema("SEOFields").ForWebsite()) + .InLanguage(language.ContentLanguageName, false) + .Parameters(p => p.Columns(nameof(IWebPageContentQueryDataContainer.WebPageItemID)) + .Where(w => w.WhereTrue(nameof(ISEOFields.SEOFieldsAllowSearchIndexing)))); + + var pageIdentifiers = await contentQueryExecutor.GetWebPageResult(builder, i => i.WebPageItemID, options, HttpContext.RequestAborted); + var languageUrls = await GetWebPageRelativeUrls(pageIdentifiers, language.ContentLanguageName); + + relativeUrls.AddRange(languageUrls); + } + + var absoluteUrls = GetAbsoluteUrls(relativeUrls); + var document = GetSitemap(absoluteUrls); + + return Content(document.OuterXml, XML_TYPE); + } + + + private async Task> GetWebPageRelativeUrls(IEnumerable pageIdentifiers, string languageName) + { + var relativeUrls = new List(); + + foreach (var pageIdentifier in pageIdentifiers) + { + var webPageUrl = await urlRetriever.Retrieve(pageIdentifier, languageName, false, HttpContext.RequestAborted); + relativeUrls.Add(webPageUrl.RelativePath.TrimStart('~')); + } + + return relativeUrls; + } + + + private IEnumerable GetAbsoluteUrls(IEnumerable relativeUrls) + { + var request = HttpContext.Request; + + return relativeUrls.Select(i => UriHelper.BuildAbsolute(request.Scheme, request.Host, path: i)).OrderBy(i => i); + } + + + private static XmlDocument GetSitemap(IEnumerable urls) + { + var document = new XmlDocument(); + + var urlSet = document.CreateElement("urlset"); + urlSet.SetAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"); + + foreach (var url in urls) + { + var element = document.CreateElement("url"); + var location = document.CreateElement("loc"); + location.InnerText = url; + + element.AppendChild(location); + urlSet.AppendChild(element); + } + + document.AppendChild(urlSet); + + return document; + } + } +} diff --git a/examples/DancingGoat/DancingGoatConstants.cs b/examples/DancingGoat/DancingGoatConstants.cs index ad53549..774b6b1 100644 --- a/examples/DancingGoat/DancingGoatConstants.cs +++ b/examples/DancingGoat/DancingGoatConstants.cs @@ -8,7 +8,7 @@ internal static class DancingGoatConstants /// The constraint ensures that broken URLs lead to a "404 page not found" page and are not handled by a controller dedicated to the component or /// to a page handled by the content tree-based router (which would lead to an exception). /// - public const string CONSTRAINT_FOR_NON_ROUTER_PAGE_CONTROLLERS = "Account|Consent"; + public const string CONSTRAINT_FOR_NON_ROUTER_PAGE_CONTROLLERS = "Account|Consent|SiteMap"; public const string DEFAULT_ROUTE_NAME = "default"; diff --git a/examples/DancingGoat/Data/Template.zip b/examples/DancingGoat/Data/Template.zip index 56ee6da27fd4f0bb223ede507d805aee054e0dd7..2c7f8f33b7512d3eebb7331a26679e1d1ae1685c 100644 GIT binary patch delta 234013 zcmZ^~bzD_j_dQH^cXxM(ba!`3OLv1DKvJ4RcefzjNF&`XlG5EF`X1!o`+e^HeO~@y zx!7lK_Z&0E8grhT+G>c~_GSnaRRu^WEU=d!E@OGU1QcedKfgtIUw`}ZAU7Gx>!rFe zyHr7gfjuX5(gMEmpb7JeuA4G+3;8t4`OzQWz)ZZMk6w{OqZRc-Xqk~6&7jaqysW;o z6}nD%L?BlG!f0pS8jCvkk!ZrX>*1*g@cY-h3)fWm772%z#CJVW=RRO`l-O?RInbd> zR$ri4Q`bcd{JRbD9g|sfcdI*f0UnVJx1X-hoAtT5+}vvv0x6K&~Rk@tBNe1yn-KJ*q@A zl@V3?;hPWyL$* zoM7E&vCy#N>E}hP|$HT*!aA+?)>?ZvyWwD~Vu@k;gO>!u^ zd<4kU88iJW5(7<;-Gu4Ub5Dn@zC8&L`h!dlV===9J1|bbxI=Qfa`S!0cvfwj`!+dw|;y=zC^v z8?a1DXTumv8|Y~ERjnJr64TN~YXeT;HB<|w88DSD=MkjP(F{AfD3u4r@vFD1THbQO zasWz5Dc>46oBBozJ|rl4yrDg(9c|y_)^qk{v8E=ujk99I4X)uXB-tS?8MNK8$mRGM zcNL<;@)OBtgD%E*qWAGw@*qS-RKk)xis{RCQ&ti&RZV%#&bN7@@o{=sL!N{L%}NTu z{V9`0s8)J-!>P!utLnk3WZ9>AMRjOp_^*H*X7h`LX18vkg^`^Ifz*oA75>3lce5UY zCJlAV*_BMo1EJOd{|=*O&NBSuC(1zAi3AcA(ula3sslO|6_${=%BGUSI*#(o{H157&(@>Cs1SSLhKmY9>Z>AP^){xqg-)mOO`ph1|CMXC`i zs)yGjXPT7qvb^&Zm9g}~cMYVQsNT9Ok^Omg$`Nz6qg(n(z|epj^|8R!Tu4T)YN|c#+fg~E62X+jJjdZ7*1MO zMdAHpU3jbVk(7e3wtHyvDa`2R$isp24=o-4wOaU!{L%0Ac~8#_E$^;6GgC$;qY>7xuC@~^OBzqYFNm38Y3|6022u4)H&HlNYthnk^xA?+{pHs*sqtowQJrZ5}b zL6;%1`g%OjQF+Qs;PH^-antdE^#8Iv2Pn$}?O@(O{aKX5@V_p0Vfg+ee4qm?E$}l2 z4)853!rvP*uZtE~rN4J*foyPOum5<26G=Tkl7|Im!2R`sGC1YG|D^i5P=;4~UEIQp zq~>`;!2GA`0F~iIaNfDvI9gb`vi{$H^`#I2Z{by5KP!iz@w&)E(0pAy!cnFMkSS0C zg%SUHv?8L&pVz66L+k{9U8y3s{2g^?mV3YK!BEI>Vuj* zUHvK+6*$VvzD`i9nglo)7#jqzR?4K_0mlOz`DMS;?As?&(EcURRN1s%6;JK;aw5{| zB{9%8bkbJ~p&9TwmDj&YzKHLofs6{U-7U z;WMJmm^MijONlN?GdZ84NXm7}D8v&9+6X(>1-V4tuG?QsH}(ji2v}YVDi%^9sk%`n zeV^#-OfG`Moxi~bY_G8dcR69h9u*0pWUmk_#v(y932NL;nR-O6FgO(j0>c9TMVhvZPt8w7oGBR^PzCce-2MMA!rjidA! zdJsGG=m*h28yZY?M|ra1q@-D@?3v#AyP3ih)2py=!hl;{Vn?TT+@_YyrdFIFjMyzWnE5Tuc$h8O+4wBk&A9k@`Aq*{l%Vv2QRrRh z_a1N7(F%ashb=S=xZ>;ZDe-1=pR5;rt2fmViw^!L#d_H#0|RN@;KD@ zHs$4&mg+Di{;Z(=jYe!>Xd|^zc)Cue9?t#%$VrRl*(0a&Ta=<1odQcU_52(@bdF-oszU?Ytiz6k*2`9YfK`ni! zl$sdJ&j0*dUF6>&)f-d&ZFMo4&eu>pi-`C}4vfXHthcArc-_*742mTM<|56f5m3o_uTHAjv>@-u!`{j9vY8 zJHZ4a{3VwEgkt>$huZ61c1x{0Umu#w_1D&kH+~>7a0<<`-k3+_ucy}XcKo$+;cx$I z#U}9g-nn4g>qBO9p_X6b{q*J8RD4!e{1$B7+{`@e=A6u2T-<#@(?bNO^nxvL{g@4x2`<-6Hge&PD#-JO00f>1LA^EcQ}$V=A6O(Wu+{@|Z# zyI_zFj`@VF@4nv@j+)jofziO1Czg}xv6!pdBanqAmCJ5ZDWq@ADcm)!jx!=WoiCfU zwu|mPIurOpJf>W$0%w1pT_gU-bE<{AUp+x{_@?=fCwvqA+Y{Kt|3>0WqT$v4guVlr z|Ac)iza_{o_@ycT!plVF?{Yyd*Yelin*85|BSW$6^-0Pcgbtu5S*KQ7%hS{!D$~8* zT3*PZ>m}1%fuJ=@)whwStuIq$e08Fu%^6|R7iUg|w*@`YMxFk(P>@8!o=Ac|!~7>Z z)oFVE^;BQ2#@Cw~Hs~>vfG&6~FxfhPm5qyb3d5Jzcr6=N{9IgCoLny+WX{jb#c#pO z%xB4O$;@uXX358H!N$dF&ih(6*5v!xu)1*l!)Knjm}8oPs>~bMB!7z0c>AT~jLBvu zv0%REVfCka+rt#?fYTxH@M}V5Vsf!L4RCFA9lNbA zC+Mhu>TWE)vpNL#X3=3zWFu|H^ppvX%ma$hULkN)?xTQL}8MFx+-EHv_a8n zxsa_NGE{BCI0b7F7~T}o$G&u*BtK{uPe~E0{MtDVXfvSA8rQ+QF+2pS`iT0+qnk3g z!iNN9Rt7Q*?|+`-J%-PGmIfpM;?ujpCkafG_{zx_+CA-8NrLVSBubjwIB9MP|6x?G zbrF(Lh`Z;{E2g5uLl6V;^#8mdLhs8927AG+$rwZzi!0&c^vA$4R09&r&=BTNZd}f?Bm>O z=yt6tD;n6dDf?vi6t6PEYLAM7kp~y~F{yFk7BMRAAm`xpz|QwE?)OjOr&HT>-CQ!( zEheEXKG@s-U`;CqW!!LJ#T-?Jzt{EMm+_rCzIb?6grA?QmLnhh66w7G;Pg8klE-dz z3jMZVXgf)%9nW!ZS-(%HsMHndm&nlS>5J=6DCp)`j9R7;$a0Eg-sUZ&)eKCMjYb_| z6J>Y25m|~9`m^bT=&d$z__m{ksa1AkpI-$bP01S zAEl4Of!UYYxyt&17}WlJk?2<7t<%_jd2h0ke4sJyg3N@n=;$S|;gtLj)V7{tRq)E< zLxN({rlO&nGIU)ocEeF>T3DRFoZ9)au0&6`&wX-@cPSjXjR%-XEW@=X>}D{i_M;-V zesh6~gQEQiD_R^jg??>HbqjNsf8%+;A)_GwK67dAHu7v)wz?0ZAT7x%f}L2gipZTN zz;U6{p_#mgPDN;WEUTwRE9=9GnbSB?UGqpi_Kqb|wrTS=0#{AqC8i1kU){Ue9xqft zn|aW31I|ir!X`i=hlQalFnp99u7%XLSWZ?;)IUfhm|dy?_wp;eBv#0_tD-)~Y03{F ztsh3)A14)zwFe~hcB*Unq~N8fX@phfb>X6yR$Pb=g58DoOm`-tQaeHlIx^K0EaA`H z=U}i=DN%3IKah2KVw(nYQiS3{qfCiHon|LpQVj=u_)!7qI2Cm)en!q&zthU1`wI9t z4>2ONlWlQO5K`$Hf{Y%b4mU(OA^~}0bR8tFD%OoUec=;Z!t=zq)FOHgg$e=g-cgp} zeQDxoFU5~66ok{ucY)pJOadJY=PcHqfxz-Sw7ct*h5I8@p321q{;*VGX+WCK0kJ~$ypFUd-)9wZo5m87S(hd`~s_)n~jDTA#Qw7;n%()lw$DS3RFk8lo$4jr8Pou{1fW>F{c!I6lG%gjAWyKCZp8oCQRlr<$5g83o+bO>vq$k@7@tXMiJ> z>M=exLi$kUn`J(yrZI3I7R6&ZT%2mFc?f1Uxa%MQY~>tUV)JN~+REo?rEmBa1UYvi z!`zj)F6rG4yBht!rKekNQ-s#c6oQyL(71eItT?wceqf3vOEkDj3>XslAW8j#=N13v z7h>8X-lt;c$J?Hnpbkz-#+^K7#b`@MfUroaB|DLUak~vxzovxu;g&tj#bf22-d-v}b%)OKYO!{r<05 z-UX6jr`xHH*_a&?o!_FqXf6A~cySc&!4Rr#`WRT1@!hR~Qvi&|#o25peZHyQZKC@$ zjEpDarnX;Q45Li%7qiT~5O`@}yld{~^==I=0OpNY)^hGV#3)Fn+YP)w$d64nSUEnL zL%N~}rlwwL_F%I-P5A@u2y0YXsAJDQM3yAM4S7b+WGyFHrFpgi28m#r^AP(9I`M>> zPUghxKI+SBfBSeKjKh^S@Bru#;TP)S3vjASRgU=G(9%0)WE|Ys+c3*e{|GRxPWJaO z0nC49VA0Q1QxMgR`sX*!4j|g{1Fa5mR(`!568~Op2G|ccD9N$}y&u?0x z9-_WhlVDWBq!+*p&E}sZ&|P1+4*ran#9&0x3{OD&xI&^~RB}%-Ue&yXwu zCRctXr!mEQwH;hEmRx>JQl?`~63$~n=uXjUXlT{bw~!xGhh)vgRZeKlFLL?q00m)y zuu}Wz-{~JmnSNV6uP&?$9I^JpXT7!Z@u^YhP`Oiq;L?8E2t!8E|5!{a)jM}Zo#42^ zDFFAGjxje{fi9Y^i$9F@=FRV9DmvZ6-pT#X{r<+6x)MyA)VV7;=2la`;<4~PzLV@ujmawgNt>v0m#d= z%&tgB!TMVL=A_Rnk1}oi96j9^xg2;)Xn#b&a=A8i7h16h=c)%euz4HMHf_tFLpO%T zv3Nm#5gVGwZ$7}d@dZEB%*;$D+mWfZEk zbEAQ4bYr$32g`dC*e&xZzHRAepD~0qA2zrc`RA{xM23q_z8!BGj2BaEs=G&2l=@;k zt5bHE2?%>xqgfC4e|i%R5q>3UTHfML!BxxVfm}N0S#$4r{?FO|EIB;uD~Q9ygJ>Ev zu-1bdVC7{0A|AOqIl2EKysD!J!J=4eu+M!P0j?xMgHty7SPm2ga4X2Z%wq4vOUs<> zrfF{w<-|fLzRmlr_4x?p{5sa&*+;NU#wX@;7bSvv!y{J`7vxq;k29fo>la|C`C-W# zaixStC9g^>tu*3-p8ST`zggouN>trpR^^jCHW}~W zQrJVTVR}V^d&qzDnrV&q07cL{Z$N;7iGki<-O|~~&Booy71-%P05Em5vT<=VF-eU2s`3X>wD-Ihq;O{jy1I_=#q16%*HXZyfbP$@A41n) za0-8ApavvKD5%=ISJ{zrcfJ?(L@^iUc`a|9(ZDo_wGpMZP1jkTJJ$SI#vkS6M4{G{QpO0K zJc6C{eweM`=}deEH_TZL7bC->+GUM=GbkB=R&%H?b<0k?@xyJMV8moAWK3r4hV8Ok z22H6}6svxUe1Zy@KE{6S%@oN4PKf@OQ*x36`J2DQq&v9djJY8RL702|bAN!c> zN~(%1@PBU7CG%a&oxu_1QmzjXv17o6h^h0+^20;43?>|2RsM{=j$PYF&N5T9z#~fs zxS~Gvr$)%7l5M)k_!_na?a*?@wG9>~dO{nGdV^oI9W-1hEIF-UMpT32v+7Rg%m#dR zOA+2TDs)v7ZO4ZQ;XUnHIpx%BWiDwq^5k&v4*4qlyFB;b_IDVtBvSv|{QnylKCHkm z9(W)yXaF(lqskyzu7mOdRqIqaiw{*sUW2?syERaAq}BD|Nbgyz8&R1*q^1A#fQ9D*4gg6O$?ceN!Clw83E5i-iV~9G?O5zv$#X25iZHOWGHm$ zjwD$!3;`KV)W1QPf!Okxwb|bLyxsu2VFXEG{JB7=_}QeC>HSou^pB1}Pfn-^`>f8^ zHOmOgAHQyfD`QKL8-~TV+bBN>7z4zAsxC6rp&r212jv$ElLg3sU} z?n87WbWOi=n$~!7a*{tHfG;r}6XOjZgrd4+1du`*GKlDF8sXO@7;wWaS>y+)02<#? z$7`4z1QE+QnQA~09{NQ1sM$ok#nP3os0P!|!gN@pSv9#ku=hi=Ap5V{{jt9c+IvL3 zjvXm4`KKOby~jM>Pa{&`YgR~T%PoF(i}q^3S?R6A2kVu4xP7QUwJ5@ejkRzg33N6$B0ijO6H&V;1RUuf>A9U&P5)9zm zVGPVt*G=v9^#b*`drvZ4YpJ0(5HG>dPlM9LTqenUWy@JBkW6l+vb~xqoAinD@J}!l zv*>BN1L&yQroyk<;-{!MKV+i7qjms7y!93tT;ps|S#vz>=-#7-XHf_fU`j6Yi84__ zu=h$3nXn?_M;Xqp%#zG9!!`P@iV037r>`Xlh{nj@k*4F?`vY0i(k|rp`agp&!H*EmcLHUfMS6_Mt)D{0e_#kjhzq-He@QAoE}h%gBd89 z4<;(<8?0J&c5(qsmoe&7lWPyD{$T@tQE?FcfB9(A=dXOk|5rXbh1~fh zpvF%~YfVIaC+GLve>9eo>Dqon5E5sga-jY%Bv?g(-5$6gEZ~8iR-mMmsPvMQLhoe1 z<&S)i%zpctl$JqBiGcr>uV_Rina_cr5HYqNn=N0H9BVpT$SG&<{X)l=E~$D6Jw?x{ z1|K6OWHU2!2<#duV@r)f4GcANoVRbKI_#BKW)lq6B362wmNe9(8>kfYvimR@aGx_N7OCmY zf+o?y#T?$21fBI!OUkdaZsG3`&s<~r)5;cakjqCRB}4%t!`@blMXnJpFuJb#eH)g~K{A9MHIt`*>a-Q>0 zUy^NL^+W5jl{Mfi-+`yEz@SxU?Si+Z$bUqk-CtaYjv!EwA;G|OUqJyfSZlo$2FDk! z$a^57drOIg#0DfAwB~YL>0fa-Rpdm%9XMxWyWg+zm{vJtO;TSWTbWz?=69OzH8yj&|EsF^siA3FRSvl(xwjN`% zTo$*@bxEEX%g~W=zL_%w*qE5nd~@ie*9RAq1bRgaS(8wc8;(t>D-Agdv6n<*eF8(mldz^fhI(pT8SV`RYod4gX@~FCCDr z2;@)Pp1f|8LS7SIoFJ-nab3(*MO&7sRZPR;TUQf;Ak@xzP!1mW4m7#riz-O7EId^00C{+l)+Id*NWF%|dD$c_qfJql0Eo@+2- z$|b@&47wmq%6R`lPtxW%W8u4J-y+%dr3d6NnU2->*tH;A^|s&rg25M-!Vv7{^6pW3 znu-E8!>;!q=zx3_rZP|@n-OSZ=!lR(Y_e|gk3-+TCNeCo3A*n5=S(_q>t%M6RiX^ zNTllRLu*t#rK0Mn>O|~K_yP;ZahzP9?mKu(-vW+Feod?VyGSfcW?(CW%)JGyb!A9J zbCDX_BcTwE?$`G*+6^4$_ZQ}f7YA#}w+=JvC0gsF$BN;-YdCO#Xp7Ww|Y zen3G(z|Xo}zOwab^7B#PmcHhp%jvB&#TLuuQDrpmTC|;|X!?k#xj`(D`3pg)15vJ> z5u$a}d>|?&grgqhgSH*e2T*zm=R|T$hb)EF4-7e z9$f-Na-tj7cH$J8HP%26bxQOnRt_!IJa#L5(iC)k7&B?1 zLBF>rfz=l}Qq7@V=9b70)hDoj>ayR)dqj%2^=+9mUA6RfaM#j{^Ic{~@-EtQ9`kHk z(b4SF5wmL~k9zj`e#F5g zLNV%?70o!znnnT_rwk+GqB{G*8BH99_F7fX;%U0<_qf_d`64We`FY0U*{5%?45KjW z1OVpthi5gN9sc|JnAkFW=va~QP!X=ZXp2FTf@ttod^7NSZqsK^sR6J%! z7=h(Sfv6q~rgVW8hoeK5a^Fkmb=vL3|MI1aI;ynpGl?3nkI}e;m$U;SquOXkTjuH~ zHL51ugC9~9BUUtrBPN!vA1qVrsw{4jmpmdjTgwq6eVb1&y2Q6gn@CgNo?>MwaEeJwp1lvjYm zZhCwMWggWPwMVF*k3+ytJqQ9<1EZXLAh%Pwl7Zt zD6egU>ZXd3U2k8v0-e|#sj1|aT8LQ?{zrDDj<1N47(?ZDpnM{6fuvYtdIP zD4M{TXWCt8P(FcBGR5lg<82iJkv0?ka2YvvjM6Z)gicn%KK6!IFnWhe|{7{})?=ekzgHRkI zO{Fw{EO@oMd`9?i^-P&@^6{JZhl&Yze(u^IX)sCRqg9HfR;zT9<9hynn2`ldAuNP+ znN>jrcKFg_n+=QdOy=jL&GPzSTl(H7)>@EJ#PijDqGfb&q}VzM{xj!hkbJ;-_w-&>vfaOBw`4r!v({zSz3*?S2-0 z8SmAe;%7}K8UZ_lk}}`5Q;GB(7?NAk<-Oeh&UQR+kUqS~IWNX$0~)&%f($zNck64c^kR3&lFZRc)5=7cEh)0;xo=0~4n5@? z$BdNXvbkxJ*dkI#!UgeL=-q>r;rhLj`P6EO_a;y|G!fMh+pjvR8BJ^anI^~hyRgy|M7>HERP_LEOB*X5G_>DX`f=JV@h@VMtZen$9hpdgS z^?U_xy!->$ka4Q0Sz*7}`5&PmXfEVMDA;{b&G275J+pHm`3geGz?R$N8Qzmv)i6r^ zq{Q(ZRlzCKm#z`-HRTpN*e^H@#b);@!xVhg^(vr-cXKBPLuI*?s9$tSJGu# z2hWsO(J?|VqK!res#S4%`dE612oidvxtMcMFqyos1X>}4!biAw@L#E9W#bLazFyx* zc}lwuSsjPUN(&|v#gmce#UqB%8PF85UI^cPK4<4&@tNW_Zgk|GYOE?FTj$B<4nTQQ zYKQ#JO?F9LxuUUx>N!#uG(jpq;Yq-rpQA}sM|q0ovzr|-`X6z?QPaKWg@JDad(s$E z<3K9nf0)U{ddiG@LWLF&S+Xk_U=S^-pV|dY=#K~hN3Ll@Um!5q;lp`0eh;F8dL7!u zATh>Z-`BC7)80T8kvZzo)X__t+>CYRs8Uk%L~(yb)ByofE4QwS>PdO$y_tWtJAM9e zDx|QcY>O#&5#cALEdWt3y7Bs5v8FV636tp9l@S)2h_qxY1bV6((YC6ZIL13VVw>il z@FB~mUh&HA<))rnic?}Qw1g9+4!=`m(qn!csN&|VS7d}f4=>go0Kfe#nWiQxRz$TW z4~J!@T!zX8Cw_*ZP!b1X;OK&loQm=N*h`3%l61~kfvcqNl4VgJf~bf@!PTbKCO=f$ zRCcV1E^-))w>h-+-18svo}frB1}f@Q*{j%yEYaKPT9+soT?AWJ(R*a-WJL}^q&qKe z?R5g?Yy?HOvI1uRQ!KMG&$Hw~27lot48S&T;uoiWDV7~Nha!@#nf)77u~@y}2wOAq zNdbYRM=1=EHd|!(O(c(U&!HJyQsl)9yk`?*r(+|zXQaaxx$h=WMr;eCYNKGgjzq~D zzF|$8H}fEU+8U<^ZsGkOS#w8hU>iWi%YIR0IR)xX*M;DWb|=9J#1!unY-+HeCp3E+T$gv7GHq z+~D#;O~j)M@5LkV8AF7|#5p-zR`tG2W4>eY2^=WSg-9TV&>v1B|Jap<+^@rjy>2USGy8X z?2qZ|yB~6QSihp-hT+{U_)YTP<+#mG-o;sWO>*vGkJ!HZn65yx^8GTWbT)C)QW2|9A@bZNXDv^jSpR98B3%zYyBldY^gKkuVVuBcE zgc9sx1=5I+%|J=U>PmYy}H>Oe#lZ zSRJW-89~m|O3D5}h)R#~94%$rsLc2C4*~z-+o!JlfR{44lWHOdL6SP%Fcv0kx1S9nUWOQe2S$B1}GcDunPu zN>Wg(m4t|rPtYL-qJu^+bn6`alkeig>vB(e9$TAQt+BT%#D?jy2=&gyLeMDxxHO#P0ui2b7_I62J;azU@Ya4sC)1S^PylS%15}6;(=cW}m07pqJy7owIf# zI!yI8W!a~B0V3g4%GDR6Ui>DFi95-+JfH28GA)Te4^2s}U#!JMeg+a@NBV}d5~3`i zME!8-k;Uu$ej-|0@cbmgOwwplEX|voqSrKnkE>2%6&Ibnc0T&ln)d)9Ek~$^+~xpd z{B+4SKSurtHC@Kuepp5k$!1uQ&0NmINqq__z=f&>b90Ihg0K|MoK}hp3C}eUlNZef z59*v$W@Ya8wf8A=U%HpRnf4@dFR_JDw=X!>zgB7kkasw>p^Iq59KY z;TGESF&E}b_~M&K&aTslt;toFI{DA&gUY{!$2cRGZS72ygM9w=21-ja$4;DHQs z$vn8xDb<<9kgSB*c=N^jdz#E7{_V~B@2t_WSsAy4#`nU>PZtIjekA~2^j+*fUtWBj zY|PM9T=fDWgZqLE8*n{<1;iW2m3#k^6Fo&5W`ENZhXls6%t7@alUuxTLmc>JQmVB% zZ+I`;6>R>g2twME^X?nxoj>o@#qFu*TVTr#5`SD>1LbBDMI%`;e$a+YjA4S9 zBPJSTqIzwbn)Jt}+<5ArVptr<`zd4)QmFCO+hFLUMR1VyTAWBsvmtH~2reQ~r3uY) z8cJ|Ph@6==UjY^bVs9*w(5v3a7ICoCg;j8DFJ?X&j+goihb02ZV4Mw4<2?6mS*~ptNUv!+mv8FP9?WF5e5Rc+^GzgWDB0Z13$f(SL&%Tmr2mxI@-Z9X`(P051+*fa7M+yy)#KN6dRjrn;DzW?-ydE8P08>vbt?@(ODkJ(eZ(jY!TM7&rBE; zw;9vSCvS}M8|wGCX_$@l>IH7~tqW(KBzD0GNp~P=!c^sP$8u*Px>P>{Tl zk@b=1dq*F{79Wz2Q7V=aCKmYH#lq;BRfM_Ifp;7R2fXC#`(8R|04^)C+#w_yeEwx9 z0=~?>=bp08Q$=LDnFHB4d%Bi~`A@W4py!9WYE^2=uj9feh^y}!A%)UW!*J`P9)1i4 z?V4(~@`_S&4`)Lg=}~!k`U^qcj2Uit*evj;4Z-H#Y9B%CUF)RONO}T(bGDzPEUo@t zJ^P{nD&g8z$3y9<#Ff>;E^2s9NPt)^CNC%jao(L4%+({?xT z9)bo7OCG(`$IH|6oiqp(C6xswA@AU1BfR&5RFr~5fhp3=?jC~nMv?dDR04vsmgX`u z*03wgL|k3mct!7WW4`h7Od@J9>iz(toY7zzM#9t)0?Z8w{8I_!g;0}6pfaOD2Ok)!Vlo>vA(fd}^m{lsIB7p%VcQ^Q?8hso z(~bZzjG)JTR%y3jx9V4bKZwg-Z+onC^@IF`Erq=7KJPi`W%|XYnQRri>{xuxGxIjo zq5d(5WGz=oxwQ0dPlcr6igA-9M7qMk)>Ks(71MUn4hf@ig~iU4bk~Apb9%c@oM5rU zmXSU48O70!0=Y@#R^WdyF_uTvYt8Psa|2<5`3I9!CvW+eEVil)!HyPorsNO1({&u= z*qq6v00*}TgIo|v9^$@AAASsOlUi1@8ydI6*iv1oha!Et^00UIbG-<3{tbBIkF^z8 zs?f@4IMnW|S|r;n*QJiq7MjJF_7!O9IQOX{5LDu#@+~HxP-x6pe`Z0t68AYSO$a>s ztg|l_9*7QzBF8H&zl~Y9qenfx(pEtmy2g_pbJT~MEr}{?;48qnQe1Q|k|}q>`c!;E zV+gqjOhtxDHmplKA;fN!wfTv81vQxZ03{hmE%HisSSGYN8V+~(Ah!tj08koBY?jwhbS9d_BGLdzGAW{^_@t>WVSy);mCLl4;}Shp z_mzg(BBh&|LiJc=o)9vu)SjStH$kIc>lLAZG>81kwy8>+=EZdPlErpI%`5a-g%q-c z0dxg)AKmZ5E2sMQSR)vXk!ku9#Pzk`nc^Ra*jIggv&Ul>wNcJv`kbEsN5w~f`8wI$ zxYmI#2$u_xjIa4e##i+Oee1C)l;M9VfZFLqp$n#r{48X#7KbClNyuDsT)y;s3S@s$78fe5fP~zj@A-tCJ(*#_90mQ( zL=;F|08#QGVf7iqG_adl%_ly~7#Zpln6{J>{{Gbx0cs@BSc#vB5u~8;Ob797S1r2& z>9uD~-L1AZ5tDY)c3Xc2NNyA4T8w5ws%b*)*&IA?tj=BAFccQBAXPeo6>zM`AG$WWO z=!Nc?{brwY;7@4u+Wf}B@1DEknLcNhAl2(1st7TLy`^7MzoU)i=wW5I>(bWS2cb7h;tCq$i_>c4%WJK=9kPa zKB$??Nn@p2!IKsW!)a`nEEbTN+%9781OARYHM&TaeiMa`0+W?W^HGx{B?4;$!=MDz z)Z#`HYM3)}hGLjljn*>{B-sQb2Ty40_nOv;jml?So}Tzny;)(|*;@jWZr)Lzp*`<& z%!e_v3Sf`+-vEGnmmYy`XW#!Xkr&a~vBkqKMl6@ z%pgKGEGQBQu3jP^vWPf098;t{D)lyD#>wt8wwQEL>wQenBZ z94vpvJ^u$7$F0FX6F&NlBhW=nSqbJfm3jRvK4kYiDE=5<0@+{si?4;;^ZDX7XUw?5 z71UqUu;%tSUviVqYrzR!QOd4Pj(Agl{Rm*#)Z*OLZ_HaM2puVsF0}ZS{Z+95z~Vul zH-UrGj1B7RLLcZK@wlLxqSl-$*)a8XM}gWeTjr8wq~r|jGFbIXQ5~X#Ni@~WCpKOW zl;@sLZQ<^D3M7W>dxp<>G8zR=Qhr4TT_bc76QkuJY`b z80;3NxS3eV*A`y2yH&6=TeO43 zw^U-=Ze(P?ff`;fMFH=BP8>mCHJ>#=;2eW8lFCa__y-(oQ&$@&H#w`fmTexgCe;Q=%0s=>% zvw9bRs(!Jp&N$CTfx46@r=Ym6ZW#=!D!^5g@(| zXP8JS?i{O&=Nuv?X{@?qiq=gX+c5k(kywul$we~5Ea)s6!?33go?=K%~ zMdBVKV|hZ*mhuC;D6`}!CbutO_B6-~Il{fC;x_5_Lw4O`C`+b#2BlE7E@wf;9nYh#qsn=F8;QtRAS6*9ob4yN}S7;Re zZWS|tTE+Ifu}LL}6#;(~*`f5jq<-nx4;%JOd>A@pX{yE47;8Q+HNb=yUiYs*z3BBwj4E6a^J{L6&3$?n`r?J(i8pYyxvV`L?0``2Qp9 zEu*UH+OSbNq`Nz$*>p>HBPm^*E-3|N(RZqEopb&;)^P2? zk2&YMHGdD7TE+ zVuNv$DC9u+nPCC=k`$xRT?pZ4Uj!Fe+6N{?PRAotqcB*gLO6QZ(Cd-)dl1;T-;_`($DMOL@b_ed)UZ};zC12jv* zRX%pSH_H|$_lbMmc85j%bgTUMUl_{ou?hh;h&3;%eEB~xVJsl@1tt7<)B=AJnEfAR ztr+5q^Iq5n@3OXXsE}|>_^yWE>0}bUxK<(?49t#>jtm)+ecd}OV=C1u-PbEAI#SeI z66>uSnDMgak&2nmFrU++XFWii8_HyF>Z-QW(eyZ<(ryTUYMKt{v~Jryu@_q>iA%Dp zl45jB1P~8laANTR?PVb=~rM3wZzJyU>|< z_##qwV@U_uM)dGTNsBRwoL&JKQGo35d8pPo(Uc+>9vGN|7>GHTh>prp!M!1@N&YY^ z@|4N-?R4XvCjg}a2+nLDG8IhnUkIiYW--*bX^unqm&wP{F&T$~cZB8d=7?;q=W&wk zO7dN~A|CUE$Q>B47cfKb(yqRw*EIXBn&j;;vNAGxOfjt0^S&hLz3rlhyPu0dRB6+Kh^4=1^*3&lY7b$f>-_D z$OnTvkJ~0Sc-6(2%NQuo^IlT3stRUKPtm#^@dr%9PJgw$yx`SV0glz=880wK8=F{- zZ<}fV{%yDrd(SEagO$30P(<6Tbx*6ThgZTtHG$k)okCmtESIt_@?X^~#Tkl1_$)*N8eVV=Ug`T??)EX~{yj2- ze-@}2X3Ajl{RI*K9qqlNF=Im`UbI%fxrdkjIVj*BDgf28dp=+o7c(bh)aLEtTVFpn zpX^@?ttZi+U@@GGo%>cM&c8liJS&0qosl~g8hjrEo9Sy)bmra45b4S#v(A!d2tz1s zGV~03TCHu%;~~w#{F+vZ!bZul*dk8gSRM=P^j`MdJt`zmsqdDO4G2r%ev`a{v{{qE zw@98qbmW|kGMX$~#sr*c3yGTF%I46y-OYBnr3yjv9IW8RsIn}qkqCh4`n`X(&ON^L ztIS{)vuY}I`vg83J1M4;3M$bo7(I;w7mnB%JsNL-2^oqvXuxHs<~Lpch?3@EAX6x! zJp_SqXyX}-xKAlZj_w7KCie;8{MAN~!R}Y4owlY}b@>wML)_Jp8(M3bD7CyMcYi(E z(fkbS#k-y6k9zE=$+JZ2E&^2z4AMk6gT-D8BqM|wRN~9Y2 zfKS+i{qmm;t3l+gT69p%h#TL+0?igMcQO(uS26K2;X<9(>VrN{dKu$PWI89aDte9y zHSDBa-JdgN{2J#PZXeW21OdWv?!9GLDJS zix*q%?QVm!214PKPLMkZRE9RsL36kZF{sG(3j( zP`Jk(`>iFRjJjJ73%=*B00quBJ(LLlZ)7>siGg}K<(t2GpIGnc7ux5)^5$sCM_#oQ z(!zI=VqgYYDxwWlR924$HSaG80WMg;A?5Ie_NjW&S}n-y6O4_!qTrO; zh88WzM^y63v$A5obH~LA_m@h*wANq`+uCo5D(ZIB3l0@c{mxY`fWI6?I2n)54ywAI zgEUwznFUKIv9QQ695yJ)lqvn2m$IB9`-{3eJccx|KN>Js5&WYpNonmtMc&JNwKdP5p}gy^k^L)=RM;K~?n2 z;+9~Kq-BDr5Rc=hQuUWX6!rwk5OQNZjX&&Swiz@q+8rz&Wc0M3j)gM3v1X7hqltl7M>yCoO>199S}Y#O%g=_)4Kc(Lz1k6lCR2*8*4L zf+*=Jci*d|!#$27Gw;w18xsFqx;Fh3ylj#2p}_F`AM;*9?&9zy!RtTsU*J!oKmjD- zZ{+7cJ7LD_?!s$r^?MQ%xV!`y}X|@B-+z)MB{dm{l^2d3%sykHi?KA)Ob_ z^(-E_23ZmEjB;E z$ps||eXBy3@+?j;>FfY{LsVpSF{hy~V>y}Ed*tu0Yamu#W<%n+2Hpv>5liZC1Q8#+ zZ>C?<8NHEI!0^HUfsy|qpR&(nEaG<=FLrDY0WNRo|5M(Cg=2x$D>N1Uh(LX3AzAtM zAYo#9*=%n@X>UJdSja*2f-Dgj>eN7n9Akt;UeIKI`@opU@p$+Ox`|wfGUA!CGyn(F z$v0$B+dM0*@+>68eS}arzFv3tT?S6nVah0>a1gk(@!KVg8VtodO1cUNf7uAUhepH% znd;ZyQTd)le{n>%o%TQc!$vWn_C4%nBc{L`!SgQ^E^!DM3KPsI{da9c2d-^mX2Fe9 zkYJ!o_0y8VA`a^d5yB1NEw$*m%)ej`UG!W6-et;a* z1gBchohz7%Ux(IlN`1T=6dPV5Dg#iVNtBpu-Bb#v+LB?t1}z@oVJp&6!0S6?S?NUU zXK;L6EWUV(<}=#-B4}jNC2!@YV`VSpT)vJb-rgNM-46xZmGn*=APU78_-T-yj!;E7 zGZCM?zGFa1+J0_?O&`Mq3Y&^17bkX6&Y&`i0#kJe;gUjSt3TC3f2Cmd5;rB~3vrD8 zOl@Bf7z@>nQiQdt-uk#w@Y(dUCebe3)pfInSP=WNeELG?9nlp-+mp^eDQ7D&oX;6o=+`$OW^lN}~k(FX*61jP9jR3Ude6y|^R} z!7d4*--gnqbfYC-xoP$a(gHW|!Mmr+% z410!9L5j>3;}c1xgmE4Gg^r5CWC$m?NwAyZN~1^n@M1d0HeJYXd})q^8rrbBnC(G)kWiWAKlLn>ie0v!POg7OddZN1bqdg2T5w6VKxhBD3I z6k8}Jl0M?uc8u=WFBc4!Gw%)X>%o7#ovsV?^>7&GzdVT zEO8*Qz21XsH0ZFWAl;66T#DvWyN{a{W*am5lsYCdqSM>*g4O`ls*%C;3sg|gad0Os zJta&*@NFCwGNogo!e_Z3n3O9kV5inL$<*ODUVE9Mxg(AXS-d{0OBE4Yk;xyEeclA< z?>Wz-z%`_m<~TPKGr7T>9h#TYy`3k_>MZ#NEMv-BFp0dsk9ViSIPrc(aIKJXZF^+d zmP6ekZ?w=ufROW0xLQeg?;n=_eD|%Hf7yUuR{T{g(Jkg5^Ys6C%5=&W^jCq=B-p(S+*!#BXj(M8<5O}!n=Vwc%H{UCnc2H?XvM%#JbM zcwOx$755e3ECi1tyHW&(V_(WXla8Wls_v@ZvmMSjp@K*Tu1Wpc?GSmICGT8$gab_A zbAW~9p>AwQ-^0>zZDGOFR6~l$>Lk|hh;QHg43^9i!KWq&3Y7*&arERXFN`tru`jEsSq$ap_7HT0-v*}y?l#?~zx`Fbgb@A1xb=OXf-;RTgZ#`<5dz5@85 zue}Jh`u^1{LD3i=nhfLGPw%#JKRPEVWFlebjQwUBgK_Yv!{b{{6w501*jHYoEp)S?u0v6lhs7+H=3;d%aCn9Zw{% zR~>P$c@G(^mT35+MocWVjRX^oRl|C_iaBPlUG4!|dBq>P4v*~p+>~diEZsc;Rv)~3 z_@46qp|m{@-<15+R$`6&>+ z*K?vbASaUg9mSpj3(-CWelEEsfEp|df5N|DFy#vvj57B{M=t-c6iD;%qYynQMn(WCaSPm|QsD-G zd(>8-y;H&5Dmb?cn~gV?AdOD5%#HukVx*LUpFc@u6MnNK%GiTbw$^z zT76wsuKIq9Kp{V@`O4sx?kl~BK!=$w+T*i#iakAyW-<^L7MJux0C}$ZZ+N8B1EHx$ z_gEic{x_sg59>tBgG2iEzfD1j5g@r2SJ1x~9&Cl)n7#as!k7F-;q~i=a{ezUd<(~w zS39VuW{&dOAk)5HgYVJ_{gyPYcyj4I$EB_f`nAR2kz#2mt%`NtL80J(8&QXu~IhTi_Vl*^B3%r8)Lam?Pmx)cuQd5h*2OADg*uxWL8mZ3IFeKTqp(&- zbZLMo$V|T>{kIdEs<0j|oylx9?PW5<><^Ppkt2JIlpRz2!z&^)%UN6(9)5z^XHnt| zvVV?XT{&3(_JRuh;R|8B|E+ZX7vlKbld!B_n5V%5rph5A9+Aspc)?!7M#A5I=RZ>C z`|l&39Ai%(JPTrXC>yR+cyu))>>RchapUwt>~49%E)|UW*L#;Z+mc{pU|MCrEU-I{ z>5EbalKk74eT^@E14DSN}1@C5roYK6(GU=1E$9(|??5_i_r74yBNO!_A zsYAgtHxV$dM9C>?(8Z#Se|3ZFmL|hEi*@&;{8Vy^*m7@}LG2ql>Sbw5YM?g)>IY(g z4+m|82k9piUFK9SFf#C7hR4-LFTLMu_?J%uSFp?I*-v#avm=b)}fH;1yr^qvC&YzO7|ogJb%?ZRQk1tKsQ}x^h#n z8YOZFx!lB^Rj-X?HW-|4{@BbBC^9*J+sxmLc~XI$Z@pi3z|OZU`?&I-+{wn^a?!G= zc&TY6g;>=yI_+z3wk=Rh3yvWNIZl7DdgDt)cRnL>e>@BIbgFs9H3??<2gKi1xq$GT zsKJ^`nL;2Wa9Mi!65*@}k0J%jhwcZmH17aGUe#0s>b$EPT6Zq1r;JqlnU~vP*z_t` zVg8+p?adD=iiB3M@ohFGbwLTK_lvxS&;tfz@TcyFuuNirRQoXOkXa}Cs8|{XrPb&y zeU*Z{F#Ytv1+SVgWUP0i0!%QldO*@EPPIo&nf%0TU5u1HxS8Uu_1$#-g4ohYsW)}m zlDJXsW1k!OBB5FJh9pOCdma4@E9YmmK9TUawJ3r5HL}WYL#7sYeE;;6qXE)nUBLGu zRHHyZgv3^j0{%aS@Q8p%1_QXwc+9xXS@{6mCdOR6Cd@!?fC)1v5d04xCmRnl_y?RE zoIo>9US2Lkb9)hh8IP&CDL1dl?|wF3%f^0_8~w>J)7|LO!X0ud!E7)FN?NqiDi-1k zci|M=t_et0Wn%zH75y%HC`S@3)#%@gT+PGV#o>>82*wgngm_KPSK&ZP9P#vcaJ)C6 zuMtCJS*vn3ei~RVF7h)JiBH(&-P`ebKDmwulN2qFBt|O{LgUOK4GsFiWMdg>v%B`! z=~R24rTIlC{l1;YMpSHWoiLY>3nc^;0_{+~d(wg!XmK>KoIjUk8y4hnO{wi(z^kvb z^?}Dyzhyn?=NzC#RD@c79~rbvBn^3P%)hUlXtHMBA!5&RY$HSV<7))zI6s;ctIH1^ zEnxtk!ve8eBhvdwUG&Pv0l}|g3HO``P4cl-y5oZM>_4TeQu}|%FEb?88}2Pq4YaHr zl)nB2qBb>7n=sh`a?+g`Vt&Bb{zZ)s4~u4kXj zQq>h?{6NsvMm!&Ujc`rcJ8j3um>C0_q;a9cjq*s*Y5D9cAhVbAQ2 zK~Z|lNmb)ybd>Uv(p#_0;d-=T6Ef-){p65l&>Ky0RpGCmP$=WPNpm*wsa&Kee zB-)L;mPT_e8Ho^;8Y!=fY39^cVsv4grcaG~a%rrbf@n2L%HZp)Y36W0MW!HFof<{i zB8h&_qeCB3KnbSfFXIO0sm;yv3pDOtfY{mGECgsd`2vG$2@x`a!>w1~?^pM&_`l=( zJksx|AcWZ2(vUAPh@;XN^ODT$VS{vHSrQYG;PpfwH5Z$s%2W)MIK%ICCAn3!`MG_6kh`pao^G7klNwp*InHJcGs56mGW5pQ>|$y( zJpyMgYH8=Tk{J|sD$3)!hbIHf6(3XfJavC@3xCGAHtzs79(LzL3b1%M#6l55=hQ9k z(p6n@%Y~*nvK{}*a;@4UkmBZc1@V_q-~|k@S<3DE1*sAVY}sK)7kgaO=~)!l!)ayl zgFOJd-%P}-faj0KyHOnPrL&FwOBnS&`UnY7IDE6*jcwf@FklZmTx1V>{SAMPh}mbY z=qe`s7b-s<4>fD@Y>?8LBJ#F31p~c3Mg~S^x=S;{BvK$A2H~e^n_piVc*~m z_35VA3vE8yam)WHL}DXHwM>VNY0tAqx$5=IN?KQ_Q_rKnYR3SZVkd9-XF57Gim%kN zdej*$muAP~r>*qE7`W>-2nAW4jE=U$CTRWjfb31gEqhE_FMM3j(g*tr9|G=6V$zW} zL{Br*H`T_r!_zg;r@%}QyRchKj@HKV-W-k1&&o%kN+D|2*U4YMdJzq98-4Y2;<2$q znMjRl-STLsrLI8eLG91au{ik9K&duUl6c8j$XwZ%F<&G#-kAY^ zhD6`*jYY@g%EbzsVANP zVNFn>_Mi9JOeFo9;P(PA?`z152mbzn!;<|!Go-J6F?7kmKtQ}giaoyKh{Y>60%@+; z?@OV#S4_Llzjw9=7@2lPAgHG7rcp}TO^=fnsj7#&TNpdrvRb&43>Dq6e2z3w-$%N{ z;Wvr%AIB6#W@bqIWH@9yl4?ZgTtcm;NIJlORVz+A1 z1UY4tK*`~pbcx_4NqxJDT_wE!@w$5AIGFlSRCpK71bM@Y63XKjEagx$0jkG%c(?IV zNx8AG+4aDR8DIZ|62iBuz!CTfFLP|^oHpP0@4B$BCBn9SDgl8KKx1s9z8nzwuMnju zHv#tbq7iaJYLbi#11!zV2@U;{!pwi8|m{NT(l#)P!qvdc$g zCzm~59k*3&P(icdwE2`z{jR8~O;88rB}`gwfg791!>ZFE8=2x?<6Plhw_Q*pgZPY| zX>KZWzG_i9Z+2?9ZQWmj>RLf{HaU{LE1m&Om5G*3s?O5~4|kXkILXi|PffuLZV zn?SWRD{5PNv&LF>)EY*0Q(e4EjK^MC=3JPjcVG;6zQ&zL*5mg17P=5+`H`Oc)^;C#L1oBsY zXS}_#nymEVRv6QeHLq|#j`>`U{T#=t`|auzXRb0(>fmdf5v}uwasQ~*O2ec>CsVcZ z0UF0V`cx?SOjh|HA}b6{cmC7l`QB+}ibDwT!J)dAev$t46pCQFY$UW;BQ6yTqs7;$ z^YoLC3DvZ;T(a{mep@1W!(v%=cy)Dj9M0zCD#ySX9vc|eY}K*0DH?;iK_1c4Mjj%7 zKVBW3jxOHGYyaTXu=ZRNWH*)?G@>-=#w2*OX$Q^2VYeI&9-CMZyVr7Te$VZWw5{tW zB~xDAriyEbV92-+3Ui;1j$$>kdcK`P%c7F80quGc*#9aaQ=Q}-KdDGSLv%+KJuj?G zAoB(Rnp5skP^$&dRbPoxf5hxTaDkGhgPssyRi2W_H@2`L_*Lb!tWh?BLX+qx17|#4 z5V+nJHk!whQTf*24d7}!?!}*z*M=9RovH$!=-?e`^p(IBud}nF$OY8#G zlEYRLPdQ=|y}e<5eFfRUY*j}&QJt&sS2!TcN^M0)Yh$vY#U|I(ZGvqp1-z#TVSQx% ziI;%ueFud7vhnjjq=+>kl>{)qco9hYS$g_(STUnb3(mYl=;KqJ_V|BcK$ze6c zX@{lm(F?2Z-(zlBsYoOiYf8rRlh(~#Aa2#_xcYiNNY*o}tvg~0`<;wH6s6;lv)9hU zsPO$-$5Y0q4@^jB5PfoG5&Vz#^Awp$Kh?fR@W*3`PTm3@uTl{i?GmlFMfmnI&6=6& zHl|etsmQVK%;-7_X>q%q?fHy^#sevIt~A72Si0 z4<)j69>megzOtP;RQgJR&d1V-$S5ndsnM^|E2~0r+tER zQhO%bo?Y6EgolG!b>bCliFhw~bZ>ZF(9hG~5X%?+P)K!z;{n^s(RTVQ zJH?S}PguQANEyZwGVHVUJ^|~U(Pu4UrU_p?tNg(NIVZ(j%CC9Z328oAlXq(+Zv@G| z5F?|@!7!UwQR|rJLD>w7@%K>85|jbAki3f<>L@|Qr>6Ft- z7~Fu`t0NF@A)J-Ea1>FkyHz7GbXAVJIny9t((sBs-jh|0?38T z>d9x%-}AZNz}NUiNAZUHtS=sL7FBg3H}dBn0LE&69%y?4$QYzcbXLjZ7qjdh9?(iO zY<5ozeL8VybRdKMZN0h%GM!&1*)!POjJbl?^!MS94y1I+PX<(m;2Sc5a7o0)=rD{! zvE%+kArEaVcM&9EH(shN6Lqi7?L-%v8LSBedpJ{QFknB6q$r|{=9#!!RT9fL7a9vv za`7sDNts&F=Ku$*c{lis#H6&uHurnaowR!!F&RMmHziIp9WhuKt5-Vc7K6M4yCNW% zZxcy*Su*zoWG+vQHVx0V#!F{?lJko*tVS6u;dXHcdPEHtVVncne2N7ow3<>h8V7Or za%v?a_iAtBMQIG*z3Dd0-6$!?OAXj{U8ff~x)r?H87m8$MYNf07No=y>K#JQ1c zM;CCFdWK208`-CdN#Pb&M?J}#NulV=6r!C*t4hXb6BPf<|xu~n5F@bSE+3WO@pDP;@^T&h{c|k@YWbL7yqrT zP+NEZKHaq){C(Q%h=uxX0bvZ7!ioV$y>ui9i13$YKXLtwoDnD#P!DW~7+S5B+$1id_)gDtsS1Y7Oy?FyA7m5{ZAy`+dqi>#VhvZjws@b)Z zmyHI^b%x{s-#`Nh0HJqDN`o$Div4CD7v~rAcRI>GYgL#Q($!JsX*E>&uZon1lTMl3 z6;y1lryec&wfWq9UJI*WVxTr1z?!}e1Gs%6#_Ur0Fgk!|9F}C16jlIzuo%!5SrMH& zd{1aWM40a<&0S)0qCnueol(VLryZ(GZCWRed&i`(kp{S*s$2k_ zQIM_kkq2PRa>$K~CANe0R7;GTzGiB&Ym^Fl3;1hKNCkQ>s1%k*@05D8YBM=tbf3&5 zatD~A$c|=N58-Q&y&*SK@J^tquleDHGnCqFk7W(goQ1U>r^XNS4}24D@-c-#CXPwV z><&-?Q`v1+Ez1EQSjA!vxF{h%8H%b;Ba5P#BWHvOFryHm$|H}~=MROJWzD;HEI;8+ z3}^XOCYDScr>vd0+M;I#y#u?6fG2&`)J~<7g8GKd3IElC)Hi3=PQ=CPsxvq+0 zEgx!KhX@+9cg*@a@m42!y!<^O=9m5YLVBD&^+H`dIocz1Du7yjsVnSq@sTq8rLCND zDR5=Sv-q&uy&l(pc7kgf9jecIf?SqloxKcnw)Rd9K~ZB04I4)K{Tr^*0s8FiPL6zh z9tpSPD!(8HD@4~b1Dlo}@6v#++K-aDk=&=Sr|CTOGZ|iV3Rdv7A?@~|X{x469)2^- z#}}IyB5heJlo_c~^Rsa9SaYz|1dNZH{q|c&D^>^hC$+h!4NcG$UdQS6-Bu2n`y^MO z3W;oKS?nXfWh)kC80DW4Hc=oQ0Xm!K2XNm~NE-^I~`X)&m zzrZ2GQWS<}Lml5+3?Gs^Te}i_SzPypfvhwE@(a?#j`ErR@@`Q6bwkPW(Do_BW5%eZ zBoDHlf;hW<+K~0$_=3CtSGtAiD;eWKkR@enFrPuUcrzy8hd(K81VU6~4xK`FRttA} z!`3|7j7Q@xEN{wq(;+O@{^u~If$k8$?#LByV?acZfXWlzx^Ey~zjXhy-}9O8NvpFv ziuLiz&X1?7tzsi8c-E~ZjX9dP^yP-nv&Z5qlM@}K5nm4YUH4Pj#WxLvn;3=S=r{QU zPHDD3h+@{2m_(R4Z&7~Kh@iXf<$mp?}HH-NGGsI_8GU|{;4`wCPNjFneMP+Nigglx> z){dL*&isBHJR8#`cfKlpz#a;}S^{+}nIMDUY|Y_WVHH%ycm`YgR_ZHi-!~%>5hSX3 zgEUk^!*Saaue(QgEY+4Qz@p#PkT|n~J`r=%4zKLM)&t1NI`Hkz$~3H!9m*&Rf6J&^ zw{mOXUeJDumSH33RnDZZq4Q&olSrM=DBjGR2fIhLUfIJ1QnuNq09shu60o??fDS9djW04R0KaV^_#n zbfkuoEC_`C9%GU>8q!=sqU|w({cPGK! zm{Q9qW4dA1tX;2n=(T>`o$JqTx?1M3C;TP4T(=JzFE5P_KOw_WpVarp(qtA|EOoyM zNnYmnI4P78lAi{J-f(B$XgVWq8QfwTCob2uyC1Y|tJN8lYyHUCicn8? zxUtg(6#yRk7#zjfS$!H8@eN5ad~z?LixmATQEN9z(5v~vph(8QjCQp2eN<~eb07;e z`x(Nyejz}-wdzMxynC2{`|1HIh;@`;GEhd(?+78n4eFQ>$;*1OJ|SV;l009;-FWGQ z1X%q&jZ8^ucn=2DlwNMIW9QA7>q>d7p@D${n&*}^K7ArllBQ?L_4CvqZXWwJv$jc99D zI#o{jdH_)0*5Mix*3ikqhEK9ppM~mf#=&gN1>j`n;^AZG z;^E>oH8C;yO`Mo;vzv3W^8o)4Co$ixe~*C(Xcr&w8lg^R!wQbhCiksHssk;t3%gVI zCeNFxEm|C8M^0;522)b@EglK&Jbg+$Kfg>57ap1Q3@T=k6FB<@c_ma?tsbxv_Rwe5 z^WfwKN|b$zW@bgAt;Gwd=FG1R6<7_;NL0LlT)=d{a<-T1V4%U|FtZBPDHBS1r? zO;B4u$-KtTx*O@6U5Kst4G}0Lhlw`@?R$-@fQ(aVP!c<5t}jKmda(8gHl{>?c=v{S zC?^vCLDrEhmA9;?$hC^e zn+hc6DlZ)oef0z8+5AbQaZvU1YhAyKh@+=pZeBUcs7glWp8 zHko{FwaZAU*6Y(3!iwpJGF!d|-p<&eozv!{No6ZSZ}NH-8A=ryHMvn7L<+>tf>%*} z&@HG(WBshDIQX^-PudOj&*o!};4A40=in5;k&}G4Vwkj<=hI%t|L$g=sqQlaxV^b~ zl~`p9O&Cj_OYr~el@kH5^O|t+u(R`;vGQ_o08M#;oXkKDGXOIuxB1Jb$;ZcR0^sA~ zFaw(LnRA-H>?RwpITt&?3~2h>ry8%Rt4zg%?Nu@Ty#9T-y=M@Rr~nsGN>|8)xt|RZ zYf-}}7QAvYNg^ny58^DoN<0z=sXdF0@%rc`Ns#-vu3)xYL+4nVB_3kG|*whTjLNf#@hXFD$<>E)Mc&^kV-bDO3?y)$l3HOktIi&kECnbUzMZdvf>fz* zRr=JW@J$81gR7~BElJH}sdER&e|mmulUTEVnlxa8pAC0V3_m4HSaA3ms^hM|6HxsY z-LOC<{2O_gl{bh0F|c3MgE$X#SoQqwV@J+f;#=p>}vWm6~JA>9`4chk#{rJ3kg z#7tlT{CqBiR!N$8qiFrup1(v zB~xi?Q7my?COR3ioatgFXBUPu`te7@nDKMsgpMS%UDjsyu89 z*dIpPMZC=%eVELH>WcZhu{cA_1A0yL`^FHfzJ(~mNaV4;I`StS+^ejiAiz#YQ~4Wy z6C;yM#13gMF?@S0%RG_^jVf{)Pnd^Nw&sutR~lP)#3UR|EGZzYm_0GCBKigVS)Q1D zu!2Cru)R2uWslQp5%Y9d68~5iQ_Yl&Qgo*!jfjtlb7ganOS)W;@eSvj>DlOHWlmN3 z1E?0$(MoaTi9k;EZzFiCpm_!nrjzmt@3OFKB98N6Fm9?WXmuY2deGO+w{Yow+# zv_tw4O4s}+4`-|@LpLaF0v%5%+y{{#SyU|=g3N3|1t{G$TWwS2G_OGw4P;jk=g#!| z6tyl86A%aMB$ty$<0lfxhPA}#s{5GfN2KRW%xw@}_i*lcUvFVMJk#~oSLAlx$yOhW+ZC2sM@+ut+RhA)_FqJCuJ&=)#wP^4>?a=_Vx`^ z3f+vo;a@I6{|Q?!gE?v}R&xGU7pUu*e~=p2VH)R0aAFdKgMbKlL27D_Hw^#0QsNbg zpa4tPwg3Gpa@+4ug~KU>U-Y7Er%SA~g(iB5e~F=qawau(yZ^fD7h(VGZ%OlXa0rR< zk^@WBv-VcNQBxin0>b;Z0_6WNg@^zErsiB6Kw}_)6~Jq3Y|drO3ockVfz05memTM3 z5gvAMxHRG8;b8~z08D-dNiJSjM3a(UjaolN zlrXOdvVhB)2aa&dxJe+6o1%%y9b~1;{OST#NQulN(I8W6m&trEfr*~mXr6lK_#S8h z?0=VKnc-VB^I6^go^Mtm_W z2XcUaZUtU87Ixb&Ni6J@`w#4UmmZ3c!j-S8-NR~r>I1T5e;B5&h0>Cgn}Hgd9Y9h7 z!XZMeOqhg$%Xy;6R6|L}lNip){avPS!X}L?JZ!E^pAZ|Hl6a!*I+cR1&4f;VP(>e` ze;C@g>d&tXpqUo16z$xgy#Dlx@7fCeRU$1_L#818d$8nVc=Lpd*(u_s;E9v#%cAu3z895scHeSPJxX7+N%>zRmxx zlbEPBCZac*Ir?c1t?-L5qSGc75C1DaL$@1{WvjsWy<}<{5s*LqRzR@a=5lrP9Sy&I zd#uVUA;|B#3;5GI8HZYA2FeEdt#?t}5}~Hj`y3Lm-GeL^p^lodp`YPE-3Z5o*{`}a zR3XrHqTUhsZeV?r8{ALaGNA=m@R|w`kSn#Bb(AV5PPH+yR*W`~%%X}KewP+Nk@q8P z6UB#2EQ+sYVv>simdr9!#ZaF!z2kGI0G+%dcTY6)owHa}%{Jro0HN1XI%TUasDUF} zE}El=%b8H!c7$Idpl`21V;$&_a!g^Z98xo^Okkx67G2b zF=6XB$;DqXpaApClBi8dw)K~?LH^@~HkP7MpCY1}wL%3wOA~TIWX%^b1b*HH)q$e? zw$-(aHMMaIw+2b_>U-!KW#BoXus6-4uIJ%V+K^>4b4JJvKXh;zky4RtkKS~V_GW(+ zedr~V?-@nWaW9@?93vvvT3cIq6~pxrt!^txUsvZmz{Qe}bK#@k0xR|Lm?YVX#ZEYU zhVEB)!oq+UunmVRc>=f206xPz81I}b}%#3 zQ8;A~T1Ey7@1FxQbzK!E`Yv}LzQb~IIYq8$0!??D2eb#Q&qL}NzUo#U8ZPr3&B@)dVyZ7|e#ME9e$#8CR zq<#KCt2ADF4^+ZUKuk(ZYHQI3yLTsff^{L(Z_GBM+E}GuD<7bHi+bKrwx9B3ZPrVN z>D66mc#;Iy2?JJI6e9RU#!|Cjj_J3U*Wb*OSyzcjZX)ziG5L{ai*5yRDkmwg&>^-B zkVHzi&SPwUfgIJCd*A4;zqZGUm)?JbW|MXG%hA1LN5e0^pn>=e#*U@|UTJ#w-OpxI zPn^@b5Mf!EnyQ~G=Id za}ypQ(CnrBaM7CIN9LM25!DdyGwnU<19CugMFeXlIqehC?r%51OC;VBJoXJMPmNjG^Ka?CF(Z_G(hL5%Jg$Y)s63=u8>xa zX7ESfCTCDAiEHS9)OVjh(BVKz5n#OAfd<8^kg!F=m0hS@#Z{;-_V(k}a4cClcE8)~ z3LmYYP4m&=s_aIhpK$3BLlxU$qD~r)I%&_Q4k@H%pWySa%2c~>2&v;6d9tYG7*5JiZ#k%%<%9;QO((Za>M@1=RFdo8i;D2>hbI`CvHb((rM?@R+m) zc4=B?eqy&`NZ)1r^W;C_#a~B>f0&hF(z@}$*p73Pnv;{hzqz^j{53SfOTN~cyoii_ zYU7K2xI;`lNtM&A@wrz10}40?k|O+OWM1CY5Z-3}O|~6(hku_c9{$D3WPk-vzp>1^ zP)IK5-~7ypYnItP_`q<2Q#ZJs)^M@0ak2gGQMtIdxcN+t`2a7+ z>PS;jc?mp&N^2h!{NAwIu-;u2A)EXiwI!Me<0W^CfRerm5vVt{_@d%+{OfebcrP0# zZ-{B5Msb|@;b#ZnYJ0M**Yg9{n}>`sxHU%ub8{zvnWqbHXLkY%V?O-10Ob%uQYC{9 z!ll;58uK4jC&~Sv;Cfvk-;PZ9L8C#kpX^DoBp@Ymjy9!??sO6? z&O$lzyA7Q+Tv^%3%`+E#$5-MSmO+ynbQm;8lxtcgNhzmNWSo{+l{PS-nhmQMGE)SZ zL1(QoExqBV!5Xu`(E4_txGTrg*in%$!f< z-JLYoQ3xrd#&XF?_w{dRxn5h<;H(H}y5Cz^9?4lh?b6URxMTo%orl}fjKW4$szgq~5v&vhauh8Rx6|RWu8HX_N3!def?CvDSG_(+>>1@V@G)GSvT6b1Z<^76m#WoX^=;J+xI zh>is*{-Rx@Z#Y1Q#Q*z4cr3_-zmHiskRDLKi{(r8Oj%FxX9)QU0wM-HFNr2mC11`F zbfh_KkHv<)0=}A2^{V02*;dPnK~5uhy4x3*+HEcp(GN(g(O0zFQ1voKY=qh>r!|!X zbJAAu&9&37)3&SQuN`+g!o}6+=(LJ#DUbjN8X0Td1GO<3I-x!=k-53|{sgiF(1@SdEAFEu zdE}^_AQ|8asZ`{IgM4tE;pp7r?mj3j)tZmVF%XA9&VEEuM)LvKgd#_2QM+c7`2Ob@~QbbN9ki-jg|g^-Cjh=ciLo=zA51EPR;#Wi_}iemF4?sK8j_v_WPNdtS)Y z8G0yET|{l&=v(!>wxe|Q{MfD9^{TMC;ls?Ad z+8L%A>(@K~4`W{)74^5p>(JfO9n#XRbayw%Fr;)hLx+HLgCHOw4bt7+-6bF;4bpE^ z?!CWz*L!Qd|MnWrnHlE$IeUM0oV_hSJc#BHO$z$$B-?!^W$om}fDLk^P)f zJ-YT-z}tVz-NjJ4#;Fh%$jFrL%!=N7eD0h1b*X!-I{b>>ID0d1=hM%+Mc;9w3_MQ_mN-5ti%Ye2f zPDGX#KCQtBeMiws>uC>`jN$$$qW3+fVtVIwvT6Y*VeRDTVdjnK?7OvK~y~9UZj|CP&Nph6gbl$5=(EUQH8$g)AK2~q3YCdI&C~& zprOgKaP`H9GN!LNr(Cx>Ex~+=Z`cO0=#pT~KqPc=NZ*Fs^CPi}20T-DDXy?Zc&xq9 zhoiHK2$5eI8xd6SZXUAYhBDoJQ>vJC*UFyCX~^7MnM@I1$q+xv7LSnGi>f;WX*F|$ zixn$^LLZSHUUgD&5*HG4#N?HN!d+w+SHsY2_K+{((j(aK!84rS`^{F7BXW;g(D|%-bLO62MHr~O?ovs`dopaZTfS!h!KH|Mv2i&lv*$2bT9SGp?md71 z?&rgzb+}g_W~(P->6g43GC}hp#td^sUYJ= zcXd)7I|nk~qpE(GI0{sJDoz}`9?@Ijwvt+B z=wMLvkV}k;fO16gKMxPmf9!qJR3guqGmbAjn4+wi+b$g|T*ijo9oA<(a`Va50H5oQ zqswZuro3+Lzp-2wNd~ZaR>Kbz0Iz4!n;PK#EZ)BY_&kd~^Z?Dj7+2&KSIUH7d=WW$ zgAtGlfw!FP5-Uc?HLNFm*IoDx1`UHf@i)XtIEzJzc-$Yh(r6?vlQMLjRkBJWNQ<=S zs06~d+)zwZ$o;sno;yaI%M;}mxV|Y*^Yi1;7A_^`s^-0mC5&D7p44wbGl!w*!sgTPI9{iQH>JRf~u*;Zq^~ z@mH30Q_|*US;KBs8;*`*EwG<#&23A8dv6fU;4hlS7*C3H1Emq)+tt5d*A&hn4%BA{ zqjO)wN#v)_yvOTqay$xdi1{TsjR_>bc6HR4vVf&)tSbD#9|@@*v`U!@V$5asH`6iU zo`ty7Vn5kGS>{T-uZkMp!oLg8W}I9FoF8y$yzK~rNdm+(kD`5fgLA+1x`S}b#$Pew z*32(n>g{A2w~W;+4H0N$$u45%kWMZUyweaz?pQ#+!3{mFDZ0rkYw0M-Pnu(6SR3pa zUD>yFm)@8^F3=^?vaknw;65hXyqet@a?bZb!|!!bvc6~=G}cRq;HC08eagH{^cV{? zGzQC(39-lz_&qEP#tnpoT@MJ^AG;3k)YnBG_Z(PQ$`Rg;3evOKe|pJjuV9=CJ`Yb! zg^g`YX*eNvROh2EI#KN#LX6TuxiM<#_3=(Kz0e^&W`ng*?(0w@MKOcpJ=fh~sG-|j zsa7Ls@qusmVepD!%ytda0sg5A?zdJ5Bm@n0AMADl|hQQj*`}XEAZaG z3f$19?_*}s0Ze4aI2_)R@a8D^qnvV_Vz@x*STAgJH{<%3z1c4|i$`dP^gQ8hP9MRK zj*4fybH@{>2C-6g$}zX{9cR7+2c&+Ql%poZ_;nk$#gFGL^ycA*Unhnj1)%)CT!6|7!6o&eyRU0An{9eyyVIcW^YZ{$hF;MhBggX-AuDDD#>5( zIZFYF8acE#25f|abW8o{a}*KOll&B1A3Urv<7FbL^Kez@S-VoO2PY>gVrzl#E|gdw z-}^#up^aPASIxGgWJy%R-<_Sp`O?*qL#a(#ieg%bVQ%5(f;oH9Ql~8?g1aTpd@z!I zTM(+NAsQSh0shX_*FdZWpuRxKSiPtQ5MEW}3Ol9!S19bh}fn2?GI<0Dl7I>@^}{`d~ZD!}a}|G<8_{>aj+@FW8)E*mV{ zp&zX(o)0CSr@XwIE|Fg56yd(S;Yb zwN6q)N5i?nw1I&=#e9R`LgQ1PW;&w5Ylq8m=Hh>EU7$TtZl{Y#>_<%6*vNsa8eQE?5W2uf#pgseXWEw*BX z6aM^^3~^0c=}N^NsUddxL*v6gW~%%_b2%5F>>15KUO>^ah$a9icorMp0y3UO9bo_@ z9R7P-tr+0rU#hOv_~g+DVKiv*_AB(s5YS^LKUK@B)zL`;x&ePF{)rUCIQ-%0$!`J; zW+00>etQc4IwhF@&hGyIrRhOt+-9sMoIK2Y93XB;nw}35jA1q9VFp5?-t1@WSEpL4#Hm$=~P7TX1RjOb;G#io4fP3?1 ze47l&IHWskVs~o8&q?Vy8Z|42j$0|e(rqUICwlv3n?+nt|L7p}8<-@pjXH}EgbDxl9Qpr^tpESI0iY=_H|8)&zTYvKnS>z-x^P0S zA?V^{)UJ0R7J#7ZC0MzLLzN|>mb_A=H3Q`{cEN|Yh3D2x5Oe_;6^d07U(pM=w%+gF z?+Ucu-&_g^wU+aAC|TIdq~uCC`{4obXMPNpMC0mdQMU5FUTq!Fut8S`5#wv|74meJ z)ET34@qP}*HpGItDS+=7L>~3*@L-u=(#>?&Js-hJBt<#0H*yC^d(`!M8(sOQ zryG0^N7b9VxnqH0;p$!xVta# zj&|5QI69}698CNpx`_z+=tbeUiz&l_?nc@b>`suRyd!Mb)-;FQ7fkp;mHa8X?YMaH z{M=!^;|JMs|0;7M-y5`i@|1464;YHj86;H~tU2#?Q(QXKBxw^{mck6?a@`)P-N~Gf zX?~DJW)YBFc;)uq4dh2QT_LR_##f4BDuTr2HpcR(aexwpR-Lj%773C3f+UkEGph3% zN4sPtuv+?cdSE&8p@O)q8%@3In~j1d$4(m?5y^9O3HgSMyR7Px$2Kn^Wj9jAha2!e zs=R+gtdwS`AqZmX5g?{M@sAQ4Hx6F#O)C@>+mzu?yIZ?kpu4%~tlX{R9?shkjm)vZT!27! zAcCBLlLsFk;joY7#k%|b?My%JrGI83sa%#9Q@*m|4r>S0Tiz24Y86h;IvjnN4pYYZ z_ppp&c(lKHvNt;H$Fa|Y=5y~V!DrQH#IkOh+h4jqsPBK&!MU;cMQx)nW*bOE^-Uv* z5Q~UDT%L=Dyq+AXR0ic_KHr$rIeUEc3U_BaGFz(>Zm?ef;~9Io z53H}I4N#FfBC1xJQ^S8jTZ&UwLA4-dQu4gJ&~V2i>_L7U)$-W?W)C?Dq}UY)id23% zalxt?D(bUJs|{*q9G5X%Q`*>2N*1?C7mpAOUzFTKt=l)&s^7j>ODc*4$S8-_va?ee zpm1saBGEI8&8u9_H7H9LY>P&{NWkyYQ<&o%c?1leIxJSA+9I_7f>O)(78$X+$ zS4q}Ny^XeO`B80-I%yHdk5G|r%$U+arAL{^I10_3iA^;K+amoE7ks^;Lu$9!n?Q@m z#;yyMxnBmD~TiflI6T_HBR{ zb*{1i!)Kl_FAp&PYw*wLUS&i6_<{gp@FV_h@RNVk%4*lGDgg$b8A7oNz~gx@ojSnx zS^TOA2z(aVbRbUUpJ@ADg3O8| zZ_)cw!t)w>Y8;+o9-#(w>+nswN=@cY%PSNJ+kZ$>1+Gm#e;fgz&b|x_P6^veU9X&^v z|2|M$R(UrGnfw5TdXR%PZhKwcR>dTZukpHuTrWCX=a?zQHc(9Kd;9vt;f^LWnp)fu=BKlQOe*UY*urK$Z$4FRBJbV zT{=(`BUtODm0(b`3iMIweJbBi6Fnvlb;;;yIc>^$*BdgsF?G0ki_a<#KKL|G2qpn( zCHXcZK%#}|KWkiAkXkxBU_MRCZ63n0qw7y2i_Cb*T8#)==SQpJ8!yu`i=IXUIAiUGb^EZ^isfDYd! zurTMNPIW7i<%qv?=KJ*)==RgVJlEsNX2rPJ0WMYtApf0V(X%eYfuutxlYLYzz5f@9 zLw4y8gZzF9_b*$mxsv1TbusvZlL_@htTJ4N$X8&txUfd-!H2)X3{twju zZ)r+)Qy>sz#tBIvnR0SL%03{aAV6+b2t5V?Ie6GX5W8Y(_S>%Tvhwf(jm@}?x&CsO ze=uV=p4#)iRR#sv5*S984PiZMTWqi9yhRhOO6bFChaX_7Q=}BtXofESi-Te+jp8 zxt=yC7>$$nB#yj)bppCg6Sg;9~*tC4i3J!<~mZ~g!IFWcz z%5HgD5sSR!2*VHLgx!Kc?vcr`kln%L5+6|j=u3Y!VTV2S6@3c2$vYL9hU@t3+tgMy zf8iHUHrV*B3{YqDiO6a=PLzQ<4rxsPSEXzuO)A)`BZ!Gw37M^b+4C4L;Og63!1)kQ ziIbv-I6jp+Oynn3Pr}o3wc*C^Y`GGaZbb7!h7s*+5gq$|1fZFwx8D)62D0`~mWGm{qGlBGrc8g| zG`k)0rjqu6`M8gcR za;&hN9udDWY1(%=xDQ_KAw4md7snXld_|7KFA{ss8G$3>8}~x=)x9tZ$>lB4`MU;R ztwia4tZ9Ayk__#+uPsPKcO3c$k3iQMjOEWET0>CMU3#t79!`80RVqsMn5AdT#Q_5$!hBLdR(~7m~GCAFbkX?Zk%_eQ;eQkGbrZgT0q8#&^SVy~08Q9GDf8Y)h677TeFZ;+C-Wt%cmvpzZM$WW zz}uQ5zb^o_;{6aPY~+|lw^Z@lk}v{I8TnJryHAK=;Nb8%t4rr-=G9(RUye)dGdfcb zF%H%Eqb`d1lcJ1g+?eeU`G}p3tvzWsFC_+F!xE;a@6V#!L9GSK5+-Ub>9x6}**~qE z-5ujredC!_M`PH%;#yDIW!4O?aCMmnudLf%>-h%Fekk$lIn42ZDRa`pGk%Jv12(Yh zc40cc$6r}X&({weEnWtewg40e-9lZiSwclUCUGED^&!*fXoEHOo4_OV{Er=_S-CFA z3R3mOS}V6@mL1o%HXp6H%`Fp7gDl1=K6B29pSUZEGl=z)E4s-0u+&A9eXL&q^UPMV zn_7OY)4~~!*Y2gqBv{$m-LllN zOXY2Q4wrDe&>~S#SJm+3JepH{g#=3wggC}ar9uuZ%8`Uc!PTXKWB)oXQf`H-ru1x# znYdC5x%%v-EL-<1MlV02aVNGc7*WAely`?p9yBOlNv>E~f+TSn)%xz-D8G@7i}N+S zR~p!rZoOG8hi=$TdDa$O;&Es|d*0V8U4bigXi-EIa|474wB*Q~PaRCSV?>1=New_@ zjCPi%GY4#7(8q;LWK8hwb0)N2!-A+>{S0?psv_yuTIIlRf4h!8FOAssr{5P{;TW!y-!_(m+#dUxhx2G z>mr1of-{?dlz|{dy9mY@tgrJ6WoznJ1Kol==QUDaV5WgqnRQz?#R`^%|}xP$?|&$?=zmT_2cbQ8j+{J_Jt z1ji_AAfA*8o1$~qR%h-RxZzo*IxP&)=AAhhF9Sxif>*^)~62$>>L8lFWwWn zeN1^F8I4)9*Lz5OIRwMqn9<%?H*2p!wvs;~9iM)4=~89l`bcNWy{bf##;asX(H}2qYJS(uzJW;NDuCM8X&APc0FXZNO?o zw}>Nv(?c%jyx#$?Nqp^5OL8Uc6|C~nK)^DfH1q}9fYNuV*sRC<+qbRD`QevPrZ0CF zx?NccZA4x@dn!&e4e?_Un4Iu zMg{HW)pap%ewFV2Su73YAIn8(XXtM1xojcXVPKhp6?ee3DyehLW)!tLw|VS|p_AJg zcqJjJ@c1Rfnc|!F>%(4CZTUm|7ArbbOUzfzH z^+v}A9=k_j$$SoH8KzoU>)VUZSFWk2j2^*>;i7NHrc zzalkzyLA-npjZVa(8}gQ8o=z*@zMIqBPL0ZG{{M+mKeH$@auy0-LPhLD7+U=6#iu) zr8>;~1u#zDaRI(9^w3Ttvg|@zBlM0RCI~T1mDj3|P+0y9 zy~elu>+>D*Ka%vnEn6AqL&r44aN(iFk6ThF+xN<1CJ)oeV*Kf)dZab*5mGMQ0^cu$ z(OlP^X)R3Eh2L}49tLzb`Hp{~I_=y!a+qIwT7I*xG{};dmNy$qjB0G;eIoKgL+;wk zpgf`n-0GeARxdgD98NadP`i+_SVNu97+}!4d`f+b9~_Q_Gkb>3q_Sa4DG|Dx7yr{u|0ovOYhI;=TAPN;6h- z(vk*o@WDd$>9|3J-+$Uz>-zM*g&Gs+wllIBT_1ax-vUx2lJX>x55NdI$YKeFQ8DNc z7f3%)*#gnf6}fAmv+Eww78%_z860CGTL*2sd46u=yw ztJQn{N5F3|%(^pP=yd{HDiHoVq@WOrI68}O5$-gtwUtIfVq zNsHGdd|yC_HqBaFVK)FQ^eyhrd~4>_zpI;;_sN8vnlt(>)|bdQrhem1=<_Ys$a_xd zPx@e3c)P{ZsFN;>9QeBZ5VI2q4>HbRyI>~GVI^t()+@TXd}0*U$Nkw&`~6awZ~Wl& z(bKVb3EjSuGWU*eZn9I$9^a>Ux)@vpt6Mt_UntuG8Xw76&M|uv85p1rMlL0l0PT9k z3&4m(fX@d>rKh;X7+1+zp-4iO7^MC2*&{G6Qn#-mWBvTGb?IQ)w+YXmWBKq;=#+K` zv-7&P+BQ!@ie9?QA_I~Xd6e613e@2ZnS^g~--)P7HgVIE%DeGrs8ZOZm{gG@ZEm2vo!6U7Ob@Wx24=oPq1Q# zI3l7r5DNRJs;$m82H*_ym*(yy00N-?^eb{<0jm^2+H}6f|2@2eE4ersfCMI3uwCXp zX%T(`HuW>Qxy11M)dWUm=1ESHS7csMARv+Ea;cFJg*zVN-c$)*#NQ&5$a+~Qc`dzg z^%I=W=jF%RMSN)$A5-{r@$2qblD!zN zsvq@x@3JDG&a-7gX0UiaZw1`aZE)vw|7MGy1huX+Nxh&kE&u)sbxf1K@lNg#Pa-u_ zG{?zCc@)ks8^+Dt>h24L##@~{myon!-YkNC#fA;@f(L?rS@856LZ+}~;x;9$%QTNE z>ceW@Y`tq{5Yj8+oB(mmeFSn**5rzy2Ej5>t&oRLWvi`eQ>e%EeKO!!QwiUCaYc;V z$!G&n=t0E9R=FT-IV>sL7nlm3mY*)_boCq=U~g}&vD zr5Jn4HioTwbDgqHV!>f|;qW5z_jF+h3RuzhxYFM$b11X~l`{GXYep{%2zS1@A@ojt z`-QSFy*#S2lf$j(0%!mSoUy9WS`71E=u-w0VaWnmgj6i{$&Fv1({ytha&c*E7U9yc z*ujs4Hg9^MS36XtyAAovqHlt%SLa>egf`IH)oSxB2pn_GzpE!I^Z+-b2hc>gC8{~(o0kP zTK2~=U$uy6ay&-`xtPY0m{ITY$+p~*1is?VV{H9i04hxk^^RbNl?okibT|sWd8a}% z>&0D*l}XSyj>+IK7o+K3KqQ*8zYHEvJzl8DUhsl~_;gTvQ-%;wQ$9$z(_M0E<3 z7nU0aZ+Brk`6!KS-@(h=q?)11BOjwzD_ryo(j1A#uH%FH<2Xm;Hp z3K0IB^Xz`v=-*P4Aa~~$q0@_;;1F0f$9mB3mTp!ew~9I$;mPhl7$Dj8wqT{Bu4a)C zck?ad^bztwWi8c0kX{`pjpyiT31<#t%^DFc>NRN%{T*&NcdYB$)?-9k@WyAvrXVZS ztR{Ldz4y&pV8Uyd2-q%H;hv0zMQRypQ3>zYoBij|ELdli=3SOn=w8!60*8k)ushh1 zzm>SHO{mSE{=@W-y?7Qf!IGPPL$hdhzG%7iCdX{5Z@FDo!5;}6|- zqY+~>>HOF!FXk=k8!JB)pQH6lEhk2`)EG;#mU4}_fu-b&wi8?QtjIC_OUV!cHIU^sbkrM-=tmI=SH|! z+@22$77ot!C7JxNPyj@VjEPgNPZK?5SB24ehjxIa0a z-e0XA1Pi655H6+fM?x#I2J=uF(R$Eqg z3vMAzm`#kpj#FYRASXtzHhzd<f~+5$T7vj$ z?ey1K2EgBEn%;;hW%%*G#5+SGI+n<4zy`{ILkPJew$kZ4t__0Se`Huy(D-s}2yQos zABnufT}EkCJE=Ln{(?H|67a4GMlKR9F|(ewuYnT$n#`3{zm%fFpzsibCQT{D0yY|4J+Wc9|g2jE_ryqZ##$Q~BZ#m?!+& zC9y}878oWZ7Zut#_XM6A(m7%(MGw|*FJf zh`vd;(NJvlvqI8agV{)c!!Asmk!Wc})U}f)ZPxLATG7`SQD0aTJ9@AML)UYq4j;=- zaJt>Cy!`39wn_CZDu!m*9Ir=ey~=|7%X|yoOQxR&DpvN;JL-@vEz%A1gB>U?-AhgdJNdt}Yd&YN}d}(V@ zu^=cJYEw1{k--XVM2k#p`+1a^q3b`Yajc!YWoT1=jwx6d3{4`RW)LV_ZtC>3mmz_7 zRFfy!9u-dK&nbbFsxB@(iWr5JI<77iGW5F0#=zTl!>@%dy}Fg?+FN0TYCcp(jeFcks^aQd%-9ShJodDmO4Jq- zMI6*axl;$5Sa4;Gw^SdQQHyS%E4d9V%^XdsWqWiw5m6ix}P8~q6FX51~O>da{;>m-; zRsN|CHU-MGU0s$lG^0C#D8o`mUNyFQo=!GO=4k|~yRFNeRPrvEqBZO13ce0L=63Af ztH96hiIp%FBKBZi6U>><(%Kn&-mKFHWE(;scGL`j6eS`o+gp#iq-aNtotRI4MMroM zM3jXZO#mFVxc%;(3*g^W}i@9WE5d_@AH+ZTv$7*AOKo2|XNN2hv#gf)2K zliUDY|2m-miEAwVj%)akRe(?K%ev?0;o@*a0$e-%K3k|Aex`%d$x%gZ)zEC*S-PrF zT4afIJnWUhw)R0-k9k9hE_Eeo!;JsxSRBH)`hdn;SGRb}jr53)`vhV(l2 z%9;{$Bo)W2fv@EfS%mvV-!s)aWXomOJa9izn=Bif)(*s~>b0wiwPvTi#&bPj=X_Nw zeoUAERG32f)jj(jy0&Ij`rcKIf>>I#699#UfQdyY$+jWSizs)m4G!zBHSu})(uMj| z{m~qtmaP(k>*iddXt(zE| z2iTNC`27q#sGKU z{n!_UQWoUioyM{G6mrx!;a=a3lM|3rSjqt_LYf0;X4 zy+cN{$Z{+8(jY!KpHdRQ|k09z3F>=cveAH*eKPSi0DM^>m z(a}Q@Lyw1exz(}h=5WsYZqR=(q9NEsocIn=0QZ z_N&=+6WwtI-Vfb2?(9~^Nzk}aw zJKi3%S5Ss)vbUg7^gGI~9nh^RrpEgW=FTBhG+q_Qhr%VbE1;JJ)pulFR_ksJnak{% z`-7J6WR?$uOe<`McY5=JWuaVl3SLqM^Bd=ZV+nj+%ov&r&cRCyy(Ii6dqkvdKL5-t z{tj`h$PkD8zFDsG64C?uZ){#F2k;8aiE3Qn!x~`BQjLaeh!f{{Xm=ncRMa-E6IUg^ z5MV>@AOA+0e7Cb9li>Ak8~8EvZ4<-U0L`?5W@4y_yKo?4LVlHwhXa0zu9WzR_2an` zhZ-k*K7$_J(v>HobegQCuUh>ZifDGJBmZ7*dLzER#$B&sx0+b`=+6{7y|K7v8nYB$bf)2diZZLDONaYagEqp*=msAx z5TyZ6`7S1Lw1X7RrX|40v2yT)FfTrvf|9V1h6z#v2OTLcpI_uGuliwOFs-h9&T|U> z)8B~UavYG?ayg|4~IOO%y3uHQj1vNn#jh)D&pfI5#*blakz>s-bl zaiQR4iOaEr{I!3R^X7F?aCeg8{bhfDp$FG^NQ?`DmvNKc&)Z#2tT!9vO)miAB5 z?wj=|?)LmSK@z`cbF{Gsx?-T^GG^FQ^m9n2N!0C#rRI`dYJwU^vKMkFNy;#8zno#% zZG6=j>8tJEWl>)>a$6oD-gBd8d%tigO?GX~Pq~U)H=e?OP!IC*s@DU`A4h^_g_kx_ z7Q&AT8535ZV#ttaXA6iGz%w8R^eX94oTprkzc{(1HS z>hbliP;^k>RG&`9&F!3q;cdtH;!w)|dOt3&V_NOcN#BagLbd*mZ!dS;^y~!q>Lyw9 zE>001FR`M0RbI$3h!e}oW#r9&c#SI#39Mo0BgKEv7QY<;EC;XLgArb!8DJ6SQp@mN zW4|%uWogGc;Dk1-VZ~{E_u{zo@>;{^1A1#KS*3@Dp*!87h$U75ChY6*_BqxoA7X4~ zCR$$ahU!Vn!TI=HoZL)K!DTzRLiF|y0!df(z(p-@@Zr~_xiKvpy+rT@qM?^pI@{!( zfmxkztrgQ+%C!sOcLXa7M+-$Sx$C+? z^KoCyi9<_tGch2_`W#Oo%#(Z=G(3@n9%?TFLgtpzD(OKst=ROMe8HO+VfBJ%E?&F{ zEzTV1cEa;((O?nnnbPuY{;%nGeZVp{vd_xU7^?B_GZK>QkMP*lH!{AtXSiWjBoyH4 z5v*OV9>7BezQi4w_I-0RYWbD6YTX)AxFWUL@!>?U0Z$f$pu1<>>HZ;Cl2F8= zTYIw9kdos~Vfa zu8AhX$(>fI9(6Rv!e?eCuBWnWm5sg=;3xXbEFt6=^0^L|=$ICs{C0ld+czZYO@9e?<@ z!5hF0ws*8MaRE6yIhlf-E$wXoBudm3qSIOb+`$!Y6##7dQPCVySk$R}Vc0jD0c}S+ z>?6tJiY4CHlHSJO;=RYFlSz*cPu_?G;n5lfJK5hRNEd1JWg9HouE2yy1Yut-c=2l>7bt6{3ht4g!#2?x={@ES^Eh6Lqg!)crz?>@Z# zx+|;p;iu6a+D{|%VRLsI7gQ|RD-)6*rM908Z4KOOo+>bc85E5%fui(XFgu+(Milum zqtrq4(WZwiHC(qf!Tw(F<{fYAuE0KP%X=|S2kud+VKge@BNgA-U7#pKZuDui8RCX@ zhUsX}eRI)-CWTnA}r)@DG&b7ezY3m^{g$B%@9%Jn3Lph^)!Q(cuE-E1_<44R)FPafkT1D9_$zbwFxRUGfney2kO;rOYPmW^;rDb;oo z=;G{}>vI_t>Vi77?`{$H4e_Cy9%&GM>4FdMtm=-HOp7;kIhC1$ReVx47_GHyHDD`n z_0}gS+G$IEmL&z75QJN%tsjbhNr_AC%$bDgL!5BxG!uo|jzzw-X9Hyt99k z*38#w5zx-|z{6q$aPuxl>w3L^LVB4YV)i*WXd5ezGEzUg5-0`FvVz4PtRs(yzg zfw3%)UhPsJerEhDVF=e66f!#I>)ggB-9&|i0+}SJK?JxUs!!x;VZ>Z1J25dSz2g<* zA&uXNPG6|55vHBtkszDf;j(40RmpW3xA&Hd{yeO4*;taDvQJ-l;dL_MhUhB2WW8p@ zC(*R+=O#TF%I`IjtW<7|u_H0FsX-*C(d{^u5VdkRL$D1P`WId=#J8p1KqA z#O0?~T$3k2R=N-VpBbigcU^$sXM_j!0K%R{j6T4}zwH)4-_Nlrlf!!eBFQ5ovV?U| z0|2JK$H3&{x-KQ;7^p#xf%>0g@V^RHn3ao{hsTry$o8kUKKLI4#?Dq9rubj|c{DGH z!e9)jo|3YACBq}ut(kbSwAx+dU(&r~^m@Z#x9WYidk3G{R=f0F!o>%qfLP@Wg=HF) z7`2dKw9Cl^Q3gV}IY(;1D7D@OaGf~~X)4?M0}dHctJ#}f`|F8LS(h$d4dzr#Lo?G< zxr5QcO#6pStWl+$AIdMAG!G6;Y4WkGO3alVJpc}|Z2e9O+0!ZCtp|}lI(-nev~Jo~ zGCW-s`0C4-XOV!+J<(6w@_yL2?@^DgSB6RsBOwHqOj2&zI@c3}s51vRZ{XW*T==oC zV^xM!WFMgu0p^p!1x;+sP=;`%1Aq@m?D*Nf_e|6r_6D%2gddnrh4FcI>~ZX^1g0!x z&W_|n_|wV%TBlZ}6B_`15<~t}>>a#*SLv zW%b#6_NyMC)=PizHufsC(~Fr3pt-R%PIf$ixx#s87{rM!?U#UrSFTLoU)2d;NJ$CQ zI(g4F6$6zU(1AVhLMoc^+t;8VFvf+V6)-YHLMI-A-$TeujT*;$*IIy(I}5MTZ?%adZCOJ)i$Dk1;tWRfO= zC%Ju*XGOdXBDL#FfkMp9A>I?2d#JK=YT|~4>S~UrD{rvx!ju{@yU&})u*EwzOMHjgVVfL&bU0uf5;df{^Vk0zU_lipe zvOKDfyx^(e5}lo18n{D=@IncZUGeqYd8@xId?`TIWN@@v8+Sz^AW3IsdnI(2WGeRv zxvh{w+bvnB2>u_+^cNT59+ZQ~I2XA+mojg779&Sw0xm60ig?n|dt~KO% zG+>S6lyS>%_jQ?6v`Bc9@wmh5M@7P*c8_E5VshrMW16(v83w?PYw^l}M#NxRV*f2c z#Y@XkSn*qEDh#LfTVA=@A{+Iztx;-sXi75=Bt?!e;t`u%ikN}k;~x)8?(H(YswxTe zrR6(iJQ=9Fdd%&_3J9PsPGRg;4XoYQtaOxAYNxH( zBGL8U`4LzL8LNYbe>D`&=i^rDiom<*;))!l+xi6%VJpvZLjTa7GrCHe)cZQ5k=11N zIz zn3Ip!AkTlA8cO{6VG_TB`j>I&r-k~LMev~ix5&T<^)I8d!t`(L68Rdc{`noGS)rhw zQK-lcwfPrJU+SrYY$2c872jd^$Ks(U`$9V7Bxh{NV%7z5Lb?ClT+0pB_IJaqX}z2u zWJB2BuW9=o@-?w|p*}o+NH!l-^0O!)0D<}+d%T=!&}<0VQ~YmpiC)M57Rv8=VXGii z%-@A|dhp_vkcE$s+8)B>b}1-=x@cjjuIF_d@=&#Z*NN>j_=6$qNTK6n-ATYsHb6(` zzY3A%Swp_Fw0&pd2sCqMwqs-GvjT#6e``t?$T)k5WefQ|<$J*@gaixDWEA67hJ$`g4}6I&k6%~Sh-SbNK` zEVr!ByBldn=u1KX#2A(#jO}sirs+2EXWUbs){15H$$-RVNyTPF_0(2>!0|-Aml%MnxY=mwN=FkTz}H#3>)F^DTbNpy7}K${ znzL}RTf8KPxB!gp0G2O|?Xy;|U4FbCz#=9Buml6JOtR(q)NRXR1C6pC>%K~Q1D7Ds zVIwv6^~`&Fnn7>)YCCbnDC_5@I)P;RBo*^PQOqgi?d?ZjDyT!jC_-Un3N`nHW2Xli2sH zh|tcy4^_#E5?09CNH^(^Vs@7(4hYo*jiz3j9-F8CPK+Yo4{Rk* zi$MzSguIUviLwBJV_j1pAt0Y#A{k4OVmV&0R3k&bC({8dAxfw@=Z&sZ5&qm~wQk*2 zZgkNY(|OTh9;HdH8GJwIy~jkI@Wc|i#&B+Tl>3e_&A2x5#%o!>ZAm-u#xcmaEM(7tJ;>R>jNv71 z{#o&K6lLxFfuuE#T~L}0fvn|e#I;_PVsb?M! z1Tg7AwaI6T1_*(|$oyD4!41D4UGR1V9CsaM5lBr}7x+)rLeQR9>(FlRdU?Js&Ti_r zuxVA%cYOUN))&$Ul2nYblRXf58;hAd&m-45jC5<aO+>X@_D&uU$!P!8oX1@~sYi z;$nH`5r2f;gV(4qg;QB|&U&-+3j2GB*lYY>JrJ>DM#Tf5HD{ec|4^mgayJuZn|!Mh zTru}WEDOV{Zr#a6Nk~}9PA@Rnx5%BHB2j_FpGBqQ1GNL9F*}bAJ?gDH+Q=%#$Au^! zq&+aJJjEB(ynoNk+RD2$*ksN_H+Ka6yYR;jE5POr3_j}f;QuLeW*4i0kNSdvu?dh~ z^#_9i+nREdp5aQHerpPTNP1Jx2P+Dc#4rwL zg9jdFW=}po9kXq{>2^iHX^QejIE-UfTzr535ZWP5I9H0;m1{QbU=cFzopTx^a%$qp zG$%?}1fSR|>7O7lmQ2S%Rm*G=vK4}9?Qjv-A_A@DEMzIx98%hgO0CW_<2LS`JdFH4 zF{4&2RxT1c2pok>{c?!U$$?4IefA~jJ5>_i-6kIrjb#zdm5xsDk-PMb({1MEJ@%Zr z%cdWkuReP1Z|k5TbrA&~og*U7RjVn8>r$Q{3rTjiQGW%k+3OC*gh~lbw-nXBzAmDH z?VceLxgtrIZsw(OhudL6Pja8@39Cedw;j)wx)Ef{<&PR|6*Zer*v0In;Iby(JO1?n zW|3yKdON&**eP{y>UGyJS(U<)GGO8YiC8JLf`Hie%Z`l;MAHF%>|Os=_A`i z1*x{nk#_ejp>KXBq8aN@RL9p!$X7@~nQ&T%fQ}YfqB+srqwy=6vF&xK%tI4RVsI^- z7libeN57WHc0jE8)9{sYGRnYCC!uB<$}>(|O9f9+G=H!!uto>rM9L0SHoxcKt9(Lg zpgV4<`V>V5Kj==mJMT`Ox7A+2lgTms@ z=;=(lYa{#|%~upORaayoWi!jZSi===7xeM2ly@6l<+x?Db*3+!eOY*x=-j34%#lx4ov3ce2CD?PX_ z$NLs87Z{-^etzsHxl;vFF>z?3H~k@&{H5GIpT#84ssu;UebGFd^bW8_I%Mx)VN7-5 zLSRuy*0`gf!2CsF)L-)=RPKvk((#Q0^>qBF`*w-e9?4omd)r8Dzw)~sST`sx+RRUH z{kXJW1^q7yraPYf|M3KWP>5B>M|;7*2FUlc|G)kK4yM--2`FE|r@?S;%sY65`1v(P zhj=d2WA)1+MU!t*_x!M@-N&Vt8$b!R3wc@EDoe+Nhl2U4gZ-q?m{o(YEr2UF%#j(H z!qMuvIEc3vSO#x`E_&vv!QTOu02Fqsm_ROmU?y@ui*d6Ak~Q#n+eMrd-j?B(3JD|N zXJscYI@SeaHp7QVE2zG%yHtwa4J0G62k&X1k_Jy~YRZ#=Njw!bWClBGmZ@#xEMp;4 zo;04N(KI0MKcDd#6Pez3`F>oO8oB;K;5f>t77VN>;<(>$J^^K*cQ^QvkC7=2P8GDV zJ#UDkje*j<<&sQIx9Dq$g5;uXh@IkkS#U%W?T5+8pTLTgk#AH(*UvYS50;beCfsAW zKYMlVJf8r{DOx{6&V5E;^j>^H{ly>T-Zt3i?L(w?1pYhI@*s|61mCxMTD1~N4l z4s-YfG>DukF(L~*NDw&)?tR8a#76ew*Sj(FsjRHe7>uI>rfo@GHA8`&k{G zoCGajy9d3=Mc)vY_#l*ewb7)a@m@~a*|F;X5C8<@zP>oYK?;#j8+T5A!F|BOZP? zt3!5<+wZ2(Nz-!=cK;rJsAO=)XAQsvhM(eZJ7nQ(=NPMlkNBbowg%2Fj(>yDZu=)P z5*X!kh0>1F`Gl1#IWA)L7EpyZ%{8B2x4&Y?SqDO+XRBy_QMSRZhr>tL zAoLf_#2ret+AnavW?J-wUzOxdO=ciNz!_BW>8icJz&-+BhP>P_Y^a({C2}XFlV?LR zhz+;Jl9lll!jf5r>Nn&&Wop3!K8!5Xx#{0B^UODbnms-E?-#|m;jUbClebBR|6+=la~#U|Mkin z1|leE{zww4Z|UMw09_E6VpS!eLZpK^G2wf@6YqlJPi?zDt9d+laC{}ty11Qu0UIwj zVCcW#_lcHD^xe22i%_%H>MPmx`BaGw4~3d%7^G&lRu3JJJ==Ofz9PZcuuuir0-f3= z$QVDNrq4LBB~fPinhCxAQzX@D0Bu;bY)c}qnM5W>r*ZDK%oWQ$L4JoE6LpPM67_CxDS{hi8>H^p9UR!LXw`SbU>cOz@nUXLMFGD=ITd@?FRw^s$-59s>yh8AL zps@s2LHQ|@3sn#8if>39KayC;TRCIBQx>3nIarPy;)meoTxS%LJH2(oODX-Yjj;Q3 zcF-w2^AFkoR*EjP$CA1u>KAL?5+_He)^6Gt(*%YM;u#dySO2F0YFC52A_mRbU6pn>8 z^5|GNdYW{|m7=zkajUuTYFl-KrGG)tP2&c%MI5od8UQfG7?qG+B#Y<0Ic#gP^9CCt zpKgJAb6%-gj&Wk>^xmN>lzV;7y!h97SRBm4j|==k6+uR(cc#KfX;iTN>ml+<=6h=@ zX1)bo!~+Ds;4BsM@3sJQq)q>9j@s~-cicC*MC~@SEqB@Xi(SaGzfjQq>f%E^GXepF zzuS}umY5$<@2*J=g>N(i(NWr5Jhs6w%XSHVzAq3drDV1ySwnq4y0 z+yTq9VMKTK>wpqK3BI&shrU+mRm$)B_~r7w(Pz_VTXg1O-Z}O8lMq(u;rQJdvm-e? z_*&#iFo^0)@jh}|7>a*8DL?d{1NOJnSQ-WD8X-1^?P-M|;?GUab#W0+rAe$>sabRM0TG!-*Sd z`Q-ej6k1qnmS$(aXD-_}jj-&))1)VK1-yYqtg1xHmkAvTIItA+W)8Qt6OP^&Lcj$A zRL0Lk>+|CzQrh~uKchfv=44dR99jJ8U*J|hIcmoV7mprIdhfGL5oJI7Jy6z;W?>dzVxzg7i@j~^-I}Y-Tz!g?Slt~COf-AAy&~a`NX8MnsALTKM#NusJ z<+*p+jGzO}x zv9g&Mb1*#r@BXY8fiXhBr3Zj}O=2P2EnHIgU`B`-rVhmrOpK&d0Tb0z8$BOZN?SD0 zgZbqYo=g@BJve;xW;w$><7E3z-0`G|_C13JM`#HzWqXMHdyNt)hW;BaO-&Kpiuu8S8p4(r%rZcY` zg_Yy>z>}x18R+4NnN(nh(&!nBs^KtH!RyZcUChdqI~b@!-DPgengZk4o@Y5?0{?-C zi$-0{L555fj2&)PQ_#h;I^!o%!XQ&OXZqJbF3g?lbQ>b zf_Yf7B@UabB0^R=-PaYWnsn3OUq#RuA+ea#0=2N1^(<}4a+&Oe!VOfIk(DC~9d`B? zU|5EqzzzqV4SJ=>3lm`6q6!7PcmT;Wh-| z_NE7@tk}_;Jo-^~&Ux?4CD8J@flKJ*KSI&4E>Pi913lnOzCDOjXnX|yMs z9)X@mH_x{tdZ*UsZ&U$oisLk6#}>+#O2^oLH;a|$pC;ZTp54FC0wSFra$$utYHVxy zo+8dU#k@+dQ05)UY|j=C#`xvudPKN61a8n25?`L~r)VvlS=eyr>a-z-wa`tV(1qqi zGAn|#EJX#R>dNbKJ7qtx+)}1ug)hG#*|I26GhrvYyNdgKWxmKJq{nbglt^XHiF;Ty z%$KQoyX>3YBy7LmLIUySL0R*F%n;ke^0U9(QrzCHG{&Q&nJ%l54oM;C?CCTX3-9Y6 zEiS&j_J`+CAQ1b`m1N_|iY%qjvs%>1z+2#Aj?e#9@&j39mQ0Jczqx?l=xq*u%I*8{ zwXV~A+J3J)_?1#o$Y2wjtVf8rSz#x%u-7e6V#X?r0$F(7epW2|kluemcL!0vZX^fCF3mAR8z8=l#JK&m#zw{9!U=F*Y*gU@$PUF#Zd= z5xIruqL}fwh#xYo)=CfS!i7gI)k{3GR4h4(5g%D}^ZO~NnCNI~<-7fW;^Ou(LvTo{ zb{WTKZaysQ+dYK`_dXwn9tG#)WxYR-q57LD%y-9MY`s~8iX`U-jR=7H59)bfJy0WS zG}U&78onOyFHnhC_rJ?1j58`I`;jsSWlCWpj53_ZrpdgRp~OIBUigV1fXcg3w=A*i z^cD=gth`w&sCO)T9D1WH=L?*FzWSRQEJF*rj&7dc@HV2fqsuh?3Siu2$0d6-S|Voi zr}ZG?xXZhTp&<=Ekh@;n_Dyy}6obv~$4>$Qv97b+=4SxA>)FQr1l`2ys9Ky__$T6v zX+7U4@}BFJx1>aBa6&iWBgLTz(Q$?>9B3kGncxZ3G!hATh3Mn-Lw1$fGmFAL8bS#z zV-Y&7?YlQ{-pdn1AFsexOHK%~Ms<9T2(!W@dRmP&PJA+#1XyU36_Pr%71zQr)1IK6 zX`h%5dA|8IEU$iL3v;-4?>oQH{a5))2@RBWF95$Pz;LqvSM{DlhkpWSV`6P>=laKJ zN}I7{6SQkxVJcBKepBGUZ+7 zZR6)(51m%!cl%tTo6yB|8U%@uHEL2%i?MBPgRr$j!o~mPq69>s)o4G`P9(RvwzujL zgVYY@dyDl=DG9c#%1|gcJWBBuq?eS+!No7{Jp_$pNtzGsl9V+k8_ca~t+}-^V(HTR z8kWwN5n&iAqrv*NkR5}`NmfIZ%-BiMD#+_iA<~KL(9UY5XZL8bSyPjz#W#7e?5RUu zOR85siFR(bn{c2Q+}^X(d<65uC9X2&qL?ff=i?!p>^4+WWU;i$B&+w4vog_6+ZQ~QFUKBbwv}msPSz+}m z_M!`Qy!hyAuZ;r{)jucv08K^83y)x?5#X`$-VSSv7KM{7Ku{s(9ctjJK$gx;NA33& zttHctJI@_RS5IA#*Ybb0@A=&Mt97wUI^gckW2<0r@m{pg&Cb@&#vM2>GX;uo0T)S) zOq`r7Y|UbsG}%CshGIUtKDOjh69!)dYxLBGvsW_B-DOd%``zcsSWV;kv zWchnIg?UMZIEBersf9Q*JGtgUOq~o&9FxOb0(5k2Y*|zSTy@{Dc3uU%u4Mi4IchKl zF9|UaoK}kn&X;~#+=2Ta)9ksUds|#9DKJ1!4*+3&o@Z#z2LIDlX9Fi^lUPPg_W##j zCSz&jB^78U?P#S?r0%BVODVw7#KFxY%TG>CnfpJzB&+&HR)>|1MH`sI zNmfG!U7(c>Da$2_vSa9tMhWq+E_ypFmR$h71NQ?<{Qd?UA6QNP)j=~y3tQk)#`6w~ zseuuZ|a+t@_O0@ST&0at+wLX)~7_|oBMctN9rJ0v<>U!wv`GYz9mqBdhtysGIv z@^rIH#tUGY(t5n?KHqpf^-gbh`>Jm?HPz81$)Uo;p_i2&4!~XNlEO`QZO~)Na$MXm zfadDm;c?bM`4^dDtr8)lgXc;~=M%cs{ZR3`>z~7gO04HF z#rizHo8tNv32Mob_v}47kNSt=g^YP!C+1bp!UaMOZW7Zsw}C&NCMHo$)5Lgu{!yFs z8CcKPGy=)MsOf z3oA8`92W~fdiEcm}e>82;`e^ z{H}NK-+^k2A>VyJj4jp<(a*iL#rEtzTWU$Xc{o#dIBnI1TCQ}NOVN~|bim3|#HhVt zg`d_Db8}+`-Q+0LrE1S#TGdrg>(GRcr&s*u5K_?Y#gJ`yxcr3+54zT!;?&FXQ{Nx1 z-@&nZHD9B(r;5Btb`G^oxST$W9;Y1dOQu=so2T3!tS^I99Mckp`nq?WWUk=Sgs`8X zsA+%@Vc3c*x=oReBS||*78$|z?w&91shf){{{79nv=6g%Q~Anew(KK>tIJHU=&?-D zDZQx4C6&7+LsU@6i9w%fF=NKPUtigqYkeJUWWxF7+vD?FD>dBOHgUGc@3W>GYxd>` zo7%guN<6C;uNj%%CvW~1{F%-0i{Ur4Ub*e8K`BRbkwtam(lGJLu-IS(q>|_&N(r#! z%&1cK-D4#=&>nmXE=I$irdND@ev!_r(Wp-Z3x&giO@TTMa15rU?28yO#f}lI#V}C6 zpL}pUk&6nW$)geoST|JJyzVP~^13j-CLXUClbx05S-N8FVsE(nb4JFP_TC2TAYWKz z>k)m*R}^)ny%G4YNqojzd!${w6Tn;OA8=D9QY(TJgIZPEpOf-h-_8hNwb9gD(B9a3L^ z>1Nj&66Ox+cojcdtvFp{e`xu$Blc#VBj5aRLoRjRBmX!J%mjDZ^*ot~ilIHrasHU! zqkz4HO!)RDbcAqtE6fPtjbEN*m!z8XdtZn5*D7Nviq!7tiNETd&F@qe zv+UKEdD0pf{p!Z)tcf&&bga-+Wlal6#!nX^LU|UsQ z$|&35{`l%C!fyjAw{$C@@D2|7G25E@r2qDD8OU4x*3_*5V$5R~Zda{SYY9P>fLZhT~)FK1s)llZF&8A>lJ zMvSpVyF|N&kRX{mI;9K=sOaG25$|kA;BxnC%dPNt0=LVN$imvw0PUSRWVd46&3b)H z)i2CqV0lGn-@c>76N$x41dult`POKYB|lwvJVqmbD4npI6FFA(!7g7^tml@>P!B#M zvGAILKIk{+Bx`}eOBp=rPkF$ePdz@H0Q8xO#LD1`4Tx&sY=2!j z71scVhWNvs_F(up27D$5B2iHToIBC(P)e)e_XqHWzX}tM>VUidX-)r4C4D0BNy6vW z*b{w?!C?~jj-)g};W6zIfa&=BT-d$OJB72}2->7sOUuv0kIz|N_3iqJG5SPj5iAYT zS|8_ci574HnZwlMN`q?qRb`sgWs zM=CLT6vdI4jfxC{s`%Ar05kh|e~f36+ZO(K0eyW{sO*6u{v5mWdhOypBFG8V%xpg` z?^K~*DNGUshZGLomxG2eORcH0OO`&p)OaP+adZZ)t2oavB31a#xU@}bMCELWEhER4 zUp63P*>K>i`s&OA+jY|}Ohb>+xZ(6GY*a1!vlE+|BOj-ncg%Ky-QaM!SSkj5oi(pB zd3I;a;~K9a?j_HAe8*YVkk@yGpKQIP*p-m0sDAJ;p@Jfi;AnBcxN}olkgD|`et4Lc zk3C(F2>in}JzIiy>Il|k06^0J0B8t`8F;3C5xauAeOrEMbdnDZ-z8)S;m2Wtan%3Y zPy!JGJwZi6<`?v>iO%zeaJCA$eJatRt;9m()o=grKKG@=0vtVElzTxj>xfRwKSH=via<}R`Dr?iPL>22aRQ4^}c0oMS9Y`H#?KH1Ze?prSDlMPV^RXLy3E&VVBYLP@?Z zdoR{#CSPi{Mg0&d;Qfy)M9<){a)%ex0^q6r2R!J+QFHJQpxE|jR)uHf>xf~gsWJj~ zl$%uJ<41L~f;MaCI%WtGvt+ene2Ww^!yqCj)PLX#*VU@7ve!Q*Kb;BmEkcR&V)^H<2meB)+jom+iTCQ@F}X$ zVW{#=CW5>xS>Gr!E_UCkH+y(jway&2QR2GdZQ$<3a==POJN3ZOjzd->;ncF6>|oJ6 zQ@ijsdOu_hP@x4PL&lk4kd>g+o)eT#?j)0#waVLG-96Y9olBM^yM%T~bO>;HE5hxf zWeFiDMMHlI1RHL_$nU2!y)o*Eo&9AaWsi!g4eEj1AFa>kQA@obJZm5{v^mu_4S+%` zQ6b6?x1$MwVrWt79R2XF#5rcz=6Hy*di`=MMXeq`f%0p0Y@dUHsz*-B9eq_~(+w*! zw?`0N*`7U2nMGyyBhqJCt5F|oeU)j5J1^9sSEdF)Z-pD9{*J17VJV3VXkHk{hL- z);X^Kl`gPMhI^6%fJ^)ja8YdlaAVqSfg0E^mi4#y+QreFE-8m<{3|%K_cK&?V z51Oa>u30f>T?3dv$zaN5LJv#YOU{NJ*@**)ODEJc(k~^mrMeMkCLr85E;?vo^WQ*q zI_322nDd7X#x~HTu37Bv={tC0#ZX`lwt|Mbelf#-OmO%EeK^}O$IXjJOZ?trAgM+D zY2~X5(H^=zUJ9)b7(|j9KfaK0s%~IAMMQ5zqRO`z&Gj1MYnGCPnwY1o1X;A+;y)g7 z4@)_znRkPQa7xgzWr0xOs0kVzg51mZoa5xo2rnp^AGY?*w2}%^GX*(}dVSmE%{`F_F3wY;We;T-fH~;k~ktg`rpJM6` zA>)o*z*d7LK)jz$I+z^crSjvly)NN3E*&dS1SYRt;X$@W5G%4}+2%*kcIXvzST zsAe+ZGUT8$Wi$lpRCAfI&>5No2StXNc(si!&kX zom6P5WdTh|24wmmRTl?iV?J#GwJ|*5qp`k?H6UzWycS(1@X83XkhJC!se8ZN!MrIr z{QboNthT5p{~`N8Na$hPYsaYr?jJpb(ll8TZXIZtOQ z9#w&G#O?1DL!u2F>wKh(LDsE%&XG8KK7yEy2Gh7XH;84)GU+yRHA8i~rlYkhyeA~u zy0@qD=|@>QniW4^32x<6gqd-zO7)uKH}qBtCM4o9pZ&a5KEARZ=UXi6-d^-tJmQ~q z><&{Q50Rw4JD)_)B@@?gona#QCf*@wLINC0{HLFi{vh?BhGTf<)}#J{5%;| zO(E)7$)8MZ=~6WB-9og`a^f($c#=DQx!ejc+#)MTqyK$N|9Pgsqw#bXkqe->H8tikVSOQ`XXG$qXEiovV&h<7GBjajVm0KXV>Dp_ zrUx6V5gjKplPMhwyAc~ez|6+UW&CoQ93C?SPC zf&c?W5SdF?ifO|E6X3>-=nasrm^F)n&3#Fwd+L5#4tqH3(eZxFf8e|ue6Sf0tRc%Z z>kET$DTi&YF&1zu0u0od8Jmm23L`5-10r-9&l|L4ouCe{X^wUW!YaT*Eq&UDDJS`M zFjo&BH0i+xj@;-)I316aLCw$(pXdjgpnVn3q|cHYa5h|-$BqB1_#nL10H^%B&l*%+ z!x<_mjtHWzi-)kRi(OUZLM<)={`c+#O!XO##pbsQZ*{)?T%kX{^KEPC3lUQ;6hGJC zh0|12luU*)$%nKkd82>^E=BQ`4&zJMb;pC`T~OLM>h7oRah3#SM9d3aJ$I+j?1^DcFJ*qUz>B|||Q|Ozq8}zu96L_G2P$P4SMwS9LzxN zdP6P_4rWshM#GocVQR?C$iZREXv)gK3}goyGn=x}v2n2hv%|=kh0eg(n3;~nkd4!X z%gD$OFgedVqv0{K&%x#UXI??|yDHHyXnn#CNHc;ff%CL6p!n4;dkGwB>OO^yJb|6Q zrk!Yyz_Dt}Z#F2-;{K8MOM}0+uLw6c3vbsq+Fh?y=e5bKQ^--574}O^J);lqUU4_3 z0pX?6{CV5%*QIGh&opjpD&~2NyWRS)INQy^vJ{*5F!ZF~f>&C~_UpMy6GFj)doOgf z&2WB6PY}h!fQZOY_5Ig~;H=`-giI3podtWWjt`;b9}c(EGZg`FSaOIrR#XejCftr+ zH}{4&w~yYqYTV7j!Mf5^1-IW+uN^n~Or#rSVg@}f~78>x2jKtT&qhX~OKa`$KFeT^;rat?t* z{6rUbwrS?P9yJ*Z<+c@5`xSj-_+Mb+k7F8Oxs`y;{a9`}L^l87Pf!Le)L#a3$Wp!L zt=WweC#jjKFbQb;38YF+*%h4xr z&|jX$;WIe%)}L1kts%br^(vbk1Xk^zR~1Piy}{o;+nV)7zc4HZ@K@Ll;E95E5YjFmVUVSm~PVoG`4z?1^r$oLiOSh=dGRyi-9=}o>*xO!JC+& z4yV?Tp$gaVXW<&8sSXDSJRolXL1@raN7Rsep+e3>FdY7x$W$dJm{lt@L|QjA zg$9z3Xh0U^^AH8Cx}pJs-mvP5(fH#}QyH9?f4TJ_8XinQumHgZ1gC+92N&b@%Ttj{ z?_@u3&x!qcDtjJG=)^W?Y2}6uAzUEC@ulr15!|3A5xj;b5&Wu>KW*C`;oJQgI-$|n z0yY|$SFlVl&qK$Z_|n7^th7#0=m|a`1b`3%LIemgAS8g00z%dhdO|Kh^QXOGJPO;t z9$S!*B1n*s5)djt-T^`l2n`^#fY1R#4+sMwjDRo!!VCxtAgm37gltdjFVAHo*Vy*V zyDRweTnPx$Y7I+jY?FUIQG*6sP=f|LARK^j0>T9dHy}KK@B+fu(4fH|%Jb3|kF2G5 zJzk^=Y7I8Z z!cBjDiAGhpfkssXvhd}@FgZ`$b-;&FUq1YIw59i7jy!sLMpimD4lZUk4mM6BLqo&o zD2t1o#fX*D)P#kRfs=!i9blAVrZZ+`#>NLP7Wlg%qr-~Ob<|(`K_~-z@>Dj8$Cpf9N#+u zT=J^AysTHT73K4jHk{(D#O7=M7B=|o+vdxjrK4R3o1tU1*{<0Yp3@qO`<;9GzO%JW z@_X;?@C0Ke8#(o9ekAzP%@tUP@RlV&yz1Q)=bV@Fl%nn6cSVC2zL}I6ier4v%?rwV91YvuR^QO$R5SOF*U{7D?%ALS# zQTw=|{DXNCSuN*5;3Ekq%{ZwSt-y@c8Vd>fuyOv6C8g4D)!$GOOodN=s&wgHj@$~E zq-U6mhi@xCa9n2B^sBxvGnj!(HWC7HwWCkNedy<#?v#`#t}LVuqEtUAY%4yFl&Y}B z7`XB9IfE#(X1%K0A4NOyH@Bz;SKh;_J%Q}FhTKmxor~4}?VrnnrVOdoQ+YyP5I#hF zv|-x}wsHaC)=39x+0s=0T?8T4zl!Bt?f8~vM%vs8%pkzQJVdgMqDuusxdeqqiX1)7 zM>w*f!N{>tId1nU@%mp&bSM3VSGw{*c?qLL0XqobwEE96$^Xw2hSY$b-cFE(*}#O} z(%$T##X?2dqLvN^4qcJyV{lFkHLf7CGP^{vU@eF?4+&X_m{qt$R5UnBNf1Y*o*W!b zN(z}Oo6O(enb;o^QiP;6SR!*2hFC}tMnV{sy>EEYr(%G+EFgLZ_LksZ-rk_r=8TgJw$(6w%uz;nw0+T^f0WdY(%rwJc*O?m2IL9 z3lD4GkTKUT_BN9v{FoJ!P8a-htu>b$m?t_2tF2(mRlhP6lMa03z5g~-s2YRrS;vx* z^c44FdELcclQ)RJSEK20JBM1QkbU>^0keE@Ot)UwuH*d!{^$4IJg)eRJm!z%*&RKg zDt?2ruZMj#+i5z%<+evlnBMd^x|e5f;Sd`Ma4-mvU3j=DE{7Mt1%*V$#3(=dq@~<| z4&2o)L(>*o*3`)l#;T_`(I?sJTrLofah4lgoj;yHE%LRJoQ!U-M*m_kTCd(sp5?mX zZOOW3XFv$s0?F-zh7O*XDkk-Hm;LxO@-A$2ah3ypJlprgLP0al#zRcvWy=-ii%rKP z`TIUTQHm=0tv26dRjz*4)tl@$5F#CdqP$b*K!XQQi=DO)PbsrcDKk%e6}p3PvIv## zDPNf&!{GYDSi0{s_n%6IOto_dscb)5CTGTu3XnIFoG#VhptZ8WN1V@1ky|fX1bJ{< zTe2{bUNj~N{?ugQlgIlaAg4~Sp02GQ5*{_={VAS@PJ>3jOzQ#KQpQ7UtW>%Z^qHhj zktm|I2N$nveRzCzgHb8|r$KKmjkY~B4j##(eCMS!iHv4R7W;{E>F8?IiOeIo{A=RW z$leyv;yL=F!QI;D?#AVbqz~&8G|XCYLJ1YtjXfP6U%2m5Kk5h{Hnla~W4-QOG8*2^8|+$ckQQb}E-cTq~=f%9m%BphAZ%Q^J&i?GR7L zW*IgCpR*tIn;=L4g!h$uRBNLp`+&UMIe}9&abaJ}l{djnq`xnE}l!orEYsJc>b zpwj!w6uli}rXG1_%)Aimr0@%D^(U2vjiPi#M(nvq^pSY?wk}V)L@6tb&J<})aY@!W z+8ap$(;_Ca$GzY5*!gBL9NlEVO@<%CfoZkhb0!huSE60m2`XVi)1>ui5&BSwy0k9` zHZCpX9womS-Dws1=HJ<9fo2uAo!GvMro0*Q{t*rwc4??}(A)$uE%N_#i70U?V4L8g zlfHU0ar@J4z}Gc?GWv1hOHf&~L{$X3tpR>H^z&YlBH|vDO zY#?E?TY1thm5)4Ul;2_CYLcr8epx|Y63jnQ7ZN5Qx2IxYT{fNm>$-uyXIR{cE1<<0pH!m*`?^M-_F=wfh;_BzaLk zbW>5cSCGF^o7=}w#ZMqG`YCc-R3%sYicR?8y8Tj1g9?a}aR$`Rl;jQgTvC3`Lx@@8 z*+ny5gX;q-IqC3X{y4tjR9*UOVhrz}{b`>IPQJ8+@oLnlJ*CClUFEBQ;rtR;UWqc7 zPxW{|f>8BKRNmIuTBNCdkhfbr+@1K>BVPe8%KlAd_RT7BMY?(N2 z%h6Y+xho~NUV?;bQgzDYVz=DgEd@w3q8 zFYks-GSB&%p!^y`m}l4=zdFt8qtKo12$Lrgtv7vKxJVlZr3?sd-)Jum3?cr~QPR>i zZl}+T%~b2X?v4jJNYxm|Lo# z8YC(1WWsF5V^qZoG1~-s)fUd=Ev?&ClrRPM#Z4|w?c))*gDA}=rPs0`s*8ofHETb8 zc->&IA8@jL2))RxELV%NBxo6Cf+4*V>5gS~f8Go_`Dv>ZZ?6^<+Fq>fv@~ft@z|Ko zD-tPbf*{v4L6g3AK%yeeX##s%pDj9hQ$)UiZy#EVkIARM5Lh97<3Vhqcg+Q0=pe)KlILri9l;s=& zK0FVBvTkP~I-Wk8mJtdKsFB|k1_IMadGm$~B%PY?Cj2tl^6XTM+>U-3v^gu-U&pB` z_^D|0XiF+)+1#84MK}9A=!6sdW1U2Hk22arl$=S$`+@Lq6pg%apy@u1I#$mz+FLAb(N$=jh5HIQt?{w69_`KjfEW}OdO-B?#%{eY;HSmLR;S3u+|`W|WE5W(g^Lb{`Wo7p4HwE!jtZPqh@7$m^zB>%rdCXTuLU zRBNg%fB}8wP?2j4ToF^IY0AbJFPo&GG@}VY*az_*p}Pwzs%>Xk(J38P(J2~HxGFh$ zuc;EJs5$5_Jn9wnDoN6v@PoF}ezDTf2td`x*K-7iSyG&^!BG!2G9uiWJM@0nshYO1 zhMfkb)DkW*PPbUZaEymC*q&P2OD|8>%bFtLuNeizQ7k~BUNu%}9vfUy24joNsot!8 zgJZh07BmOZBb4PQ(h62X)xIf1GH&PGP7Yy6G1={RtwOc2l+j&fW11>CD29_&ZX2nT z`Br)(e_QQ`4axB2BGDMbrSvJG$#k=d@BIcyet#e$Ia*h&O{t7Gu3gQj+C7H1phwsQ z@!RoYB$oYdt&vVev^Lui)!~UwBh3U<;@1LF;&!3jFor>2n+GIn4)FrP zn^(3aqwP%HMv%Dohu^-nO0!TXmvH>jnR7(%za`1h_51!)u92pL<*`H_=fV&I zP~as6?AqlkQAf4pWBM}91xE(aHTO!WI>Xe;FHjIs5l|7#!FmVWY9-xa@`yIJ2ul;Y z=HZ%G40=r;tjm}tDDrU~HQZAgn~T7_bLU(%jO*N6lGul3KT(SPl33Sug>O)5GsqJM;>UbfAYfx3+Sp?HfVUWv?jri>rdz#X9x*0fQ@)6t258blav z>UqP{Hz2+d7y{~<;E;hM@NLlC0<~APcwI<$!ilpLi0O5ATnqUzZ_kg?eg{>T)?<-* z%t#B}vTd)xYfEAsWmKGcD8j&C50naj`ave70Wc&fjdLEm43?FS=ekvqpXh|$VX|$J zfI+B=RFn3{elKCNX^*muRo@sbAc%$adP|l=MDZQVV)2cA#Jn)#B}C2ySh{?*+y` z{>a|3JirHgqULT>yCHw#!b7{6t+9pfZc+&E6YFKrKje%3Xtw)mNN25xNu&kRzxS~E zpoN-ZWjmeL;l9Nw`t+4!Nw^f=9K)4(-+4 zKDJhyd-U=KI!jKff=gDb#;U}R#YoWv6(XudXv>|?d%9=hbfo$D58j`rmq+-@Hr%2v zMb|OvrwD3cjlr7i;K+SQLi`kc7d^hR*=7>4fOhVnO}XH9VW;?$=E1#(_$WeHiO%TW zaJ9zC^3B5o(Hj1{w`U;tTi5N>#EE>ynWN3EwQ~Q_Ny|ZH0bLX3L=ew?*b3OKT)1W* zszE-dyV3#5qruP4*@;x)+Nn?7Rqs3Ly2>4150U+N=A3Y)hOMX-&brA6R$wnxt2*m!|Xpe;Rj^)MYb zSvJW<;d)Og;qhFRCN-_C`s|&T5#KnY^za8h#J%EJ#(ULk-8B)7v$7mo>Qs=Rh7!c* za_?aaKi0)*m@E*aXTN@`b!dzBhK0U+_M;Z8oP-F~~?|o75c!Ob>f;iy{o0c`Ur>s5rX`x+z>f6b;jQ+jM~6>{Ex>(A3@a^t*$^Xnl}#5VRftgRih8 z3tMKUIx+zCj$H<9NB3G~(4-2nxSFnhb79(;#(4m`(Cys|o1;O@IslSxYZ~0Td9;(MCny||WmR(vu)xNq>fDFwQ z!xc(%RfX^ZKV~~xG}8}w4-a$g_5>a2Uj!s;GJ<%Zvh#_g#0*+i`p9Okl6;n$D2#F& zo0LjfFa3+e;HF{Y-xzWg2X)A|u;nrGLv?{rr+m7fkcMBc7I$0QjD=@S&+64IpxduQ zz!;vnQ?hN<@B}014a5hT-i=J{F?~D08WV~c6Mv^-gF}(g+}l#_#E(5j(pbW@WS|TA z<5v+kNJw-TM!{9+ZOOY$ja`XkSPL}mFShOBUv=lC#w&4mv<@)j9h(iVXiJzz`bj8x zpw5>e_HU*^ANZfXm*3-l$2GoAaeTCxkv-e#mxl4mBkr2=u+CXlGCD8J;B%fKSNIf@ z2#r!k=-^_YA)GnW!vE?Co^y7;CPOOVi%vH$7YH@)hthIiYKx0@ZUcCQYISw0Ct?v^ z94_Tn9H-Hf)n$JeglUdnYsrDW!Bw2PSGvzs>(ZF|tWmZu=SOHT`-pK_kE{`{Os@3g zZPCYYeR*;O*eY)onqBB3hP6253M+i~2IcQ;$U2A|_awPJ4%D#phs2yBW4_cbUX*O; zvmjMS?oXZFAibnc`IO3$60_A8PENG^l_>=? zj{VD_+2a0hYV`kywR;NEBy7+$TZ66f%ikt z*3@iEH)(!O=34FtXIrJ1`mINN{mufT*RaxyeP2Q2didXIkln%Q0&-bwMsp+4e3UG2>vSE8w0 znUze~c}z-G1T4|xP=t(3vty9mo&8pm*y>9#5b&AW?Cn8`XJro8VtB`xe2V*T5o(V9 zTZEQQ%`S&4_hAXSo@fittn4bybAWTkrCPX-*(RxbcqlxrarQsFJ@IPp8l~;MZa9Xa zy)66D%beQk!(|YQ+l;;iGTg#izh3aHbFX-KF0Tzs$2kRIz|-jEm&Ov|1ebdn_pD>kucC2s()D8P}r(_&Y(>9?`9~;>{hT5LPmt-094YjQQ;sWgNU8qdO ztXOHR=DwMR?SZelDG0xX%b`tWL{O^ypo2nP1RjdU*tv3I%s}33_xJQ8GpB?ewdXT# zExef*gglQ?epkurC!Vgu*K_gjb<$`!(OZkEe*U=`zaaLb%3LKLQb!s;O^g~MS9V{3 zTNl1|f{!3|ds`Ryo2CUUO$;Ce+JE4o!JqpKS+t!O%d-GKXd2_hHD7qJ<1kc?t<;S# zqdGx86_b8@s8`DzWWCq~rD+w>4$S@3*$L!lOJ$*kZXMewE_5n%%aeP>bPKI>?z8t{FvNR66*?uQi{a|i%Ee8D22(JpN@R%1E z$xC*Ap*k@=ZuKPU)b)}tsxm)~CJ%UfC+&Qz`xb&ySgJKk;sM>zNAIRSPb0I?2bbyu z!qw?qoam|#Gzw4yZ|F%pk!UN;%{GgFDj=Wn<9NYMO$!$TnBgh&1%VT2+Nu{jEbrfF ztVX)RQic6WT#3@Ta09rTahmBaW}tzrR|-ARVxIewt%P)krCDF;w?fFTXG>~ybRzDr zjMhHxsq8q~*NaQc6{{MwN)#!hh!ziFSa3}_s3(pppExg4=}Cw?9nK8TwC)t@6V5D% z)i+Nzi>wL+d0q^R%3anVXIt}mlT!i{bT70v53Al_5x~N`H39e=J+cqxeo|yGUj81B z%?$w{S8nMWQ%K0|w0Z7u#~9_NcF;2f9}{^0p6qKb~m=k=YR)y1EsM`OB+ zQjw{sd%+4nR!6{)^&1xh7mG268Al*y&hCfU_f=_eSu zzAue`cv%XS_r0@IR=CK z%e}+{Wtg6#FGWLNnQuY~xGZL9woX7ri!|8wEUr|kLJmR7v4i~aOYyhXL#zf#FX-X@ zMq?W$k`J=XOBYylM-3l0&T{VG`1nNM!g7^0V!9OE$gqe@r-F*+6qH19Nr#asWTG`TjVqS%q|g7ZZOJo#(c7?a@+^Yjpq*|k zP<#35=ES1Wp{tC0)6V5D8JI@ zD*?Zny2!w8Ru+%ANO>00%6Ml+G0EtSN@sfVxt2Sn3wRYvTp2t-C5#m!GG7xE^WWb! z9)In6%)2N%GppxCmR`XHflpNEJ5R!V%|uffEx0`#A2G<-*)YGPz*xc3u9x%sk?0@4 zp|x6ywOs4ML<^n58%$vzKI)Xs1Z9@jbdV-&ZoAm>@KD4%FOmQ>cqBXDC8)MWN6j}z_PfU?GPP6no z)WzqO|9Y`DxAB%^0%{dZ5}B=G?z0I+(O$SdlsStWxMnJ7hHeNMXU?*&B&3<6!2s8y z<^ZA`4Bq`rd~=GAKTr8n^m1Hi*wD^vS}vY(HYIKr+ZTeglzmln-q8;@WqAg)&w*kh zt6ZVi$XVit%I95Q^%fAs zrZkSUrA*`@c0ckuMgY_Fi0lI&yAr`k6x1yhKt9oHKtpMR+p%AJNs-gS;k*QK1d0;# zrn+;*I$p`3I`y!7dJchaDDxjda8Ki}!<8nj#k($KJG{(%oI$=(C2|Bd1Ypbly~r*u5JeWFwpA0*9$Vl{ds;3FIl(nvo>#j zW{oE>wSRrDw{MqPm$Gyg3s{z|#{8%UkL$`N>%1FQLUe2BgbfquF34Hs$pY` zvlwU|Mi6{Fa@Wah`m+4efXdsq_1ymFhEX(!;9&|)``R^YqBEx1S5HA1AbXybqBWOXlf8_tI>Mok7z)l+j6F)YGWWsDtjTDK;Y9qdeQ{#DL(r zgzlK@j+@$_%8)p4UI37)@4$_qsRlYZ64be@tDffshtnj{Yd)K8Am?S2%^eZ10=>Js zG1!Rea0ZOQ^jv#|lWCOFTU7scaCnJZ>=?RdMpk`qJ#nhi?p6*TU#YW06kLW@m^|x) zV$Yc#KZ(?QV(+fG(*~Ev@Fm>4SFbNjk@OLjgnZAMk2LyXAAn99%43H{lgVakcFaxU zEp2S)wAAEMXFTq+%6kExP?I23wd1(St0W?5;?;ltUwWzqcj%a**nHjTIWsZ(L zj;7E&mh&OB4|ruDT2I3BuUi*Q=edP^oXZo#_6Z!!D`Dj~#?l`7NP2XBf034F8>R*d zKcY2bgkfim^q2@vc^yqmULZfb1!ZJ?FWVQbxu&ReCUt=4 zbs?F&z-8aiLpzyY4-^*R!=C43@2P?AnkQbuK3v*80Vr*rxx@5pC4G;MYzw{U$?a4j z4-+2Gj2u@4f9nb`Y)#8%_O9bvftAHaPF?4I`^91G8Fr*OjSL*~O7z=!7TB=TqT+}7 zrU_!=C-6{`p4eWa>e!ge+zwy=tuiupx3uFjudHLe$p@*D zJZ}sM0D)PO0t#}NI6KWoL0%M)B8z95EHEl*L+8X_PV+d|Yt6ee!NB-&! z2K2;aVxs!K_qE7-MWUgsqU=+h77fodkHKoBubY83p7GV=sW`5`k*N7aNXHa)VCcDL zg=6N*L2(Y`S0TH3-gKme_H{j+feQa*OI<9c0o*C{;_BdgrXb3GWJY}*>74)(nPbJp z-v9CvKy9zqVi+TokF6qq2nX*M)AUisp@o6&SU-b(n;#`GJTE1q(tFjGG1m3$7MYF$ ztVdj-gByvrtXbf%%SlPI5PGzYt{NM0U?`Jd@Z*M9FOx|Z@#yDjEB)0;MsqgHQ z0|s5UD?T?TKBu#|WXDuqRAj{rZ0M8bbQ=dQptTDORG%_e+9_P8mP$UG>+Jh4vRHQY zqwsn%Ug5cBPdp|_2W0S+*J@WS%QBlG+Mgb$YgeS^1ChNic?%&lz`^j#pLCmS4Hc&J zVe;RL1$%bXD>7h=XQ&e*^O@jlE07N$tI_3W8KI*t0%#3O2oAJLEj=1ppu`F!d z1PoHaisSFP1wk4g;bS{$21k-5 zD>~B^M%k+o78;4>W%9&gBv(UX%Q+Rr|k8TkS@~9Gm(LneG-mfXXW6u(1g;%(f-(J`XV6W5^zz-{*fRlN`Jr8 zy^7YVp8NLZv@^8)YM9&VZx=7Wb}mXbT#2=Ln+^u1@f4JC0Oyro2=xIB1Ll|f%(1KI zlWHZD9x95E5o)Z6_gN)HbNDNcM`Ol|>rxZ0pCy-J&{COCEMnwI@L-gUkAYIq?iUaid=XewJ?+&X1!x>=Zbtvav7wV%@morc1xk!66X}-J-Ffvpw#9%Q- z;HKL%JSaf#c9JfRif?PeH4)IxeO!x=)M~L#ABcw;=P;c1L@Q8rW(d&3}w?2JeIDdp*a}fRGWVYiB z*2^ZS#-&PA)~ydri`vPHRXZKOAxW^aOf7MFjYoX>2FC;jxKG9L&5g2o%Ct>x_{g)* zIaJT>?|gT}PPt=;0T)yqTzrT0>-6godUuP5cb6TXj5^)^C1V$pS@}z%1#388a#~%* z?9vh!2sm3pG4E2}s`^#Qgce6!VGGu3M?>j|eq+ zeBz@dbbSLwx@73jn05xKndwH>2p7@R_Y3R^)|SC_ynVDy^YHfTtNzdBOgZK5xt&oB_MM%W?z+8 ze2iFe_=%@$Oa>zGs|{ohYVyg8f{+)xBfu_6Rq-L<@eFb{EtmE%I^apaBMAqPKS09)Q!C2mD;zDtM*rxI#Y#Q-H_;0YM__z*K zzBhNKTmw%s<1$IN+IxENtnNtwziKcfQ;Z@<|j9592zm zm`rZmk2G_vsQ!Ka-wxF)Ho~$Dnu>Z#c1WWk1QUwl0l**+$Ge*!hSDK@&jS1J$KNu@ zt?jVRFCK(-!$L9~4(?lCwr34C=nz(Fc9YgJgx>fo8;_w#z^ayESrRrLefYNnF}&_+ zVL{+GYKt)5bYiEEpz|^(?=(LZ@<1v6c4FJE_1V^t7&MU1Xh|0J=}KXu6jC$pD54v? zJ^AFDfPtb@yt0U!tQ!baE4W(PRIf#lju=d?;FaKfEt@$_V00D=%-tRdD*dV)(CKv0f6hoo|Zf$hPk`R&=hWC@GU|=7ZNcM zrA{;AczEifT&zatjwXh`F;_DS0BZs+E$eTdK&99p*CEd!|MdcFT;`9|Jn)3?{`hnP4HJ8zm4|+>&8dwh9RD-)nC*lVWGV>;p2SgfpO4 zYo{pc-=IKJEpMi`DCutujM^=#`=nyRKNhdx@QD+5DDA-sRe@DcraME2+V4QUxglv( ze=aK$wn|xCvY_16@T+1m0Uu^rEb-8j0vle1Lul|?3ZNrZMUPJ@t}LPwXUpJZidnt{ zr46Lm>76sOuHNboMN*4(_P1k471@@vXD8(hj-n>z75r16Lq*Mfm%RT1%Y(i}zuPmd zYG6bApcXTUPs$Ri{cuTa+Wesd#@#^euMxL)egx6lbYhtG@?#(XyOu<*-1u;-s@R2v{3w?t^wu9_cSuG4k(sDkrV8 zJm#o_Ice5x1J+BN8qJQdl)I*E$MS+B9)}#+5dt~Qi94aA9H&4{k zS++daL=*~b(Eyy20z#qx_chI>R2999qrg;blC9I0%@v)}cUK;z6%gDqxPq>P!$od) za8Oaby*tu?NIp*07t$OKYjGh<6}91{ml$D`=VskyMdV!-;Mr=nnFOS#4mM*Gs=)fr zZY_aWQ%mCaL*O~*B&7PYu{gc{_ug{MDGu5M%4FsphJm9@hM#4$oA|dlzm_1&SOJF z4UvbsH!?>V9(`yY1Aj$~ULugUr2)0MCOps!Ij;XUJ}+j#h@w4{SQGT5OJ7J>EDMkE zjI*xKe)AiOg=J&Q(~)#kTd5@@7N|eh%l+whw9iv=XBMm>2f7AV*-Kkl2T&IMTj^CN zv%5RxoT1UMtgV+p9W3y^GsTktF9O|%Dk#lsbV`sSJlW`X`LR+2CZMl56Yy$&D zX?f$sd{}+ma{dMS&wFSIBHlhqB{0fTY!bD)B7S?N?PS~qS7_tT$^3NJxkV3&ULr-N zvz;Wa*MkfyLYs#xk4<_G41I39yI0DIAWSsdfIj9UI(K&roX+*-s=Uc!kKNpm?&Tsz zZ~mDy4$M;dv!g!~Fbh5JPv_5RRNHBt#u@Wz%Pbtz-OyuuN}s)W9i(^i!D?f^{I!j9 z&R|K!H{L_yViD80$K&A|62(VMs?ZZl&jO$8pj~OqWgK`5(BUmg;y`{bXq6d=GOtb^ zfLJLU@syyyj-rog3h7tCzD%72m{**BU;c$pAwTmdWi$sw7oPV>z&9M?t*eHrX^r?D z!>o@wmop3#?wTrEX89XtI4(!ai?j}EMkR^FKsfKs3Fb~KhXE`|c~H=;t$tR-}6$YgEA&m}{$ z`27GNNlAotIcoE~BR7j2Z&%cK#*oq9rS->nODr^k3a_s`P<&vpuU_3AgqJL*7>OGL zYxv%t(U70QWTTbSHXHo&VP!aa2aN^p%=Z&$&G#+4s z>;@V24W0{qgrzL-^+Xw&rkkcQ)D-$8{E>b+(9Hd8xvk>~mrfUO8i)g^TD?p+<5TEA9&{AV8{XPCoW|5s00*i$6&ivv3W zyl^TA`*}KbXR%tYEC}nU0c`(nNJ0u^^ttIVT)>}~uNRdkfJFawc^N5AT{71<-cgsZp;)@f)R0Onbb?inxKJ*lCy z$nyMlk~K<>MfAe4qv>cbo|Wr&Bl^&m*<|tP%Hp2*f!;}`1uV?e8mDv1mTE4ZRI^yj zLQDrCLe|nJbiaU3Qy{j-ML$t%9)749LnHToZv%#4V(V!byeFniS9oSu&PxChk!cE) zzJP9MreE$#!zzIlz=&rDMB~nzU`)S7&2kXV4vD@#H_p3cbmrIHl$k4w*0e^N1=+Dy zqIAfRYoRZ%eo9KUl@o$r8mh!X%s(zX0;Lee?^r&`dl1rMiIA={d@aNLY&Q+dyy3a^ z$4X}Z-fO*peSLZ2%CFqXE2St^izQbFNf*%zT;1V{ClM(UfUnYw+%dZT*9%0dz95eI zFVZWJFXXK{NhpZKyUZVR%;pl ztD;3O0gX*OpgZ1uqRrIeOs)lQ0!-|eE#NJEOnhhmTHA6k!|bz)=%bG=^nm3-3?DHu zG4#1D{@kOkTs`9@fEW`(j!>ao|F_px6Y0bsZ7@!6kPH*07#a@x0JOr2zgTK*WXj0|kew_TCb4D~*bC0$&5! zcnjt5Q{|ZNs*4mh5j5w$k_|&Z*YV%nxS+p3O>n8sDg@JzdhxQXkLP!lhX3aB4VCTB z4E=RLnypGBaygJY24dv6<8~8e2EPJnEnlJPQ<0Q?=6n`oPSe6{O4T1Cxpef!Pjw20Z{Ch^7)xxT8O$CcSb(dcv_pjXK;zp=aPEf_;0JRc5GQ%nB9M#1jTZmd@Fm? z(cd+$1v-ZgJpu!nfsTeMKwz=?4GxIx_1wLJdSD7Csenv2>Q^tdJ^Gv1-15&+dL^A&hgCe6bOkp>S;o`uVd~@Zd z2s%ipn9i@oGRWmtIa=l_w&NJGo&_#bCofMN>EJc<@ti7&q7$;zs_uc@wo=xTqt#!Mr;0sf{7(~IPl>w_9Q#b1e|t-@_d zOdKg~KEduCaYXhYg@HVr^KCd>z5ErL1piTRv={qVybKmKt!!QO50$hH9Hs|;QfhQA z5AJ(^{fNLEYID@xS{Sa&1yaZG(Y*K%%C%qUbkIv!M?1YqW#zu&FG zzve>l0Jo@jsdU8lL>uVHS~JnEw?eEL0j!*4_v&gay`wW-yOnE99Fks#PPA1rG-~3~ zBw)IFQR)^P_;^6^(7PD^3i=99N_sMv)sdPSS!36=;U? zY+?5Jf;fvc$80{zw<9A^3aii~Ee=&zFQXLyroH!G-@PLo> zkmg`Y^>XaOJ5B0$=z?z6EhR*AnK4t+Ca}nq+s5C^e!r)nd_Srd4%j&yaC{bekn=lz z7h-$DETxn9f|2CYi{wl!F%g6IwYY`w%^?!rGS5C8KLpm-aTV zQ`R}4RAxnkmW_}kC$c{~)@+s-S~FxNF$bKxUX|cSOMGN=Vk3uGI(y5}2*VBu%5QRWP+%;gIyX1B{`Su%>n$Y6c=FenwLM zm6|DMx_hr*YP-(R3iyby)iv9`xUrtR{(#*oXz3m{ zy)BYfF06pI0Z0qAy)`>9Kodvp?JcDVLW1Yqa^n*Ix^SX%3y=Mcj9WxC>N2u?2$u(L zhS3_4PD2;*kUv)a1w^N9a-`IXh?v+UGCQ&6R|(&=x&9VCtuh0r!eej?wM-?anLCfP z>_U%zb$tdBuSw;Fs)+9G-!(R`Q+!sDVY1yjBdt@v0>I8K!s#j1QB&Trve!apy1x|5 zZZF78A2LD)ClKj?_+}rxsg>!4XZ4DzI=pX%p%ZLl$SFl=kp*WVx8eE_ql?^|nL4&m zcQXB@HZfzx;zJ^e>X(;UT__NwWttKM{jGNd6lAI?ULhb!;`)Pskn)4nu{m#hFS8Qa z0Nfph17LYLT46P%QXMezvMoFI>BZ>E3OMyGPWcwke@ti zf15%8QzwNwoHOLFx4)TWX7IpUivb>JDi%Q zI`J0}(dAurvrUglq`pzfe*O}cCEyqCqq0yG1bjLP226Nzg;WsvAu}=Rjyc$|!CCU# zoXnx7Ov#PhygfajTaUNfxgf+tm3qySwJ<9j4ce`idYykLdiSg~@a1lJUSTK}kQtG0 z=bxgL5?8Z>Fb+voP~0~Ux|(oTr9}`} z0h%jjaK&1@z9_#$(+)BX;J&mIsO<-$tSIBf>X~KJ<+ajS)zj;Ttqw!yXEy{} z>;hUpwhQ)KC4z~0Fz16udCA5r``41h*?9jLL>)e$sQc0j|}uA*?RPA~|azeWbOKX#APmq!0orlWTeF zM^WFxJDoRv7Dbp3QrkQu?}8n&eHn%a?ZNQpe@@b4_TE|spIYpD4|EHx!bgKOTr@wb z!U8NEc8VXa4==|$ZoE3JXX%V`9Zc50aFMY zpgW;RNLw&hDeysRQViI016Zjnv(RkE{Ajm+G|1gy*O>qh)z}u7^k~_qy~8a=DNDTL z-M$pzJBYi>sCXy;C65(ZgcQCVflftJ7j!Rfay416WFZ$rzj*N8%T5xeCfT7 z@yLo#`YxTEw>KHZQIOR$T0JSOI?f-Zpq-_Uxqiltxjlry58Pq|^&lhDF|IBS%Lf1e zmcfF&Z~{Iesh8#{A)emX`4vU4gn7m=FqynpePtykAwZ)?2= zGuK5N&SNzktatyc@6a5^TnOxuzg?GA`YJR|-y6-&J$Z&<_~U_AZC9r;%6eLa4Ux_@ zUw-ds_#ny(DZ&~9&|-p3C37p{IY#GtPriDx2Q}v4*wTN4#{rRg_3REPSNRvn!=Jw`2wV)rt^wUaX{vNo0V75kysLr&KU$brRSVd;NixJdG6rhMNbM%eqQVT`+AmD) zS@11ER}v^C1?K{r?|}avc~e5~aFI4+DdI3iq9@^S1EP=v?17#^exndlm2EnoFm|AAHHYL?GD z$1R|ikZG4MHXW__+t25&A1u+;hE@eFOu`>S!+(7IigJ9!!%)ZGuiTeKQ-FUKH~@j5 z$qD-`X#7+J7#k-k8@F4%_VHHw(QdgnKSU@G>dH5>;xih!N-G31kiJcr9x)q||NeKT zU~h$~nBM2!!Vy=*y@{^KCttqrxm!NwZROTAoUhB?31D}Cls64{bVo>7UpT-N1AQS1 ziuM;8)><)>WRS`l^uz5^AXbs=lHD>){;he{j1@Z#_A z$mvc;3$5$AgHfy$N24jpoAF|{k+W0fzeGW4zlj$X40Giw4BOJ0VsIdxFVnDEhCEPV zFF@J?Fu1xWD6mEMidUu!hY(SJdI5RcdMmAOt_h%SH$Ig>em(RT-?F9c(ZTgK=g?z3cb8 znN{&f_MO}T8_+w!+zQF?TvmgxI@@Sp?EC-?9P0m=b~nV}bSRr;BePj!2)sS0W(V3v z6zN(})EIAoxD7}9XJ6I0>88V;yJU;wgYB&W?Bh$2E0N15VI+nT#5LkQ0 zk%YwO@FRTv3*yK6wijb6`KKa_LqqQ_H2{Y1-hj3*Aw=`8Y)@0tKv?UR3vPvyL#eg` zx@-g_Pk~9soOY=-jGPkE+TnO89l2s7j~syqVN>T%Hom;Ojz(~<2AwK=Peg9yvcBO{ zp$*zAGnPRTY>fzt*LG}TR;EKFfYLOuiZ>S8A5rs4(ITokFh$YWNfBLG`+$r0@fZbrl^ayVpk7!Gg9j+DFlb@hxnVKK9+&uWlZWqq*ASfu|;$>{FY&9$mD~o z#^!ITn1@VC;WWHEqkThNEmTDx5mSz=bSxq%1qQY#om5UQ#}^JtZ2Os;ZWm*7tnuAM zcQ1cJY;jT$n(tOrK%`Q|sTlQ1X+YYvL0xoMB^Lt=z*M4Hgd{Qs6oZpd=3rOQCK3}9 zhN=*W5|L*qf{2SkhNZ-d3QESqhB1;Rp82(JzkKyX-59AYk55%SO|#ta{`|8O`D0J> z^ZrpQETpr{lQsvuEdZ58YEllgOX8kdmrgjn)UdD}MtN(m5KW$tgzt|mjib%}ulk&3 zrs|bg+yLs5cal56k$`5;UvC}V8j~wKGVBK{AKCb=6`tQ}>wgzVe)}>SbbYw`P+)p(Q2;hd&{=_l%xo@upVXCq{m1)w0- zA`E0G*gP8JH^&vP->epVlqi7~4Q#1ecztVCoFF`~jT81BV8ESc^mC>|(>zN(OGOn1 z+R-`M6Pk4OELk`>pNZG#ob~*Y6RVCpn+`$F^-H`AOrF*R(+%>zPw;gd1?N>WL8pAB z1sVJfo-(wPcxYtSq1gayBb93lRc-0ly|>ugT%Jj3f2R?=Bc#Ry(=s8A{&9>Mf{d0R zv76A4`#2XfKv_1+hZx+gE#!4U@^Gs3Bzn9V4!;C_sk&??fn-4P7yTvco6E;BL@+@F zTZMSIjH3uN{d;NZ*R)CN)fZP~o#k#WW1+bnOw!xK)>-7(ZO>5&L>V1(em0bl<@6Zv zwJyu@zR`Nk?_Ho>aP$6$4X1bQjfqwA3r|`+M=Jm|pnA-bS%{^UF0X3LKAfO`=l5D& zmmLpHTLkqTzq7`$o560`rgdD0R?9#D%6c?bxL1_9FOmY1T{qtWJzqU_GeM3jsd6)OyK#X-1xv zkaD&K0PW#AN=2l=d$D`y;cKP$#CAowwx12m<_W4gF<+`weDD)W(-ckLmg4vt@<-Ov zdJ1{~FNvw1V6r_eB5N7hyC;_^E3u|d(3#2o-_6LaLn}e_6+(K2E!Q{vXX@K*k|->$ zjUb@Clo@@#2gGwIkWNS<3meC4^z4#SJUjF0Gubp=Yj&JGjVuXitXa@p{;c~al0Qm5LNy3kuE6+d7CQ+;G{K?~Z ziSCYeoQ6Qfl~vS#A+#vPhEoaT(T=XYCk)dp;VpT3@APX_jomuD_SZF^o_8-`2mBJ6 zLrDq?qB!rUn|3s$M5A_&SznONQI}c#0apnWb&vqy>B*2gggWAA+iq%Sb6=_>IQGt( zD(?^|bmZR?`%-5~&*KuM1&VmEGlUNBc|=(lBY{Q1>lTfO zekenx!xIBJtMaSp3Xz^!v`0bH^7J% z%YwK<^QN100?U!zRs{1T55*ORhj9PzY=<4~w55SvuFe6mU-q_yd~)2Tj*7y;{a)oF zb@aXonlzqVveU$ks=jW#O26>;aY6Z)mf#&)SdTPNh>PV(AnWfFJZ#kn02BI*)5&k8 zQnWptPpUV(=xQp~w=K+X;>>>!IhQjgPTHQpzV9(u!)Dr&)0^RTyiu&Z^lKY4(860pW*{|}@r9+?rVlz%>H-Cr0Kg&(RbfFRV-6ElM2=V5g8*}(!`^_2~s0RDn zm=Fp-X>|)9PY~xTD*!u)U1>`{#pC;3lH9CIHBEY&Cr}VM40^F{BeTn$Lq|NcGq(2f z=qD_uKwsP_Qrt_F@fKVd3DO{XW7^@T<_8pzRwOP~*O2sD?)vBe$64MYWKyN55&M>bU#l z5NP2-IEwF1E&ZRyglv>Sy808zc-JW3)n&k?nbBMuxk1-62zd;;e;7k5$NTMESg(G` zye6NJON@y>T$pwMHeN7tR9Qc~iHb_1|J3uR#L<^a<`~O%tNFE*?4IvK{pv#*hEHly zP-k&Ji0_rxggzZBSV+p5yD!h_yRqE{LO=dYbkKgb{+xD^m2#@Pws-!Ljas0n%)DvlVBdtmOVqW8l3Gk*zo!~cNrjH2)y+|k{` z{ifHLn0IZ`#6iguYOIx>`JVSk=0ba<*?+}vC(${j`-x#Z{nX>l7La1dpSKI1!=kTM z6{BUa&US&@H;LS{l9-TM-MMA611=|y!*MIXv@}8Tl=-HU*M9ar*wWSH#FZ+; z99t{HV9-2&8_!BWic$kvcE2u|`|Gs3zhvbS#zC@VH~9&!F1=z_n`lP@kH8< zBTwGx9`SbQ_pGfRn7VmT)=6{=|CzJS^pKYso+9(K>TZ?P_&g-;VI6Q82Tz~#Fo5?0 z#K>P{>t?!I)GN-zPMy1aq}KaPd}}ac;c(aL4S_`#lxlHFy;#P-xyldR@P?w5vDTrg zA<)YpUWo`@F?`K>p~z83K}9Xvbo#_$1FV;)aitojo4TK{iK+r{q*tGZm&2M9#0N~D ztkyy!;GTAx2ensP@x30p;S@?TA~gj7r@x`lAE0lDP~RWxpNG?hiwG|?SYbq?P9#G> zAUH03*Tl)2p>`rAIji_$*F1!>sLBtYC$M&@Zpp$ZUcU|22KpPmM9d^k*rC{8f8eNK zr{C84xbI&&*f(2D8ni^l2D9f`%>O5LLJN=Ut!KoDkLhFny~4His3J za08g+hf)V@iY{y5teyF8uqZ29YN~U;uVA#q0eNox+EulA5LUzYCWPm=a(!rBsC~o~ z<<8|3=AKi52>#53PvaxklL4D%L7W^V_{~DJ89eIJmn`CBlJ2|2b<&PUwtr@FP}N5$ zd^)u)gWN~2G{dBPEeSCNo#77w$coN2?M&40i^)3ticHg|E19Fif#4ZR12&5xBoV4K zCKOaPY|Si7I-@qnZ?II9VXkUUC>xDDdr0G$=sNhs<$~jxJj-2`L9jFOj}_cv&9jX9 zcCaDNzpRTpZ``d0orx7ocR?e%-q4%*0lLnUj_CPsVL^#F?kePNR^7$`*8~~MnKHTy z`|%d^>&9nv|JJWcbthkjaJO=pSSGVE}=+gx*eA%^+k+TV&@nAdr~03wukkR9uESiHM82I{vY7B&A5gq3$w46YVWKUx2bo{wh0dT9B@m!?z*q{pKIKT zpWg4Antp<>|K8q=zjw|0KVBs$5KtTtP-=?}DEt3K2>%}fO;2z1PjWWoWHMy@2ZEb2 zbNolG9AnHeoiUGv+ekqGL5=W%@@0o0!lsaTpphF|o7%lYhHyH&aP@`gKFXT|=5R?_u^f}fb{UeUP`Oy^f_MB!Wt zU(EDxIOcAHp|)?99J%N>^qL?#Q@WBX7ctXYkOvoP{j0aY2nYVrq;A~VzCES+KH}$# zzhT3ld7ilqn^scO(g;|zz##(=9jNeFQ>g=GowPg5f4M$wx9dFhK8tm4(eQQZ(8{lr zrs|K4KOff&$4-VT(yCg(qWxB3ibAz8RZyg-J%FV#4JMH&l4qJH_!vFACVDu0cSDKG z*^vnHgFbj`b5#UHH0@F|#E#0WhNwHz8;julS*0k>QZ8BkJyVq7n1V_pHtn4KkNB^t z8J>jynmGFjd;M>%NfH$MkOV&rrV`IJo%k~PZb$;ESUR+$BVxFEMF}p;qLQs`$if11)J3EIT zxqu&<+iu71&G(zy*Bd^QAA_WopS~i3}4f0#nwr$_B|A5xPL)!WVhDOIv7@PlMaoX~XmGwmj zM<;@_i>udf-dB9C`uYV0hupdy8WtXT|3Osr!$&a*iBFS~Q=a{mnwj+~e>*2PFTdbT zX&Ixu;_u3;_jUCRjZGguHg|M(b@#A(``E+Wk>yw%DW2qTqb#vH`_ z|MJKxmgCCJ+3`5TR{dN%&CrV$(2}^o9J{E$YSMww8qSoc<_hk7PHPEx#NNnRZrz_E zaym=pxj=u6d<)H-4iHV`So>9OH{qKVWY*YIP=%8`1w`T!q9zULf84KHktxH}y2>y< z%uR3}^5P|`Yq^y5B>L!dgqB4hQ?cd6wJ#biI)7ebjkATs`!904+E=Tp4wYr zRQ`t#RShfq&vK*f5_JO^X6+Ar!aul2HCUcftX5*yboejqsM4j6O;f~#A4wN^PZuL{ zY>n!F9I(Ypq!tDde|KaUxnKMO-N>9<$7Ps|z+Tq49wp|LYM>XyjmBQp22fP(y-PQ%4m9JE1^E{d|~;qx6=_*e=^LPYf^^9Y6y=U^r=(S zJUOp*iZw68ytz>b-T=0Fy+j{jq8o(V6T0vX`u)vtSN|m$Cd*&EsnGxJ+te=|qu`$Z zdgK3_n?B5uXteTNUiOexB)@n%R?n>)6-`iQh>uV>k=QdYQH>NFjutFRA5{~EoV(Ax zZpJSKVr_a$e=9_+1s5(|i5P0+S<6DGZ>hmtEiXjTUbRE0xoS!G@zj%9p$LOE- zQrf;{N<>G3!mQ)wfjDYK_lAkQmo@pn-n&b^0J3xoS;1X$TZXwuCGGEo$CA?uV7~#F zrQ?b+bojSXMQdr)D98g$m|>_*kU@Lrh+Xv6j5vq{(b(a^7dkn$}@C~alAI%gWo)Uz@qA$A2#&c~)1`6C)i z;@ZJ|f6R`M^^!EH=Cqp?JX7e{BEz%w=|!m!Rxd* zo>)&1rh3URx_aoer^!}P*Stc%Q;4rV41(VwVIAel(-N-VM}++gKTLCb~H zqytaUz01Zi2aAJV9?Xov{2NDnM%slKj`X)DWp`i);93f9Qir ztCv&f5?_X~^)9qkoYwh3vJ_tp)iEayd>!zULtkXJ-VCSCjp#PDbeJ5{Z$i^=SP)8| zn007<=^`}2n`M}5@V3xn=fs3Z2K0@HQd19lwa5;&p#N2)4cA^aQ$Yx=6lbLUaD@zW zwhS`#%j>LsTB2+@9Vf#)oGrVHf2M@_`^zvM`&B>8$S`G1cdJd9Q=0oaWth3NFlsY% z_Y#C?M zG9mL2s6Xw!VVzXI-?jTU879Yx(Gr>^Soyo-(&AnoQ$T_iJ1^F3iV@14e*+cIgWM;> zY+WV8+-C|NfF^bKnx&+K_bvG-Y^FowRY-Qm4ZU*>rJL<1IV0J8%>b)q+yQ*2zQG## zSA$=Su`xuRiw6E5CSSr82Wz zCpq92`Glp|5yV{ugnH42U3KlYfybF zOM2zro}MOYi43#Me;Q7i{T>bR9=u(jBb*zCjZmpagC1;yE2BpjReOm|k&(02luwN6 z&jFcF!_hICuoX`YTZ5-br&mpMb6RaxdzuVGrnv^bDWUe4Obj0BV7^AzAr#bE z$Py^SlWg$>s`x7}n92_`amkfonq(N!VX8_+_kz!y+OYG4fArb>vQC5z>Sb60kG^6o zQ6$R#^|v7<*c-PQ_WCFuu&IaNWedU{ja5Gp<&RMBGq+V=LQ5Ojwy)sDwnmrhIv>sU zNaSUh2fK&e=$k_q>osvaK^#^zaBg~{wb-kUx~=-usF27eglNX{te63KcFr^_Cci6SOonk(XP*08P>{PPJ1082K}{lSiVucGH6!S z=EX8h{af4OnK~lR7T>>m#8s6)(WJO~*!%H|Yt_oD)QBqrrmeoBQp@{P{adaPMMZJh ze@nmGTZ~!ah6#Cs_6+TN)9r1VYf#31HOZ4oTO`w<^ zhI}~pcpLO__sQ!Pp^2h4s>V_i%09b+o^h~HIO=e<_F9Z!hhq&TV2piAwT$>R-o!B` zAtv#se|IFHw(j_EbZA_{9vR)SYSmm&E;VOF<#an)c1Bc>O%#>$1GbwB)Wd z7akgOf6>cLJck4gKU@;5#@*;{|4VC(s3JKJ66q=FhBPD9qKo8PUJ`Nk zT@kuPw4V<*an>N~u*cl^KG93vpiEVKiQ!`(5_yFAKVa;|m2|`ME^PLnU!iRB54G9E z(1L(t4&4leN_eV}@nw>%RMNrh?sv%EV(U3Ef72cd4-L^Dgj<7^OR?audp+0^vlw>~ zRoYyA=fEvyF}>W_A*9qR;9{$0ZL_F!PSFNc$l{yZ6PNHCuI_-l5*?~Fz*h1` zn)o{#?0w&aRt(QalIDf}G<1B2@aOe9&yiu?ZBTD^khe{z+CAKx>hE?uyK7JK2{>Y7 ze~ATQyWAmBA~v=LA39U(`r_S0eQ3ysZ-w45cC&GZ@%sp1ve@$0oia?EQybAUs@GIQ z9w>GVs`muTFauYQwt~dVrr($76imAklC+{FR=2@U>LgaQV9^+Q4!WJBBh55BLfX!% z_Rf|#@s`*|4=yj>$gJd7zaHp(TI{ope^EIJZL7A#NshGTd*L2P!VFlFeYf5;;05~M zi=<`(tDnj{)sFG4qR$2u$}sQkhp3w7Aw~~p77Ux};msyqVQT$md#=LE%@g&v9hciB zoBO!|ab@&aPZLBdU<4rz7@bb3ukv8Tm+B3s<=d#udoN_?SvQ1KikgPo5eH+=f7}+e z_b;%G1ejNn!$>)wVqPg-`rM!zPIQ$A>&pjvf>ud`H|NyF zPi7bA;!dJUzjl|6FD$o5UZ>3W&R{5AghB}z-69ifP&A@ znAtXyz}HN=Zn6|~_|@Mnl~Q@hK9Jujk_||on2sf#=T&#Y?T4<2^&@#tf8_-Od+WEl zwo=%--!8o^mtoSMSdGi0_6)n#{dOL>Iy<%{*Jt+2p~PBEW4=*zJ!xA}aaGTg``)Fy z+inivx>c=+aZrh+MEynnPp_w-on`|dJbDLRca~2nC_*I_H%P+`6L}A zeh+g*ZSKDm9ekehVArAy6Q(uqe@(aHjm3rKB#y*w z-ca5CdH|euxn<=u>m_os3EkNZch7{wQbx+h{L~aLXNOpVshs(}s*~Gv@O8=1jp$Dm z31Eg!3fXGxkQC`;pyyocn*5`Klc8h&rL|_~71nD@mnqbj(*SO_`zz!z7gTM$ygd#) zxHK%Dvu?8LG6~_Wf0*}}fXvz~#h{%;N*FzTrvtiGC#|F>W>|nDgDC@id;>1%$v?u;~ae`zRzu<|#tRGG3z6S=$kc6YzNBiG`t&c3lS4*|$Wa*&a<>e;@qak|2LCF6U7NJ0uuIt|+B zU!XK)c0mjHelGe5?qtxLdJV1Z{hr_Wf(V=nt&u? zgq_zu+>BoF+fnLAa))%e-euoDe+`@xXXg*r;O zy-56se>({AY-Q>!10D=JNz2*$K#-WjmTOFdeJ@BCd&UY9(8!i(C=!H6_!{66O3 z%OCy^AM0m?fV;W(99bW_MbM1oXX9;%TR4CEi_+;6L{v!$36o*gQzR;Gjk(ZUR+(7Q zL3)SfwAHmNkn8k_`kcvrbLy8Jg#b1dmPf@of63EaE4=mh7tQ#q28R>o?u;PNnAj=} zt?DJjI=2&sQe&H5dn}o9n*>ArB#NljsIHT+pVuOIkT^8o6nBw(fHFi~H88WIfyEw+ zea^LA7|!;AfF2KTvRhFd2d?!^i8}#p5Ov?(KQkHge~+2IkUSDpcbm%J%S(yk#vCj&-E%ObG!5Wk zN4-!;@Rd61@Y+A&N{+rS{lVsG+i&eQ$ZG!TdR(bbgA3{UP=xh$Y<-ZkO>RSwIKTQC zxPkwGsg7E2w|de@&?Dlo$GYfaU5DumXzA_8>=ZP$#q(4)(aQ8%t?8lt8gYBVe?3;_ z%=w$eQlA(Ts%Xq#H7IqWfxdNy$`_941qO)5@QLmX7t^w@3^c1bE-VufNoAJ-RwM)) z0yk+0P0wZI=ghb)etz*sOoWqlh7%g#cQ60spWX4f|7?Qmo0+*3WY2ht6l~@-9f%)u z>HRoSl9tN+iy7r)M$RU7Ly|2kf3-wjkqmR0`XJl}voE@C>*fy;za=Z{QuFmoa6f3r zGfc5pGh=k_&&eOm{Nw-hv6o)YL{4yqKSv9q05zhPlmD^>WI1`PmHd@39w1SF$NSrl zQ)=|U#D!BA{(*vmxlcqRon-tH#3d_G+lwpZ=Ccc{rcJ!OMm=rZ2SS<+e~&yeV7T5Z zo%#8VUxQjL8(qNrPxQ2@L8_7+6%r#ZPVI!ax`Kcy9gs9$&9 zJ>&FidY)vk`-=RU;8cxZr|uTSuPWAWoLV3JC5~(BFg|tBz1wBl`tc3N$^wSpc)@4K zpN-G#%BC6q==e*cWf9s^ePUE`H*0ir=Z3@@eU`E_;?eG7J!EvX*toiK2jG0R~V81w{vNGNi1#2LT3 z=eORNqSWs3%ND}Uf8mcac~RlxPdZN!CIPX107mF}ML@VUE0H(Mw;5D0lfLw%IHdq%iMan<2)_toShzFV2g9iDcRisUxJ z2e1OvKWun-!8YD>#kYCV8Hk~U^VFGXo}lZrO`O(nO$A9>e`5G=Wd8R9+9SgZjl+GU z0mSD$QEk@6rL0u?fHqQPc#Ha(@}8+&ZRs^?3%Kw(fAPs)v>Pg|h^dy#pK~TzT+&qr zOsvWGJ{w4uQ%mh-&|dKBHuW`p5?JaoXBc}<2no;63EP}OrT zz1W_)fp&OMK<{n0dusKyufux%9s?YV?qv`OV=*_f zj9%fv`er2A87AH&y6pL-I=AsmV5c(&aUXgm)*&~ei%q<=|>wpBS7I=I&kwefuQ4X z%+B7<)WYSd&4jqyWg;&pJu^KVW36rceV~v3e`DX`beCH9=@?9hIK)yQ0*k$={U;5L z$II`sWf<$RrN3s1c<&s%em8w9ARtx|{8;X-$l-T~A!8ZF6Y$I0XaVFC5NYf)yTZFz zm#)}xS=o8g@Cf_m@;~%?83r+I5%>UNCR%*KPt&jp%v<;$oG%3p`ueY=Y9_VEB(YET ze>zJutq*2ao_qOk@)mj1*71Kp&vD4{y@KB;L-5>GF|jYRDMxZD#xzWR>8sMt<#kM> z5H=bG4NV68!9(Z*B9Bs!6<#0q_|+L~AopSfO_D4kG-+`6z;@4r!%wfxdfAyeE=s2h z7rTkjVEknpG{Vx+M1~2EZO?k9K=jR;e>1Rb%WBJc@lWTy@EG42Xs&DCIOWH!r2lwH z0TaAHKWLTFiwiD25w;tb_xd$idYRr%$4I54juXabmuIP^)W}zS3Pu0AA+%hT)aCTV z=}C95BDO3=jPUZQY$xRFe<@^0@fPpOy>sF=7*s zEMj^?Lo{l6bgTjXo>859<>C#Jf2CUD80egusn;&BMz9pdhxwevy~R~G$DEGm9`*@( zSd*R?k(1q>Td<||%%1N|=;|BwNjR#7lki=hN~~FgW(4>tUoUU-Ej{~*FZQ2J?-iPN zgl0INgACKpe+4W!lji_!(@{0X)qMfLx+iVhq@AQ(>Mz35$D#o>#!DX= zVo6l8xLJ77i;EZ0uQ&m_>PKbMjkR0S6|J$$$=%Pi0w0_DEi)|E(MI7y22EhL7mz>6$)7)O z_?i{bkq4F(h$emr>#?BvmoDUH3tPc;WV+wt^ z*e!q?A{X2j5hAa_e2G+ueffsM zPJo@en+QWCU35S^+B&`Dg)DtPMbJk5jrw$@Fxi3q!W;=M`f`OChw+ z0-vM`6C5Q>e?WED?y!p@S%5Nd5P78a;CHu8bp=4e{JH92$cdZs0yAZn{>hzF)h%H< zX;kY3c@L+?@n*jaDJ^L2RVzR2QF?7ekjpI;fPnNT<_2zP7X>9BY}^?cXya=*s~ahRGO*Z{!!vUmaKOmtnkpj{!d7Mbay1xyO|j zap`(C+|ot`>K`pZ>?3TjkmfJF8fZ*v%W6*u694^eJdgQ$o;j9X_9K{1UHsF~E|AaE zM+H~)e`#s+LZ3WvHV^MtE~QW(b8JD}254`4M`x32hx4IM6X**)ZQ^X+5XkPDV8)TS zKW0ce+~Z66Ot3%a=g1%7+JYl9nm;0Qd^KVsdP+ooqWG*mC|!q7sU1{LbOg*q`VqoB zPO_t$Z*;cf5)wPK)6O}B-cFfu)CzrbnZA!)e^=M>3be|RllT4wUgEzF=2I%7OOIR* zh{W+O5FaPso`?fn@APM?$U8*LMhj_+J5i+{0EKaCnp55$RcN+{bfV0qW_Rcf=zyC# zAk;kjJIb^4U;NenFfze570(j%%y3}PfEzHXx8%@I}gg zUz)vKvR4RWL-76E|QCwPS!tj5il#Z`3W^@%f8Ksx zvJ?9Q$}2CjmR(L0x3qt406W3YOJ~c$-V|%rzQ~oEtT_NycZBeaoYip3X1h4bN(uai z%zrAy^+7}+^zqKwAqVIWp=e{yxQYVyD1z1ROH-lHc$epL4B_K_22n#e8gRXa(e z!NGP3V7@vJN@oU8BgxMImb&mt39P-3Z4F+Oi1mq!Jw)LZ$XN1~PwCGP8vHmp&Mp(0Db(1`@_Qf1?xj^jH#r zCF>SQ=KT0Hm`2j!r$krVf~i-xkYo;6V(~}X@va{iP7q|z8B zp&G=oF8d5HG9ZjRTf7vyYLL%sK^5&mG@^D*l082ebn~;-rdby@--h-N-5XyG0%wzm zf@OQVg8rXKZ`-%Ke}a4NUft&}Qba&YU)M|ifT}#w>Mp~ng;tq=pt$qpnxR!OEA3I= zGn?3VXShJy>EludCFXp~I?jV~++uT6D_<#_ctHXb$9ovk7DR7s+I2K_ zqF(O;PNW3$^Jw3E8Lif0)O3zHS6JqZ7>|clw|q32?s*>O@u|OZ!c3KCP#zuT@0B}M z6_Jx7&a0_Yf2E7mkH9Q#k=iiSuybB1bTkxlrK|*5j8COha$%9TyQ3gUGf6R&)4+V# zaf*NOR6?6ohFD|Ey@XN~yjpO?BGx*gk{LxdqHytd%cQO*cs5r$gj;B~p3=F$^sjY` z7;R&WkR#ypqjvM=qr{%J(hN|o-81QN2E?-IL6fRVe*o`BW~2^|-=MPjIOgy!gwAc@ z2z|1Iu8!rVcUaFP`w(xzOp8YV(45_Tbl>z6NPDmD``v2rdin%Np!|iItdf%W@R4iR zXNo#}a`to$DwTh)$00w%QBK|O)-JnNynCtSPCA;fp7dcfuaKmde+n!5$c*s#`|tQr zKj&T2f7WPe$V;Wop$4S}p7)ySRl8t6H@9iWFTF@Xf7?r6_XR{B+U#zN|29s$I2q3A zm0`vh;b_W8oKaiy2_3v6>zYre_rl1l7mahD7yhFOL>)3|KENwXHcq1dr6nN~yw`kb z&uPG=h}p4CBK1_q7xz8`f6!xKuK*RG2AlE?>){ri_9bhvYo&i|GSBkW zf0U8hW|+pHd_qIW)fB-O{vAX|5Xk?f1iSQB4A0J71oh{z-BW03?>X&n?-Sot@_phB zJ{q(d0>=}b*aG~Tus8jDN7=L4YutEf`8#Ba6v#AKwl@t%ncTSD+OXFd4?hLQB z*ZO+kMAtu;3LD*{i=3mg3DHHaB~w4Ce-&Pz`BJ@mcs*VJ@7CXMZ6a7^hoT->%c^+0 zuVC=g%|BjIVt=CjVa-;+=H9Vi7%60ybyXFvutx`fO9<=!`Of^FfWy|mMYH#z9WJlaYwtA@oC~#7AlkI63_jC+jvbAVCXd%09;R zfNxZIS-2{ok}ZGzSE%G>BF`c2f841dyJ*oyy>eThMngra$miPG#+o8}0&^(S@XH|S z6arI)QE4yCmsHDf$iwD}_n|BIv=$}T3t-kkT9`>SEg ztLP%n^1`?B)B1GzX#!_@_DW&1c2|$7_R^qIO{CNZD1#x%)t!z~I$0@ne{Um)N14HG ztti_B1q9p4)YWsuXf3u66upK6ZqkgVu z4Qm{TQ%46ZMp zqNgQa{n%waN$R+OWJq{j@6z%E|158dWhl?~qI-FFaEphHO;?e@ zb^HbCT+#C5n&4xEeF2=Aq_Ec}*-eoM%q|xJ$EBM|ZzT3& zQTYcWfD9(FTgy|tuyK<8`EU_WK-aCYea>9$(dI&a0qnPpP`O>x9r{DEZcUWNofYD* zF-z7OBRA5Y8+jRy1t z00CSgfNCZo^TIJ*Mpx)+RLKIl4gJAQY{V%^%ze3#(0?ni0%(R*nA}MqM>||>CvHW+ ztJWc_M{onvPmr`agC({1%zmFCX4B-2S3I}@w{aQ=3Xa=&%c#)cr*Pc?ofmw);M+Y% zPi-U|K}9_Qf6Esd#FJMFH7<(I%cUUoMuuvhS-~LxvY|B}L>iIN0C=SqmV;IWj3 zZbzHQJH@x_?NrQj!ThaT))K(+yGUrpRos@S%1;QqKf}Xo5uef4kwaj>vICZ{Ni6Z{ zAjC4jZ$lDh2>f-~dH$*0qcztmj5>s!wjPe!2X#uLv~BxvLF5jYcQZP^+A-h8i${4c zf+K?ie}vxo({N3fKX+c8L`I(QInGrz{M>rG?fwaaHsdWSRj+F7q@v<=Hok-eh2u%il z#7RnGO2#8>9$)C4lbqn^h@JSv*c-nk1R#G|f2cSfPU7FNTSGGCSHnx19b=s{?KMiZ z0E-BKSkaltQpP>n9Q<~Gu)VHv*L^DxrWRuvk$Sl_*^)lz@cF^D3P~>b2+&tZE zvAuJblMCzv0)Go@{Z3(-#$>04cOhv*Q~HpqD;S~tXb~A7*DA-w?2&%uv5piVu53}& zhg}Q13*Rv8n*WBNh@~OBWWJi3iskMKGbd|*6o-Ni{Isy2{?r?Z^ z=N;<9PQVwPQx$@L*K|nBLk@wh+lQ21NOOOkwo;|I#H>keBMQfeK*e|i)wgO5e+N9y zde>9DwkU4Y-gyJo&e(M>-$x-!9^Py=lbMyT^U3tbe_;+?t<~sCoAlh;MF;GZi~sd~ zS-kCN5)#0h7-gOn5|L||9~43NaQ_MjL|c5C?i&`> z|4%E^kW!?{mM?*BbdG{C3z&Vb`aKXNq0#pC?rp|8>erW44=1hl^Q*!=G5X7?+9-o{ zl3@G@em(lhvD7QuY8?dzNSk)0sg8QJv%0yfgf~Hb$!Wq#7BX~JMe?Bce>LQ^kPCfv~5CJlvI91m1jyWZY)m!`DX_yrZU>PViMC zduvl&DilfDsZN~|Ek_FmWEklQc7rO}I27kz$(wk*C(*7#f9wH#V9oF3>Zm(H0v>X< zm*EtwXtrG3cG8)iYx*|%Ky*zx>Ea!Oe`Dd%8@6BLob{9Iz|go-8*$DyXc+rozL?4K z@OA2FLFyGly3>Z|wDC%lTb+)8y32?;p2*{t(H_tLhbFFLMCh3#oyfI~fWs7v3ilqh zxv7<;4!;Pce^Qu3uc&fn8r&1rmwfZU%x|*9S$YF$`{~WvB)FwZEl8GJ7}2x5KTAOO z)okIf%ONL?n*lN4-sjNi$uL*^J(H85UE2oSH~^U0&o^D~Y~MU>fy;Ivj8bEmLo}j> zf&Ihf0PI!f@>uqS40D==HTeX;&7_*qcZ;u5^STJ&0`5aYRaGZJ{kxy|kMTG_QMS6{ z@i#r2e}?dgjt?N3w$taUf%LIn!dYy0x_8F^gnjCOqC>3Ni_FUTHIg%*(fyOOyh-Dp zv?5=?{NcA69cfh?*U2bs{onMSfejJ)q(;e#7lg{QxUJ_}1x+JGN1N);)V)2V&B-&6 zo@Q~QB^rHVLk;3^Qym;LS<8Iwo$^b~3gM&Nf8v19>FJp7_O3WC86O(N9f%WTtEAQk z`GS48v;`nsb_sz#89qVH5++0>o@blUFt21g(buA$;MA71CRubNAIRQ}F;pE%^BP6JiLJVznIzUcE$@q& z{>K0xShX=RFYKZ#sD6iQLiQD&%?_$YPK;0xOEXnuunBeX|KbYxR&p^nnG$EFO=&dy zu_pw-e8iL3G6rfCQ5C4i@*E+Rk6+9Ne|X>j!c01pu=2hn>}K6~U5K8|?e)!V6WK^p z(?Tf4_A@+DOv!G@Wt|*}odg4;A!A`A4X_}MSHmX+#c3h?8w4*l{@I|Gq^fy5eH`8i zI^`CfGjNFNUMuUymFNH__jOhNuYV_sZCr|N-ZTH^J23f%QL#H`o*C%*e0m3*f1t@_ zsg;&_l6`zhDlST5nbV~8jqxyZ5uQuB2EV^~AZeJWEDQ`g;^}+aDS`EHGJNz;bKP)q zw&K@PxG2VTFw&jBhJCFZx|9Y0ee#>m)xbP)Wi^TP}0(&O~KTd`dB@40AU=9#{MA4|?5TbyeTLo}(Aac!I$0by!m2W$B zBdzFfT)rw_kvs|4KIfEP(8a0L96o|O5?gm``>a|5Y}ZqK@$ZWWWl;VgeW#QGUBfD( z^~}<5*&}pi!?E+bO5S`2e@+j&sM8rZ*N=X)!5a7`DjWYEmycb4GJnPPy8FBp zFAbu+BZree<9M!EHIliDE?Iqw$cvl$yO#M*I>s6!YD#`Z>PB#En5)Q&H6iAMif)S* zuu$hdkdG#r1wYmTN-G7|r&InywQDTtir^%yjL_l(E|XS-veg>ZJCJhKq9E{pS8fHVhfVKbyOS0cJi5@NS)nb1i8`>r1QH(g7 zw+c_iHt%cp)bQ55lNJrXb34xyg34u~0vx!J;>uW)u548>tY z^;4#8Nnxste|oBa%;HKb3RjTgp0vLfAE4@zkBA)WFPwH+vp?7V+s)iNTy6wW> zTYy#be~vW^Uq(k(DpP^ruXnyYzrgm;3vWszUd0)m7rTA~*i!9W#RPfrBXB78OJ%sk5e>cxdtEfL}0DVP60_G##WjxRVEL05Q zp!$GKex-mX@?+m;3VPlQWyb%yhx#c!V9-jpTdl94Ygyxr%Je(uv}{6=QXoE!{qnnI z;mod=dCj$#vWfmxNyTZ|O$GyKwyslh38?mZ*~!e3d1QaZY>p5MNu$e7%uc4$UoMA2V!@Xx$}m*~YK|7uo{yTNn~6 zq`st2yXKtk8u9*}UWY|awg^(IklQ27KG33g`6lSTwCSQ!5#d_|890+_rv@=n8Rj33 z8l9IW-G#EUK=K1M|R@WL)~n;f6Iis-!iIWTZ zx*P1!7B^r2C9R=~x$8rm$FA3iec@$L04Rv%M_C!RUx)pg0=TwH=0u>u)t;+a;~)O* zh5v}2=7}3c!5k0`rK1MSm-h?UqJs8p->SmR0FXzyFhj;0T&<0q)V+Oz_yK?cf6rLd zxzgBZC-l)E-MD5UA02=Pm#q9M2Sxt?t z5(RwVo!xQ0dx^a3^EYlZ>f+{Mq2CF29?UGLQa9Vl*LYqr=-!hI&}UQkry4>cP~OgF zXFav;6_O)#0Ln>Dii=o7UFcxflu`ddaW%ZJu4RGn%jpZ!1l9_1CL3@Xe|?_gVKuFq zX=1jmvrkiEt;6*>hE7~~W4}$jFXK^hW=zj`{Xl#s1_Uw!{nQaJub zkO%BNAW1hkWy__hr`mF)e{Yht8KV|*^Uzo!xFrSc5vfxrK2=I??!(RK54fRH0+sYT zG91CX6`&MaVV*E=#m7Z0+juy=CyM-481MK2Bj;jyO}2{$Hj^Zd(EGY7DU2UG@?fRm zUAW6WX)7H#XP#zXG6)i@N&l+BoAbqjJG_86y~f@AbCm1(Sh4>$f2i&4w6F=?pfgNs zUk|d%5LKF5X<8AW>I}L5$E+{iqv`h@lfGLcF8w#^pB$jQ3Bb-`hC>cU&l0%!HF-qj zOyNIWCZ>mPmWy;pM63lzZjsV|coq^1-E4EGQ%$?dQv^VXDUNcciOKW^7&#t|uD^?K z2n(n=LDKs27(H-)e;@xaSdndts70NC#)8m z*Bg~Qmu8C2fBGy;5uLh1_MfWMfK6atSWkYK+?*EgG62ypZH5Paq6DR)(K*6nbb_|Jd$$~+W}mAXDRjY-Vd6;h2&@Zy>Yf3x7_y`z<1Njg;%u_ z8vVNNg^m|LY@Rsu4c^GSPSptgVOy5?wtzvGEL75OfAHiaDiv1L71!}cdA`ehoG6Cr zRnVOal5B}y%PA+`BZ0w76Ws-{bnyk&O)q||Z8xBoEo;is&`KL(^44Shc5a5og~T;NK%F7EJgr3HU4Yr>kwi*dh{Kj zu()wQQ+$0T?(OO76I%I^1=?qEHXoR+?=b{pB|O|gs7Q0l3+X?t~V!-4!Hn`rH6 z*BaL0@1VW9GW8o#IHMO#R_b7O?x_K?tmDR->%aEas;icInWT<>aRvi+QFTgl;Ya8V zf3>%w$zEbFO{~#CqD~&4_3AM>;dQ*?+#~UmhVbk#`s{L2NE&N6s<;XHL?~S z60!-~C;!`=xa9@=pKwo!JSQw-c)J!*Ut4n{Mko)AzJ#hZCF19c0A;ax&Sv@~tSvE< z<}-&9;WDFHVxBE7-fTN^PX{Yf02*+8f73YwX`F+R;SrAcK7w+S?nSue#GxD??VCQl z&ULi?j|bh8$W89_8IIsS=uGBl8`s@xo2V`<_FAMM&#c4wDTdc*Q%JhCTqK_MgfGojhcOE zu|y!nge!>=Qp+{q7TLT4-tV@s%f-+2KP21OKN(TwSVd{c!1e5@pP^ja;d>Ph2*)a^ zp`0{8mL4*kED^?`=y+Y(Vep*3ym)mLG;6z-yQpeNGK6aUHLxHsHY(#S5aEVQ^kG<0 zqb%g6jEIpR2&x9addIvrascPZwJzo(ac1I+Z6e{Jp(uu-^Tr-UzTuh*$RFm7e~svV zKdRp%{2{Jv+0Ff(2HFGki)}Hm6JQD1`VNWBsZ&w%QXzoO^wVhzy zQ7*_Ug2twMoFrmqhHpNS_I<9`6mX1I$>=p%P9U;yS|G!7^oa66C`+jvcUP&`KZ9#t$bEXTRBzuBON#k84u_0gO9 z!OTJ&Rz$61x?<-QbnfeBHg;&v-)tsJ zNm}KOSg0&(GxPh@=N(X*JgpUMi^CIB-{Ja0}Svee7s!2SnBmOB*oXWscU^B_{ebjG?PrVUkWglJ&?h6Hzpq!2; zat-XsT=3`E=v;WtM?Rj=q&o{X-Wgrp5}>XRp=|d^MCkB88-9xLKTm^(-7GwmuK4*o z>f!Pa9_Kq-1U)qJNJD!CR*^mpC>+ALq$2d6O!jF@+(joG(7&t90QV-n(GeT-dSN+10A$U}kX?ava$Q_kW`;D1e!T^&pt@oix zfv7`K0TjZ5Jr1iK;!c7`o$9s7fi)C(OeOYdeF>l5jesO?y}~2H{1qimcs&RX%qqKDM}&IRcQ$MI^KCO(^IP*SheH2k9~G^g?@q zD6NmO^tuyQsTP<{VPGw4VVRce6vi_UolpJ-?gAo!=FwZd@A}IK5NUkS8$Z&9Y>1CQ zU=IvNIq88{c*wFvE+YY(h7{TK&XWvn`eoC0^XH;Uy*MVJK~8}m^`dpGHnN#2J>Fck zdU(R(B(@WN?RgFWXXkW#K`+HznPr;g6NfcrjOkzS6lwzwi<^)|0?jSH0?7LMT@ zW2=l&o&k0iwjC#bl4pseo$p&Yn;MXdkpPf5t+6U9s#aLqy`S2EVKX@hv3z2jL#1di zf+OE*YWaFbOsuAbX_uLOYem0m9<3sTmm)igKBcEVs~{RV%?H5`Rqq9LF_B(M{1AP; zk3)5X@vwg=lU}lS*$KRgT#bP73~fsH`Pa^V04+BR49h>419l()6ju>j^3g?9z6iLB z`l|uDkShptzm@z|CJfg;q!k(%KcwI=dkrZKMeF}W^NYRAg;tQVF(P+OSJ(obMG6Y+ zeJ0`hm=p`hWAs@)(9uX|F|Ql4dS6JhcpVjSuuGc2x&jK*2ESTmcs0-VGX2x6b$KWi z3h!qY<8AmdS5XEO3=QZX0SJgyUm8XWjg5V>3K$3oCbiB6lrI$#RR*Hf?^6T@1nl3m zR%`UP2q`4|e}*rK-Fs#K0#W{Npn9u3glG%!e*>YQM2TVkJETVuRsBEdA!wpqkO==t zheR*oE&P}M3X)oH1Ii1qH8M7Guw^r$H{o)3;j*$cGGJg}=B77cHDPAsHvP?MW@hpq zQWX;yhv|QKRP4r#Tudw+9Hv}m^vq1gM)YhZ+`s96|C^&X<}fzmGGa63;$q_ZFR5zY zZjlKs^d`Y0Z2uyADRz6Pyg^X7(8<&wK+CB zlF{$j+0xyUz15rh{hD@s-{G(P>kVfLlo|20jhW@E<1Alj0=CYyZXczM8u+zP9>W7! zrU=$*a4W3%of5V5`BJkR3F?+R`YQ$DI3xjrZ* z|3vvR07&JQw??eD3zfHl?R@Cd7lL^UHyNcsi#;0@_V zuKlLUGsCouAIc7%N<&rAXs_RF#iCHrTK#jH&tX~BPz7IuOb?7#yYm04-5I=Uy1F5vibG8 zr}}Ss6B<^nta|rjBy~2Qr77e;_o{(NeGkolRc1;p6R3uhC7;ZnACAq&E|$9SegMip z*g*eJ9cul#Ml#Bm0s_*|{V$j5|4(_4{_nE%|H|$^T&l}1OH~!EO?n(LSl;mPaQvc* z_>y0;>p+peCIAIU$jCy(kDlmC#J^R4;fS;ZMh0dmgGnm}!Q1*np(q857NJr@=|ROH z3Dbg+0i$qOy3Oo=&AiRvzpQq9o3jW-~XO znuj+LCsWGlHGYKjd>yMa+r5q=(JR%?-1@s?lY-Q@qOQ->{oits^p4P}JaIKxbUJ)8_Y!zE5n&m77f`0YIfq zR_t8gVgmmY>1ByaVFW!BGVdkNxg0Ul0YzY;JD` zE;2g4eQ6U_7unC4%vKb;T`8ZmPbzZutJ={sMu2|L#Kg?_^dzIF%7l;3^R@3=>3POR z$NMb2!Nvw}TXt8?H9`O1x!bYRwbnc6yQ#}8Q65CbF^rRDu;OQf#rK=^uifKf@Z)B* zs(zNIVNZH3oOTcYm4+k1t52hCV9uw+)F!}=tMBmpE+HRdjkaaore2Zrxzj}j{N^(h z9AG#~<>O`QJ6DeG`e$+K+xz#Aw?2OvyOm7eez|4716A?9SON6;PxOy7{Pzz!Xh=(< zhA2FQb9yEH<5;(oMA?Ky2v4Q3Yo|~U`K^kOu?zq4QfBXGobcj!F#91ZjVfPeF@jE3 ziC@EtkDvz=P>q-pjW#r3b=BDrH;DLi8_>29Pph6=T1i)Vf@Jw+^eIB9n@8l{)Yr+@Fls2i9bT{<(Ps8*k( z*$)gJ*{T$kxZvW-+}jf1O#2xHMT0iW2?!U8rH3<$8us+T94~ZZ=N6Y$KBbWK1&Bq^ zEYUV-Sd%@LPU?b+q+Xt?^~lW zM=p=Tzy{?K?bcR>qk=4Ap{zdH_uzr)v2>%3L+2Loi1eT+=fcU&CYNcyc{VDH2f0c# zm<3TPyk-N6K;ixZ#4eh83kCxj6A2@R$@B=hH2juT+ zU3c0zLox%|+=LndfUtXmH$L*T4RV{;PI0uy3PmR&A>n6$exAp#5cYiYq4ebi=3BhD zg#q)L9Xoz?{;}+e9fo)CK@*F`cC|H0E~_rsbFiiobyE;ckk!T zeF0wdzbBt3R9dV2Ki?>^SRE&{7Jh|OUfcmMj_HGPXxSM9_8mUmgmy{dEq|uLJ&RKJ zTNRx3RwQxNN;D&9!aO zs>{DJ^!1~_^ck*#qhUa`wYS8}mmTvlg`FmQ`n%1i5VZX7gZV@gM~JPQjDINnm%?TS zG5~XZTWjUq1S_aVN*s1dVJVge{-JKTkv5xfn&AD;*YTYZVjR94D}tBNIjfF4>8a5D z3ijUK9*|Hg70!7F{PH|4^Q=bv@q6h-zQg#BDsm zb{{};e^W5e3!+IRP8;p9Z6DB33U#RqJeZ7h#iKU%Uz z{JVR$^58Y~5SxG&f1SN`Uz@u8rdaWw)PxyZqnmFAgge091$?@tnX9!SdvtcOjXxR_)8m6!fVkZ)fWS5@LO4H<4Adjs>hh#%Y=P>L@Z23Nkb1(J`q>k0kw3fNar~<2c!Ya z5)R6@CACMDy<)Ef?{)${Ke|ZAgCe|A04N=J&Ra~KU=96b{iE+KuZ$1fEDZNEd9GZk zga8&ZT2lmV;nipMUjau$l1$bf`Wv=5&#Snb#f~@$*MF3AM%H}6NeOptG z6z+4Z2x((m(|Z4li?hs$9XP8qxaU~C<#`-rK1MeT>RKmLMUNTikI9{ITGt-P(tLp( z(&HyBVZkn=`*N_x6WpJ_y-@SK0JXB`Tyf8k9{7UbIDtjWAl29Sn919!w@t`|!R3qf zKQs5UZLmeAbx$LyBvTS24Tk7eb}2oI`V+PW&5ce&HqZ|tzagUqdFyh42vtwdc8mo4 z@{`!4lJGCzpiy}s-$E9CEwKTyI8#|Gw{pgqVRlPD8bQ_#E>(Y^*yoxi;MEd$31Lc7o z_!rfB7dB7X+!@@|>z~>Wz1zJjBpAXtsMQYUg|Li<(=uvhGPl^7S)GzCHK)NYoGN(< z`_W`CirfJ)7y&NRaz*a5=ldW(gKXDDu=)`oHl)rmA)?Hlz(i4DkO$jQg4(>6^#pM* zOw|WV+MDd(nBmbuO7WwaqUIGj-N`H!VdlnO?RT|}+MZ*We&qmP06MNfG%8-^Uw5OK zu{-Pq|0Jzxwzq(9=Y;Fn`9Oh-Gktt5@jRbKdk236{5GgHvX^9hSalACFA<8Gy5c}glCUkQxZcw$gORdF`s9w)c2e60_K7fg+= z5q|q&8EQ7i(;^Vyp#2eirIRCKP91PySfG`akH?DrGGb-@eQ8tV}fI zE;*p`9c(o0WAJvM9bFY8Z<}b{!1r|El03C%-CMcS_$VH0oEGrw)O9XQ^v)!qnA&Px zvr`l;awkZkat(8_*6Zvw(A(CrV2VS{krvpY;R`xT|5>vC6$l$IcdOMJMm9cZH*xxr zHJF0FGYifJP!d8ud%MgD&E@ISm)%1OyvtMotlb?9!aEB#<}^#`c8;E#5qGT7T!VOP zI~4;eS;Rt6z#vkmH*Jv#WwFjTx1yULX?Ti-@u|yvoZ#iZ-SN%as2k(ip9+dHmRhU3 z;~v?gV)x2zNC@Iyqj)q3RsjuLw=ZXZx%hyjvX z=ri07dH2EtbCZJk_1@BB1wT-778Gy(7P8IELFgXH3bT^36LW7t^MN^YKFPd}T+Yek zQPw|0Ooq{xq!~REIw+V^@y8!qhL&v0UyMex$~_5l`IpQ_4*oC>oD2o1~M1x z31{no>*X5Z=ILPq;g`7C5wZfL!G}P|kkE-(6!Yzysw6~`SkQq31j^>wR4!C`m3N>J zhodTTd;eUFXw0}9xRmK;;syO7g}`Lw2w+Ij@jwZ{AH-(rI&;vY?aO>67Q8g zIjQ#7sZLfY$O(>}jo7hm<%e;|z4y9&Z*?aC?MW-Nd^OOzw~2STqGt$=Dxx=2QX$h2 zqz&+DMn!;94Qqa;)SzLt(7AXKd3HP#rZx6C>168;!1vWPse?Dw>SuzH zg1YH>wSf~#-Q6<@;*vw2K4kA>e;K-aY$2E7@-N3a_$z8 zpT8gchE-_d(r~jZvTA-&DOsnajee4W-y>5`UJ9+8@1X9Z?q&K0^ROWNG(ID<+}|;w z7h(TH-t&@DBW$z~W8n?utWvm)@e_DPV2i}5InfE#mX7LK;F)@nmq7T_Q~>MqJ{o~? zZ|{%{q#a?eAV}OS(kvg+xpoE5Pe=fG3LKXmVgRdoNt08l;;jCuGNEaD$U=Hgq7*mN zig-fp%vx7*FvY0x-aW*&riK;xs)IBR8M>`&+oVxVbH~a8e3kEf+A<*@S@tw7nwK!y zP^pv9@Aw@lHzyI1o*OpNfP@8U`NiMLCj2|2phw1ZdcR{^rbeLyWf1!Iv8e;R9CBiL zq!EP%l0f1v7VJ??yU`=!27mty$v>jn#m)SNk56GE>ju@B==9EM$XL*&*o2tA4EC<` z*U2F6c^1u`_Cm4pv1D5>?~^*ejJh}}=-hxLdr)y73JMnWMfI0N&BmWJmyRe3>9cUI zR(i9qhah6+q`3*Y@=`TQI~)hFnj?myiyn|d-w&3s@HDvL!0+asxzxK`rB;FYFfJ2l}_PNnbbV4m7vl3@VshBNTo66+h! zwVYDnXZ(0nM40yjZ6!@O6YA2qWbelB9JZcAuOSXCjsE zp_?Blw$C zU^9J5$!x9oUc4_x2T}liOSDekNPczcw5zHiMzy$IVDP z4*ThAnQUf7OAeRiq5r`0-aCnzl=3J=d;?Y04rpbHf8=ceCx-i84(yWzrZYDs+D~gC zO{6ju?^isw&*m=`ijT3uaD$#=cMv7YxQ2un;)fZe9e)DKl{x^cp|nq#n@4R58Ymmc zxdM^Z>re_Edgvh(m7cOjJer((N4yZOlT+5N{whx`Don8!^b;s9=?1ksQ+^0XLLvA;(bjH)UatL1 z6zBB~!NyXOJPI;@3Dre(W`CGgK)bnC<6k4mWxo(jLN^ z;QKXLjl*`dEP9FZk)<}EFshx5{T89gwLT*RR7KT!mzY+*-YpU?Jpl04)8%VBV+OtK zLgDT9i@WKLcx`woWzr9K>J!s{d_(Q5MfH6C=&9&sd{CIdXPAy!P95!Vk_-R09XoGw zoR&=*0Yt!bwAd*Z+(xJ)&7p^wl-R-&dD*Ht!Rm)l9sEWl?*(AF+=ip`6Jwp2YUiL@1EVZ@F@X9?mg10qYh@T=t) zvzU*N6?s}d!za(y?hLg5WN;e0&D{>d^BUXzT0nfEa5-_t!F$=W%GI8ea>QzTHUbXk z4GO^QeCNTwOtF&IEwaVO$2!c8eEQA4?4rr@v;+Qfu$X3vvYb35j|pbY1-5A6s#vB@ zSy0>XJiq+X1$7@n-3NEl-v%lS{`08-#16l$6rLmMA)M6+6B{VDZBvrpTW+8!TM4b2 z10F2LcT@Dy9zR53nhz`PGP*AX_IGv7ggPMKY92J0H#2O#k&iFaGs;y+R_zoEF+~Zy z+()7!@zg$Umx}RKDd;J8f-pI_s5v^S5PASsi1m?qi$7~DG4Yp>sjT+L?34XXu(SJWY=jSGwP&<5(~1^bIFyp_W5az~N@hc6W7qPd9jlkj)D zqQ1s`o6{$-9g!9wkbbpG%r{yW3@d<3{SZwn()Hrwh#9%r8x^xSWw4eA)LzTL8#74M z2=o%MO}$uE##mlOnCiuSQ15bmYa^rCno2PStB>V6+ZS%>X4~;Pp+8lV{gfJQbm~sX z%~&gPb71v?jQ50Hpsb9ZX8?Yby1u+=@qqs|11Ac#nOD!ivRZAjV^Pl<-Vngv#jzVb z0jiass$CtxZI5U>3?@VemfZS%VF%e4AB0km5@*(sb6-3S{C14=QhSg(f{eRX2vh-? zFts(gf7Avve;P1OM==YTs~HgEyDk}r0DE?Kpioyq3Wc3k?UtE!sOePpYPhb&Z43P= z1vOJNb$}}m|JE*Kqqb_l&<{}7$hTU9Oxo%R_Mj6Xw($T)A?6MDi^hAy$eGCjs;Iep zf`T_VajByIH5Fn|sM4cr(fmM#VT^)C;5oC&@X}_;3gt1(aa75T*)>@OZf@K3Pq@={ ztb@f$E?~;skE3e-0{?oG7&GgYu+BQNPOe@8OET6rr*QjWO)N~X3LSzWV!Y5c1nxQF;l z{3zH5}Vu@r5FV6FxJx zv!IVLf`o}GA#2(ZoYN*iMot6f-YlFz#=7eZA4bLzGJjn<=cw?uwax&*~WzSzAfN!MIspl_PY z6nf0UsP@ui!85>{g+*&pS17SRSODY?DdBE`a6XWM@BU(efLg6)sW7oT=|gsvMzmml zfNE|79I#$&ayGs#8B#30_u;X>_75UFK0hTS8aC(vryd$FhJn$yvSTn$ZcRD@dLrWf z$TfN$Wu$6Zxx}Se3&CV4Qa5)9EWT>KG(ZvoZ;0Uzu?5hh75UQiy}3Q<$?r{KokHc5 zOq0|~SGTRPtulIf6Se{SPlkM%u<%W9m=E=barM$Ig8$6#{l=E`(S1a1%$j5q;j?8& zJR~wf-hI=XY!XrakwnAS1239tnfae)$~KT50SGffb>#EL0sQ3aZv_c5iHKhO8707it73g77}%N#t!b%W-@_Und1W9& z_awi7w&T<*h=%3Sb)+Pl~LscwYsz}+jZ zO{)OMHZM4)EpKpKaWx>isz@LdkMv z?;?1+j}iQEew!5gl+P9I45V-KC&t8l{sjPu$#UFLe)qwV@T-U5aY;_|Z8SaX>fXW8 zVF{nsU1o%((SqNnI*1iYZ^HMUc7iocz(l1g(Me~Kb6frphk9Rl2U!hd`(HS-@Sp2B zk;{3=bvUcI5t-S|IH27HhD1jjJrkx0!XwnU=%LwkbUvhQx|D;vu0Efw%}NPDybS;_ z`@@^@-8Ewc<(^7KYZ?Y4yIC<`M6k;7oJwQSb(v;q(PVbSJ>s~q0P9%xj8Zd)6?R1- z4ZExgeO~{F(Jmu5T{s9Rd?S`Fgr850+t^bJXH}Ok_5-awuH%jCkt+Y3(1en)E8AwC z5O6T!L8L=BPRKxbPn}7Z5aXs9Uu{6%k@GKeTZ}{j`GvDWFmFKysB(X;s?YMGF5F!;Jg7Euf`ue#uj zG|xPQSErbLdjq(mGWw4RPd*k{zo%F704WC@QoFllAr z{pZH_EJoEFhWD-UiBfrYuchOCBY&uQX%ieq;%vEhrYP`m$pAJ5HgXQyJJj248sgG! zXQBYf%v?30D)3;Gzw|jZ&C9n&V~qNtrnN{6=y$lcfeW@WXj4lK(<(qL4o!LGxZa7* zS&du3NFkTP^7{Or8eNQ~}@^WCKj*9W&T=&8-qU*Q5jGc};<#j_PgL2_#Tf>oPm z-k7QA>#vric{cREWLy9V{ZUa|=svsYS$_5`>HX!ZcgqSyTh{g+8=-f;6L$sjx!sbZKwQTVXP!>51}sO3IUHcHTw1H zpl=5nzW+^t_=Nw~3E>cwqS;@0yY!thlMjbhSIsQY4pAG?v>E_R@u-I-WSPRUe5V{t zV{GJzIRA&xmaP!VZ_Ih1W~hbu7Y}`f`41Z_5FODgb%8Axig_~HdX2OD$H>ME%W%;| z)jC9XOImMbi5^%A)kU^rVa6%8ncjf&D1sm|$3IHi0WI0RGHxU=NxTleiiL4$F5TuA z=)8y&M;P~R|Os2}gHDZ-be?qY0p1OqGGMGb5c$0nX=Wgu!MhJdcp>;gFflHFgG^b;h~>sltI z`MiTbNS>r`mm+h&^5YCF7<`6Zjn0d>4MiEYU`-l@#0ddZLNuy{8a3Jt9+eo7MpOS7 z{+Ly~@h5cVFME`={?{)Jy`ri#4QE?jJq*j`#vdW$Do0Xs=Muc~xjL#o4BkR2f2+YytI-g01cOvGUF&wK@De^FI+%~yCuNIq>PL`A6EoZ_qj~(l_3v+-@3e6;8O_pSy?Q+Q!o_zGvnHIEI z*je5{t>#%%V6{4PK)=Te$?n_qk>!~2tSV9q?J{uamCJ%GkjslujW%qei;j3CWZ-Fb zW|pPJC9;s@?w8i3X0PZ>OGV3~%rBp;g!`LX(S&7%`DdbtVkto;j9{bt2ur-gs;#3Z zIa@$*qD5E@n%r)Gk93aov(~8~vSqP*$*J_go;&_@jM65-xW;&Ff&Cknbm(Li$KUXy zvtaN7L1;GJ7*oP$doV&hm+=Fqb!#{Tw#(Uj8oqIO^kg?I1#w<@v9smo#en(rTO;}A zGD}GIN{&)TZ)g^27GH@g3~7zQxFduZQYOGzq77PC+-}i2o*vAY(3Z4t(nZ3@{X5oH z^^UQXH?7LoRWFe92sfADiQ7a;CAfR+t|>NLf&HAQy+eOU>D1JfSDdc}YSDC~0tI^$ zW|`su$Z^y631Rwn!T#+GENw&b+O%2E*_WF?ZtU4#hM1c ztk>Op1kk5ytk|kQAv-bbxn2?D1#K!7P&W&dYdg+qA>=(svyVo~qk>R?A6y7QF0C>j zTs#<6DFecB%>CSY=<7y^^izqpfB}GDenx}BLtbQKtID%*E_I1?UfyT`skKKS{+$s` z(gmD-up*)_`FYYenjXIuDwUL>eurZpK%bEP<~YT?`j49 zAq)$rGf=Ew+9vk9Q8RuGo67wezQpG;ryPi;aa+wuKoM7LnAWdz<2Kdw@*4mcg`6bFg7L$)~qOA;Nw1HV+^-dYsS+OD1OIFj6b)H+p|&ch+c88H703K){|s;Sht%x z0?s!0tNwKb7_K7|GGYs(jyHYxRc&o6?lh{aNAE%7MeuR_yXxm?S_qVk`6Y1x_liometcdnJ|kYZC$a{S*Vc_#9mQ zJtr(XM6|;#&_%5I$Ok}p9O0~P<}+~SY}285d$MFwSIKXCX*sEZ5&}?aIsKa9)KUoy(FnQh4~6F61{+-FKb4->#ndW>dXWmH~1r9d#uX2oMc{as!H88oJoer*tI>Vd`4=+hxXfX{l85}HXOtqZhS@9#Y%QRPPC8iK@Y&JEq7-(5 z_pk%Td>`ShOa9?rnDwyL^O{Kqc7N|dsPX6lp(s$`lnQrN&6>y?5-IAI@vj&54fWmp zpIOwc<9N3m(nHR7KkoDBOx*Tf(q?0+F{^0!9gW-dV-DtOc$X(qO`U_9D@w~5^kiVy zG{3Pg^`e=B#zt$#4( z*_M_Se@aJYv~myKHn#Vdn(Euh<^oQKUlu8!OJ~vN7XL>YzlrJ{ z9d)jklK`dJqf8QB$L-N~JkYFRtBLS5FiW9#&DuI80Ikx{k}W-E`h%`N5&1R8JB=tgx~XAesDJ_V%S|Rg6hu8 zCe(mfgR2t{Ya4Y%Hj~^4vqn&C*c3wq|4B4`=rwAbSn7$o@DYW5h!^a^k@R0=kAlNc z#{mWIlx*6gLuYfk*Qt)6c^9Xm<=p6lhz;kkS#%AHMNCn+CA1%Ik;veXz@+QS9+r(S z1jWc^)pb8U5%(f0I0exRLPhA7LB8(BkqrQ!9LvBfMdb~4)uJ{1vchcbf8CBcvzpxy zsxq&)if-4cq4!;soN{a(C>k(Rm|{~!eKYrGI`so7sp2A@(@DHz5)C`~@U9yU)->rsqB#=AE)FGq;lsMG=q8DJ$E^>#{>rQ48ai3qfUq}Gk z2u~t@+1Wu7qaJye*In&9SFJ}sheV@6CO+UjU^Oi*Ndu2K5FC^HPVJ*|)ND(96Tg{( z`Xf7$;Svn#EB9p|&2gyUM^D+T_b4ZJemmIkq5+?gY>^$_LAS)l6n=a6f57GsO3L7_ zWe^zgD7BSWf>ui5ia-e$Dqj-_&=~>915lWd@(QQOKO&d5k5Xo1I)$c-zKVt6FT^Sp zUE8}(vJT`8OgqodxzWqvV*L$QFIh!b5($G`AyW}M!}y}QOat_hP>u$CU3Rjn6RIiA zCo-}!W=#AsOtqcOauey*VBZ3L_LwoYg9r-Qs%1wkxe!z7^u_u}>W6rSi1+}kcSd(e z!)QjaT8J02rE_@?xf@>OSc zlXP3S2c8siQe+@nqKWG8a!9nlmRxR^z*kff&6DNIG>HP~6G43wq~7vj>#QBgN29B&2VsE>EcezA6C zLCmYOtB>Nhq%M)HM_@U(b{&P z?HFZ@D{l$UQIUWmT#%V8%gsZc)pM3V)r{BRhemlhJ#(W=U!N7mN8LRwW>V=!bBH(^ z>Nu&&Hfy}meLUY%<)PG_ct|#Z z2FRo0=aUb`3(VWiu?7KxzUu@4QZW>kkaBzvc_xnZrj)87jgDjLHm75MHkC~WlJkaD z!5G*^GpWA(tERM`#f>y)KzzAwEUJdt5kJWaX?^`YeRgs8?lZ1 z)%5x72rH(4VP723lY8QZZnbYl)o;2s%p2PN$w(VJ5f8S{e&X;c?vUkJa3 zhfq7ewFGNK4K%ULo@a`1s-1g?oUj$k4=d(FQ8B{RP7o2`=#9Ctv6ZEu)>AOz;0Ovn z7Ya3_UK=rE;@!m7M0)?{-xI~K*$5hNQE?3Zr5oM45bKV#7JsT{Gu7XaI<~$M7>KP> z3g61++@lU~VMI2e>jYe&-obZEAwZy-JNQaGfbwF6vD6GEudXqtmdBbv5r>I{azxn! z;Lms8^UurDz)6~>mmaEXzsIktdl=doEQLCZkOc;A`$x6q?>Gd^*&Q;ZARKyd(**@f z9nSZ+!xA36$;%XM+z}uINl{Jmo0gJMtBb9yt^JSWt3PV{&L;o31TaI|c8aW~>X4l> zdJQ9%@1ov%Okx`6n8+q*x;gC6IKti!jz`rihIu5QI}}=3)|AMt`z^SI6@o!Q;suIu{KLMZdG1zlR*Dq& zSxh}Z)(Pyxjoc*GKQBsC3#a%1=&+@_K&uzbw%=m5aomS?Cm4i?t^MF)08Z=bC3$!q zAV#MtmXNpPn+@jC*uf0j@n~riN+<*6`6OVMBP(u?yW9U7+)HhovWNPaQ9=)T&J0O( z@^O4C0cg5y!lZxqB2|(rkrQ+@I9rxmC-w@UK7y#Y&s>^M&8O|xPBd-gEICpyLNHY0{g`aa5A?p^E#te`ujFp0|> z=&3<>>HM0 z|6GsAR@Z*;crazi?d7*M2rwJt9gkTe}r z=4!QeXI^g$KTc`rW~PP-;>MD65sRT4=ZK zBW9V3$6t%631QIxmSuEc=b+>Q_T25i6E8NXK9v~k=31#VFSk{!YlNxYDNx9O^Uozd z+o#o?2)72>%=_0rj@qgnOz1m16SqJ7J?h-#}%hL9A#ty zxOZ;2i!bHWmZMb*qz$@==y$S=*Fo42IrL6oT7rm*t~4#z8SveH(ThU=e!`n$AR1w) zyS$&hK6zNSVI`}udwzg!P7qInUZ2l{1Ty6*JUS$&!GjbixPVU!9$Trsg@EwctEKE+ zHk5hB3q_?l;XfJ;tHe($1OSz{w+3A$Ti@Rb)_)r2apQS(9%YyI+6RuLg`nx&mwOyB z5R$J+JKoF+ortbm8U>32dUpDv!I>23qLyqw>{$FR=*a;*yLVN8NPTT&xm!bOUOW@JfAfIN(wNMm|!5&S|s@N zICbbd(+im%>m}RNhQ{{y2iRa>BMY~2UD5xDE`pbFROQ|T%86Xl(NwOBfyMn9LN}SI z`FlBK@0REg`iWMh6Sk-vj550rkveKjCM^#0{7minOW5s7D)^fmc{5H@D`DaihDyf~ zt!9EUD@e2257?@eP61AN0`sTz|{oD2HpnzLnw9e#Oil~Pyz+jr_ za&?AlglZ1pME()Aq|c{6OIbeaRIe*jUNcf~z^j5T$ z($&wQ3zF2L^EhIVHMkn`aKLB$Q9LiCNQ24BaiD6-{(}q4KUICd(ijlG_lqk|CYiAn#hLtuu<{;PCm67r%I9sCH~Ahrn4k(bwALA<^khz7dXpShr?zY$~}pUk#{D zeWZ?NOPxOvYfS5`Eoo1*1cHy(u8C?7CTG{OXm$PoF!k(9#eJ2-5OwTfX7%}cvV{v1 z@46uUo`Kj**nxmy0OkCsL#E3no;d!jvi}Nzrdc;wPmO&=l&eS+B@WBl6X!d>3+4}) z9Usj$F6Yj;FqV5>K-d|uw=e)PA#7;)tMq+ zY-9q0$K+pei%$Zv#04Wu_d1jXkpxUv#Bq@w10|^tW^PsRk7{Qiqxd=`uRI2*5#nb6 z?;XB9mvNm^X(e5_AqZT}yOi)i{oe!FF&4A@@}Re7Ee(8)L;5;3hV$WB$lfU`-((3s zg3e+^9o^2WBZ0nOv6UrKZn@S<4RsB~WYgU;M(S{>TCU9YK?`Df*h!L9<;`9^`+vpX z9xGAh^RKkOnELGV&Es61^>3l-jO5h;m!Nu;`Qq0IP7r(Sb*QlnYwcw!xtH#9h`0kT zy^eu*^IGslmp$iDhT$8rtxFB99yln;1~;@gAEIjuzhIJ%vn|{EVjtbBh|9&4&i@In z^?1RtC8t0vMgx-4CKzU`Z=u*?&8q`GM)6cyRS6`Ta31Ejm1h4sl1ZJHXOfN|ZdJetjDGDJ_7}Icz zse=MWYCW2%igK_dzpw}noX8EWKlxhiwhAyuCiwu-LZd3B5eG%r&}^SryRu4g#{9tY zt41Po+V&w8van-I{)eu&42!E-)`rpG?ydoXy9D>a-Q9g~ z4-60z+yY_H0Kr{?1rP4-9^47;@J^m&?|sfb-^Z`IW>xp<)puD7RkHM)ZN($X82Sa2 zaSesh^G`zL=&_{ zxzHcNK$Ax(iEv}9m9>@M2oumOR$)Ka=k*Xzrr9vm`rqFKzw2(Jq#v*)p;K3|f0CO~ zIa|NtJHL^3iI(tov@}5rH>#Z)nlp`@kSi2-+(Gy@Je3xtLEHB*U5+u1M!Z*LBYl-Z z;l*(u%OTT}tM?PXGUVaWy7T;aaae>NEyUQq6O=+Y56m-Q(}v}#T%o1t_-@JykH$C1 zV?~H582mgDdM*u*WU}T==@*hxGh{<6Hp8q)n!XmpN7}veMuf6K8!GWW2Bp=_mySqA=%-7W!k!p z4m6`2Gb7KXGNqHk3as16yww}yot1AxQOjw;HpyuZ$-I+aJKIzus#LOp!v0?IG4f4@ zX4=>zsDf~n{z~Vizo@5^4iJKyt77;FsmmT$6MwdV$GZ|w-Lt%J_x9(6x6&E$s6jGk znX~C`3f4HQNCm15`ZWm@zghLznHt&E?Xkz+E|JCp@COa11nou&7ez7`=bJ;rVg-FA zYoIY;9zk=D{#RgdyOyvui+bj1W1)Nbr|kg71k+`q3+kEO^iJ42s4@ze(EwO}MMn^O z&y@Wl4(8&|HZe@?t;|6qPdy-Md0+sd7o*E;A^P=#&eiY`{#@Ajdp!@9Rx2GC?qt;= zV|$!5fr&&duPD+yF2%it?4`KV)C^w1hlsTiP8<@iWZ^IhpgEwb;MryvEd!^0tZ592 zkMxV`fTGc|K`GxHMv|J-^o4}FfhlOcJ)txUaC~&7kcNz6ZIo@HA@d!5#boG3NSWtb z0>*2G+4O7lbBBW1Iia981{nZeUvas?@TjEB!QGDAG>`0-+mR&a|!;!PUHYeR}@ z^>oZoFcrqYvN zaO$1^w7FZBfD|A}C`>CJMf?ULxnw@muk;ZQdEC+2R-n^m>P0$1+*7LY{m_lo$ywz3 z%~8?sXbtaHb`Vb86RXw>_!=5S3|rd57co6}(}gvD8(`iCI?A$TuG0=;4Oo6KjdW1T z5_|}C;l2_A_rwd(Ly}4nKWnOm z(EtU5ST?_TopgATmy{XReOVAm%-e?6sM+DtMm| zN6>gNb5|bN4t-ymLnyJeFf?PQO@@V8r;rflt)_oMW8d7T_usPv_2%78h_uTEJTQD$ zn5to)?<7CV*TocPURDOJy#-Dn$sWG^{uA>CB>uswgr!k?kV)T^T7S#pAyQ)-cq3}{^JDv0I&{*eoKyB;QpEWI zAL$>Sk~}8pZ10LpNXn0o{Of#nR~(B+Qs}!7w7cG*!*ihec5CA!BeEYh!J@Q%`C>9t zC_WP$N%+vyiySFB?eI2iwcj5`18e!~_bCf{-k#*d9&(@1bkKtIb&m2?Gh?i%i?K?| zai)!Y)yz&`aQTDvZ5Ruw$6B}bUhD_=)#7PmE1%N$Czo$}m6khj@a(x3RB;77cqhc( zr3IwD>7^&ES1}6e4YHflG!7ta1mQT1+sK+KzMtnLpT~?aGo!i2?{cJ?4#C0q@i0Um zCS5QODp%G%S_dui%U!u>IZN=iZ@~L3{~|m*d)KaHBAao}Yo_mqFEymMjmi{*Otc$|yS zV;OtoTQwPb$LZXG#oo6=#1@Y>`z;*W&_>mI7NHDO^cclaTw50W4>&uTt-`OE7xk_ zBsAoTaDK$i?r)q$!YkoE)?n3Bc~J&d5q_((##e=zf?s)i__gNiywBa~m0PY#-gk^P zI4*XgC>Y5hU$n!kr5pu^<;E%whS(0>K_j!ruOQaNkM*TeEDgtw#!_8XhNtr&VX>d(sU;@!p3p2@i%xYam@ zrlYEESNc^0LhN`XVDa;86ek`>!e0sI((NY)$mFw(_rqm-XD1xUX32P~X)DSg>L{X( zWPs#v)qi1qw`xGLxN_xECOXc}w!u$;^O3GWAujd__NjfkAijMejxvERd+S>x@LJaH zT9`svvg7nX1)kOGu9o;pT=B^X_RemHx%gx4;>1S^LtX>MFscd@mLJlt9ON8syRKi3 zNgEJF9qYgsIAe6|%uG$XjlpbM2ZNKlLG+-7&9-HuyQ{H+tK~75XU3**wM=Wf2BpB) zREly29-*+#1am*5l$7_sD$ubozG1?qxi95o1ifZ3h%#Y|4>Ej;@i9=`Q)mqw=fZ|_ z>)ZkcogL4+$AlA9e)w9P$5e|z^rR*Ua!F;P8E!$YM!tv14~$FiLcDYqloznz0e=DY zqBXcKJZGC>C{Gr7AbB(h-_IeuJyz8!>o4PlVv)BSrD3$Yn*fSXVYJ+5c;?d*fhJ&_ z6s#|QdJnGjgQez)ZTAII9XeIvD~1NiQWnKt2B>toHn-YUKJtx`+Ezwt=_IXE54>MC z$KfALNV6n3U06@VAixCpram7Uo^*q9QgG%{E8h+hMH1RHm`1%!jLv-E@mxI{*B3*U zA~DB9Ua0DXLrccvLZ+kE4`+a53{}D4vXE!k{2|-s2&fGQh^sGPetfS<%Y+Gog6S(p zNo|6CV2TBRk`2rEff0mVf*Lc= zfF+UoL{QQv(woEp1G7_aw$u-uT>Ue6_@HpdfVnf|Q)55~UgZZ*{=B}`j%BFmOYON_ zrrPFlp4Gu({J3(wpx{g0E1E@6fx=~&Xl73Xz1P}4=M4Ajz{g`0reUOwXvMy9V;UFg z>d4vvr4N_-K`tmXx6{Ak1)4u`JfoBsz`{vKxQaEvj(9a&DhUVas33@EQM>zisu~87 zMZv3vGw&Q>6Rxlv25p0!XFV7AQg6R#pbvu@bKa$`oG6iP1)n&j+Ong8sD%xJjFm-p zKbp3gUd;Ppd^$JCTRZ=d`9uJ~!ZqGUJ3{DlSHY$BBA75O&(2c0!sbNXH%Fpz_?uQ)V~6OI7)e(hk!osNp4AQaBJTNs>=)s>Vo8+44CyID%S8BH=;r* z`xyE>clRP3OPiOpYkC{C8<9RR^RT`is|%KJCOkmmJ0ryNY;cRDzxxCiCd>H%s23TA zM{d&Knxb-nf)}ZN!c1m`^8C0e+xyO&f=e=3Io5fw_BO*ADxaATKFO6h8{Zjk;F z8o}IcpWdawWFZrA(2yv^dweR%c=7?~j?BNutt9f=4dd2Jd#6{p>i*>qQ* zv~f5GGEjDR@3GqqJnnVn+L}(+MP0qD?PK#6>8o06_#%>*L<-F9LFU~pel2?L5!@C2jaLPq!sbN0|FObmlty$D zUsmtB%SIOZBS=ayZvO-S{Sq;+C_&)A&*3^6k^`I zVN`tvGlETs3GaDQ6`7wNN^p92vR7!wW(v1$MKTPUcm#OlDnzU=3Ypy}{BzPXskNE= zY5F3>L~r_pNXW>eD&4NM0E32=P=&aX5HE>xXW14C2)$@PN_B_dLI&Mgq zo*y^!(DRb-!)nj@#4(b=`^}kKAkW62_u!G3=^nZq z!ECsyezVo&G;7KvPS2#?GU=*%@T8r{%@?(sMW58~m^L;a14lB~_e1XB<7r!`qQ-7s zPt$@XwYOg}w}ylmIXbsY%}?$zJK((w>W1r*=EGPkj!H9JzM@h9nLu)VA1*nPD6^LF z>OU`v?Yz@EyFsVr$Uj(1Yd2n0cF-oWAi`%-y{^aJ!Nyv8K%RWvB;qknUFss^%!x)a zyq@`P0h)1f2WAsv*=Sy<2=jP71+K6*lCB$cCM1j9B~g>D3#7<JJH11r?_zgz2V9CQ?Mg6vSXcngLAdvV)65Rj36a96a$G)BXpP zvHr<($294wm;Kv312hR4-(hJOU|B5@5CYxIXw#uw3MM}q8u`$vO`melI#G(WjC6KgcFn_Y5{o0X2PGr78Y{(#$ zdi!5!pMOyK(+DMj!pfdWcH z(Y{nr-=8+j)zTU;Sie)KDHRVyiuFT5;f+H81&z~mBgW+$Kau$R*4dg5sAQTR0=c=R~mpMXpn~> z2f1t#2eGreGnU? zt1`h!F`xlB^x87s2A220ptI&$WBPT|ej!K^aR@80Y9K^2a^a`q+03SRl|U?ZT{rLkhBnkSNtVYcyvoCY5M_Cpa2dB0|sS!(GCM+`3AQ)V{ljQ^Rz zQKvoKREFDT#1|HI=hUUX;^-*8*N`i#Z-J$0`+AL$+zn~V)!BCGfqQp!XVn$OD&OVO zSUuCxF(gOZUyqoLl52p=9~Mk)f{g`}t2=GdsH zP!o+8^;sk!=4+H#-JcDll$>c)3H8w=&(z9cHr38thlg<<=%Kzdjh#YWTEEZWkG0@h z^wKR=(w)i)ov)Sd?8`dYmR|@So83ml2AlzqIez(4ITaFextnN2*t&tL1x0~nL+J0g z1}vQ7nkb%@zSR{=j&YOMg8CClz$eIKlPh4Hb-b9ejmdfv)^LUv1u+}6L? zJ;q*8)z)MBG*C2b7~BIg$a7ktt2MO7ruR@9>w{gSbNaQCyy<%0VQA80s1HnNsC{Qz zjxf7O?Qo@@y_8qZrKM~1?j#8gZ#_Lp89)BfwfT}aWhZNBMtkI@b)=lw)o5*-1?b0% zq_lCLELUFdT+e^=j_)#<>rfOpQ-C~K=%F+f#3Huzk)2k^rCJ(fn&X^PNzS^6(o#PM ztRtH&;C1uDyhpdtUUyrnNslGKG*8&!CFbUdyY;dKnjJm3uiT)XNt#?&-dO1cBb+Bc z@dqpfZ+#o{wx$Zkgh0e=AhL>y_0a^p?4}s!*5^g^BQDgr>FwQ1fW|ArLzb1}?EJ9a zBMM&YH)}$xLb|?#5X5)KH-5h@zGBS~(VforgRi z0sgGKQJ9rALx(kmU~aVQj2j)Bxk?GV$Q1O6ksPl*tiSqhF%7oj`PF~& z3;s4Wu2&j`q!2sJ2r+8<5Zj5L=!}8}&Zbg$3-VM`Qh6_i+me1uq0K6M_8C7PDW7VR z+gM09I;og$X-K!yQ?N2&MC7AEb8j~$B zw^Fm=LB@nindxoSsBCO7ukg9+OjR4Y>yA+n4c6;Wz;$2VR^J(Qvdd-cx) zUni9lS58bVv)m78%J}nMPqHVVp5v3_F?Xl|@ghG2dS!Q2>p1_TI#SLqe#8af;R zx__BTodDf`$t@tD_b*xD0`P_X(;Jfqz~wKQXFxaeg7T;TqYBiR7Hza(NlK=&_cSqxbF+qG;dVCyf*Rt|XhOR`o1PX3aV)c}k? zLuP_H!wZ27c^dM5C$MWVfD3F|4WI?PI01+ns=fiD|F#gT10enVUZn=W_Fu8MMlu|IM=A z1TaVc%?wF#`}YqFa+ae3|6-9R1DpPmhr@9(v$10PubyR^0TzFHE^h{y{O29SHg0x6 zODnhkuQr%10E2&X8vmgtS^#GM{tW;QYz5##aQ$cSkdXlxT-=;3JuN)k-K{Jju8+!O~zxN3?onkVC&g zzw3r8#<0HWBWu|QN8bIE*r{I(ZUDN@l36GH@OwSx?8sKKIEf9#R+PAlC(C^ zjqHwK4^{)*%}{Esf67~Z5OP@nieAUI@BJ4Zuq1Y^4H>O~tiOgqv>lNB$F{`kUau%Y zkopNR14`hZSaPgj3|D!4kdu$4hm|M4-CtyY?;*(O9FSr9BZS9rU{k5%yf&ZGej@G2 zl086H#8XWAQXWNKtiuq@J=p#aGQHPhbKacB;1AzItjd|V+};PDzBRSXuholQ?%fIh zzIk~~mtZ9v|GC<wlykFn+yf-G8I^9dL5A>#S_jR5I(DIPCvN2!_r3lAa z)=74^vRo1SXqQ6^P!vxsfhZZ`790wP{VRSOIyYi2255z`L6#SA_ZURD%Gp4FNz6 zqUh>YF3#?D;O031U7{_J2xMl(#l`R8>#;-XTFbms^0r*oVFU9V-exL?* zZ`h0Fobw5qE<~EnTXsq{LEBD4bm&A)29pzCp!=~t%Ynb6J*EI1U;LcWg~nF(3AB|) z&f7N+o9J3AQuKK5Ebp)tHN-`NOG13%At`?HlG4pvZR&kP=LH^%ME^G!QD@Wr8vhFn zaKjvcv4P?TAmp#= z2|#Bb}Gmw3o;I;vj70{|SIEx9e-uHqoGZQ5OY?eB$xIx70DW%4>C8EN|LGIE=!O#^8)Y_BM4s9fCtaiL zd)P6fih$B#p`U|63>@FzPkM}uB@{NO7W@qJzoDC)0dvYgAXtDvApTd6z-6rf25_&q0$zh{FF^G#Y%P6& z^uMIRz`qd0ki8mLg*4xUG*|h9;F702A;`nS+TPCHkLw=x6y}E;z%td~>PQ^f zro3H~t(_Kr5Cf^Hd7MH?w|I;Jw2sA(ghm)UbyYdg{KCaf%$m)^;U*V(8~*oiKeRr7 zwqAcFyyiLHuWn_{;WDR<^AkOBC`uP!OC`DYYjtYRS5^UKA$yc>P3(TJEZDO^F(mmD zxT_Mu1BB6Kg-QxlH&q>s*Ma#)hnL0maxwucyODW}8=)L@fI+I)#ZvfUv>uc`M?B?% zOGZsnb`)#I>~@oNNaoI!t9h5oy^pZttPS-Sn5}BXJR8Z|aPoujS9-XZuCHl2Z5fbk zr6VX*X9|TvaTk1(c%#a1Ue-w=b**LXl@Z}*3=zc}Rq)IRU%_D}AXZSKswz|*up8-k zPnY?1c*5Jo4#1t4P>Ir!-|sNYF=@&=iR#bIEbn=WguR0;F;wEDF+<-eD2vxE1?ycY zzeFzziywKm@ALg{2pa|H*nVr#Z&RrH2SV_{B;XCm*38Y$+1{`@%r^mz%{@v~<9jA|u8jDe{!?53<4 zOWuWC7k9=-hXipUEbW=4g6~DZ9_+#X71fo!%besl2NqnW#ByZpQg5~aoKy*#ViAaq zR2kAhuEhc17EaN@^CtX8uhAi;Tf?v3eE-QE<)G`v*~A}#3qqN6xS$%&Xzsf4X48-|kQ(a;&A zQvki(Gu@hqx0k0g=JyARD}w)E^JfKtI0Q(AM*AJzkt$n|NJ4O$0b>mT1R8dSA6m`3JI??~g8!EKkUrD&mrM*&2K9sw{eAj!AxTD z)vWNc`d)PJs?x8>_o5;V!ee8*bRbPZLJb?)h8o#wIEam` zpsYK2ixANeW&mE5PDg-l+LZAUmU1?%a;J*A-ejP~qLkpEJi5TFR_z8@;7bBv z@q^mFeSmT8D$c7d;jJ1ZIM;JTV~8MBqnLz++8wu{iB&hTC!WaZd@!z z%TV>f2vf@NcmOP-FR=^0|M67$v06(mH=7AXO05T(_z~H#f&3}sj#|)3WAzI9gh9vK zv5xsp-ZmyzTn5t&>Ihp#Bx%*qhhioAj{*7bP>TW1efvJqtuHwHj;N39+H>XV@2fDP zZy5q4V5K@!<7v(LHJM{x8UD)6^sngBy0}M5Czc8xfW@urX=48J@I{T6Nt3`y@OXNL zx5-eeB%y$gDy*nKZM`3Y*tN3gF2#Se?e~mJH$2V$)|JJ7bmh;i+xZFbnsHm${$D-G zdK*iVzyB3ai%<1TAV_q~Np&N;SG;3J*M+ts$aS%VLf`8;dbc$-pGE31aZyUZ;H*etUxD?^B13VT*?Da8Mr z`Crjr1OF_*?yvOc&jFhL*sWJ$p)3FFzJMz_0bC7P3jolc2fkS9{^}5reu69Q0A%3! zZU8s7V2mkx5rCSJ#0A%g_>9;`?0R8_jg2k-Ox!8HQtSqgq*#s=C zEI2vM%~<$2__$fP+4(tG%-H$OS-AN)+1agl%=!4u{wXWNEx^NXZfPaJWA$4sK5GsE zm)J2|2=+t?+qkgb$R|Pdi2sBN4$g)rF1*=xvumsdNl7M$6tvGuiWax4%6M&nx8`N- ztSP!OS3scW9lrL+p7qp{ndQ%Ol7V>W2%2BHF5J9?9qorEe~#>36p}{G;5F40)O?xK z%w|H?Aujsy{=K+}u_O*gjKSWlq@XB$152e9@jWtpOk0wdu@JXHNiREFw#SjQ^jM?I zTZ~mXPB2e|b&DYk49%-!k12oF0BzEAt3T%OnIAPn>I|7uvEyHU(m`%Pa&z z-BL<^jZV4Z8`V+b6tyrzMt{qM&}n;CLOWc=UOG!XT>X!!GnAUd=EPYv4%Nj0IkoST zo44y`xM*=DU^NWo=(>`)5H&{fu+0F~+HX?6fb>sSybH6+PI3yggwwQRPG7hSMMvW5 zVkqp3(q{mdw2L-m)(^_bjP201ABB9@GY(>^e)xBuGR`p@EO30??qI=5xW0IeiJBKf zcwc--=xJTH=uk(~x36A_O2ZQ(7qp+G-cBlX*~O8ZN+^jYgr79c^$3^KwEmtJV zi}gtNuCGPq^uW{dDwsyFA>qe|0I!2I37*`ii_3`!H@T3D_Iu|sce?^IlWz|Gdf! zY=4|rOo6w!xGQnJ!*Fl1q8px1{|JU;&}%UX8I>f(4y6gjVG9rAC;oVuBl&XU+Ay&) zr)ZtL(7R<8wxOb3%G;b`jIS#1uAO{!fjTeG+^63eWw222C?2_#wIjz z8r=yVmnd9Q#OCm;>;axczx_sDasu#fwFQH{OSC<3*9N0b%6mLTzH}-91i7GwJJq6o zIHl$QuPkfR(}y8YI>IqE7*g~3L)w1RY@~()S-7gmiiA6YlA!HQc4i;wu58m&5#7WN zttYPbnwxZzM zfW6yQ@x;xmcpyo4Z4!`-6v-~w7UUS7+*F5-3jQ;8R^w1jI2^rEl8;~9UpP4N>6D)9cj8z;tZ z!NJSRV{Tz##l~*U$-~cOZOvlF!wqo}eC*~d0(_8yVmy58Jdnb`oIISCJijZCS#t22 zS(&q2^Z&C8@xNSzvy@sM06G$uTO1Zv9EBTrs^Df8|g7t>HH*kHjv8 z8Kj?6FN_lM+jiOnwj-c@ME=IDWy)DD2GUKGNY+JQ^jyrBxeKikIw)SMs@$Pp@H#sT zwno4|w?#NqlA>?oKe$FOwF*-pc2S%OXTdINjSz^hCJpsqo;N3V+(C28Pn|i(H7IpD z;VLIf5^{8&0*&P>w;&`*1gQ>-6)=ZrDl#e=x)C6g#ZiDE`z}@ao`MG4Mny0DAREJ- zKI_C&1IOm8=s3jVZ|E~^359f|&`#M<3UJSzvSP z!KUOyWOnF|2NuH;_h|@oF@NvY9ijB3b4-}P9uJ2zKN;{HVo_NJB)`x#RyOxejxwy? zRyO!f0*~_F`eiw*3^#k8(ByI*8j@btby&+iuuUUXCTW$hzB#n1_a1d#0i;e; z7Z0~JhdG}m-)~W~;J4(p;^E@vv;HR<(K2#aV#f`jI1&wQDNVK%_|&14!xAdCZ#r@v z$YS&%dY&~>sOhOr_=x_PP0@3bSD7@i1w@qTE*g9C{k&Zibde5r6TXiK{8mzW$kF_D z6HB|GzSQ1V7#Koh|BmbF@eSYh&fv6G2V)sbaslg5Qw=6%NUmC7!-pNLCWo8{#ACA2 zQv>6n+FQie%Fe=%#^n@L+~l(j>%zlAn)pbjX(g&{TLXgL1cDFv7l<tVarGuu8g*e!cs_(LxJd`cwm{@~`kj#p)bQBZNz;-%_E# zGw84@SFvY=537IGI0&DpfMUhtVHA{|_0xHfutQ+E8FDCPvWqq!#AH#$q$;Ok-29aH zDL>VvEMEId(bZ}I=>Bd88V1qRIUqD(@YOiVxQ^1$a9Ll+F; zrgO{j-X~vUoplD6Q-ojt9gy5wt<2E{8; zu80Po;>qmEBt~`k@K^CgCHBdJ6$UoFKE0};x18j+w1L6Jn+0+fVb>$qMq@^!S8Hpa z-bx@o{QaxXqo0?(TY?WM;}y>gArYJtoN|Uv;_g_lV-A9%9PH%QD||&3e0ewXa6D>m z5yMDpZIAiz0&P(3wJWdFC9x8^^8gH8m^@<8oay^S)XNDay?8^IzLIBR=})wqKjja9=r@YuOt)H=7Iqt9HFW}%2g zum_a8>7}ge;Aet~Eisr8<*18xEwYFEeug*mqZtP4F*1P8HoL6`_Bg5{d9QJDgaO}4 zjB$iXV}e|l3d3cn&=aw`LJ?3e;tQ}4#SPhxBkBg*mYx)|Fku%JceI=?*2Qtwmn>XP4xnc41akQSz|wodoFbkpH@ z)VHqvACI8*qr$|Cr3f4W&CxGhuRkq3z18kUMQ2R>29p6+)+@$7BC)kmnUy}9tUiFx zDra6gZ66);zH;|gUl9{wxp|q!)HsY-+w|2aJ@fLrJQ;ENbf3*IeWO8%*PJ1T&WCTj z)RW1Wu3V6<_Ze)2Cp2jVug@e!D@)CWs@Z|%z+edq+F8Rh$9FDZG!V&?ViMo^MA+^A zV3=b_eV9u-WRE%?p(IT$q2*K-y}RaSoCrhI%x1vKfGcm^&+vduJR5?hy|VYg6~pCA z`bO;Sc;wx9fzTVufz7tin53)k*)Na+7ojp`=xEgFOuGmv4 z;(LknH-29q`8tYAm|i)Ax>kZ@>*6e`VpIhy`=25$~_9u8ASuYu`x~u~mn%EeCciU*W&stInrLlHGUhzju0u?s;QsAezgM}Ng)`Ut_ zgv*{j>_PF8pJZ$TMH>XGtQxPg&N2RD!+%GL3|DVKrI03fXMdTK*oaC~N0txnShzNr_b){i!EGYYX{q_UzYHsaTnZ zPM#dP9Qk$?_P+gRx=*{ygo2r-@0`}Ulaa?4 z^U~kz(oNjJa5u@Bo7g=VjQdOJtkP#G=80@-R*6W8%!^P{U18ctP^&;)r$WjG;9tty zZhPSyzwh4_on>F9!M?0_eEoSf*ic^}>)cZ97yR_ES1V!)NIRT!UHv-Il;*Mh1fY;? zRXNoFa=&hZu<^*!WwyL}9XH`t&gNtGu{x)aP?h^|RdC8PS7hi{)&h~9jC6_gr}QqB zt2dCm30=P0DfdepBWB9qN5`VrV=u9{z^`c~5d`7P2+S%irl7qL(4QAEU%tD$e|4X# z6eydmF7AiYtYzT*lCI^~n8Qb~IRLU1X}YzOcH?qo3>hZY#rcBBbx!|gtT~rCP6~C_ zz#%i=ft`MQmh#QUZMoHYb%uza_6x|!xPHaPU+qdtWR0nVdDk~5Oj&ZvNR!Cv`sC=T z03aN>dFk~^2xrKS`se6)DXmMXaQ?0BND8iDBYph;V_7FLd`1o zB~(KooZ(4ooT@r#m0N^ke#h6|>UDz~iEW}936tM$I^R0@j`-FGt?ZiVFqY1Y>&zg0 z)fqLq@oN>6wyd;sbtqX%oGb(+LtQIMCdK7-Q&E!x+-actlQrkzaMtpBpME8`WMlDk zhZrA{&h;%Eb#V2S7vB7ruW&`I@uh+IiXFs%%e586Pb>j9c`*an#zCf6EwyrbHF+I} z(wN?m$d%7_8Gp~bI=eroyj-e;woXp%a_D|s<$x_o+p^D#me2Q_fQ|L&&+X{vr-!VC z=CBeelOOXEr47(z2~fcs`ndK_ytWzLcE5nn$9!DI3s`f5!EPVkM;?|;%Cq;q!^~Nj zv9Ja0OX@h;{**+B8j_B3NPr16#T%}yO@eBWaj%+fFo0ew+PHbe{9H1qseixZ*dpt_ zFeiE^KNa00ly1!rpSHmehcnE{>e3mUmr5DZz2LYk(OiphN3agOl100~q55_vUiO(Y zFemw2nsbUipCg)ZlQ>#`NO(SHA=Sr>F#bpo{EvlDz%W)-<8KWrvP!GOT$I-%D)(#dRCjPI^T$p)M(VMuE2f6VD{T&Q5$>J0qn&tI z@RQDW;{@7Nv0aqsYTMZKO<}&Xu5;SC{Ve3~S)QWTb%rYZg+3EBKemEF3PPulF*)D? zBJ1~!wAy%cI-^^o%Q3`QMt-0a7l_5i3C-`F~t=`|TslU0!l9A=kUm=)fI%avWgQXUKiC#Z!PTXbDKF;}t+b`J#Fv zG#rKQc|s6ekdwnYs~d}!7#mF3yKXp8Q&P&WHS^V~tK(5dgla85OlV8x9QN)**#S_V z_TlR+0}&i-*GI~lQK!>y*NYCPxi8N*FZ|C(g}xfCqfe^d$Aw&8QZ`yZ3-H19#?*p2 zbN8r-;9b}nS>K%t2)Eg5_*gg2m%RC|#UYVGSVVi~Z2w>i<=tDOK)(=`hQPax0k>s0 z%fXke-Mg(?rq{b%qV4wQVu44Cx4T&;;LR{+gfe=e7yLvG`Fh&J@CkXGH_^1l1~T%D zZ(q?Fjqlw4bldY=)cM&*+IPXHbGNm+5J$0kUoZ631sm5s2O0*qwd&qRwe(CcpRhA2 zI4hWDY+(u{Fsg09vCuYQ3-Kk(l%jK#>YY9X7pw@LdtD?q_YLP^E@Io^qT3hI|G<}I z*yKbUs3mahGj>*K54a=fQV`uS6B0Nj;D34MXa@W4hn*ct+aCPnEIeg(_wRfI4&4Ch zs6B)i%c?&Pfnu-t=ucPo9BvOWqMGEszf>p__>uxEb`nojvV=rHk56phG7cuf=tNJx zQCP?QN`I@g&g6Mw6K8GV&EwBb;-Z4s#Ik1OQh|6Zr$#!OEcZz@gyyw+F7gGn)JJ$3 zLrxjdGbgE9k<&*XkB{x#ceM`q7uSw;BCm|ER zA$-ef=5-cOI-6Zm#PVEL$sr(f_3LE#Iw!EtpaY$5Sea2RV1m+BhM$&_1e@@~cY|>J zB$BaH+Q3$BsT^8}o;*z`@Y46BnZW%KP159{?fSUBH7`mYP6Ob&x>+Wkko{9Kv5t3H zz9Mtp1psO_^s-<%#A`?+X1PIB9W6{1p0+)Z8~28TP{{(n;9!I+ts0ovYk*7)W2dY-!|7Um9LAg^ZTJJDr4g_b zlT0%S0ok*d(gF$-?gyXKW(_lYthG_Y!*Ndt6Xa;<5wpSzxY?~ERijr$+mQ?%tZ;KQ zH%2WoPL{XrkZAC{xtSX5G{#FTi+QkCHIBN;pao&vYox?eHK(f#>h+6JMjEm7#AG>{ zNb!dG9Sh5DRB;FFGg*qBDZ(HQ)c5-w_4pP)OA8BF1x!+T$J zEa=ddV%>XU+Y>CiHht#id-L#B1J?=jQp`Z?Ya;g>^SY5Bjlt=@Y|m^Gpso$SqG;O| zJ;;R0rQ-gv=>%UA?~#!0!sQW@!prP=#X~P?3<-TeqEobo5W58#C-z4bE4=+9HtS8L zK-CegN^B8B5GzJsQ;?^+3vvw&JQD_GRpkRK%ZAUvL+$xOAT`&=voaxxAIkH+!af?* zNHR^s0x*ou*bDI_rmqXHv<;H$h6~IcDM2u{P^z_*yvg|T236>?j z5^PDJD7O9|V{aK02e)mDLV`nZ3GPng(A|*W*0=``?(W`5aCg_>5Zqk?!7aF3Ac0`P zg1=6_z0ciezgzX*KPajxs@7nxx#p1R0k=l;px=KkB2Oscs@!QoX&Q^-NR6>ZMOTj# z9r)8YL#m?j+Dxvq17<-5_6B4wsfxjgen6Ar6l%l%z^v)(+Sw9SvP{00OlTAcPtz(< zBp8c86iKUBmX5}OQP2n+PP&Z8iS*12tcNB6F~T|z*w|TPJx@FFpzhih_b)Cs9*lJ94U4ZL^W4CJ*bzGDf@PYbj`DH{+_n zU9sVv>LtIpWnu8qdMKi4;vN1uX^Ena<@BA*xfU2IPM?ZxwWe4sH&g%a!Q2R;p$@x* zF%lO~6Fkngre@Q|o;&-zOEty-*^^gJNep+{W~$3AT#6WmBB-+#lWh{2Drd@AC?Bhc zvq2OJOfcq@LVu!CBYku@y6Is^qLDA?&ZfhbM=^;RYoVr3PDuW0iks}_t;FDmiv5mA zIc}F^Ay30XKSkj4@Jt}_Jk5Q%)v7APph`ZiUtKm6rD~B*J=~)Uc0QH5C+G06BMx`8 zL};J^8=ZIv)Dw#~By?dTAZcqs^jhKa3ulZCoy-XFc5cCf@|HP!i^;c#_WSp6ktzbB zcyLU_i7JJVz|ZM8oh$@HDvVXtMvTg>9xFUpLiq4nr2=@2-;(vI+Y+)cbYC1(DCfF8 zKESOY(oYv@(6GPoIs1WMgyNA(EJ9W*G$ly?x$%qh2-JRA$+Nrc>nJhSLQk8O#oE=; zaqi@pw+MYu)Q#Er<1)?o(Yf4sf3z1xs0Opg(Q1-+tMx-x7TWjOmYNc=A4we_yG8BR zmB?dHR=eB4vkRx2-#F=6wa$fN>bTv_C4L2djGVUYftzeqWh~Gnm!%Q!oga@M*5|}C57CKVjcpD*o zV}El)Xxyt%{#k@wb_nG|^u+M(AS#bfUY>a}f#pl4=5k(SjtCa{oc?Vz6cB}Na0SVJn9FuIitaWSTm9b zlu?ZA4yyRyRT+_d#VWhZ*&2}KUwuTAK^t-zJ9}~Z>+Etqypcl{$JMNsg=mbevXI4`i7z^t8+?B40Nx+W=sUrm(G3sA9uc-w3tm> zKbAvJw@xbxJ|041D1Fi$Z^Yg7fv-$e-Hwl(bj&l~9H$r9+MCXL+}^z2%POece zdCW{u#C-oGl&&9y<_z^#B1~i2^Y5yd=}*Cex=G%o zcl`6myD5e+jJT|l4k7Wg!7(DcQQ^MRqu8qrY7Zi>#IU8scdOO+ChcJkk4-KgJ)}W3 zUl{VLaMbnt(g@nb8Co>8W4cb~9eyRMK#l!Ze|O(>&u(I9K{vS`y|4;(g)qrfmp0q# z0X9E3tx1f)>8=&t%XHrp$Y;JtQHGtN&~O@Jrkr#OujO=m1oP-Y##<=ZHe!0b4#7VW zzfEfTysz8n>a}}w$7Uh)(CcE~WHX=HbrIlkV|HZavY)jm0HS6sw}-R0R8N-il(VkSp7F?YdX|Xi<(D5~e_dd}^^Cvgl4ZgykuA=hOdtGjv!* zOZn2MWRW7ULRZ{x>BA!0+^nUnHk368yT|C^WyFIEzT)~aYxtMyN3z2$@ZBe6$0DF` zeY#{9^0%-zSP!AUuq3_2f|d58p*yOe#(HJUn3eEUgs-aobs6`Yd!u264_NwYJ=Kq@ zm7SI(Z^B#nB8Ik_dI6O|;; zWPuqc$jHQu55&v=hav!)gTSUduy6jM2>vZt82%$zprKbSgc}5dL=34c1BZ_NAnf{x zse3Z&@xHoPk3~;n#LE%y6Kyu32opaiCr_OJuu<#Xgkv-43kn7)KofU`FSKlKX1|=B zcGBu`;Vq>{qV1>NyWqEM$vl>Qf2EQ-p z9ck3j3>h^-yQ;S~4|(y(%BVCI6Yws{w2#pV&+~bJF+zfi;`Vb2x~+$^|FeYPV<|nTZI%R{MoJ^<{H>aARZ$LJB4- zQD`D>Ve0oemNUijREuRD`$mpNcV*|EE=7Gy3EEHeqt=J$uU;h#KZ0c5+3#i2u^w) zuG7=Al4S>x)Sp<-w3?cRa#U<@Ddl`O?0-UXeDhXGT^c9#O&yI?bGo|sl{p-rC30L! zvbFdwZvg_{Q>*T;M|fXJ%9}<;I+{ME%Hk!4la@~($@!=VvRjJ9m9v4`1|GdOZl0MO z4=$ho>y_HV{~)sp|JO@vIsO^#2sZqoMEyg5OQwN^A^2&YPcpL50hKMC7^Ba2L9*3> zNd8M>RpX&V!FmktFQM9$caX;rOnPv$F|1P{GCCOlIi3L?cs!`-i8EN&G`qxEskS^! z<072_1+DN`ml1L73V9apyh}Rm5vkx9#ZgA-huUqlKTUwi{=~t-J ziy>zkJZT7f86*FV)P=mty`5RgQOC1|)%)Vku1kbT77d8DB2y12z&Q;_R8N?#B(&1U?dTsuH_ z>nHtiFxkQ39p?MEL{uDnUGIpFvMz38&?%fjF%`E7jqM{4&BBeN)-1~ERyCTDz?|1gNbwK;-(dJ zTw4IASyR=$HxszA3BsQ|Jx?5%2~fw#j11`%C$=1*i5~(u6IJq5WG=qoZeZj#6L;CK zSW5y{gbtghubQ_KtpMB>5zb=R%o$W|<4*602iSHqM$|5NM^ z+c68LvhTL_hgkE(R)nhKPvd%~H z#$WyDJWG>4`#=)acWr}9TeV)(wtb^PR<9n0{x%>qE+~6Z&c?-WAt8_~GpVQe0l6l0 zTy*(&k7s0;F+Uz*m=x+-Pdfj|JZFVifGnT|V!eBRU%B0qGt(5i^I7(Rn?B&yF;bN) znkiFo4xMO@HT5OOGqC+LeBir|B54>(# zXoA8V_sY-GmKtQt_T740p$U-|*cKpn$EaUgr>9-<6I5#7ZFSc$eh78GEG)bRWme+4 z9v8Cn0wl~#(xlhFk02_o17A)>DGLb!XmCFfkiEk7$2AHW@R;zt8Q6dSzp0I|^}Psc zSQVH+frE?rmlXT}2f~v!{{o@|ja`w!_KRzLo<2ITs$IRop%$wprjAKu631m$X*`tU z1997p!Gw&JkM(c%l76ADzUFxuJu%ryC7M$qP}+Wv-vfOj=~}6Fxg=-FAvi4FeWiyS zxDzrw_p4ZqGy?Bn{&yS^ZTG@U1E!awrbr8&S~ckOWd;1<)0XX66Lyv>&=2PPu9v&M z3tJ>b0YKMRyV?b1fl3+Le$yZmgSut!K1)wZhjSpMEj#2TPMz`=RpNE<7kr*HNsvPM zWpH{em8{eN(n?8}*=9i2U>xp{#hmoOM=f#x-xAkE8XKxjRX=bAl7kKt5aAW*E>Mt$ zP%*`}cji3k_sdO_KSzuuLC=`$e>LCm6z8a%q%OKDL9ip14$_^4`vOntVbR&WG-xju z<5Vf`?UibLuGhaE+%0Upup5f1Xnx=@xf@$kwcD6yo4Q2%TuM;J#^!R1uF=k`g3t*_fpPGO;Y^(ilZt05)s6eMPDZoX zZ_X)*P8h0YL?3MFfz33M4SNFJt2J^C-o=I-82jffKRul;)}&2daF^RtQ{Ff{O)9G$ zas4RwjkK;LFlVD^E1~Fq#&T>Jmy5LmarVwd->b<_Ag<9Q@i;lL^vbMF;st^gJh^)L7-xac@EMsW1rknY>-sz znVPT7000y#TZPQepdy5-JjqR!r&CvjE}rA79@b7R?X7J+IxNShh|A z`!Y-^>Z9ubwq3<@PhuBXFE{T6Lp(gt7D;^UcT!jTTAU+*tMoUAr|$5%fQ+zZ3IFk; zEoSpvd8aLJYGFkg(^CABH^vel5`Rx+Oz<$w7C7>DdKPpX{iGQ9`1xZG^)vkc`G5M; z$`yAp#oWPKIdNDkm-e@nOClO2`X6_T2roA`7^dVf=H})w2JxDM`Am%gJiO+70A5}b zJ^+Zzj1$1a4dONBG3DanF$4YS z!`C;MovlE%Wg>+^jsFs!>bUPn(|zfNI-65A2(H1Dr{;?sgU)Bs8eL55^YI3W+i*GT z6a5o4p)oB~VT-#_N*U~ja{2;slN@gd+u0&#iN9&UAqW37f2Huk^{ZG5{EAohT61Tr z)mavc__j@lq{fiEP3Y4)v#DW(FF6$ zalV&0q%W8m30Q48o!ZRLtp&So~HcOo>tU* z>6`*JxQyldWP_++mM!s|U|9{t7-e3NSIvAZ*%!H{G2#$Ex;OAcYA?iaF`e;AYrUea zjKR2t-W9%DhC2KyLpd6@w>1nx6Qn-Hu}@RS30@Wl{M;r24KNt;XiPXgOXawh>ZR;m ze3JvwAX9n^VnK@QXo>f6YV1?w`vo}pdiTPs*hDg9rZT<|t9@5ak(5?g%dxnE-#|Pe zdw%}kVB6~pe0+d`O%evS^gmz|fc}3NctrTjVSkM&uZal{2bjmi2!=s^fEke62*3;b z0RY5lVh#Xvfw_RjykK)KGu}V=s*EI`SCVu{edl4N_hCwMMWn? zL#5%HLR{9Qw8|qVHC>r6z^`$X+-wW)v{Lv|+ziwLHB{7#RhoWnSthUB=eLE~>wcdU z_ldjcNL}Q9<)@0MaGEk!Iq2c+rm;~uJFaIy;tVzX)#*LM(bF&@=te4VfA}>&g1~|< z09h16EEK6x0SBf$AhF9gCNxb-ZGUxNMTvU!t;QmgqIDQHSUWOtE=dp_z^c&WvzB~Y zQvSv$>Vxbjb21rPWSk5*)7M%eR!ut)5<`+4lOwB2zk;UV#QWo>LvD#;HJq39dV#fE z$nT-qh$D1zjqwZ56R4kV{=6p^u_{X3-s-mxEeel=bM{xw(}|iYvabFuHxf(D-h8_%#7hq2$H+B#Qv6{pZFQhTf5`dKbA7?&U6vZtDMZg#0i%~~nesQevL9DSXZ zv*9Q@3LX_xJ(8-FybPdmVSUnl0E&!AsIeP=-3<$~CEd9&|47T%n%BYV!aHfVx7RP= z;|EC5Rk@ML@hH>#H5}jnVENJG)r?UjDiR3|;DfNH6&%YRHQfh+Yaj9g3=XSdM7!^G zDGErXt-@1BNMwj7Isb{kKdhHp5MD|n0vwzOAsk!?tbIsJL5C=%X)42H&c|A-_N!9= z@W_wZO*j6i_{g#A4D3O4W$Q?G@nK!#I?>Ft)aAps%|e$+cj)9Zinhy%xYQyuB>vP? z6LuCin>lF> zGm{6;99Owdk^JLytl3}btdAow=HjVd#ee>UHqvI=@cI~|BF&s*KrsCA{0q-gSKZ#s zB;RuF_naENtCgR*_jjg;N`{b7CuyGr;bJyf#b0hoIuQ-5wR*e%>VnCogG(SQt2+;RSMgKWSR}4$y2QT2b0*(T zmLMK=Zq;Ga;Dw7B%R2}~nx9)A7NYj>kIbu($%%_QMDE7n_l|Y9Or4@Hju}JbZqY7E z?RegjV%vUn7ATXqM3AQ2jns<4kO;YAmL?72L^sshG4U%am~4cz)~7NsrQ$~31HW<+ z%MZXmC`xdKN+xq4fk+f@bu{#UKzBaYuwH~H+mv4)y0;F>2Y;IkJ<`iutaDH@Ja^VE z+GJE%1YSMC9llG6yAV%0HUH7sCOP&_m-=H$Xq!Z%npDzzCwUo5@t27bPIYK?v>q86GjZA$fj zRiUA|q-%&s$Br}4u#@H>g&QyE6|uZ|Da#SQg1bR&UkG+=)=qCn7K`ipWGw3Ag8 zg;zY2#>-5STxfC$OLR1l)P{Uw7ojB|b%*dni)nr(-#2gjg3A&@{d7~38Zp>{v(Equ5s+-6We1G7~&Ae^+6jQqQh-~$(ifz#_%gHeIi%gjd z2=0K+Np&vy%+T)=!jShvzyG@DYiz(SCbGRE2)g?s4<_v#B3;E9lK*^zNH0N#azL?4 zihYBg{86*}^rdJ({CmMpB3vgbr(Crlt54~}C*9=BjpSZnJ1EO) zwZ>*%Zq7E(XQQx3R3Y7!3U2#1wg+g@7a}3S`4NU>2NbdZ%tR1;1Rb3MAtdz6GsaNb zeTH!18h7XQulxVff8G6J`%Mh1aPv&Ici!8aZxdd|v0IR?eM# zcil#ZPK<9&#rhr|1Z|rOVg9Pn0@~#WfNmlH!BRz>1Kr93)biE^w6_U;nuq%F5uf_? zmjI3q=Y^ns*EhA1ZY-5Em5)|weJ4E>zV`~kiYr8Q)dE%R^#hP9#-w)H?hCp#=;{$x zjbs=d3A+R`UHiqaGsA+GY5CuMN{(mUxm2zvVma?q8vIYk?n%2mgl94gHMu<;%RosUF5& z<+J+sy(lR(a6&P#u*c9u9oxBI5Bl3MIYtR$=&94>-ZJ6}tk?uYgQXFWto#K3S4xJa_6y26J zG>7^{osfY{KFS$hin`(X!a?jDd{wBGZmzG?6K?g7Ah#Z`MF_$ zWt+flN#Pf%#!1*Et+{QPgjgpZIvVK`-TU7H6;!r$`PsK$b6pKa7=t65?fJ) zp`yRVgIDghy0&h4UhkzECj$cf%qW~}2Z9hG8puLL06&_iXK3srrsAO$-Z`eD{grUb z+SmBbJ!{&mHQcS>ecdYPPdnm+(N0A_o_@0@J@a&++v@y$?IiK}?$VcAX|;m}R}Epq z+*Q>w%am>P=Y9bM4bJQaEaXqwvGtsyOf3q`%}l+KAMU!O&+di$TF|*AiRiTe;B8%m zS_n?*$0o~U)YoMdg0Sh;>9#iUV;NFjMO1~d|H}%ug&DKM06KhVfdB(mDyk?{n}t^` zkmo#G`BPMtodhBn1xa>#0L@sl6uej#nZ2-MhpukJ-qezviCCU5>y62dfHa=ji?$u! zoaS*#ZX+Cfc(XL;;M@6nCaf$x)Q^Xq(F(7%i&IPvAVNF4Uyg=gq4t3(8CMlz^{e59 z2S%USp|)}?P6i2-mfCWn@9TaJMpSq2&QYITvfS|NmjnIT+-TBUB?)vcalGN^qC5kb zYr3&?!pTXH2;>Wk&VWr}=1Oz3HuzONDi0bd!%3XMy`tWcpg@!b={)sc8E+YFpXGL& z#SZ+KdL=lleDeF~rZHXw2@FfnCgxyy3GQs5tx`H(+pOzBdo_y9>)0od)I0JmZHj39 zF=wW|g8dOI*&HpRze(kfKY$BXxNN>XC?}B9s#{oU-o@qe z+G2%B?8TQ4u)sX|HJmhB{p_F0T?7?zr4y_5Rvp`yzY^`qFm*GPzMD_Rei_PHe)XCt zaAqV2B;_pno;{dL4jGan%22LVFC|y!8*}yE*taR?mVPui#Dg99pHIR+JyOd97G&-p zgD<>PI5vM8JT^op%|R6w)MSMV5rO}kpE&EWA94h1Kl*eISTfx%ZuXm9^_x^h$~>;tKb^h%_W5t(-3e+bh7wFxpua45GNsLTsMzejv6w9%+JYxbuE$AAfh!snFmWk(nJv zARt!N142i6P%jZ|&ew$U7hh?pYI15Ysi(ffDnHCPQv2L{*w%O@ z3US?PN7(^zV)IJwy7xvFw$gEsyWti?)KiU@I93PzXP?BZv>`tw2or&;H)}pq;Iz)m z=jSIN)JJ!359x@3b%K;5{Wpautz1gR1ZhoErt|6X&OzROy(L3EFJa6C8(}?csK8Xa z74%_z${kvef}Z16P>g>3*s9~+idlX}j^EnKODStO)Pg3-=h(_j+Uabr&`D7`1qf!U{rt-?w4H{9LV@)G5S?U3+I$y$T(cK6=&`>_q1JN4qI$^ zqo%Ql-NFW81HxR1KFBasSoPWJ*SXYb&U+iSiZw20xE#9`lBy1n2cGxUt*uwP(Bnf( zS~>JM;w$mOMnnq&?Yf@;N1vjiP1Xom*P?+&8bQ0mk|$%y#KmH6@PV~k-tzMkEceyq zf{c-mZSU(z_j~PHy9URW1L86m`^1sfV-Mjk^)h&J3sD|BN>TAV+PhLC3n3%aHl{tQ zB5|(OeZ?L;tZE}cgDo#k_u6{p=JrRnnn@B|?X|CfT!C;yJwmo)@zhhrFN96yk z{YfWc59#n!U&XO^JipSuXy6pX2IaM+D<;rvUH(L0SoTJASfJt7y&z#-iZ=O@mT@)X zG-U~%5^MjZdn5gco_n9PO=b7X%X8Wv2X4!n9fD&L*-~{y0=TGVvT%qK=DhLDyC7(k zIK>^Z8f6*RhIQ2REK%U;6q7|l5gTd%8auIqMlxqO)wgn8Bk8Zwqd8i}a)i=O+e%AM$NaCXDS!8+f%>CD=m1!0^*5fSU zyf;i(sR8kIj@4h4ONGqf5}heQ^J{S+n%ts(uWMX61H;b&wYRR9WLS&K8-a`wK2V_l zzd71}nML8`**eQ%7JzQ#e~nteX}xN4#xMiG|F~*`@®c0D83)C&SxR3%w(MG7k_ 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 roLEda+SlW`7#%!SZAyjG>N delta 95780 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 diff --git a/examples/DancingGoat/Export-DeploymentPackage.ps1 b/examples/DancingGoat/Export-DeploymentPackage.ps1 deleted file mode 100644 index 2120347..0000000 --- a/examples/DancingGoat/Export-DeploymentPackage.ps1 +++ /dev/null @@ -1,104 +0,0 @@ -<# -.Synopsis - Creates a deployment package for uploading to the Xperience Cloud environment. -#> -[CmdletBinding()] -param ( - # Output path for exported deployment package. - [Parameter(Mandatory = $false)] - [string]$OutputPackagePath = "./DeploymentPackage.zip", - - # The name of the main web application assembly used as the starting point by the Xperience Cloud. - [Parameter(Mandatory = $true)] - [string]$AssemblyName, - - # If present, the custom build number won't be used as a "Product version" suffix in the format yyyyMMddHHmm. - [switch]$KeepProductVersion, - - # Mode in which the storage assets are deployed, if present. - [ValidateSet("Create", "CreateUpdate")] - [String]$StorageAssetsDeploymentMode = "Create" -) -$ErrorActionPreference = "Stop" - -$OutputFolderPath = "./bin/CloudDeployment/" -$MetadataFilePath = Join-Path $OutputFolderPath "cloud-metadata.json" -$CDRepositoryFolderPath = "./`$CDRepository" -$StorageAssetsFolderName = "`$StorageAssets" -$BuildNumber = (Get-Date).ToUniversalTime().ToString("yyyyMMddHHmm") - -# Remove previously published website -Remove-Item -Recurse -Force $OutputFolderPath -ErrorAction SilentlyContinue - -# Publish the application in the 'Release' mode -$PublishCommand = "dotnet publish --nologo -c Release -o $OutputFolderPath" - -if (!$KeepProductVersion) { - $PublishCommand += " --version-suffix $BuildNumber" -} - -Invoke-Expression $PublishCommand - -if ($LASTEXITCODE -ne 0) { - throw "Publishing the website failed." -} - -# Get CD repositories paths -$LocalCDRepositoryPath = Join-Path (Resolve-Path .) $CDRepositoryFolderPath -$OutputCDRepositoryPath = Join-Path $OutputFolderPath $CDRepositoryFolderPath - -# Check for non-existing or empty CD repository which could corrupt the database -if (-not (Test-Path $LocalCDRepositoryPath) -or (@(Get-ChildItem -Path $LocalCDRepositoryPath -Directory).Count -le 0)) { - throw "Cannot detect CD repository on path '$LocalCDRepositoryPath'. Make sure to run 'dotnet run --kxp-cd-store --repository-path ""```$CDRepository""' before 'Export-DeploymentPackage.ps1'." -} - -# Copy content of the CD repository to the output folder -Copy-Item -Force -Recurse "$LocalCDRepositoryPath/*" -Destination $OutputCDRepositoryPath - -# Get storage assets paths -$LocalStorageAssetsPath = Join-Path (Resolve-Path .) $StorageAssetsFolderName -$OutputStorageAssetsPath = Join-Path $OutputFolderPath $StorageAssetsFolderName - -if (Test-Path $LocalStorageAssetsPath) { - # Check if storage asset top-level directories have valid names - Get-ChildItem -Path $LocalStorageAssetsPath | % { - if ($_.Name -cnotmatch "^[a-z0-9](?!.*--)[a-z0-9-]{1,61}[a-z0-9]$") { - throw "Storage asset directory '$($_.FullName)' does not have a valid name. Top level storage asset directories must have names that are 3-63 characters long and contain only lowercase letters, numbers or dashes (-). Every dash symbol must be surrounded by letters or numbers." - } - } - - # Copy storage assets to the output folder - New-Item -Force -ItemType Directory $OutputStorageAssetsPath | Out-Null - Copy-Item -Force -Recurse "$LocalStorageAssetsPath/*" -Destination $OutputStorageAssetsPath - - # Deployed assets need to have lowercase names - Get-ChildItem -Path $OutputStorageAssetsPath -Recurse | % { - $lowercasedAssetName = $_.Name.ToLowerInvariant() - - if ($_.Name -cne $lowercasedAssetName) { - Rename-Item -Force $_.FullName "$($_.Name).tmp" - Rename-Item -Force "$($_.FullName).tmp" $lowercasedAssetName - } - } -} - -$AssemblyPath = Join-Path $OutputFolderPath "$AssemblyName.dll" -Resolve -$PackageMetadata = @{ - AssemblyName = $AssemblyName - Version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($AssemblyPath).ProductVersion -} - -# Add necessary metadata if storage assets folder has been exported as well -if (Test-Path $OutputStorageAssetsPath) { - $PackageMetadata.Add("StorageAssetsDirectory", $StorageAssetsFolderName) - $PackageMetadata.Add("StorageAssetsDeploymentMode", $StorageAssetsDeploymentMode) -} - -# Create all necessary metadata for cloud-based package deployment -$PackageMetadata | ConvertTo-Json -Depth 2 | Set-Content $MetadataFilePath -Encoding utf8 - -# Create a deployment package -if (Test-Path -Path $OutputPackagePath -PathType Container) { - $OutputPackagePath = Join-Path -Path $OutputPackagePath -ChildPath "./DeploymentPackage.zip" -} -Compress-Archive -Force -Path "$OutputFolderPath/*" -DestinationPath $OutputPackagePath \ No newline at end of file diff --git a/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentContactGroupGenerator.cs b/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentContactGroupGenerator.cs index f2ec24a..0150305 100644 --- a/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentContactGroupGenerator.cs +++ b/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentContactGroupGenerator.cs @@ -1,4 +1,5 @@ using CMS.ContactManagement; +using CMS.DataEngine; using CMS.MacroEngine; using CMS.Membership; @@ -9,14 +10,14 @@ public class FormContactGroupGenerator private const string CONTACT_GROUP_DISPLAY_NAME = "Coffee samples applicants"; private const string CONTACT_GROUP_NAME = "CoffeeSamplesApplicants"; - private readonly IContactGroupInfoProvider contactGroupInfoProvider; + private readonly IInfoProvider contactGroupInfoProvider; /// /// Initializes a new instance of the class. /// /// Contact group info provider. - public FormContactGroupGenerator(IContactGroupInfoProvider contactGroupInfoProvider) + public FormContactGroupGenerator(IInfoProvider contactGroupInfoProvider) { this.contactGroupInfoProvider = contactGroupInfoProvider; } diff --git a/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentGenerator.cs b/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentGenerator.cs index 6d29a93..305093a 100644 --- a/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentGenerator.cs +++ b/examples/DancingGoat/Helpers/Generators/DataProtection/FormConsentGenerator.cs @@ -29,7 +29,7 @@ public class FormConsentGenerator private readonly IFormBuilderConfigurationSerializer formBuilderConfigurationSerializer; private readonly IInfoProvider consentInfoProvider; - private readonly IBizFormInfoProvider bizFormInfoProvider; + private readonly IInfoProvider bizFormInfoProvider; /// @@ -41,7 +41,7 @@ public class FormConsentGenerator public FormConsentGenerator( IFormBuilderConfigurationSerializer formBuilderConfigurationSerializer, IInfoProvider consentInfoProvider, - IBizFormInfoProvider bizFormInfoProvider) + IInfoProvider bizFormInfoProvider) { this.formBuilderConfigurationSerializer = formBuilderConfigurationSerializer; this.consentInfoProvider = consentInfoProvider; diff --git a/examples/DancingGoat/Models/ContentRepositoryBase.cs b/examples/DancingGoat/Models/ContentRepositoryBase.cs index f00723e..f18e177 100644 --- a/examples/DancingGoat/Models/ContentRepositoryBase.cs +++ b/examples/DancingGoat/Models/ContentRepositoryBase.cs @@ -6,11 +6,13 @@ using CMS.ContentEngine; using CMS.Helpers; -using CMS.Websites; using CMS.Websites.Routing; namespace DancingGoat.Models { + /// + /// Shared implementation for content type repositories. + /// public abstract class ContentRepositoryBase { /// @@ -20,7 +22,6 @@ public abstract class ContentRepositoryBase private readonly IContentQueryExecutor executor; - private readonly IWebPageQueryResultMapper mapper; private readonly IProgressiveCache cache; @@ -29,13 +30,11 @@ public abstract class ContentRepositoryBase /// /// Website channel context. /// Content query executor. - /// Mapper to provide mapping from data container to model. /// Cache. - public ContentRepositoryBase(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) + public ContentRepositoryBase(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) { WebsiteChannelContext = websiteChannelContext; this.executor = executor; - this.mapper = mapper; this.cache = cache; } @@ -57,7 +56,6 @@ public Task> GetCachedQueryResult( CacheSettings cacheSettings, Func, CancellationToken, Task>> cacheDependenciesFunc, CancellationToken cancellationToken) - where T : new() { if (queryBuilder is null) { @@ -79,76 +77,29 @@ public Task> GetCachedQueryResult( queryOptions = new ContentQueryExecutionOptions(); } - return GetCachedQueryResultInternal(queryBuilder, queryOptions, container => mapper.Map(container), cacheSettings, cacheDependenciesFunc, cancellationToken); - } - - - /// - /// Returns cached query result. - /// - /// Model to which the query results will be mapped. - /// Prepared query builder to be executed by the injected . - /// Optional . Default values are used if not specified. - /// Function converting a web page content query data record container to the resulting instance. - /// Object with values to set up cache. See for more information. - /// Function that will create cache dependencies for the query. - /// Cancellation instruction. - /// Thrown when any of the , or parameters is null. - /// Request is not cached if the request is for preview. - public Task> GetCachedQueryResult( - ContentItemQueryBuilder queryBuilder, - ContentQueryExecutionOptions queryOptions, - Func resultSelector, - CacheSettings cacheSettings, - Func, CancellationToken, Task>> cacheDependenciesFunc, - CancellationToken cancellationToken) - where T : new() - { - if (queryBuilder is null) - { - throw new ArgumentNullException(nameof(queryBuilder)); - } - - if (cacheSettings is null) - { - throw new ArgumentNullException(nameof(cacheSettings)); - } - - if (cacheDependenciesFunc is null) - { - throw new ArgumentNullException(nameof(cacheDependenciesFunc)); - } - - if (queryOptions == null) - { - queryOptions = new ContentQueryExecutionOptions(); - } - - return GetCachedQueryResultInternal(queryBuilder, queryOptions, resultSelector, cacheSettings, cacheDependenciesFunc, cancellationToken); + return GetCachedQueryResultInternal(queryBuilder, queryOptions, cacheSettings, cacheDependenciesFunc, cancellationToken); } private async Task> GetCachedQueryResultInternal(ContentItemQueryBuilder queryBuilder, ContentQueryExecutionOptions queryOptions, - Func resultSelector, CacheSettings cacheSettings, Func, CancellationToken, Task>> cacheDependenciesFunc, CancellationToken cancellationToken) - where T : new() { queryOptions.ForPreview = WebsiteChannelContext.IsPreview; queryOptions.IncludeSecuredItems = queryOptions.IncludeSecuredItems || WebsiteChannelContext.IsPreview; if (WebsiteChannelContext.IsPreview) { - return await executor.GetWebPageResult(queryBuilder, resultSelector, options: queryOptions, cancellationToken: cancellationToken); + return await executor.GetMappedResult(queryBuilder, queryOptions, cancellationToken); } return await cache.LoadAsync(async (cacheSettings) => { - var result = await executor.GetWebPageResult(queryBuilder, resultSelector, options: queryOptions, cancellationToken: cancellationToken); + var result = await executor.GetMappedResult(queryBuilder, queryOptions, cancellationToken); - if (cacheSettings.Cached = (result != null && result.Any())) + if (cacheSettings.Cached = result != null && result.Any()) { cacheSettings.CacheDependency = CacheHelper.GetCacheDependency(await cacheDependenciesFunc(result, cancellationToken)); } diff --git a/examples/DancingGoat/Models/Reusable/Banner/Banner.generated.cs b/examples/DancingGoat/Models/Reusable/Banner/Banner.generated.cs index 2bffb4a..381fb0f 100644 --- a/examples/DancingGoat/Models/Reusable/Banner/Banner.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Banner/Banner.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class Banner : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class Banner : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/Cafe/Cafe.generated.cs b/examples/DancingGoat/Models/Reusable/Cafe/Cafe.generated.cs index 2940e5c..46ba1ef 100644 --- a/examples/DancingGoat/Models/Reusable/Cafe/Cafe.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Cafe/Cafe.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class Cafe : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class Cafe : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/Cafe/CafeRepository.cs b/examples/DancingGoat/Models/Reusable/Cafe/CafeRepository.cs index 4662ea9..2bb02a5 100644 --- a/examples/DancingGoat/Models/Reusable/Cafe/CafeRepository.cs +++ b/examples/DancingGoat/Models/Reusable/Cafe/CafeRepository.cs @@ -6,7 +6,6 @@ using CMS.ContentEngine; using CMS.Helpers; -using CMS.Websites; using CMS.Websites.Routing; namespace DancingGoat.Models @@ -22,22 +21,21 @@ public partial class CafeRepository : ContentRepositoryBase public CafeRepository( IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, - IWebPageQueryResultMapper mapper, IProgressiveCache cache, ILinkedItemsDependencyAsyncRetriever linkedItemsDependencyRetriever) - : base(websiteChannelContext, executor, mapper, cache) + : base(websiteChannelContext, executor, cache) { this.linkedItemsDependencyRetriever = linkedItemsDependencyRetriever; } /// - /// Returns an enumerable collection of company cafes ordered by a position in the content tree. + /// Returns an enumerable collection of cafes. /// - public async Task> GetCompanyCafes(int count, string languageName, CancellationToken cancellationToken = default) + public async Task> GetCafes(int count, string languageName, CancellationToken cancellationToken = default) { var queryBuilder = GetQueryBuilder(count, languageName); - var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(CafeRepository), languageName, nameof(GetCompanyCafes), count); + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(CafeRepository), nameof(GetCafes), count, languageName); return await GetCachedQueryResult(queryBuilder, null, cacheSettings, GetDependencyCacheKeys, cancellationToken); } @@ -48,9 +46,8 @@ private static ContentItemQueryBuilder GetQueryBuilder(int count, string languag return new ContentItemQueryBuilder() .ForContentType(Cafe.CONTENT_TYPE_NAME, config => config - .WithLinkedItems(1) - .TopN(count) - .Where(where => where.WhereTrue(nameof(Cafe.CafeIsCompanyCafe)))) + .WithLinkedItems(1) + .TopN(count)) .InLanguage(languageName); } diff --git a/examples/DancingGoat/Models/Reusable/Cafe/CafeViewModel.cs b/examples/DancingGoat/Models/Reusable/Cafe/CafeViewModel.cs index c0ff811..9a26bb0 100644 --- a/examples/DancingGoat/Models/Reusable/Cafe/CafeViewModel.cs +++ b/examples/DancingGoat/Models/Reusable/Cafe/CafeViewModel.cs @@ -1,4 +1,6 @@ -namespace DancingGoat.Models +using System.Linq; + +namespace DancingGoat.Models { public record CafeViewModel(string Name, string PhotoPath, string PhotoShortDescription, string Street, string City, string Country, string ZipCode, string Phone) { diff --git a/examples/DancingGoat/Models/Reusable/Coffee/Coffee.generated.cs b/examples/DancingGoat/Models/Reusable/Coffee/Coffee.generated.cs index 75b1b01..4271000 100644 --- a/examples/DancingGoat/Models/Reusable/Coffee/Coffee.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Coffee/Coffee.generated.cs @@ -18,7 +18,8 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// - public partial class Coffee : IContentItemFieldsSource + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] + public partial class Coffee : IContentItemFieldsSource, IProductFields { /// /// Code name of the content type. @@ -29,30 +30,43 @@ public partial class Coffee : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } /// - /// CoffeeName. + /// CoffeeProcessing. /// - public string CoffeeName { get; set; } + public IEnumerable CoffeeProcessing { get; set; } /// - /// CoffeeShortDescription. + /// CoffeeTastes. /// - public string CoffeeShortDescription { get; set; } + public IEnumerable CoffeeTastes { get; set; } /// - /// CoffeeDescription. + /// ProductFieldsName. /// - public string CoffeeDescription { get; set; } + public string ProductFieldsName { get; set; } /// - /// CoffeeImage. + /// ProductFieldsDescription. /// - public IEnumerable CoffeeImage { get; set; } + public string ProductFieldsDescription { get; set; } + + + /// + /// ProductFieldsShortDescription. + /// + public string ProductFieldsShortDescription { get; set; } + + + /// + /// ProductFieldsImage. + /// + public IEnumerable ProductFieldsImage { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/Reusable/Coffee/CoffeeRepository.cs b/examples/DancingGoat/Models/Reusable/Coffee/CoffeeRepository.cs deleted file mode 100644 index 0afb48c..0000000 --- a/examples/DancingGoat/Models/Reusable/Coffee/CoffeeRepository.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - -using CMS.ContentEngine; -using CMS.Helpers; -using CMS.Websites; -using CMS.Websites.Routing; - -namespace DancingGoat.Models -{ - /// - /// Represents a collection of coffees. - /// - public partial class CoffeeRepository : ContentRepositoryBase - { - private readonly ILinkedItemsDependencyRetriever linkedItemsDependencyRetriever; - - /// - /// Initializes a new instance of the class that returns coffees. - /// - public CoffeeRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache, ILinkedItemsDependencyRetriever linkedItemsDependencyRetriever) - : base(websiteChannelContext, executor, mapper, cache) - { - this.linkedItemsDependencyRetriever = linkedItemsDependencyRetriever; - } - - - /// - /// Returns an enumerable collection of based on a given collection of content item guids. - /// - public async Task> GetCoffees(ICollection coffeeGuids, string languageName, CancellationToken cancellationToken = default) - { - var queryBuilder = GetQueryBuilder(coffeeGuids, languageName); - - var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(CoffeeRepository), nameof(GetCoffees), languageName, coffeeGuids.Select(guid => guid.ToString()).Join("|")); - - return await GetCachedQueryResult(queryBuilder, null, cacheSettings, (coffees, cancellationToken) => GetDependencyCacheKeys(coffees, coffeeGuids), cancellationToken); - } - - - private static ContentItemQueryBuilder GetQueryBuilder(ICollection coffeeGuids, string languageName) - { - return new ContentItemQueryBuilder() - .ForContentType(Coffee.CONTENT_TYPE_NAME, - config => config - .WithLinkedItems(1) - .Where(where => where.WhereIn(nameof(IContentQueryDataContainer.ContentItemGUID), coffeeGuids))) - .InLanguage(languageName); - } - - - private Task> GetDependencyCacheKeys(IEnumerable coffees, IEnumerable coffeeGuids) - { - var dependencyCacheKeys = linkedItemsDependencyRetriever.Get(coffees.Select(coffee => coffee.SystemFields.ContentItemID), 1).ToHashSet(StringComparer.InvariantCultureIgnoreCase); - - foreach (var guid in coffeeGuids) - { - dependencyCacheKeys.Add(CacheHelper.BuildCacheItemName(new[] { "contentitem", "byguid", guid.ToString() }, false)); - } - - return Task.FromResult>(dependencyCacheKeys); - } - } -} diff --git a/examples/DancingGoat/Models/Reusable/Contact/Contact.generated.cs b/examples/DancingGoat/Models/Reusable/Contact/Contact.generated.cs index 6c7e3e1..541e1d6 100644 --- a/examples/DancingGoat/Models/Reusable/Contact/Contact.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Contact/Contact.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class Contact : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class Contact : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/Contact/ContactRepository.cs b/examples/DancingGoat/Models/Reusable/Contact/ContactRepository.cs index bfbf0a3..96f9025 100644 --- a/examples/DancingGoat/Models/Reusable/Contact/ContactRepository.cs +++ b/examples/DancingGoat/Models/Reusable/Contact/ContactRepository.cs @@ -5,7 +5,6 @@ using CMS.ContentEngine; using CMS.Helpers; -using CMS.Websites; using CMS.Websites.Routing; namespace DancingGoat.Models @@ -15,8 +14,8 @@ namespace DancingGoat.Models /// public class ContactRepository : ContentRepositoryBase { - public ContactRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public ContactRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/Reusable/Event/Event.generated.cs b/examples/DancingGoat/Models/Reusable/Event/Event.generated.cs index dcc7131..221b331 100644 --- a/examples/DancingGoat/Models/Reusable/Event/Event.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Event/Event.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class Event : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class Event : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/Event/EventViewModel.cs b/examples/DancingGoat/Models/Reusable/Event/EventViewModel.cs index 3db555c..fb7ce36 100644 --- a/examples/DancingGoat/Models/Reusable/Event/EventViewModel.cs +++ b/examples/DancingGoat/Models/Reusable/Event/EventViewModel.cs @@ -26,7 +26,7 @@ public static EventViewModel GetViewModel(Event eventContentItem) eventContentItem.EventPromoText, eventContentItem.EventDate, cafe?.CafeName, - cafe?.CafeCuppingOffer.Select(coffee => coffee.CoffeeName) + cafe?.CafeCuppingOffer.Select(coffee => coffee.ProductFieldsName) ); } } diff --git a/examples/DancingGoat/Models/Reusable/Grinder/Grinder.generated.cs b/examples/DancingGoat/Models/Reusable/Grinder/Grinder.generated.cs new file mode 100644 index 0000000..32cc100 --- /dev/null +++ b/examples/DancingGoat/Models/Reusable/Grinder/Grinder.generated.cs @@ -0,0 +1,72 @@ +//-------------------------------------------------------------------------------------------------- +// +// +// This code was generated by code generator tool. +// +// To customize the code use your own partial class. For more info about how to use and customize +// the generated code see the documentation at https://docs.xperience.io/. +// +// +//-------------------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using CMS.ContentEngine; + +namespace DancingGoat.Models +{ + /// + /// Represents a content item of type . + /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] + public partial class Grinder : IContentItemFieldsSource, IProductFields + { + /// + /// Code name of the content type. + /// + public const string CONTENT_TYPE_NAME = "DancingGoat.Grinder"; + + + /// + /// Represents system properties for a content item. + /// + [SystemField] + public ContentItemFields SystemFields { get; set; } + + + /// + /// GrinderManufacturer. + /// + public IEnumerable GrinderManufacturer { get; set; } + + + /// + /// GrinderType. + /// + public IEnumerable GrinderType { get; set; } + + + /// + /// ProductFieldsName. + /// + public string ProductFieldsName { get; set; } + + + /// + /// ProductFieldsDescription. + /// + public string ProductFieldsDescription { get; set; } + + + /// + /// ProductFieldsShortDescription. + /// + public string ProductFieldsShortDescription { get; set; } + + + /// + /// ProductFieldsImage. + /// + public IEnumerable ProductFieldsImage { get; set; } + } +} \ No newline at end of file diff --git a/examples/DancingGoat/Models/Reusable/Image/Image.generated.cs b/examples/DancingGoat/Models/Reusable/Image/Image.generated.cs index d334b91..4c98e04 100644 --- a/examples/DancingGoat/Models/Reusable/Image/Image.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Image/Image.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class Image : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class Image : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/Image/ImageRepository.cs b/examples/DancingGoat/Models/Reusable/Image/ImageRepository.cs index 31e6e1f..2852d46 100644 --- a/examples/DancingGoat/Models/Reusable/Image/ImageRepository.cs +++ b/examples/DancingGoat/Models/Reusable/Image/ImageRepository.cs @@ -6,15 +6,14 @@ using CMS.ContentEngine; using CMS.Helpers; -using CMS.Websites; using CMS.Websites.Routing; namespace DancingGoat.Models { public class ImageRepository : ContentRepositoryBase { - public ImageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public ImageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/Reusable/Product/ProductRepository.cs b/examples/DancingGoat/Models/Reusable/Product/ProductRepository.cs new file mode 100644 index 0000000..ff114df --- /dev/null +++ b/examples/DancingGoat/Models/Reusable/Product/ProductRepository.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using CMS.ContentEngine; +using CMS.DataEngine; +using CMS.Helpers; +using CMS.Websites; +using CMS.Websites.Routing; + +namespace DancingGoat.Models +{ + /// + /// Represents a collection of product pages. + /// + public class ProductRepository : ContentRepositoryBase + { + private const string COFFEE_PROCESSING = "CoffeeProcessing"; + private const string COFFEE_TASTES = "CoffeeTastes"; + private const string GRINDER_MANUFACTURER = "GrinderManufacturer"; + private const string GRINDER_TYPE = "GrinderType"; + + + private readonly ILinkedItemsDependencyAsyncRetriever linkedItemsDependencyRetriever; + private readonly IInfoProvider taxonomyInfoProvider; + + + /// + /// Initializes new instance of . + /// + public ProductRepository( + IWebsiteChannelContext websiteChannelContext, + IContentQueryExecutor executor, + IProgressiveCache cache, + ILinkedItemsDependencyAsyncRetriever linkedItemsDependencyRetriever, + IInfoProvider taxonomyInfoProvider) + : base(websiteChannelContext, executor, cache) + { + this.linkedItemsDependencyRetriever = linkedItemsDependencyRetriever; + this.taxonomyInfoProvider = taxonomyInfoProvider; + } + + + /// + /// Returns list of content items. + /// + public async Task> GetProducts(string languageName, IDictionary filter, bool includeSecuredItems = true, CancellationToken cancellationToken = default) + { + var queryBuilder = await GetQueryBuilder(languageName, filter: filter); + + var options = new ContentQueryExecutionOptions + { + IncludeSecuredItems = includeSecuredItems + }; + + var filterCacheItemNameParts = filter.Values.Where(value => value != null && value.Tags != null).SelectMany(value => value.Tags.Where(tag => tag.IsChecked)).Select(id => id.Value.ToString()).Join("|"); + + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, languageName, includeSecuredItems, nameof(IProductFields), filterCacheItemNameParts); + + return await GetCachedQueryResult(queryBuilder, options, cacheSettings, (_, _) => GetDependencyCacheKeys(languageName), cancellationToken); + } + + + /// + /// Returns list of content items. + /// + public async Task> GetProducts(ICollection productGuids, string languageName, CancellationToken cancellationToken = default) + { + var queryBuilder = await GetQueryBuilder(languageName, productGuids); + + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, languageName, nameof(IProductFields), productGuids.Select(guid => guid.ToString()).Join("|")); + + return await GetCachedQueryResult(queryBuilder, new ContentQueryExecutionOptions(), cacheSettings, (_, _) => GetDependencyCacheKeys(languageName, productGuids), cancellationToken); + } + + + private static async Task GetQueryBuilder(string languageName, IEnumerable productGuids = null, IDictionary filter = null) + { + var baseBuilder = new ContentItemQueryBuilder().ForContentTypes(ct => + { + ct.OfReusableSchema(IProductFields.REUSABLE_FIELD_SCHEMA_NAME) + .WithContentTypeFields() + .WithLinkedItems(1); + }).InLanguage(languageName); + + if (productGuids != null) + { + baseBuilder.Parameters(query => query.Where(where => where.WhereIn(nameof(IContentQueryDataContainer.ContentItemGUID), productGuids))); + } + + if (filter == null || !filter.Any()) + { + return baseBuilder; + } + + var coffeeProcessingTags = await GetSelectedTags(filter, COFFEE_PROCESSING); + var coffeeTastesTags = await GetSelectedTags(filter, COFFEE_TASTES); + var grinderManufacturerTags = await GetSelectedTags(filter, GRINDER_MANUFACTURER); + var grinderTypeTags = await GetSelectedTags(filter, GRINDER_TYPE); + + return baseBuilder + .Parameters(query => query.Where(where => where + .Where(coffeeWhere => coffeeWhere + .WhereContainsTags(nameof(Coffee.CoffeeProcessing), coffeeProcessingTags) + .WhereContainsTags(nameof(Coffee.CoffeeTastes), coffeeTastesTags)) + .Where(grinderWhere => grinderWhere + .WhereContainsTags(nameof(Grinder.GrinderManufacturer), grinderManufacturerTags) + .WhereContainsTags(nameof(Grinder.GrinderType), grinderTypeTags)) + )); + } + + + private static async Task GetSelectedTags(IDictionary filter, string taxonomyName) + { + if (filter.TryGetValue(taxonomyName, out var taxonomy)) + { + return await taxonomy.GetSelectedTags(); + } + + return null; + } + + + private async Task> GetDependencyCacheKeys(string languageName, ICollection productGuids = null) + { + var dependencyCacheKeys = new HashSet(StringComparer.InvariantCultureIgnoreCase) + { + CacheHelper.GetCacheItemName(null, WebsiteChannelInfo.OBJECT_TYPE, "byid", WebsiteChannelContext.WebsiteChannelID), + CacheHelper.GetCacheItemName(null, "contentitem", "bycontenttype", Coffee.CONTENT_TYPE_NAME, languageName), + CacheHelper.GetCacheItemName(null, "contentitem", "bycontenttype", Grinder.CONTENT_TYPE_NAME, languageName), + await GetTaxonomyTagsCacheDependencyKey(COFFEE_PROCESSING), + await GetTaxonomyTagsCacheDependencyKey(COFFEE_TASTES), + await GetTaxonomyTagsCacheDependencyKey(GRINDER_MANUFACTURER), + await GetTaxonomyTagsCacheDependencyKey(GRINDER_TYPE) + }; + GetProductPageDependencies(productGuids, dependencyCacheKeys); + + return dependencyCacheKeys; + } + + + private static void GetProductPageDependencies(ICollection productGuids, HashSet dependencyCacheKeys) + { + if (productGuids == null || !productGuids.Any()) + { + return; + } + + foreach (var guid in productGuids) + { + dependencyCacheKeys.Add(CacheHelper.BuildCacheItemName(new[] { "contentitem", "byguid", guid.ToString() }, false)); + } + } + + + private async Task GetTaxonomyTagsCacheDependencyKey(string taxonomyName) + { + var taxonomyID = (await taxonomyInfoProvider.GetAsync(taxonomyName)).TaxonomyID; + return CacheHelper.GetCacheItemName(null, TaxonomyInfo.OBJECT_TYPE, "byid", taxonomyID, "children"); + } + } +} diff --git a/examples/DancingGoat/Models/Reusable/Reference/Reference.generated.cs b/examples/DancingGoat/Models/Reusable/Reference/Reference.generated.cs index 0b60d2c..c1aaa25 100644 --- a/examples/DancingGoat/Models/Reusable/Reference/Reference.generated.cs +++ b/examples/DancingGoat/Models/Reusable/Reference/Reference.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class Reference : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class Reference : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/SocialLink/SocialLink.generated.cs b/examples/DancingGoat/Models/Reusable/SocialLink/SocialLink.generated.cs index 64dab81..1bef5b5 100644 --- a/examples/DancingGoat/Models/Reusable/SocialLink/SocialLink.generated.cs +++ b/examples/DancingGoat/Models/Reusable/SocialLink/SocialLink.generated.cs @@ -18,6 +18,7 @@ namespace DancingGoat.Models /// /// Represents a content item of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class SocialLink : IContentItemFieldsSource { /// @@ -29,6 +30,7 @@ public partial class SocialLink : IContentItemFieldsSource /// /// Represents system properties for a content item. /// + [SystemField] public ContentItemFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/Reusable/SocialLink/SocialLinkRepository.cs b/examples/DancingGoat/Models/Reusable/SocialLink/SocialLinkRepository.cs index 2822daf..08d8b07 100644 --- a/examples/DancingGoat/Models/Reusable/SocialLink/SocialLinkRepository.cs +++ b/examples/DancingGoat/Models/Reusable/SocialLink/SocialLinkRepository.cs @@ -6,7 +6,6 @@ using CMS.ContentEngine; using CMS.Helpers; -using CMS.Websites; using CMS.Websites.Routing; namespace DancingGoat.Models @@ -19,8 +18,8 @@ public class SocialLinkRepository : ContentRepositoryBase private readonly ILinkedItemsDependencyRetriever linkedItemsDependencyRetriever; - public SocialLinkRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache, ILinkedItemsDependencyRetriever linkedItemsDependencyRetriever) - : base(websiteChannelContext, executor, mapper, cache) + public SocialLinkRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache, ILinkedItemsDependencyRetriever linkedItemsDependencyRetriever) + : base(websiteChannelContext, executor, cache) { this.linkedItemsDependencyRetriever = linkedItemsDependencyRetriever; } diff --git a/examples/DancingGoat/Models/Reusable/Tag/TagViewModel.cs b/examples/DancingGoat/Models/Reusable/Tag/TagViewModel.cs new file mode 100644 index 0000000..a7dcaaa --- /dev/null +++ b/examples/DancingGoat/Models/Reusable/Tag/TagViewModel.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using CMS.ContentEngine; + +using Tag = CMS.ContentEngine.Tag; + +namespace DancingGoat.Models +{ + public record TagViewModel(string Name, int Level, Guid Value, bool IsChecked = false) + { + private const int ROOT_TAG_ID = 0; + + public static TagViewModel GetViewModel(Tag tag, int level = 0) + { + return new TagViewModel(tag.Title, level, tag.Identifier); + } + + + public static List GetViewModels(IEnumerable tags) + { + var result = new List(); + var tagsByParentId = tags.GroupBy(tag => tag.ParentID).ToDictionary(group => group.Key, group => group.ToList()); + + if (tagsByParentId.TryGetValue(ROOT_TAG_ID, out var firstLevelTags)) + { + GetTagsWithTagViewModels(firstLevelTags, ROOT_TAG_ID); + } + + return result; + + + void GetTagsWithTagViewModels(IEnumerable currentLevelTags, int level) + { + foreach (var tag in currentLevelTags.OrderBy(tag => tag.Order)) + { + var children = tagsByParentId.TryGetValue(tag.ID, out var childrenTags) ? childrenTags : Enumerable.Empty(); + result.Add(GetViewModel(tag, level)); + GetTagsWithTagViewModels(children, level + 1); + } + } + } + } +} diff --git a/examples/DancingGoat/Models/Reusable/Taxonomy/TaxonomyViewModel.cs b/examples/DancingGoat/Models/Reusable/Taxonomy/TaxonomyViewModel.cs new file mode 100644 index 0000000..d4128ef --- /dev/null +++ b/examples/DancingGoat/Models/Reusable/Taxonomy/TaxonomyViewModel.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +using CMS.ContentEngine; + +namespace DancingGoat.Models +{ + public record TaxonomyViewModel(string Name, string CodeName, List Tags) + { + /// + /// Maps to a . + /// + public static TaxonomyViewModel GetViewModel(TaxonomyData taxonomy) + { + return new TaxonomyViewModel(taxonomy.Taxonomy.Title, taxonomy.Taxonomy.Name, TagViewModel.GetViewModels(taxonomy.Tags)); + } + + + /// + /// Gets selected tags. + /// + public async Task GetSelectedTags() + { + if (Tags == null) + { + return null; + } + + return await TagCollection.Create(Tags.Where(tag => tag.IsChecked).Select(tag => tag.Value)); + } + } +} \ No newline at end of file diff --git a/examples/DancingGoat/Models/Schema/IProductFields.generated.cs b/examples/DancingGoat/Models/Schema/IProductFields.generated.cs new file mode 100644 index 0000000..d5dda02 --- /dev/null +++ b/examples/DancingGoat/Models/Schema/IProductFields.generated.cs @@ -0,0 +1,51 @@ +//-------------------------------------------------------------------------------------------------- +// +// +// This code was generated by code generator tool. +// +// To customize the code use your own partial class. For more info about how to use and customize +// the generated code see the documentation at https://docs.xperience.io/. +// +// +//-------------------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; + +namespace DancingGoat.Models +{ + /// + /// Defines a contract for content types with the reusable schema assigned. + /// + public interface IProductFields + { + /// + /// Code name of the reusable field schema. + /// + public const string REUSABLE_FIELD_SCHEMA_NAME = "ProductFields"; + + + /// + /// ProductFieldsName. + /// + public string ProductFieldsName { get; set; } + + + /// + /// ProductFieldsDescription. + /// + public string ProductFieldsDescription { get; set; } + + + /// + /// ProductFieldsShortDescription. + /// + public string ProductFieldsShortDescription { get; set; } + + + /// + /// ProductFieldsImage. + /// + public IEnumerable ProductFieldsImage { get; set; } + } +} \ No newline at end of file diff --git a/examples/DancingGoat/Models/Schema/ISEOFields.generated.cs b/examples/DancingGoat/Models/Schema/ISEOFields.generated.cs index c7bedc8..3146ad8 100644 --- a/examples/DancingGoat/Models/Schema/ISEOFields.generated.cs +++ b/examples/DancingGoat/Models/Schema/ISEOFields.generated.cs @@ -19,6 +19,12 @@ namespace DancingGoat.Models /// public interface ISEOFields { + /// + /// Code name of the reusable field schema. + /// + public const string REUSABLE_FIELD_SCHEMA_NAME = "SEOFields"; + + /// /// SEOFieldsTitle. /// @@ -29,5 +35,11 @@ public interface ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePage.generated.cs b/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePage.generated.cs index 773b003..e3b46a9 100644 --- a/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePage.generated.cs +++ b/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePage.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class ArticlePage : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class ArticlePage : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -78,5 +81,11 @@ public partial class ArticlePage : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePageRepository.cs b/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePageRepository.cs index 1705dca..c9b6325 100644 --- a/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePageRepository.cs +++ b/examples/DancingGoat/Models/WebPage/ArticlePage/ArticlePageRepository.cs @@ -26,10 +26,9 @@ public class ArticlePageRepository : ContentRepositoryBase public ArticlePageRepository( IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, - IWebPageQueryResultMapper mapper, IProgressiveCache cache, IWebPageLinkedItemsDependencyAsyncRetriever webPageLinkedItemsDependencyRetriever) - : base(websiteChannelContext, executor, mapper, cache) + : base(websiteChannelContext, executor, cache) { this.webPageLinkedItemsDependencyRetriever = webPageLinkedItemsDependencyRetriever; } @@ -60,10 +59,7 @@ public async Task> GetArticles(ICollection guids, { var queryBuilder = GetQueryBuilder(guids, languageName); - var options = new ContentQueryExecutionOptions - { - IncludeSecuredItems = true - }; + var options = new ContentQueryExecutionOptions { IncludeSecuredItems = true }; var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, languageName, guids.GetHashCode()); @@ -106,13 +102,14 @@ private ContentItemQueryBuilder GetQueryBuilder(int topN, string treePath, strin private ContentItemQueryBuilder GetQueryBuilder(ICollection guids, string languageName) { - return GetQueryBuilder( - languageName, - config => config - .WithLinkedItems(1) - .OrderBy(OrderByColumn.Desc(nameof(ArticlePage.ArticlePagePublishDate))) - .ForWebsite(WebsiteChannelContext.WebsiteChannelName) - .Where(where => where.WhereIn(nameof(IWebPageContentQueryDataContainer.WebPageItemGUID), guids))); + return new ContentItemQueryBuilder().ForContentTypes(q => + { + q.ForWebsite(guids) + .WithContentTypeFields() + .WithLinkedItems(1); + }).InLanguage(languageName) + .Parameters(q => + q.OrderBy(OrderByColumn.Desc(nameof(ArticlePage.ArticlePagePublishDate)))); } diff --git a/examples/DancingGoat/Models/WebPage/ArticlePage/ArticleViewModel.cs b/examples/DancingGoat/Models/WebPage/ArticlePage/ArticleViewModel.cs index e3feaff..9410c3d 100644 --- a/examples/DancingGoat/Models/WebPage/ArticlePage/ArticleViewModel.cs +++ b/examples/DancingGoat/Models/WebPage/ArticlePage/ArticleViewModel.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading; using System.Threading.Tasks; using CMS.Websites; @@ -11,11 +12,11 @@ public record ArticleViewModel(string Title, string TeaserUrl, string Summary, s /// /// Validates and maps to a . /// - public static async Task GetViewModel(ArticlePage articlePage, IWebPageUrlRetriever urlRetriever, string languageName) + public static async Task GetViewModel(ArticlePage articlePage, IWebPageUrlRetriever urlRetriever, string languageName, CancellationToken cancellationToken = default) { var teaser = articlePage.ArticlePageTeaser.FirstOrDefault(); - var url = await urlRetriever.Retrieve(articlePage, languageName); + var url = await urlRetriever.Retrieve(articlePage, languageName, cancellationToken); return new ArticleViewModel( articlePage.ArticleTitle, diff --git a/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSection.generated.cs b/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSection.generated.cs index 8baf231..c51466d 100644 --- a/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSection.generated.cs +++ b/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSection.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class ArticlesSection : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class ArticlesSection : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -42,5 +45,11 @@ public partial class ArticlesSection : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionRepository.cs b/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionRepository.cs index a4abc11..390f96d 100644 --- a/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionRepository.cs +++ b/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionRepository.cs @@ -16,8 +16,8 @@ public class ArticlesSectionRepository : ContentRepositoryBase /// /// Initializes new instance of . /// - public ArticlesSectionRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public ArticlesSectionRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionViewModel.cs b/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionViewModel.cs index ebf1dc7..72ca09d 100644 --- a/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionViewModel.cs +++ b/examples/DancingGoat/Models/WebPage/ArticlesSection/ArticlesSectionViewModel.cs @@ -1,4 +1,5 @@ - +using System.Collections.Generic; + using CMS.Websites; namespace DancingGoat.Models @@ -13,10 +14,12 @@ public record ArticlesSectionViewModel(IEnumerable Articles, s /// /// Maps to a . /// - public static ArticlesSectionViewModel GetViewModel(ArticlesSection articlesSection, IEnumerable articles, string articlesPath) => - new(articles, articlesPath) + public static ArticlesSectionViewModel GetViewModel(ArticlesSection articlesSection, IEnumerable Articles, string ArticlesPath) + { + return new ArticlesSectionViewModel(Articles, ArticlesPath) { WebPage = articlesSection }; + } } } diff --git a/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeeDetailViewModel.cs b/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeeDetailViewModel.cs new file mode 100644 index 0000000..ae380f3 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeeDetailViewModel.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +using CMS.ContentEngine; + +using Tag = CMS.ContentEngine.Tag; + +namespace DancingGoat.Models +{ + public record CoffeeDetailViewModel(string Name, string Description, string ImageUrl, IEnumerable Tastes, IEnumerable Processing) + { + /// + /// Maps to a . + /// + public async static Task GetViewModel(CoffeePage coffeePage, string languageName, ITaxonomyRetriever taxonomyRetriever) + { + var coffee = coffeePage.RelatedItem.FirstOrDefault(); + var image = coffee.ProductFieldsImage.FirstOrDefault(); + + return new CoffeeDetailViewModel( + coffee.ProductFieldsName, + coffee.ProductFieldsDescription, + image?.ImageFile.Url, + await taxonomyRetriever.RetrieveTags(coffee.CoffeeTastes.Select(taste => taste.Identifier), languageName), + await taxonomyRetriever.RetrieveTags(coffee.CoffeeProcessing.Select(processing => processing.Identifier), languageName) + ); + } + } +} diff --git a/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.cs b/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.cs new file mode 100644 index 0000000..57542c5 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; + +namespace DancingGoat.Models +{ + /// + /// Custom code for page of type . + /// + public partial class CoffeePage : IProductPage + { + /// + IEnumerable IProductPage.RelatedItem { get => RelatedItem; } + } +} diff --git a/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.generated.cs b/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.generated.cs new file mode 100644 index 0000000..5045100 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/CoffeePage/CoffeePage.generated.cs @@ -0,0 +1,43 @@ +//-------------------------------------------------------------------------------------------------- +// +// +// This code was generated by code generator tool. +// +// To customize the code use your own partial class. For more info about how to use and customize +// the generated code see the documentation at https://docs.xperience.io/. +// +// +//-------------------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using CMS.ContentEngine; +using CMS.Websites; + +namespace DancingGoat.Models +{ + /// + /// Represents a page of type . + /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] + public partial class CoffeePage : IWebPageFieldsSource + { + /// + /// Code name of the content type. + /// + public const string CONTENT_TYPE_NAME = "DancingGoat.CoffeePage"; + + + /// + /// Represents system properties for a web page item. + /// + [SystemField] + public WebPageFields SystemFields { get; set; } + + + /// + /// RelatedItem. + /// + public IEnumerable RelatedItem { get; set; } + } +} diff --git a/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPage.generated.cs b/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPage.generated.cs index 80d3333..5c0fcd1 100644 --- a/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPage.generated.cs +++ b/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPage.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class ConfirmationPage : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class ConfirmationPage : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -66,5 +69,11 @@ public partial class ConfirmationPage : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPageRepository.cs b/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPageRepository.cs index d81fb45..6a9179c 100644 --- a/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPageRepository.cs +++ b/examples/DancingGoat/Models/WebPage/ConfirmationPage/ConfirmationPageRepository.cs @@ -15,8 +15,8 @@ namespace DancingGoat.Models /// public class ConfirmationPageRepository : ContentRepositoryBase { - public ConfirmationPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public ConfirmationPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsIndexViewModel.cs b/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsIndexViewModel.cs index 30a5f1d..ccb1a70 100644 --- a/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsIndexViewModel.cs +++ b/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsIndexViewModel.cs @@ -18,6 +18,12 @@ public class ContactsIndexViewModel : IWebPageBasedViewModel public List CompanyCafes { get; set; } + /// + /// The partner cafes data. + /// + public List PartnerCafes { get; set; } + + /// public IWebPageFieldsSource WebPage { get; init; } } diff --git a/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPage.generated.cs b/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPage.generated.cs index 513a741..965fbb5 100644 --- a/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPage.generated.cs +++ b/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPage.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class ContactsPage : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class ContactsPage : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -42,5 +45,11 @@ public partial class ContactsPage : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPageRepository.cs b/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPageRepository.cs index 3b1a9c4..4133065 100644 --- a/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPageRepository.cs +++ b/examples/DancingGoat/Models/WebPage/ContactsPage/ContactsPageRepository.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -15,20 +16,35 @@ public class ContactsPageRepository : ContentRepositoryBase /// /// Initializes new instance of . /// - public ContactsPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public ContactsPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } + /// + /// Returns web page by tree path and language name. + /// + public async Task GetContactsPage(string treePath, string languageName, CancellationToken cancellationToken = default) + { + var queryBuilder = GetQueryBuilder(w => w.WhereEquals(nameof(IWebPageContentQueryDataContainer.WebPageItemTreePath), treePath), languageName); + + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(ContactsPage), nameof(IWebPageContentQueryDataContainer.WebPageItemTreePath), treePath, languageName); + + var result = await GetCachedQueryResult(queryBuilder, null, cacheSettings, GetDependencyCacheKeys, cancellationToken); + + return result.FirstOrDefault(); + } + + /// /// Returns web page by ID and language name. /// public async Task GetContactsPage(int webPageItemId, string languageName, CancellationToken cancellationToken = default) { - var queryBuilder = GetQueryBuilder(webPageItemId, languageName); + var queryBuilder = GetQueryBuilder(w => w.WhereEquals(nameof(IWebPageContentQueryDataContainer.WebPageItemID), webPageItemId), languageName); - var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(ContactsPage), webPageItemId, languageName); + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(ContactsPage), nameof(IWebPageContentQueryDataContainer.WebPageItemID), webPageItemId, languageName); var result = await GetCachedQueryResult(queryBuilder, null, cacheSettings, GetDependencyCacheKeys, cancellationToken); @@ -36,13 +52,12 @@ public async Task GetContactsPage(int webPageItemId, string langua } - private ContentItemQueryBuilder GetQueryBuilder(int webPageItemId, string languageName) + private ContentItemQueryBuilder GetQueryBuilder(Action where, string languageName) { return new ContentItemQueryBuilder() .ForContentType(ContactsPage.CONTENT_TYPE_NAME, config => config - .ForWebsite(WebsiteChannelContext.WebsiteChannelName, includeUrlPath: false) - .Where(where => where - .WhereEquals(nameof(IWebPageContentQueryDataContainer.WebPageItemID), webPageItemId)) + .ForWebsite(WebsiteChannelContext.WebsiteChannelName) + .Where(where) .TopN(1)) .InLanguage(languageName); } diff --git a/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderDetailViewModel.cs b/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderDetailViewModel.cs new file mode 100644 index 0000000..5079460 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderDetailViewModel.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +using CMS.ContentEngine; + +using Tag = CMS.ContentEngine.Tag; + +namespace DancingGoat.Models +{ + public record GrinderDetailViewModel(string Name, string Description, string ImageUrl, IEnumerable Manufacturers, IEnumerable Type) + { + /// + /// Maps to a . + /// + public async static Task GetViewModel(GrinderPage grinderPage, string languageName, ITaxonomyRetriever taxonomyRetriever) + { + var grinder = grinderPage.RelatedItem.FirstOrDefault(); + var image = grinder.ProductFieldsImage.FirstOrDefault(); + + return new GrinderDetailViewModel( + grinder.ProductFieldsName, + grinder.ProductFieldsDescription, + image?.ImageFile.Url, + await taxonomyRetriever.RetrieveTags(grinder.GrinderManufacturer.Select(manufacturer => manufacturer.Identifier), languageName), + await taxonomyRetriever.RetrieveTags(grinder.GrinderType.Select(type => type.Identifier), languageName) + ); + } + } +} diff --git a/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.cs b/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.cs new file mode 100644 index 0000000..ded6ed2 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; + +namespace DancingGoat.Models +{ + /// + /// Custom code for page of type . + /// + public partial class GrinderPage : IProductPage + { + /// + IEnumerable IProductPage.RelatedItem { get => RelatedItem; } + } +} diff --git a/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.generated.cs b/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.generated.cs new file mode 100644 index 0000000..d79dda1 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/GrinderPage/GrinderPage.generated.cs @@ -0,0 +1,43 @@ +//-------------------------------------------------------------------------------------------------- +// +// +// This code was generated by code generator tool. +// +// To customize the code use your own partial class. For more info about how to use and customize +// the generated code see the documentation at https://docs.xperience.io/. +// +// +//-------------------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using CMS.ContentEngine; +using CMS.Websites; + +namespace DancingGoat.Models +{ + /// + /// Represents a page of type . + /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] + public partial class GrinderPage : IWebPageFieldsSource + { + /// + /// Code name of the content type. + /// + public const string CONTENT_TYPE_NAME = "DancingGoat.GrinderPage"; + + + /// + /// Represents system properties for a web page item. + /// + [SystemField] + public WebPageFields SystemFields { get; set; } + + + /// + /// RelatedItem. + /// + public IEnumerable RelatedItem { get; set; } + } +} \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/HomePage/HomePage.generated.cs b/examples/DancingGoat/Models/WebPage/HomePage/HomePage.generated.cs index f4d0791..4585e10 100644 --- a/examples/DancingGoat/Models/WebPage/HomePage/HomePage.generated.cs +++ b/examples/DancingGoat/Models/WebPage/HomePage/HomePage.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class HomePage : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class HomePage : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -78,5 +81,11 @@ public partial class HomePage : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/HomePage/HomePageRepository.cs b/examples/DancingGoat/Models/WebPage/HomePage/HomePageRepository.cs index 9f8c8a5..c9614e3 100644 --- a/examples/DancingGoat/Models/WebPage/HomePage/HomePageRepository.cs +++ b/examples/DancingGoat/Models/WebPage/HomePage/HomePageRepository.cs @@ -22,8 +22,8 @@ public class HomePageRepository : ContentRepositoryBase /// /// Initializes new instance of . /// - public HomePageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache, IWebPageLinkedItemsDependencyAsyncRetriever webPageLinkedItemsDependencyRetriever) - : base(websiteChannelContext, executor, mapper, cache) + public HomePageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache, IWebPageLinkedItemsDependencyAsyncRetriever webPageLinkedItemsDependencyRetriever) + : base(websiteChannelContext, executor, cache) { this.webPageLinkedItemsDependencyRetriever = webPageLinkedItemsDependencyRetriever; } diff --git a/examples/DancingGoat/Models/WebPage/LandingPage/LandingPage.generated.cs b/examples/DancingGoat/Models/WebPage/LandingPage/LandingPage.generated.cs index fbec93c..fcfb146 100644 --- a/examples/DancingGoat/Models/WebPage/LandingPage/LandingPage.generated.cs +++ b/examples/DancingGoat/Models/WebPage/LandingPage/LandingPage.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class LandingPage : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class LandingPage : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -42,5 +45,11 @@ public partial class LandingPage : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/LandingPage/LandingPageRepository.cs b/examples/DancingGoat/Models/WebPage/LandingPage/LandingPageRepository.cs index 42f8fce..7b4c717 100644 --- a/examples/DancingGoat/Models/WebPage/LandingPage/LandingPageRepository.cs +++ b/examples/DancingGoat/Models/WebPage/LandingPage/LandingPageRepository.cs @@ -15,8 +15,8 @@ namespace DancingGoat.Models /// public class LandingPageRepository : ContentRepositoryBase { - public LandingPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public LandingPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItem.generated.cs b/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItem.generated.cs index 179c2c3..a338f4e 100644 --- a/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItem.generated.cs +++ b/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItem.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class NavigationItem : IWebPageFieldsSource { /// @@ -29,6 +31,7 @@ public partial class NavigationItem : IWebPageFieldsSource /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } diff --git a/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItemRepository.cs b/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItemRepository.cs index c9615c9..2d6a49e 100644 --- a/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItemRepository.cs +++ b/examples/DancingGoat/Models/WebPage/NavigationItem/NavigationItemRepository.cs @@ -19,8 +19,8 @@ public class NavigationItemRepository : ContentRepositoryBase /// /// Initializes new instance of . /// - public NavigationItemRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public NavigationItemRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPage.generated.cs b/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPage.generated.cs index c7f13e4..976108f 100644 --- a/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPage.generated.cs +++ b/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPage.generated.cs @@ -11,6 +11,7 @@ using System; using System.Collections.Generic; +using CMS.ContentEngine; using CMS.Websites; namespace DancingGoat.Models @@ -18,6 +19,7 @@ namespace DancingGoat.Models /// /// Represents a page of type . /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] public partial class PrivacyPage : IWebPageFieldsSource, ISEOFields { /// @@ -29,6 +31,7 @@ public partial class PrivacyPage : IWebPageFieldsSource, ISEOFields /// /// Represents system properties for a web page item. /// + [SystemField] public WebPageFields SystemFields { get; set; } @@ -42,5 +45,11 @@ public partial class PrivacyPage : IWebPageFieldsSource, ISEOFields /// SEOFieldsDescription. /// public string SEOFieldsDescription { get; set; } + + + /// + /// SEOFieldsAllowSearchIndexing. + /// + public bool SEOFieldsAllowSearchIndexing { get; set; } } } \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPageRepository.cs b/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPageRepository.cs index 1327842..dfcc233 100644 --- a/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPageRepository.cs +++ b/examples/DancingGoat/Models/WebPage/PrivacyPage/PrivacyPageRepository.cs @@ -15,8 +15,8 @@ public class PrivacyPageRepository : ContentRepositoryBase /// /// Initializes new instance of . /// - public PrivacyPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IWebPageQueryResultMapper mapper, IProgressiveCache cache) - : base(websiteChannelContext, executor, mapper, cache) + public PrivacyPageRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache) + : base(websiteChannelContext, executor, cache) { } diff --git a/examples/DancingGoat/Models/WebPage/ProductPage/IProductPage.cs b/examples/DancingGoat/Models/WebPage/ProductPage/IProductPage.cs new file mode 100644 index 0000000..82e308f --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/ProductPage/IProductPage.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +using CMS.Websites; + +namespace DancingGoat.Models +{ + /// + /// Represents a common product page model. + /// + public interface IProductPage : IWebPageFieldsSource + { + /// + /// Get product related item. + /// + public IEnumerable RelatedItem { get; } + } +} diff --git a/examples/DancingGoat/Models/WebPage/ProductPage/ProductListItemViewModel.cs b/examples/DancingGoat/Models/WebPage/ProductPage/ProductListItemViewModel.cs new file mode 100644 index 0000000..35d8c22 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/ProductPage/ProductListItemViewModel.cs @@ -0,0 +1,24 @@ +using System.Linq; +using System.Threading.Tasks; + +using CMS.Websites; + +namespace DancingGoat.Models +{ + public record ProductListItemViewModel(string Name, string ImagePath, string Url) + { + public static async Task GetViewModel(IProductPage productPage, IWebPageUrlRetriever urlRetriever, string languageName) + { + var product = productPage.RelatedItem.FirstOrDefault(); + var image = product.ProductFieldsImage.FirstOrDefault(); + + var path = (await urlRetriever.Retrieve(productPage, languageName)).RelativePath; + + return new ProductListItemViewModel( + product.ProductFieldsName, + image?.ImageFile.Url, + path + ); + } + } +} diff --git a/examples/DancingGoat/Models/WebPage/ProductPage/ProductListViewModel.cs b/examples/DancingGoat/Models/WebPage/ProductPage/ProductListViewModel.cs new file mode 100644 index 0000000..3c71a88 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/ProductPage/ProductListViewModel.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace DancingGoat.Models +{ + public record ProductListViewModel(IEnumerable Items, Dictionary Filter) + { + } +} diff --git a/examples/DancingGoat/Models/WebPage/ProductPage/ProductPageRepository.cs b/examples/DancingGoat/Models/WebPage/ProductPage/ProductPageRepository.cs new file mode 100644 index 0000000..f2f12e5 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/ProductPage/ProductPageRepository.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using CMS.ContentEngine; +using CMS.Helpers; +using CMS.Websites; +using CMS.Websites.Routing; + +namespace DancingGoat.Models +{ + /// + /// Represents a collection of product pages. + /// + public class ProductPageRepository : ContentRepositoryBase + { + private readonly IWebPageLinkedItemsDependencyAsyncRetriever webPageLinkedItemsDependencyRetriever; + + + /// + /// Initializes new instance of . + /// + public ProductPageRepository( + IWebsiteChannelContext websiteChannelContext, + IContentQueryExecutor executor, + IProgressiveCache cache, + IWebPageLinkedItemsDependencyAsyncRetriever webPageLinkedItemsDependencyRetriever) + : base(websiteChannelContext, executor, cache) + { + this.webPageLinkedItemsDependencyRetriever = webPageLinkedItemsDependencyRetriever; + } + + + /// + /// Returns list of web pages. + /// + public async Task> GetProducts(string treePath, string languageName, IEnumerable linkedProducts, bool includeSecuredItems = true, CancellationToken cancellationToken = default) + { + if (!linkedProducts.Any()) + { + return Enumerable.Empty(); + } + + var queryBuilder = GetQueryBuilder(treePath, languageName, linkedProducts); + + var options = new ContentQueryExecutionOptions + { + IncludeSecuredItems = includeSecuredItems + }; + + var linkedProductCacheParts = linkedProducts.Select(product => product.ProductFieldsName).Join("|"); + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, treePath, languageName, includeSecuredItems, nameof(IProductPage), linkedProductCacheParts); + + return await GetCachedQueryResult(queryBuilder, options, cacheSettings, GetDependencyCacheKeys, cancellationToken); + } + + + public async Task GetProduct(string contentTypeName, int id, string languageName, bool includeSecuredItems = true, CancellationToken cancellationToken = default) + where ProductPageType : IWebPageFieldsSource, new() + { + var queryBuilder = GetQueryBuilder(id, languageName, contentTypeName); + + var options = new ContentQueryExecutionOptions + { + IncludeSecuredItems = includeSecuredItems + }; + + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(ProductPageType), id, languageName); + + var result = await GetCachedQueryResult(queryBuilder, options, cacheSettings, GetDependencyCacheKeys, cancellationToken); + + return result.FirstOrDefault(); + } + + + private ContentItemQueryBuilder GetQueryBuilder(string treePath, string languageName, IEnumerable linkedProducts) + { + return GetQueryBuilder( + languageName, + config => config + .Linking(nameof(IProductPage.RelatedItem), linkedProducts.Select(linkedProduct => ((IContentItemFieldsSource)linkedProduct).SystemFields.ContentItemID)) + .WithLinkedItems(2) + .ForWebsite(WebsiteChannelContext.WebsiteChannelName, PathMatch.Children(treePath))); + } + + + private static ContentItemQueryBuilder GetQueryBuilder(string languageName, Action configure = null) + { + return new ContentItemQueryBuilder() + .ForContentType(CoffeePage.CONTENT_TYPE_NAME, configure) + .ForContentType(GrinderPage.CONTENT_TYPE_NAME, configure) + .InLanguage(languageName); + } + + + private ContentItemQueryBuilder GetQueryBuilder(int id, string languageName, string contentTypeName) + { + return GetQueryBuilder( + languageName, + contentTypeName, + config => config + .WithLinkedItems(2) + .ForWebsite(WebsiteChannelContext.WebsiteChannelName) + .Where(where => where.WhereEquals(nameof(IWebPageContentQueryDataContainer.WebPageItemID), id))); + } + + + private static ContentItemQueryBuilder GetQueryBuilder(string languageName, string contentTypeName, Action configureQuery = null) + { + return new ContentItemQueryBuilder() + .ForContentType(contentTypeName, configureQuery) + .InLanguage(languageName); + } + + + private async Task> GetDependencyCacheKeys(IEnumerable products, CancellationToken cancellationToken) + where ProductPageType : IWebPageFieldsSource + { + var dependencyCacheKeys = new HashSet(StringComparer.InvariantCultureIgnoreCase); + + foreach (var product in products) + { + dependencyCacheKeys.UnionWith(GetDependencyCacheKeys(product)); + } + + dependencyCacheKeys.UnionWith(await webPageLinkedItemsDependencyRetriever.Get(products.Select(productPage => productPage.SystemFields.WebPageItemID), 1, cancellationToken)); + dependencyCacheKeys.Add(CacheHelper.GetCacheItemName(null, WebsiteChannelInfo.OBJECT_TYPE, "byid", WebsiteChannelContext.WebsiteChannelID)); + + return dependencyCacheKeys; + } + + + private IEnumerable GetDependencyCacheKeys(IWebPageFieldsSource product) + { + if (product == null) + { + return Enumerable.Empty(); + } + + return new List() + { + CacheHelper.BuildCacheItemName(new[] { "webpageitem", "byid", product.SystemFields.WebPageItemID.ToString() }, false), + CacheHelper.BuildCacheItemName(new[] { "webpageitem", "bychannel", WebsiteChannelContext.WebsiteChannelName, "bypath", product.SystemFields.WebPageItemTreePath }, false), + CacheHelper.BuildCacheItemName(new[] { "webpageitem", "bychannel", WebsiteChannelContext.WebsiteChannelName, "childrenofpath", DataHelper.GetParentPath(product.SystemFields.WebPageItemTreePath) }, false), + CacheHelper.GetCacheItemName(null, ContentLanguageInfo.OBJECT_TYPE, "all") + }; + } + } +} diff --git a/examples/DancingGoat/Models/WebPage/ProductsSection/ProductSectionRepository.cs b/examples/DancingGoat/Models/WebPage/ProductsSection/ProductSectionRepository.cs new file mode 100644 index 0000000..f58f027 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/ProductsSection/ProductSectionRepository.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using CMS.ContentEngine; +using CMS.Helpers; +using CMS.Websites; +using CMS.Websites.Routing; + +namespace DancingGoat.Models +{ + public class ProductSectionRepository : ContentRepositoryBase + { + private readonly ILinkedItemsDependencyAsyncRetriever linkedItemsDependencyRetriever; + + + public ProductSectionRepository(IWebsiteChannelContext websiteChannelContext, IContentQueryExecutor executor, IProgressiveCache cache, ILinkedItemsDependencyAsyncRetriever linkedItemsDependencyRetriever) + : base(websiteChannelContext, executor, cache) + { + this.linkedItemsDependencyRetriever = linkedItemsDependencyRetriever; + } + + + public async Task GetProductsSection(int id, string languageName, CancellationToken cancellationToken = default) + { + var queryBuilder = GetQueryBuilder(id, languageName); + + var cacheSettings = new CacheSettings(5, WebsiteChannelContext.WebsiteChannelName, nameof(ProductsSection), id, languageName); + + var result = await GetCachedQueryResult(queryBuilder, null, cacheSettings, GetDependencyCacheKeys, cancellationToken); + + return result.FirstOrDefault(); + } + + + private Task> GetDependencyCacheKeys(IEnumerable productsSection, CancellationToken cancellationToken) + { + var dependencyCacheKeys = new HashSet(StringComparer.InvariantCultureIgnoreCase); + + foreach (var productSection in productsSection) + { + dependencyCacheKeys.UnionWith(GetDependencyCacheKeys(productSection)); + } + + dependencyCacheKeys.Add(CacheHelper.GetCacheItemName(null, WebsiteChannelInfo.OBJECT_TYPE, "byid", WebsiteChannelContext.WebsiteChannelID)); + + return Task.FromResult>(dependencyCacheKeys); + } + + + private static IEnumerable GetDependencyCacheKeys(ProductsSection productsSection) + { + if (productsSection == null) + { + return Enumerable.Empty(); + } + + var cacheKeys = new HashSet(StringComparer.InvariantCultureIgnoreCase) + { + CacheHelper.BuildCacheItemName(new[] { "webpageitem", "byid", productsSection.SystemFields.WebPageItemID.ToString() }, false), + CacheHelper.BuildCacheItemName(new[] { "webpageitem", "byguid", productsSection.SystemFields.WebPageItemGUID.ToString() }, false), + }; + + return cacheKeys; + } + + + private ContentItemQueryBuilder GetQueryBuilder(int id, string languageName) + { + return new ContentItemQueryBuilder() + .ForContentType(ProductsSection.CONTENT_TYPE_NAME, + config => + config + .ForWebsite(WebsiteChannelContext.WebsiteChannelName) + .Where(where => where.WhereEquals(nameof(WebPageFields.WebPageItemID), id)) + .TopN(1)) + .InLanguage(languageName); + } + } +} diff --git a/examples/DancingGoat/Models/WebPage/ProductsSection/ProductsSection.generated.cs b/examples/DancingGoat/Models/WebPage/ProductsSection/ProductsSection.generated.cs new file mode 100644 index 0000000..2948028 --- /dev/null +++ b/examples/DancingGoat/Models/WebPage/ProductsSection/ProductsSection.generated.cs @@ -0,0 +1,37 @@ +//-------------------------------------------------------------------------------------------------- +// +// +// This code was generated by code generator tool. +// +// To customize the code use your own partial class. For more info about how to use and customize +// the generated code see the documentation at https://docs.xperience.io/. +// +// +//-------------------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using CMS.ContentEngine; +using CMS.Websites; + +namespace DancingGoat.Models +{ + /// + /// Represents a page of type . + /// + [RegisterContentTypeMapping(CONTENT_TYPE_NAME)] + public partial class ProductsSection : IWebPageFieldsSource + { + /// + /// Code name of the content type. + /// + public const string CONTENT_TYPE_NAME = "DancingGoat.ProductsSection"; + + + /// + /// Represents system properties for a web page item. + /// + [SystemField] + public WebPageFields SystemFields { get; set; } + } +} \ No newline at end of file diff --git a/examples/DancingGoat/Models/WebPage/SEOSchemaDataRetriever.cs b/examples/DancingGoat/Models/WebPage/SEOSchemaDataRetriever.cs index 4e700e9..29ae013 100644 --- a/examples/DancingGoat/Models/WebPage/SEOSchemaDataRetriever.cs +++ b/examples/DancingGoat/Models/WebPage/SEOSchemaDataRetriever.cs @@ -79,5 +79,42 @@ public static string GetDescriptionValue(object model) return description; } + + + /// + /// Returns value of field from the given model."/> + /// + /// + /// View model must satisfy following requirements:
+ /// - is a page builder page based on class
+ /// - implements
+ /// - implements and its base page implements
+ /// In other cases the method returns false. + ///
+ /// Model + public static bool GetSearchIndexing(object model) + { + bool allowSearchIndexing = false; + + var viewModel = model; + if (viewModel is TemplateViewModel templateViewModel) + { + viewModel = templateViewModel.GetTemplateModel(); + } + + if (viewModel is ISEOFields webPageWithSEO) + { + allowSearchIndexing = webPageWithSEO.SEOFieldsAllowSearchIndexing; + } + else if (viewModel is IWebPageBasedViewModel webPageBasedViewModel) + { + if (webPageBasedViewModel.WebPage is ISEOFields basePageWithSEO) + { + allowSearchIndexing = basePageWithSEO.SEOFieldsAllowSearchIndexing; + } + } + + return allowSearchIndexing; + } } } diff --git a/examples/DancingGoat/Program.cs b/examples/DancingGoat/Program.cs index 21a99f7..8df4846 100644 --- a/examples/DancingGoat/Program.cs +++ b/examples/DancingGoat/Program.cs @@ -1,10 +1,25 @@ -using DancingGoat; +using System; +using System.Threading.Tasks; + +using DancingGoat; using DancingGoat.Models; +using Kentico.Activities.Web.Mvc; +using Kentico.Content.Web.Mvc.Routing; +using Kentico.Membership; +using Kentico.OnlineMarketing.Web.Mvc; +using Kentico.PageBuilder.Web.Mvc; +using Kentico.Web.Mvc; + + +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; using Kentico.Web.Mvc; using Kentico.Content.Web.Mvc.Routing; @@ -15,6 +30,7 @@ var builder = WebApplication.CreateBuilder(args); + builder.Services.AddKentico(features => { features.UsePageBuilder(new PageBuilderOptions @@ -66,6 +82,7 @@ app.UseAuthentication(); + app.UseKentico(); if (env.IsDevelopment()) @@ -141,5 +158,11 @@ static void ConfigureMembershipServices(IServiceCollection services) }; }); + services.Configure(options => + { + // The expiration time span of 8 hours is set for demo purposes only. In production environment, set expiration according to best practices. + options.AuthenticationOptions.ExpireTimeSpan = TimeSpan.FromHours(8); + }); + services.AddAuthorization(); } diff --git a/examples/DancingGoat/README.md b/examples/DancingGoat/README.md index 245eadf..4428c25 100644 --- a/examples/DancingGoat/README.md +++ b/examples/DancingGoat/README.md @@ -24,10 +24,10 @@ If you change the site's content model (add or remove fields, define new content For _reusable field schemas_: ```powershell -dotnet run --no-build -- --kxp-codegen --location "./Models/Schema/" --type ReusableFieldSchemas --include "SEOFields" --namespace "DancingGoat.Models" +dotnet run --no-build -- --kxp-codegen --location "./Models/Schema/" --type ReusableFieldSchemas --namespace "DancingGoat.Models" ``` -This command regenerates the interface for the `SEOFields` reusable schema. Note that the `namespace` must match that of the assigned content types. +This command regenerates the interfaces for all reusable field schemas in the project. Note that the specified `--namespace` must match the namespace where content type code files that reference the schemas are generated. You will get uncompilable code otherwise. For _reusable_ content types: diff --git a/examples/DancingGoat/Readme.txt b/examples/DancingGoat/Readme.txt deleted file mode 100644 index 2f558d0..0000000 --- a/examples/DancingGoat/Readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -This project provides a starting point for developing an Xperience by Kentico website, along with tools and configuration for deploying the site to the SaaS environment. - -For more information visit: -https://docs.xperience.io/x/IgKQC \ No newline at end of file diff --git a/examples/DancingGoat/DataProtectionSamples/DancingGoatSamplesModule.cs b/examples/DancingGoat/Samples/DataProtection/DancingGoatSamplesModule.cs similarity index 79% rename from examples/DancingGoat/DataProtectionSamples/DancingGoatSamplesModule.cs rename to examples/DancingGoat/Samples/DataProtection/DancingGoatSamplesModule.cs index 70c8181..afc4c92 100644 --- a/examples/DancingGoat/DataProtectionSamples/DancingGoatSamplesModule.cs +++ b/examples/DancingGoat/Samples/DataProtection/DancingGoatSamplesModule.cs @@ -30,16 +30,16 @@ internal class DancingGoatSamplesModule : Module { private const string DATA_PROTECTION_SAMPLES_ENABLED_SETTINGS_KEY_NAME = "DataProtectionSamplesEnabled"; - private IContactInfoProvider contactInfoProvider; + private IInfoProvider contactInfoProvider; private IMemberInfoProvider memberInfoProvider; private IInfoProvider consentAgreementInfoProvider; - private IBizFormInfoProvider bizFormInfoProvider; - private IAccountContactInfoProvider accountContactInfoProvider; - private ISettingsKeyInfoProvider settingsKeyInfoProvider; - private IActivityInfoProvider activityInfoProvider; - private ICountryInfoProvider countryInfoProvider; - private IStateInfoProvider stateInfoProvider; - private IAccountInfoProvider accountInfoProvider; + private IInfoProvider bizFormInfoProvider; + private IInfoProvider accountContactInfoProvider; + private IInfoProvider settingsKeyInfoProvider; + private IInfoProvider activityInfoProvider; + private IInfoProvider countryInfoProvider; + private IInfoProvider stateInfoProvider; + private IInfoProvider accountInfoProvider; /// @@ -57,16 +57,16 @@ protected override void OnInit() { base.OnInit(); - contactInfoProvider = Service.Resolve(); + contactInfoProvider = Service.Resolve>(); memberInfoProvider = Service.Resolve(); consentAgreementInfoProvider = Service.Resolve>(); - bizFormInfoProvider = Service.Resolve(); - accountContactInfoProvider = Service.Resolve(); - settingsKeyInfoProvider = Service.Resolve(); - activityInfoProvider = Service.Resolve(); - countryInfoProvider = Service.Resolve(); - stateInfoProvider = Service.Resolve(); - accountInfoProvider = Service.Resolve(); + bizFormInfoProvider = Service.Resolve>(); + accountContactInfoProvider = Service.Resolve>(); + settingsKeyInfoProvider = Service.Resolve>(); + activityInfoProvider = Service.Resolve>(); + countryInfoProvider = Service.Resolve>(); + stateInfoProvider = Service.Resolve>(); + accountInfoProvider = Service.Resolve>(); InitializeSamples(); } @@ -107,7 +107,7 @@ internal void RegisterSamples() accountContactInfoProvider, accountInfoProvider, bizFormInfoProvider)); PersonalDataCollectorRegister.Instance.Add(new SampleMemberDataCollector()); - PersonalDataEraserRegister.Instance.Add(new SampleContactPersonalDataEraser(consentAgreementInfoProvider, bizFormInfoProvider, accountContactInfoProvider, contactInfoProvider)); + PersonalDataEraserRegister.Instance.Add(new SampleContactPersonalDataEraser(consentAgreementInfoProvider, bizFormInfoProvider, accountContactInfoProvider, contactInfoProvider, activityInfoProvider)); PersonalDataEraserRegister.Instance.Add(new SampleMemberPersonalDataEraser(memberInfoProvider)); RegisterConsentRevokeHandler(); @@ -121,7 +121,7 @@ internal void DeleteContactActivities(ContactInfo contact) { "deleteActivities", true } }; - new SampleContactPersonalDataEraser(consentAgreementInfoProvider, bizFormInfoProvider, accountContactInfoProvider, contactInfoProvider) + new SampleContactPersonalDataEraser(consentAgreementInfoProvider, bizFormInfoProvider, accountContactInfoProvider, contactInfoProvider, activityInfoProvider) .Erase(new[] { contact }, configuration); } diff --git a/examples/DancingGoat/DataProtectionSamples/IdentityCollectors/SampleContactInfoIdentityCollector.cs b/examples/DancingGoat/Samples/DataProtection/IdentityCollectors/SampleContactInfoIdentityCollector.cs similarity index 91% rename from examples/DancingGoat/DataProtectionSamples/IdentityCollectors/SampleContactInfoIdentityCollector.cs rename to examples/DancingGoat/Samples/DataProtection/IdentityCollectors/SampleContactInfoIdentityCollector.cs index b546b27..40ed5be 100644 --- a/examples/DancingGoat/DataProtectionSamples/IdentityCollectors/SampleContactInfoIdentityCollector.cs +++ b/examples/DancingGoat/Samples/DataProtection/IdentityCollectors/SampleContactInfoIdentityCollector.cs @@ -12,14 +12,14 @@ namespace Samples.DancingGoat /// internal class SampleContactInfoIdentityCollector : IIdentityCollector { - private readonly IContactInfoProvider contactInfoProvider; + private readonly IInfoProvider contactInfoProvider; /// /// Initializes a new instance of the class. /// /// Contact info provider. - public SampleContactInfoIdentityCollector(IContactInfoProvider contactInfoProvider) + public SampleContactInfoIdentityCollector(IInfoProvider contactInfoProvider) { this.contactInfoProvider = contactInfoProvider; } diff --git a/examples/DancingGoat/DataProtectionSamples/IdentityCollectors/SampleMemberInfoIdentityCollector.cs b/examples/DancingGoat/Samples/DataProtection/IdentityCollectors/SampleMemberInfoIdentityCollector.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/IdentityCollectors/SampleMemberInfoIdentityCollector.cs rename to examples/DancingGoat/Samples/DataProtection/IdentityCollectors/SampleMemberInfoIdentityCollector.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/CollectedColumn.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/CollectedColumn.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/CollectedColumn.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/CollectedColumn.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleContactDataCollector.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleContactDataCollector.cs similarity index 80% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleContactDataCollector.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleContactDataCollector.cs index 11612bb..47fcdb7 100644 --- a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleContactDataCollector.cs +++ b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleContactDataCollector.cs @@ -14,13 +14,13 @@ namespace Samples.DancingGoat /// internal class SampleContactDataCollector : IPersonalDataCollector { - private readonly IActivityInfoProvider activityInfoProvider; - private readonly ICountryInfoProvider countryInfoProvider; - private readonly IStateInfoProvider stateInfoProvider; + private readonly IInfoProvider activityInfoProvider; + private readonly IInfoProvider countryInfoProvider; + private readonly IInfoProvider stateInfoProvider; private readonly IInfoProvider consentAgreementInfoProvider; - private readonly IAccountContactInfoProvider accountContactInfoProvider; - private readonly IAccountInfoProvider accountInfoProvider; - private readonly IBizFormInfoProvider bizFormInfoProvider; + private readonly IInfoProvider accountContactInfoProvider; + private readonly IInfoProvider accountInfoProvider; + private readonly IInfoProvider bizFormInfoProvider; /// @@ -34,13 +34,13 @@ internal class SampleContactDataCollector : IPersonalDataCollector /// Account info provider. /// BizForm info provider. public SampleContactDataCollector( - IActivityInfoProvider activityInfoProvider, - ICountryInfoProvider countryInfoProvider, - IStateInfoProvider stateInfoProvider, + IInfoProvider activityInfoProvider, + IInfoProvider countryInfoProvider, + IInfoProvider stateInfoProvider, IInfoProvider consentAgreementInfoProvider, - IAccountContactInfoProvider accountContactInfoProvider, - IAccountInfoProvider accountInfoProvider, - IBizFormInfoProvider bizFormInfoProvider) + IInfoProvider accountContactInfoProvider, + IInfoProvider accountInfoProvider, + IInfoProvider bizFormInfoProvider) { this.activityInfoProvider = activityInfoProvider; this.countryInfoProvider = countryInfoProvider; diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleContactDataCollectorCore.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleContactDataCollectorCore.cs similarity index 97% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleContactDataCollectorCore.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleContactDataCollectorCore.cs index 0cf1b6b..6e78567 100644 --- a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleContactDataCollectorCore.cs +++ b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleContactDataCollectorCore.cs @@ -20,13 +20,13 @@ namespace Samples.DancingGoat internal class SampleContactDataCollectorCore { private readonly IPersonalDataWriter writer; - private readonly IActivityInfoProvider activityInfoProvider; - private readonly ICountryInfoProvider countryInfoProvider; - private readonly IStateInfoProvider stateInfoProvider; + private readonly IInfoProvider activityInfoProvider; + private readonly IInfoProvider countryInfoProvider; + private readonly IInfoProvider stateInfoProvider; private readonly IInfoProvider consentAgreementInfoProvider; - private readonly IAccountContactInfoProvider accountContactInfoProvider; - private readonly IAccountInfoProvider accountInfoProvider; - private readonly IBizFormInfoProvider bizFormInfoProvider; + private readonly IInfoProvider accountContactInfoProvider; + private readonly IInfoProvider accountInfoProvider; + private readonly IInfoProvider bizFormInfoProvider; // Lists store Tuples of database column names and their corresponding display names. private readonly List contactInfoColumns = new List { @@ -325,13 +325,13 @@ private object TransformConsentAction(string columnName, object columnValue) /// BizForm info provider. public SampleContactDataCollectorCore( IPersonalDataWriter writer, - IActivityInfoProvider activityInfoProvider, - ICountryInfoProvider countryInfoProvider, - IStateInfoProvider stateInfoProvider, + IInfoProvider activityInfoProvider, + IInfoProvider countryInfoProvider, + IInfoProvider stateInfoProvider, IInfoProvider consentAgreementInfoProvider, - IAccountContactInfoProvider accountContactInfoProvider, - IAccountInfoProvider accountInfoProvider, - IBizFormInfoProvider bizFormInfoProvider) + IInfoProvider accountContactInfoProvider, + IInfoProvider accountInfoProvider, + IInfoProvider bizFormInfoProvider) { this.writer = writer; this.activityInfoProvider = activityInfoProvider; diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleMemberDataCollector.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleMemberDataCollector.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleMemberDataCollector.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleMemberDataCollector.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleMemberDataCollectorCore.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleMemberDataCollectorCore.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/SampleMemberDataCollectorCore.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/SampleMemberDataCollectorCore.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/Writers/HumanReadablePersonalDataWriter.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/Writers/HumanReadablePersonalDataWriter.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/Writers/HumanReadablePersonalDataWriter.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/Writers/HumanReadablePersonalDataWriter.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/Writers/IPersonalDataWriter.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/Writers/IPersonalDataWriter.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/Writers/IPersonalDataWriter.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/Writers/IPersonalDataWriter.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/Writers/XmlPersonalDataWriter.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/Writers/XmlPersonalDataWriter.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataCollectors/Writers/XmlPersonalDataWriter.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataCollectors/Writers/XmlPersonalDataWriter.cs diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataErasers/SampleContactPersonalDataEraser.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataErasers/SampleContactPersonalDataEraser.cs similarity index 90% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataErasers/SampleContactPersonalDataEraser.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataErasers/SampleContactPersonalDataEraser.cs index ffcdb7b..c5a73f0 100644 --- a/examples/DancingGoat/DataProtectionSamples/PersonalDataErasers/SampleContactPersonalDataEraser.cs +++ b/examples/DancingGoat/Samples/DataProtection/PersonalDataErasers/SampleContactPersonalDataEraser.cs @@ -36,9 +36,10 @@ internal class SampleContactPersonalDataEraser : IPersonalDataEraser }; private readonly IInfoProvider consentAgreementInfoProvider; - private readonly IBizFormInfoProvider bizFormInfoProvider; - private readonly IAccountContactInfoProvider accountContactInfoProvider; - private readonly IContactInfoProvider contactInfoProvider; + private readonly IInfoProvider bizFormInfoProvider; + private readonly IInfoProvider accountContactInfoProvider; + private readonly IInfoProvider contactInfoProvider; + private readonly IInfoProvider activityInfoProvider; /// @@ -48,16 +49,19 @@ internal class SampleContactPersonalDataEraser : IPersonalDataEraser /// BizForm info provider. /// Account contact info provider. /// Contact info provider. + /// Activity info provider. public SampleContactPersonalDataEraser( IInfoProvider consentAgreementInfoProvider, - IBizFormInfoProvider bizFormInfoProvider, - IAccountContactInfoProvider accountContactInfoProvider, - IContactInfoProvider contactInfoProvider) + IInfoProvider bizFormInfoProvider, + IInfoProvider accountContactInfoProvider, + IInfoProvider contactInfoProvider, + IInfoProvider activityInfoProvider) { this.consentAgreementInfoProvider = consentAgreementInfoProvider; this.bizFormInfoProvider = bizFormInfoProvider; this.accountContactInfoProvider = accountContactInfoProvider; this.contactInfoProvider = contactInfoProvider; + this.activityInfoProvider = activityInfoProvider; } @@ -119,7 +123,7 @@ private void DeleteSubmittedFormsActivities(ICollection contactIds, IDictio if (configuration.TryGetValue("DeleteSubmittedFormsActivities", out object deleteSubmittedFormsActivities) && ValidationHelper.GetBoolean(deleteSubmittedFormsActivities, false)) { - ActivityInfoProvider.ProviderObject.BulkDelete(new WhereCondition().WhereEquals("ActivityType", PredefinedActivityType.BIZFORM_SUBMIT) + activityInfoProvider.BulkDelete(new WhereCondition().WhereEquals("ActivityType", PredefinedActivityType.BIZFORM_SUBMIT) .WhereIn("ActivityContactID", contactIds)); } } @@ -173,7 +177,7 @@ private void DeleteActivities(List contactIds, IDictionary if (configuration.TryGetValue("deleteActivities", out object deleteActivities) && ValidationHelper.GetBoolean(deleteActivities, false)) { - ActivityInfoProvider.ProviderObject.BulkDelete(new WhereCondition().WhereIn("ActivityContactID", contactIds)); + activityInfoProvider.BulkDelete(new WhereCondition().WhereIn("ActivityContactID", contactIds)); } } diff --git a/examples/DancingGoat/DataProtectionSamples/PersonalDataErasers/SampleMemberPersonalDataEraser.cs b/examples/DancingGoat/Samples/DataProtection/PersonalDataErasers/SampleMemberPersonalDataEraser.cs similarity index 100% rename from examples/DancingGoat/DataProtectionSamples/PersonalDataErasers/SampleMemberPersonalDataEraser.cs rename to examples/DancingGoat/Samples/DataProtection/PersonalDataErasers/SampleMemberPersonalDataEraser.cs diff --git a/examples/DancingGoat/Samples/EmailActivityTracking/EmailActivityTrackingEvaluator.cs b/examples/DancingGoat/Samples/EmailActivityTracking/EmailActivityTrackingEvaluator.cs new file mode 100644 index 0000000..6473870 --- /dev/null +++ b/examples/DancingGoat/Samples/EmailActivityTracking/EmailActivityTrackingEvaluator.cs @@ -0,0 +1,49 @@ +using System.Threading.Tasks; + +using CMS.ContactManagement; +using CMS.DataEngine; +using CMS.DataProtection; +using CMS.EmailLibrary; + +using DancingGoat.Helpers.Generator; + +using Kentico.OnlineMarketing.Web.Mvc; + +namespace Samples.DancingGoat; + +/// +/// Example implementation of . +/// It uses consent generated by the data protection (GDPR) demo. To make it work, +/// you need to visit Sample data generator application and generate the data. +/// Without the consent, email activity tracking is disabled. +/// +public class EmailActivityTrackingEvaluator : IEmailActivityTrackingEvaluator +{ + private readonly IConsentAgreementService consentAgreementService; + private readonly IInfoProvider consentInfoProvider; + + + /// + /// Initializes an instance of the class. + /// + public EmailActivityTrackingEvaluator(IConsentAgreementService consentAgreementService, IInfoProvider consentInfoProvider) + { + this.consentAgreementService = consentAgreementService; + this.consentInfoProvider = consentInfoProvider; + } + + + /// + /// Determines whether the email activities can be tracked for the contact. + /// + /// Contact info of the recipient. + /// Email configuration info. + /// True if the contact has agreed to tracking by giving consent. + /// The consent is generated by . + public async Task IsTrackingAllowed(ContactInfo contact, EmailConfigurationInfo emailConfiguration) + { + var consent = await consentInfoProvider.GetAsync(TrackingConsentGenerator.CONSENT_NAME); + + return consent is not null && consentAgreementService.IsAgreed(contact, consent); + } +} diff --git a/examples/DancingGoat/Services/IServiceCollectionExtensions.cs b/examples/DancingGoat/Services/IServiceCollectionExtensions.cs index 97d96a3..3abf54e 100644 --- a/examples/DancingGoat/Services/IServiceCollectionExtensions.cs +++ b/examples/DancingGoat/Services/IServiceCollectionExtensions.cs @@ -1,8 +1,12 @@ using DancingGoat.Models; using DancingGoat.ViewComponents; +using Kentico.OnlineMarketing.Web.Mvc; + using Microsoft.Extensions.DependencyInjection; +using Samples.DancingGoat; + namespace DancingGoat { public static class IServiceCollectionExtensions @@ -16,6 +20,7 @@ public static void AddDancingGoatServices(this IServiceCollection services) AddRepositories(services); services.AddSingleton(); + services.AddSingleton(); } @@ -27,13 +32,15 @@ private static void AddRepositories(IServiceCollection services) services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); } diff --git a/examples/DancingGoat/StorageInitializationModule.cs b/examples/DancingGoat/StorageInitializationModule.cs deleted file mode 100644 index ef500f9..0000000 --- a/examples/DancingGoat/StorageInitializationModule.cs +++ /dev/null @@ -1,94 +0,0 @@ -using CMS; -using CMS.Core; -using CMS.DataEngine; -using CMS.IO; - -using DancingGoat; - -using Kentico.Xperience.AzureStorage; - -// Registers the storage module into the system -[assembly: RegisterModule(typeof(StorageInitializationModule))] - -namespace DancingGoat -{ - public class StorageInitializationModule : Module - { - /// - /// Local directory used for deployment of blob storage contents. - /// - private const string LOCAL_STORAGE_ASSETS_DIRECTORY_NAME = "$StorageAssets"; - - - /// - /// Default container name within the blob storage. - /// - private const string CONTAINER_NAME = "default"; - - - private IWebHostEnvironment mEnvironment; - - - /// - /// Gets the web hosting environment information. - /// - public IWebHostEnvironment Environment - { - get - { - return mEnvironment ??= Service.Resolve(); - } - } - - - // Module class constructor, the system registers the module - public StorageInitializationModule() - : base(nameof(StorageInitializationModule)) - { - } - - - // Contains initialization code that is executed when the application starts - protected override void OnInit() - { - base.OnInit(); - - if (Environment.IsProduction()) - { - // Maps the assets directory (e.g. media files) to the Azure storage provider - MapAzureStoragePath($"~/assets/"); - MapAzureStoragePath($"~/BizFormFiles"); - } - else - { - // Maps contents of the assets directory which are not handled by the CD tool (media files) - // to the dedicated local folder. - MapLocalStoragePath($"~/assets/media"); - } - } - - - private void MapAzureStoragePath(string path) - { - // Creates a new StorageProvider instance for Azure - var provider = AzureStorageProvider.Create(); - - // Specifies the target container - provider.CustomRootPath = CONTAINER_NAME; - provider.PublicExternalFolderObject = false; - - StorageHelper.MapStoragePath(path, provider); - } - - - private void MapLocalStoragePath(string path) - { - // Creates a new StorageProvider instance for local storage - var provider = StorageProvider.CreateFileSystemStorageProvider(); - - provider.CustomRootPath = $"{LOCAL_STORAGE_ASSETS_DIRECTORY_NAME}/{CONTAINER_NAME}"; - - StorageHelper.MapStoragePath(path, provider); - } - } -} diff --git a/examples/DancingGoat/Views/DancingGoatCoffee/Detail.cshtml b/examples/DancingGoat/Views/DancingGoatCoffee/Detail.cshtml new file mode 100644 index 0000000..bf29fe6 --- /dev/null +++ b/examples/DancingGoat/Views/DancingGoatCoffee/Detail.cshtml @@ -0,0 +1,41 @@ +@using DancingGoat.Models + +@model CoffeeDetailViewModel; + +@{ + ViewData["PageClass"] = "inverted"; + ViewData["Title"] = Model.Name; +} + +
+
+
+
+

@Model.Name

+
+
+
+ +
+ @foreach (var item in Model.Processing.Union(Model.Tastes)) + { +
+ @item.Title +
+ } +
+ +
+
+ @if (!string.IsNullOrEmpty(Model.ImageUrl)) + { +
+ @Model.Name +
+ } +
+ @Html.Raw(Model.Description) +
+
+
+
\ No newline at end of file diff --git a/examples/DancingGoat/Views/DancingGoatContacts/Index.cshtml b/examples/DancingGoat/Views/DancingGoatContacts/Index.cshtml index 56f62cb..a63b088 100644 --- a/examples/DancingGoat/Views/DancingGoatContacts/Index.cshtml +++ b/examples/DancingGoat/Views/DancingGoatContacts/Index.cshtml @@ -30,14 +30,12 @@ @foreach (var cafe in @Model.CompanyCafes) {
-
+

@cafe.Name

- - @cafe.Street, @cafe.City
- @cafe.Country -
+ @cafe.Street, @cafe.City
+ @cafe.Country

@cafe.Phone

@@ -45,4 +43,15 @@
}
+ +

@HtmlLocalizer["Other places where you can drink our coffee"]

+
+ @foreach (var partnerCafe in Model.PartnerCafes) + { +

@partnerCafe.City, @partnerCafe.Country

+

+ @partnerCafe.Name, @partnerCafe.Street, @partnerCafe.Phone +

+ } +
\ No newline at end of file diff --git a/examples/DancingGoat/Views/DancingGoatGrinder/Detail.cshtml b/examples/DancingGoat/Views/DancingGoatGrinder/Detail.cshtml new file mode 100644 index 0000000..67c293f --- /dev/null +++ b/examples/DancingGoat/Views/DancingGoatGrinder/Detail.cshtml @@ -0,0 +1,41 @@ +@using DancingGoat.Models + +@model GrinderDetailViewModel; + +@{ + ViewData["PageClass"] = "inverted"; + ViewData["Title"] = Model.Name; +} + +
+
+
+
+

@Model.Name

+
+
+
+ +
+ @foreach (var item in Model.Manufacturers.Union(Model.Type)) + { +
+ @item.Title +
+ } +
+ +
+
+ @if (!string.IsNullOrEmpty(Model.ImageUrl)) + { +
+ @Model.Name +
+ } +
+ @Html.Raw(Model.Description) +
+
+
+
\ No newline at end of file diff --git a/examples/DancingGoat/Views/DancingGoatProduct/Filter.cshtml b/examples/DancingGoat/Views/DancingGoatProduct/Filter.cshtml new file mode 100644 index 0000000..3c00982 --- /dev/null +++ b/examples/DancingGoat/Views/DancingGoatProduct/Filter.cshtml @@ -0,0 +1,15 @@ +@using DancingGoat.Models + +@model Dictionary + +
+ @Html.Kentico().PageData() + + @foreach (var key in Model.Keys) + { +

@HtmlLocalizer[Model[key].Name]

+ @Html.HiddenFor(m => Model[key].Name) + @Html.HiddenFor(m => Model[key].CodeName) + @Html.EditorFor(model => model[key].Tags) + } +
\ No newline at end of file diff --git a/examples/DancingGoat/Views/DancingGoatProduct/Index.cshtml b/examples/DancingGoat/Views/DancingGoatProduct/Index.cshtml new file mode 100644 index 0000000..ef6134c --- /dev/null +++ b/examples/DancingGoat/Views/DancingGoatProduct/Index.cshtml @@ -0,0 +1,29 @@ +@using DancingGoat.Models + +@model ProductListViewModel + +@{ + ViewData["PageClass"] = "inverted"; +} + +
+
+
+ + +
+ +
+
+
+
+ +@section Scripts { + + + +} \ No newline at end of file diff --git a/examples/DancingGoat/Views/DancingGoatProduct/ProductsList.cshtml b/examples/DancingGoat/Views/DancingGoatProduct/ProductsList.cshtml new file mode 100644 index 0000000..c2b1902 --- /dev/null +++ b/examples/DancingGoat/Views/DancingGoatProduct/ProductsList.cshtml @@ -0,0 +1,18 @@ +@using DancingGoat.Models + +@model IEnumerable + +@if (Model.Any()) +{ + foreach (var product in Model) + { + +
+ @Html.DisplayFor(m => product, "ProductListItem") +
+ } +} +else +{ + +} \ No newline at end of file diff --git a/examples/DancingGoat/Views/Shared/DisplayTemplates/ProductListItem.cshtml b/examples/DancingGoat/Views/Shared/DisplayTemplates/ProductListItem.cshtml new file mode 100644 index 0000000..27684d0 --- /dev/null +++ b/examples/DancingGoat/Views/Shared/DisplayTemplates/ProductListItem.cshtml @@ -0,0 +1,15 @@ +@using DancingGoat.Models + +@model ProductListItemViewModel + + \ No newline at end of file diff --git a/examples/DancingGoat/Views/Shared/EditorTemplates/TagViewModel.cshtml b/examples/DancingGoat/Views/Shared/EditorTemplates/TagViewModel.cshtml new file mode 100644 index 0000000..f7022bd --- /dev/null +++ b/examples/DancingGoat/Views/Shared/EditorTemplates/TagViewModel.cshtml @@ -0,0 +1,10 @@ +@using DancingGoat.Models + +@model TagViewModel + +@Html.HiddenFor(m => Model.Value) +@Html.HiddenFor(m => Model.Name) + + + + \ No newline at end of file diff --git a/examples/DancingGoat/Views/Shared/_DancingGoatLayout.cshtml b/examples/DancingGoat/Views/Shared/_DancingGoatLayout.cshtml index 3154812..31201d1 100644 --- a/examples/DancingGoat/Views/Shared/_DancingGoatLayout.cshtml +++ b/examples/DancingGoat/Views/Shared/_DancingGoatLayout.cshtml @@ -47,6 +47,10 @@ + @if (!SEOSchemaModelDataRetriever.GetSearchIndexing(Model)) + { + + } @if (!string.IsNullOrEmpty(description)) { diff --git a/examples/DancingGoat/Views/Shared/_LandingPageLayout.cshtml b/examples/DancingGoat/Views/Shared/_LandingPageLayout.cshtml index b48dd9c..e19f04d 100644 --- a/examples/DancingGoat/Views/Shared/_LandingPageLayout.cshtml +++ b/examples/DancingGoat/Views/Shared/_LandingPageLayout.cshtml @@ -23,6 +23,10 @@ + @if (!SEOSchemaModelDataRetriever.GetSearchIndexing(Model.GetTemplateModel())) + { + + } @if (!string.IsNullOrEmpty(description)) { @@ -31,6 +35,7 @@ @title + @Html.Kentico().ActivityLoggingScriptV2()
diff --git a/examples/DancingGoat/Views/_ViewImports.cshtml b/examples/DancingGoat/Views/_ViewImports.cshtml index f0ab235..dd9ae51 100644 --- a/examples/DancingGoat/Views/_ViewImports.cshtml +++ b/examples/DancingGoat/Views/_ViewImports.cshtml @@ -13,6 +13,5 @@ @addTagHelper *, Kentico.Content.Web.Mvc @addTagHelper *, Kentico.Web.Mvc @addTagHelper *, DancingGoat -@addTagHelper *, CloudWebSite -@inject IHtmlLocalizer HtmlLocalizer \ No newline at end of file +@inject IHtmlLocalizer HtmlLocalizer diff --git a/examples/DancingGoat/assets/ContentItems/1e/1efd72c9-f3ff-4fbf-ac90-f18b7fe7b40e/cc721195-df8f-4799-b974-5ade63036cab/510968cb-ef94-433c-ac43-2ae7679e92d4.jpg b/examples/DancingGoat/assets/ContentItems/1e/1efd72c9-f3ff-4fbf-ac90-f18b7fe7b40e/cc721195-df8f-4799-b974-5ade63036cab/510968cb-ef94-433c-ac43-2ae7679e92d4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e904d39b4fa70793597b78ce97abc62cac926d4c GIT binary patch literal 23639 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 R`$FiKDPaE}*5EfD{Qga~OtWH6*`X+S|q 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 R+y8&}hlR#J?E1d%`wy9d+~xoP literal 0 HcmV?d00001 diff --git a/examples/DancingGoat/assets/ContentItems/dd/dde0b153-206f-4adc-924a-8d6e16a7df9e/cc721195-df8f-4799-b974-5ade63036cab/6af2458f-e1b7-4d0c-b0aa-769f0e677551.jpg b/examples/DancingGoat/assets/ContentItems/dd/dde0b153-206f-4adc-924a-8d6e16a7df9e/cc721195-df8f-4799-b974-5ade63036cab/6af2458f-e1b7-4d0c-b0aa-769f0e677551.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5eacfdc2d71eec1569c9e9a960d88ed3b7e6466 GIT binary patch literal 25422 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 R+y8&}hlR#J?E1d%`wy9d+~xoP literal 0 HcmV?d00001 diff --git a/examples/DancingGoat/assets/ContentItems/fe/fe59453e-5e59-422f-97b7-0da25ac54354/cc721195-df8f-4799-b974-5ade63036cab/c7037ecc-202b-423a-bce7-12d010eb7c2f.jpg b/examples/DancingGoat/assets/ContentItems/fe/fe59453e-5e59-422f-97b7-0da25ac54354/cc721195-df8f-4799-b974-5ade63036cab/c7037ecc-202b-423a-bce7-12d010eb7c2f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f99a72bfe4bc79588fd6cddb4dbf94390509c722 GIT binary patch literal 21768 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 R`$FiKDPaE}*5EfD{Q div.flex { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + } +} + +.product-list { + .ContentLabel { + display: block; + margin-left: 1rem; + margin-top: 0.5rem; + } +} diff --git a/examples/DancingGoat/wwwroot/Content/Styles/Site.css b/examples/DancingGoat/wwwroot/Content/Styles/Site.css index bd2ee66..12270fc 100644 --- a/examples/DancingGoat/wwwroot/Content/Styles/Site.css +++ b/examples/DancingGoat/wwwroot/Content/Styles/Site.css @@ -1,4 +1,4 @@ -/* http://meyerweb.com/eric/tools/css/reset/ +/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ @@ -5089,6 +5089,355 @@ li.dropdown a { padding: 1rem 2.5rem; } } +/*# Image #*/ +.product-tile-image { + overflow: hidden; + text-align: center; + position: relative; + display: block; + margin: 0.5rem; + padding-top: 15%; + padding-bottom: 25%; +} +.product-tile-image img { + height: auto; + width: 100%; +} +.product-tile-info { + padding: 1.25rem; + position: absolute; + bottom: 0; +} +/*# Product list page #*/ +.product-page { + margin-top: 1.25rem; +} +.product-tile { + overflow: hidden; + border: 1px solid #E5E5E5; + margin: 0 0 -2px -2px; + background: #ffffff; +} +.product-tile .product-heading { + text-align: center; + font-size: 1rem; + font-weight: normal; + font-family: 'Source Sans Pro', sans-serif; + z-index: 1; + position: absolute; + display: block; + margin: auto; + width: 100%; + padding: 1.25rem; +} +.product-tile a { + color: #000; + text-decoration: none; +} +/*# Product #*/ +.product-detail header { + text-align: left; +} +.product-detail header h2 { + margin-top: 1.5rem; + font-size: 2rem; +} +.product-detail .description { + margin-top: 1.25rem; +} +/*# Image #*/ +.product-detail .image { + border: 1px solid #e5e5e5; + margin: 0 0 1.25rem -2px; + text-align: center; +} +.product-detail .image img { + max-width: 100%; + height: auto; + margin: auto; +} +.product-detail .tag-row { + display: flex; + flex-direction: row; + padding-bottom: 24px; + gap: 12px; +} +.product-detail .tag-row .tag { + padding: 8px 16px; + border-radius: 8px; + background: #846331; + color: #FFF; + letter-spacing: 0.4px; +} +.product-filter { + background-color: #F0E8DD; + padding: 1rem; +} +.product-filter h4:first-of-type { + margin-top: 0px; +} +.product-filter label { + padding-left: 0.25rem; +} +.product-filter input[type="checkbox"] { + margin: 0; + padding: 0; +} +@media (min-width: 768px) { + .product-page > div.flex { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + } +} +.product-list .ContentLabel { + display: block; + margin-left: 1rem; + margin-top: 0.5rem; +} +.radio, +.ktc-radio, +.checkbox, +.ktc-checkbox { + display: block; +} +.radio label, +.ktc-radio label, +.checkbox label, +.ktc-checkbox label { + display: inline-block; + cursor: pointer; + position: relative; + padding-left: 24px; + line-height: 20px; + font-weight: normal; +} +.radio label:before, +.ktc-radio label:before, +.checkbox label:before, +.ktc-checkbox label:before, +.radio label:after, +.ktc-radio label:after, +.checkbox label:after, +.ktc-checkbox label:after { + content: ""; + width: 15px; + height: 15px; + line-height: 16px; + display: inline-block; + box-sizing: border-box; + position: absolute; + left: 0; + top: 2px; + background-color: #ffffff; +} +.radio label:after, +.ktc-radio label:after, +.checkbox label:after, +.ktc-checkbox label:after { + background-color: transparent; +} +.radio input, +.ktc-radio input, +.checkbox input, +.ktc-checkbox input { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.radio input[disabled] + label, +.ktc-radio input[disabled] + label, +.checkbox input[disabled] + label, +.ktc-checkbox input[disabled] + label, +.radio input:active[disabled] + label, +.ktc-radio input:active[disabled] + label, +.checkbox input:active[disabled] + label, +.ktc-checkbox input:active[disabled] + label { + cursor: not-allowed; +} +.radio input[disabled] + label:before, +.ktc-radio input[disabled] + label:before, +.checkbox input[disabled] + label:before, +.ktc-checkbox input[disabled] + label:before, +.radio input:active[disabled] + label:before, +.ktc-radio input:active[disabled] + label:before, +.checkbox input:active[disabled] + label:before, +.ktc-checkbox input:active[disabled] + label:before, +.radio input[disabled] + label:focus:before, +.ktc-radio input[disabled] + label:focus:before, +.checkbox input[disabled] + label:focus:before, +.ktc-checkbox input[disabled] + label:focus:before, +.radio input:active[disabled] + label:focus:before, +.ktc-radio input:active[disabled] + label:focus:before, +.checkbox input:active[disabled] + label:focus:before, +.ktc-checkbox input:active[disabled] + label:focus:before, +.radio input[disabled] + label:active:before, +.ktc-radio input[disabled] + label:active:before, +.checkbox input[disabled] + label:active:before, +.ktc-checkbox input[disabled] + label:active:before, +.radio input:active[disabled] + label:active:before, +.ktc-radio input:active[disabled] + label:active:before, +.checkbox input:active[disabled] + label:active:before, +.ktc-checkbox input:active[disabled] + label:active:before { + color: #e5e5e5; +} +.radio input[disabled] + label:after, +.ktc-radio input[disabled] + label:after, +.checkbox input[disabled] + label:after, +.ktc-checkbox input[disabled] + label:after, +.radio input:active[disabled] + label:after, +.ktc-radio input:active[disabled] + label:after, +.checkbox input:active[disabled] + label:after, +.ktc-checkbox input:active[disabled] + label:after { + color: #696663; +} +.radio input + label:before, +.ktc-radio input + label:before, +.checkbox input + label:before, +.ktc-checkbox input + label:before, +.radio input + label:after, +.ktc-radio input + label:after, +.checkbox input + label:after, +.ktc-checkbox input + label:after { + font-family: "Core-icons"; + font-size: 16px; + text-align: center; +} +.radio input + label:before, +.ktc-radio input + label:before, +.checkbox input + label:before, +.ktc-checkbox input + label:before { + color: #bdbbbb; +} +.radio input + label:after, +.ktc-radio input + label:after, +.checkbox input + label:after, +.ktc-checkbox input + label:after { + color: #497d04; +} +.radio input:focus + label:before, +.ktc-radio input:focus + label:before, +.checkbox input:focus + label:before, +.ktc-checkbox input:focus + label:before, +.radio input:active + label:before, +.ktc-radio input:active + label:before, +.checkbox input:active + label:before, +.ktc-checkbox input:active + label:before { + color: #1175ae; +} +.Safari .checkbox label:after, +.Safari .ktc-checkbox label:after { + height: 16px; +} +.Chrome .checkbox label:before, +.Chrome .ktc-checkbox label:before, +.Chrome .checkbox label:after, +.Chrome .ktc-checkbox label:after { + height: 16px; +} +.radio input ~ label:before, +.ktc-radio input ~ label:before { + content: "\e626"; +} +.radio input:disabled ~ label:before, +.ktc-radio input:disabled ~ label:before { + content: "\e6ac"; +} +.radio input:checked ~ label:after, +.ktc-radio input:checked ~ label:after { + content: "\e627"; +} +.radio label:before, +.ktc-radio label:before { + border-radius: 50%; +} +.checkbox input ~ label:before, +.ktc-checkbox input ~ label:before { + content: "\e6ad"; +} +.checkbox input:disabled ~ label:before, +.ktc-checkbox input:disabled ~ label:before { + content: "\e6f0"; +} +.checkbox input:checked ~ label:after, +.ktc-checkbox input:checked ~ label:after { + content: "\e6b0"; +} +.checkbox:not(.checkbox-no-label) label, +.ktc-checkbox:not(.checkbox-no-label) label, +.checkbox:not(.ktc-checkbox-no-label) label, +.ktc-checkbox:not(.ktc-checkbox-no-label) label { + margin-right: 8px; +} +.radio-list-vertical, +.ktc-radio-list-vertical, +.checkbox-list-vertical, +.ktc-checkbox-list-vertical { + margin-top: 6px; + margin-right: 8px; +} +.radio-list-vertical label:not(:first-of-type), +.ktc-radio-list-vertical label:not(:first-of-type), +.checkbox-list-vertical label:not(:first-of-type), +.ktc-checkbox-list-vertical label:not(:first-of-type), +.radio-list-vertical span:not(:first-of-type) label, +.ktc-radio-list-vertical span:not(:first-of-type) label, +.checkbox-list-vertical span:not(:first-of-type) label, +.ktc-checkbox-list-vertical span:not(:first-of-type) label, +.radio-list-vertical .radio + .radio, +.ktc-radio-list-vertical .radio + .radio, +.checkbox-list-vertical .radio + .radio, +.ktc-checkbox-list-vertical .radio + .radio, +.radio-list-vertical .ktc-radio + .ktc-radio, +.ktc-radio-list-vertical .ktc-radio + .ktc-radio, +.checkbox-list-vertical .ktc-radio + .ktc-radio, +.ktc-checkbox-list-vertical .ktc-radio + .ktc-radio, +.radio-list-vertical .checkbox + .checkbox, +.ktc-radio-list-vertical .checkbox + .checkbox, +.checkbox-list-vertical .checkbox + .checkbox, +.ktc-checkbox-list-vertical .checkbox + .checkbox, +.radio-list-vertical .ktc-checkbox + .ktc-checkbox, +.ktc-radio-list-vertical .ktc-checkbox + .ktc-checkbox, +.checkbox-list-vertical .ktc-checkbox + .ktc-checkbox, +.ktc-checkbox-list-vertical .ktc-checkbox + .ktc-checkbox { + margin-top: 4px; +} +.radio-list-vertical.first-on-page, +.ktc-radio-list-vertical.first-on-page, +.checkbox-list-vertical.first-on-page, +.ktc-checkbox-list-vertical.first-on-page { + margin-top: 0px; +} +.radio-list-horizontal .radio, +.ktc-radio-list-horizontal .radio, +.checkbox-list-horizontal .radio, +.ktc-checkbox-list-horizontal .radio, +.radio-list-horizontal .ktc-radio, +.ktc-radio-list-horizontal .ktc-radio, +.checkbox-list-horizontal .ktc-radio, +.ktc-checkbox-list-horizontal .ktc-radio, +.radio-list-horizontal .checkbox, +.ktc-radio-list-horizontal .checkbox, +.checkbox-list-horizontal .checkbox, +.ktc-checkbox-list-horizontal .checkbox, +.radio-list-horizontal .ktc-checkbox, +.ktc-radio-list-horizontal .ktc-checkbox, +.checkbox-list-horizontal .ktc-checkbox, +.ktc-checkbox-list-horizontal .ktc-checkbox { + display: inline-block; +} +.radio-list-horizontal label, +.ktc-radio-list-horizontal label, +.checkbox-list-horizontal label, +.ktc-checkbox-list-horizontal label { + margin-right: 16px; +} /*# Page wrap #*/ html, body { @@ -6079,6 +6428,7 @@ a + .article-tile-info .article-tile-date { /*# Taste our coffee #*/ .ourcoffee-tile-image { overflow: hidden; + height: 100%; width: 100%; } .ourcoffee-tile-text { diff --git a/examples/DancingGoat/wwwroot/Content/Styles/Site.less b/examples/DancingGoat/wwwroot/Content/Styles/Site.less index e7be99e..5e2b495 100644 --- a/examples/DancingGoat/wwwroot/Content/Styles/Site.less +++ b/examples/DancingGoat/wwwroot/Content/Styles/Site.less @@ -5,8 +5,11 @@ @import "./Grid.less"; @import "./Menu.less"; @import "./icons-core.less"; +@import "./TrackingConsent.less"; @import "./Buttons.less"; @import "./Mixins.less"; +@import "./Products.less"; +@import "./Controls.less"; /*# Page wrap #*/ html, body { @@ -1233,6 +1236,7 @@ a + .article-tile-info .article-tile-date { /*# Taste our coffee #*/ .ourcoffee-tile-image { overflow: hidden; + height: 100%; width: 100%; } diff --git a/examples/DancingGoat/wwwroot/Content/Styles/TrackingConsent.less b/examples/DancingGoat/wwwroot/Content/Styles/TrackingConsent.less index e74f226..355024c 100644 --- a/examples/DancingGoat/wwwroot/Content/Styles/TrackingConsent.less +++ b/examples/DancingGoat/wwwroot/Content/Styles/TrackingConsent.less @@ -1,5 +1,21 @@ @import "./variables.less"; +/*# Consent #*/ +.consent-item { + &:not(:first-of-type) { + border-top: 1px solid #e7e7e7; + } + + .row { + margin: 0 32px 0 32px; + padding: 8px 0 0 0; + } + + .consent-heading { + margin: 0; + } +} + .cookie-consent { font-size: @base-unit; padding: 8px; diff --git a/examples/DancingGoat/wwwroot/Scripts/formAutoPost.js b/examples/DancingGoat/wwwroot/Scripts/formAutoPost.js new file mode 100644 index 0000000..8fe957b --- /dev/null +++ b/examples/DancingGoat/wwwroot/Scripts/formAutoPost.js @@ -0,0 +1,44 @@ +(function () { + 'use strict'; + + function formAutoPost(options) { + // Default settings + var settings = Object.assign({ + targetContainerSelector: "#target-list", + url: "" + }, options); + + function onSuccess(data) { + document.querySelector(settings.targetContainerSelector).innerHTML = data; + } + + function getAjaxParameters(htmlControl) { + var form = htmlControl.closest("form"); + return { + url: form.getAttribute("action"), + method: form.getAttribute("method"), + data: new URLSearchParams(new FormData(form)).toString() + }; + } + + function ajaxCall() { + var ajaxParams = getAjaxParameters(this); + var xhr = new XMLHttpRequest(); + xhr.open(ajaxParams.method, ajaxParams.url, true); + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4 && xhr.status === 200) { + onSuccess(xhr.responseText); + } + }; + xhr.send(ajaxParams.data); + } + + var elements = document.querySelectorAll(".js-postback input[type=checkbox]"); + elements.forEach(function (element) { + element.addEventListener("click", ajaxCall); + }); + } + + window.formAutoPost = formAutoPost; +})(); \ No newline at end of file diff --git a/src/Kentico.Xperience.MiniProfiler/packages.lock.json b/src/Kentico.Xperience.MiniProfiler/packages.lock.json index 97951e9..454792d 100644 --- a/src/Kentico.Xperience.MiniProfiler/packages.lock.json +++ b/src/Kentico.Xperience.MiniProfiler/packages.lock.json @@ -4,30 +4,30 @@ "net8.0": { "Kentico.Xperience.AzureStorage": { "type": "Direct", - "requested": "[28.3.1, )", - "resolved": "28.3.1", - "contentHash": "uBOgWJHlMzmO6+BZk1o2BDrSvdDioKftpQ/ljVm+4y/qVBBXqFli7vHbW/bEmdla9rj1T8bTw37OgklM/gGNRA==", + "requested": "[29.5.3, )", + "resolved": "29.5.3", + "contentHash": "d27b5FANBrdWR4uJEeEVnqfta97FLi5vreWr0lmdwqfHaUQMpI87vJ7Q+v+u/NQ+qtlBtyor6fN03vYwOLln4Q==", "dependencies": { - "Azure.Storage.Blobs": "12.19.1", - "Azure.Storage.Queues": "12.17.1", - "Kentico.Xperience.Core": "28.3.1", + "Azure.Storage.Blobs": "12.21.2", + "Azure.Storage.Queues": "12.19.1", + "Kentico.Xperience.Core": "29.5.3", "Newtonsoft.Json": "13.0.3" } }, "Kentico.Xperience.WebApp": { "type": "Direct", - "requested": "[28.3.1, )", - "resolved": "28.3.1", - "contentHash": "I9gz6Gq1XLbXTQ/RtCDuWpBVMYurT4+KrwfKublmxXQILpLwQzvFv5GRYe9Fa3AaHEThIdttSSv2l1y3ybzbqA==", + "requested": "[29.5.3, )", + "resolved": "29.5.3", + "contentHash": "n4V4V3fVq8ZRrus2I9RF8KcD0fX0QWE2aGsbC6Pb8g+kcai1TFHk/dsiOzDCSLSRFGMVyl/xt0o1OOBedXdWUg==", "dependencies": { "CommandLineParser": "2.9.1", - "HotChocolate.AspNetCore": "13.8.1", - "HotChocolate.Data": "13.8.1", - "HtmlSanitizer": "8.0.843", - "Kentico.Xperience.Core": "[28.3.1]", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.27", - "Microsoft.Extensions.Localization": "6.0.27", - "System.Runtime.Caching": "8.0.0" + "HotChocolate.AspNetCore": "13.9.12", + "HotChocolate.Data": "13.9.12", + "HtmlSanitizer": "8.1.870", + "Kentico.Xperience.Core": "[29.5.3]", + "Microsoft.Extensions.Caching.Memory": "6.0.1", + "Microsoft.Extensions.FileProviders.Embedded": "6.0.33", + "Microsoft.Extensions.Localization": "6.0.33" } }, "MiniProfiler.AspNetCore.Mvc": { @@ -64,10 +64,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.41.0", + "contentHash": "7OO8rPCVSvXj2IQET3NkRf8hU2ZDCCvCIUhlrE089qkLNpNfWufJnBwHRKLAOWF3bhKBGJS/9hPBgjJ8kupUIg==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -78,12 +79,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.4", + "contentHash": "Sf4BoE6Q3jTgFkgBkx7qztYOFELBCo+wQgpYDwal/qJ1unBH73ywPztIJKXBXORRzAeNijsuxhk94h0TIMvfYg==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.61.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.61.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -92,44 +93,44 @@ }, "Azure.Storage.Blobs": { "type": "Transitive", - "resolved": "12.19.1", - "contentHash": "x43hWFJ4sPQ23TD4piCwT+KlQpZT8pNDAzqj6yUCqh+WJ2qcQa17e1gh6ZOeT2QNFQTTDSuR56fm2bIV7i11/w==", + "resolved": "12.21.2", + "contentHash": "2J+sMgNbj2DJ+ydRSqYYADDd2AajFLfPzLGxASOxcoGx4iVxyF6jscHw2IY+8QyMPWA09wN3lCtYJ5S4zIsJkA==", "dependencies": { - "Azure.Storage.Common": "12.18.1", + "Azure.Storage.Common": "12.20.1", "System.Text.Json": "4.7.2" } }, "Azure.Storage.Common": { "type": "Transitive", - "resolved": "12.18.1", - "contentHash": "ohCslqP9yDKIn+DVjBEOBuieB1QwsUCz+BwHYNaJ3lcIsTSiI4Evnq81HcKe8CqM8qvdModbipVQKpnxpbdWqA==", + "resolved": "12.20.1", + "contentHash": "KKBFnc4WZ6m9HgsKgwfO1cIxd154b8cAnP3uWhuelvFkzxqBXQQgIsHF0n3DYBG2AoTJCZDXwJpKuVC7CsKJWg==", "dependencies": { - "Azure.Core": "1.36.0", + "Azure.Core": "1.41.0", "System.IO.Hashing": "6.0.0" } }, "Azure.Storage.Queues": { "type": "Transitive", - "resolved": "12.17.1", - "contentHash": "ziN15iQ4+h0zf9EbKzFd5Zj3LiDH21qIrCknkXhpqwftPfIvlftvdyXbKQLi9+sh8dwT6PFPi/wq4oLsKNGfcQ==", + "resolved": "12.19.1", + "contentHash": "s7jBfSrEScS2yk5n61Xx+rNQCV+4SkFag17Wux4l8OufdBUkQPmEskQbOQxlPqBJNX1ycJRWj55Wd9Cz8lOLtQ==", "dependencies": { - "Azure.Storage.Common": "12.18.1", + "Azure.Storage.Common": "12.20.1", "System.Memory.Data": "1.0.2", "System.Text.Json": "4.7.2" } }, "BananaCakePop.Middleware": { "type": "Transitive", - "resolved": "13.0.0", - "contentHash": "6Zj/vfmnCXLjBG7WNdtOgZZ5ZDR3Sy1FQSshZUonIYs3OdzozmsFmqPXMd9XJ0QE9aAildgVGq/lDLpLrMI4Yw==", + "resolved": "16.0.3", + "contentHash": "gwWk5ykS1uum2/++x3UnGhmjs+4itxce1lW5YnKdb8JeG4QxAMzSWVGh3B1ehiKJNAuvNtbfBwp2BAQvOsq02g==", "dependencies": { - "Yarp.ReverseProxy": "2.0.1" + "Yarp.ReverseProxy": "2.1.0" } }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.2.1", - "contentHash": "A6Zr52zVqJKt18ZBsTnX0qhG0kwIQftVAjLmszmkiR/trSp8H+xj1gUOzk7XHwaKgyREMSV1v9XaKrBUeIOdvQ==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "CommandLineParser": { "type": "Transitive", @@ -138,8 +139,8 @@ }, "GreenDonut": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "KgsJ88vcX0UfSKAO7uzbEPOGu8wwJU3Vkgz7AgeTrnfdgIVjZFkesvMxDqjzY6F3fmMbJmfAOLjufYLFs1Fq1g==", + "resolved": "13.9.12", + "contentHash": "w/nOY3tM8nVmjI1Gyhv5/JVk3VyD7itRhz1Ul0A8C4MHavsEyNFaMA7J+lwBFKwSRsW4R52F0BhUVbomIDA5uQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "8.0.0", "System.Diagnostics.DiagnosticSource": "8.0.0", @@ -148,169 +149,169 @@ }, "HotChocolate": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Dfue5pJ99mNWaIBYv6VupDLtZo8KhIGC9blQy76BAvkipd7m9K3xhBLNyxnUA5AmTXDrKdS+RVZ21ghG/pqeAw==", + "resolved": "13.9.12", + "contentHash": "eRHrmy5rNq9rcPrIsWvoEw5BNMDntCkzGa044fpfwKayAvSvzhsMRNRtrY351jGlg5779n3fSsabwofPu3haYw==", "dependencies": { - "HotChocolate.Authorization": "13.8.1", - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Fetching": "13.8.1", - "HotChocolate.Types": "13.8.1", - "HotChocolate.Types.CursorPagination": "13.8.1", - "HotChocolate.Types.Mutations": "13.8.1", - "HotChocolate.Types.OffsetPagination": "13.8.1", - "HotChocolate.Validation": "13.8.1" + "HotChocolate.Authorization": "13.9.12", + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Fetching": "13.9.12", + "HotChocolate.Types": "13.9.12", + "HotChocolate.Types.CursorPagination": "13.9.12", + "HotChocolate.Types.Mutations": "13.9.12", + "HotChocolate.Types.OffsetPagination": "13.9.12", + "HotChocolate.Validation": "13.9.12" } }, "HotChocolate.Abstractions": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "+llX8ziARzp+aKsOaXQfZAtqE+lF8gSmTiMiRCdpf03M+IWl/uCD9965nhqkM4mauWufwBXlwA7TE4uIUu+UjQ==", + "resolved": "13.9.12", + "contentHash": "zCDFmDV0lzDJQd7KvLthQ/d9x0TsVIKLXG3t/v0SgcQBYXnMvBeV094d+3cx44xE3T4lU4DpDeRTgD3rLLA+Dw==", "dependencies": { - "HotChocolate.Language": "13.8.1", + "HotChocolate.Language": "13.9.12", "System.Collections.Immutable": "8.0.0" } }, "HotChocolate.AspNetCore": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Pg4/+sGPCn5qNwo9z8GP/LcGHKaCRsozOwNw2XVnLRY9EDIOoN2jzblgaFuDqWkXe+rd2yAnxE7NHcdBohTEFQ==", + "resolved": "13.9.12", + "contentHash": "lv4vBVGFfTOofb/T7Fm+i0rJgyS5ZCBkCmryCcNAOw3YYpt8dL67Mms8+oIEPes04N9Wbimev+1pyxmBh5SpZg==", "dependencies": { - "BananaCakePop.Middleware": "13.0.0", - "HotChocolate": "13.8.1", - "HotChocolate.Subscriptions.InMemory": "13.8.1", - "HotChocolate.Transport.Sockets": "13.8.1", - "HotChocolate.Types.Scalars.Upload": "13.8.1", - "HotChocolate.Utilities.DependencyInjection": "13.8.1" + "BananaCakePop.Middleware": "16.0.3", + "HotChocolate": "13.9.12", + "HotChocolate.Subscriptions.InMemory": "13.9.12", + "HotChocolate.Transport.Sockets": "13.9.12", + "HotChocolate.Types.Scalars.Upload": "13.9.12", + "HotChocolate.Utilities.DependencyInjection": "13.9.12" } }, "HotChocolate.Authorization": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "y+eLkswOMnSsPaO0fmY1gfNQD6I55SzXtAXhJIqsai1NpPeG2pu5b29y5UoGXNRQgb5/243gazbQbdM5j1S6PQ==", + "resolved": "13.9.12", + "contentHash": "LuTW5qZhD0bpZqQ1sTZJav+u6jc4JO7DltKhGM1nFWsOEPxMAx9OgyehQfuAoiGp0CPKHUI+M/LxDbXu1HFJog==", "dependencies": { - "HotChocolate.Execution": "13.8.1" + "HotChocolate.Execution": "13.9.12" } }, "HotChocolate.Data": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "tgXDs0TuyyPUMAUbPJltjll+HDSU19lX14IVe8J9WdDHGQXTScjyn1px8tX537wYh6Fy1XfBgrCKwmTV21+IdQ==", + "resolved": "13.9.12", + "contentHash": "NFsErsZVyMZntDrA6TPHvCgLCaOQ9QhZvmQmnVqcozLQvfCLuS6cSGwdN5zy+DKYa+yTaMG5DK7uKcxVWT//Sg==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types.CursorPagination": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types.CursorPagination": "13.9.12" } }, "HotChocolate.Execution": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "co/VtIsOf3wqabsQLwO6HbTPi4UfL8UnzFlRkP2K4NNsNRdDkurYDdECS89swAuvfttzNua4MFOA4PclbW6Y/Q==", + "resolved": "13.9.12", + "contentHash": "UsuKiq7ynoqa9LvOjUHJAb4XTtnreFmjT3unhU6wz5cVeJU02eqbIQQyiOPDlv/SEk75XxJ1EjiuXZ/sKzcsag==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", - "HotChocolate.Execution.Abstractions": "13.8.1", - "HotChocolate.Fetching": "13.8.1", - "HotChocolate.Types": "13.8.1", - "HotChocolate.Utilities.DependencyInjection": "13.8.1", - "HotChocolate.Validation": "13.8.1", + "HotChocolate.Abstractions": "13.9.12", + "HotChocolate.Execution.Abstractions": "13.9.12", + "HotChocolate.Fetching": "13.9.12", + "HotChocolate.Types": "13.9.12", + "HotChocolate.Utilities.DependencyInjection": "13.9.12", + "HotChocolate.Validation": "13.9.12", "Microsoft.Extensions.DependencyInjection": "8.0.0", "System.Threading.Channels": "8.0.0" } }, "HotChocolate.Execution.Abstractions": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "sAL6A/Qa23inTgu8sWiNoaKpaJ3MosXLsiP908+XUogMOjudpWnaSWPYu5THgl1deaQ6q55gbyiFvwJx5lRR8A==", + "resolved": "13.9.12", + "contentHash": "o65we+xKpSpn/z5uqeTT3SW8+JEu4tufMxRCXXe38K504+WNy1yuuf3DpmwKBP0I3zeXMaWOsLLFcqzYKMAMXA==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", + "HotChocolate.Abstractions": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "HotChocolate.Fetching": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "b1o8+gKmaE7rVX+fq/vFNFj+lcY414LoadaCcriEGEsz5fwIX5+SadmUIiaSuFOhuL+T8VLngh0zJXvPBI3sSA==", + "resolved": "13.9.12", + "contentHash": "dl098a0FSo2z0k3WwHdrlCeAn4fwFGOC2oQnkWjNGmTZAIuUaOrT1zoxLgFGJ/FLSUdB58jgYAiW+tD4zVE1+Q==", "dependencies": { - "GreenDonut": "13.8.1", - "HotChocolate.Types": "13.8.1" + "GreenDonut": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Language": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "qlljQwU51ecUyYa0qdOGHnWgP481QwwZsZRGwFuH/RbUwDVQOF8Fz/9aZxFmECkpiaCBfb8fHJOlzQGE52V6JQ==", + "resolved": "13.9.12", + "contentHash": "rohvOiAmZ9Wo8cLjnm5UwtrYrHfLm0YNKAqD7ZqK8QBqv3DTqlZTs3WMaJdkG6BLdZR/l8dK/g1Bl3BGhqSBJA==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1", - "HotChocolate.Language.Utf8": "13.8.1", - "HotChocolate.Language.Visitors": "13.8.1", - "HotChocolate.Language.Web": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12", + "HotChocolate.Language.Utf8": "13.9.12", + "HotChocolate.Language.Visitors": "13.9.12", + "HotChocolate.Language.Web": "13.9.12" } }, "HotChocolate.Language.SyntaxTree": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "0RYVxhsxR1vf0ue/V8GZnN8UVxh1bI74KPe0vFLLlNXRSq55LXTuGt3gYc6+LxSCc4KaItzRl6DwdgRuDRINjw==", + "resolved": "13.9.12", + "contentHash": "rEmQ0OFW+LjTtYZNenFW9IKWTPJny8ACl1XnPULcGF22mgtuxItLwGJRfceRaAKqpAV2g7oLdFfLYmjqeJc3Tw==", "dependencies": { "Microsoft.Extensions.ObjectPool": "8.0.0" } }, "HotChocolate.Language.Utf8": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "y7YY6usRd72eAHjPS/NffT9cX92FJLg1Q6litLSCdjps1PnYVYTPnkNu5Ys1ngCJjOLsB71Or5CyjO5+Q8XSxA==", + "resolved": "13.9.12", + "contentHash": "JfsKnk734a0PxEFo9XGHiAiXNKI5qV1X0mAMcqRetljaiLGKKwYM/1ndvz3JS/gvVP/oltBaRKNKk1pWO9desg==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12" } }, "HotChocolate.Language.Visitors": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "aMibQ+gWIB+L+jZhiq2Vq+Jr6DsKcLwXAwr0GY8Dx54GPq9f/UHgtMi0KWrZ3sJck5/FwvENjLAuOtb2DFBREA==", + "resolved": "13.9.12", + "contentHash": "I2T8u0gRY0TxmjLm+EYjIreihp7oJQLhRXOs8p3y7BZAmJNxfeuc6EkMn8VDca1EQeiroNmC9UTawtJNV7QNyQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12" } }, "HotChocolate.Language.Web": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "rQ0jTiWoHuPyF58bZ17AdfYezmrpwcHthNhjYBcVfAxkATsvrHzoPqNDIgpv8xv3xaMlpxsv+nPg+i9mW/zS2Q==", + "resolved": "13.9.12", + "contentHash": "/1HpNKOImaJcy6XLDPQaWqIE1H4Dmu4ST2Sl9lPE9EwDfYe6gBv3dS9mQ7jteyQQ7az05QhotXl2zDHD/Zx7lg==", "dependencies": { - "HotChocolate.Language.Utf8": "13.8.1" + "HotChocolate.Language.Utf8": "13.9.12" } }, "HotChocolate.Subscriptions": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "RD0eebXDBvfILKsy8dF7kMyR1puoPDzp0/BPUBzfEQalGi66F76P/cuGHN1fJrzTr1x2MIINsPmQN2udlfTTKQ==", + "resolved": "13.9.12", + "contentHash": "2VnYGlN9E7e5kGV76JU4Z/5sOag0wgUh694qwx4aPG1Lc5hPQDOL2BIk9jX7PmftHDmbxpNT3ZBvTSJXvGIoPQ==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", - "HotChocolate.Execution.Abstractions": "13.8.1" + "HotChocolate.Abstractions": "13.9.12", + "HotChocolate.Execution.Abstractions": "13.9.12" } }, "HotChocolate.Subscriptions.InMemory": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "8A0K4bTBd1CfWbPovj/b1WYb52S8ElaOxghlS8Dea3GN8q4CCF3vSwXrzfkdVynCmrv3AFQYIXV1ddMJG1YqFQ==", + "resolved": "13.9.12", + "contentHash": "yQxVqqLUdMcl7yvU4qVhIrsRA1WIb1pkiKsXuD3FQxxucW9M4qqqklx91tY33AwIGnBGva7UCnofNxHg2FRbYg==", "dependencies": { - "HotChocolate.Execution.Abstractions": "13.8.1", - "HotChocolate.Subscriptions": "13.8.1", + "HotChocolate.Execution.Abstractions": "13.9.12", + "HotChocolate.Subscriptions": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "HotChocolate.Transport.Sockets": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "YVfn1O+B0UlGKtieqRoGEeZjnFpSNjK1ZQVLvfKZ/DfCh+7FR9CwZ6II7YXWCE+M9sCQTvEo9Cz5XCpsnJDhIw==", + "resolved": "13.9.12", + "contentHash": "7VWxYdWBKhNA1LxBIba7okMvQDcaGzHlYhkmBtPGKtfg7sKqOrF6TrwlJg0peLnN8luG7TfW8Fmz8cbD7teEdA==", "dependencies": { "System.IO.Pipelines": "8.0.0" } }, "HotChocolate.Types": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "EK5PodS+N+Oi77jmBFucS6Leq0mL4xYjC2fDTq6Le+cNxMLYx+cY8PE5Kjg3rMtrd/MFOOvUSQ/heAes5nuBHQ==", + "resolved": "13.9.12", + "contentHash": "bTPnQZ0zolwj3E37ma2NPS5SxX6jj2OTQj9bszonB+92t0BQLOuX2wlgz0ux7XSmdC+ch7reCxJcrJEnPDs2QQ==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", - "HotChocolate.Types.Shared": "13.8.1", - "HotChocolate.Utilities": "13.8.1", + "HotChocolate.Abstractions": "13.9.12", + "HotChocolate.Types.Shared": "13.9.12", + "HotChocolate.Utilities": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", "Microsoft.Extensions.ObjectPool": "8.0.0", "System.ComponentModel.Annotations": "5.0.0", @@ -319,74 +320,74 @@ }, "HotChocolate.Types.CursorPagination": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Nu7ERbmzIkZKeCx/dwMQDIEVXDk7fgMrGGsnBTBVNyk5YA/hyto54CNhlM7TeUqqhYUze3wKynA8rB1sr0f+cw==", + "resolved": "13.9.12", + "contentHash": "gjYxrEgQlcYTIcLMRUbF4/++C5c87OP7JU+f+YP6+BPID+r9tfEjC0U5KuRgbSg83t5jtgK1RpMLrbdTOUUGJg==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.Mutations": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "euXYibxZS11BTQ+nhY991u4mfd72xK/25KYaA6/mkLR/to9z9Xb27QSukVF5cdCTEWnqBix6CdX3S5fq2YIYGw==", + "resolved": "13.9.12", + "contentHash": "Uvm+FfZISLM5+/vYuq4Rphns1UrfhiCfoLmdUtjMIPq4jVVl4unLxfcy1GrXdHVoBO7bOL1+gHl96e9S422+6w==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.OffsetPagination": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "cwspQsQEOUBxjOAOvcmYObf4ol5pcI6epKQahrwfOX7v8GJd+FU0Sh8YmqOA1bks4VyjueDR06t88lw6XNeJIw==", + "resolved": "13.9.12", + "contentHash": "ipcyM/APH4J5oUFSE+TMYlCZ0n3lVvvap4eOHSXiriHlNM9/deLy5CooAlMmBkFbMsiFR8XcD9Ebc7od/xwm+g==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.Scalars.Upload": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "cUMEyPMt57kEhB8kXvF5/lCyBZQkzkTFuSpTIZwTX3RmJ08bYWaXxpYLpor/jxjoe4qTIyGR+z7z2p8sIearMg==", + "resolved": "13.9.12", + "contentHash": "3cAHgOwyl0O6qznO7SyjYsUa/RdnSK1JnKxPkQ4lk5Y3pDpl4iLLKuGtReoS+n74h5WLE88U3RPR4x6JcWMDlw==", "dependencies": { - "HotChocolate.Types": "13.8.1" + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.Shared": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "vPpDZdVLahXD+a9xweLclWyIy3GH8IcKHmzZpOz4zeoZlxUuQCrx0ViXrSdiX1WdtOoV0nc5c26WKPIgCAVJIw==", + "resolved": "13.9.12", + "contentHash": "zWDYduCtLFxGqMV3vJ5lMfUv4h9ebU8dLwtG1Irtv5W5zOze0S+U6C0853hzDwL8/o6Torb5knQj56n78WBnAA==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12" } }, "HotChocolate.Utilities": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Z33UtFR96+iDR6uyjIW3qU3skvYEnhE/DGYnCoZUCh119t9OebvDW7ANCeL6oGXv0sZDJERvGQRhOZiBWZnqKA==" + "resolved": "13.9.12", + "contentHash": "Bo7aY9qaZ+8rcpDZFz9V03oVu4IWHmVgxlCDbMLYx1VJWOOyJA7pQb25ILxYVzScadn+lMkLy+4iq55GetLMhw==" }, "HotChocolate.Utilities.DependencyInjection": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "4tEg4xfDfiahuLrC59gH+BYfAFqDPEvoyBK7PU3ep7O2cmQgnqeE3tKMqJ1UovGMsVQ5nYwcQ98LhqrPOxECUw==", + "resolved": "13.9.12", + "contentHash": "iSTJZCLfpg7l+ExXFQbWsPPvkAPL+JLU3UA1E6avgTEzPvMpzo9I1c5mA2ItyoOrmTewKSWmnQBlv25oEFQF6g==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "8.0.0" } }, "HotChocolate.Validation": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "kmPmYrtCt1NtmyZiSvfjDU+Abc/4hI2wDLe1uDEZW8JC8O2uwH0becZm1K6j9ZUfVMLp/5ZNsQONOXzL1VwxLA==", + "resolved": "13.9.12", + "contentHash": "7DyCifF5kBD2hbrsFoQX+nVYMURaHDzAt8gFm3+Ubedqx91cV39iP/Mam1qgx3gh/shaKYSRQFw4Ao8TTpFj2Q==", "dependencies": { - "HotChocolate.Types": "13.8.1", + "HotChocolate.Types": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", "Microsoft.Extensions.Options": "8.0.0" } }, "HtmlSanitizer": { "type": "Transitive", - "resolved": "8.0.843", - "contentHash": "XfmHK4rFz9PPN0gcv7J7pc+MRpcni1mrnO04mwA+9/1zIHLgdOvLJeDwWnX5a+up4tioPvGreB+p+KljLJ32wg==", + "resolved": "8.1.870", + "contentHash": "bQWYaKg8PrlgnhM9sPALl0UorpjWQkPTQiSTVyvm8imqF9lCLqBmtC0adUDi8xUYcdg6SJC+aHCw1MOjcg+Wnw==", "dependencies": { "AngleSharp": "[0.17.1]", "AngleSharp.Css": "[0.17.0]", @@ -395,50 +396,32 @@ }, "Kentico.Xperience.Core": { "type": "Transitive", - "resolved": "28.3.1", - "contentHash": "pNl19ECq6pIFdcMxVmGF8o7q7azE0Bkdj7YTAcLlhIqGzzIlFRFc5J/2RARds5v1zPmbEfaJaU4UMwxWU8TGWA==", + "resolved": "29.5.3", + "contentHash": "8o6O60DtlCa2YZqFrKfMeb9F26/HXWXTEZNcUAhi7/zX8S9lWsFt1/ik1U21d6VRy2HA13EJIpuGbzbAQA+2nA==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.3.0", - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Data.SqlClient": "5.1.5", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.2", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.27", + "Microsoft.Extensions.Localization": "6.0.33", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", - "System.CodeDom": "8.0.0", - "System.Configuration.ConfigurationManager": "6.0.1" + "System.CodeDom": "8.0.0" } }, "MailKit": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "jVmB3Nr0JpqhyMiXOGWMin+QvRKpucGpSFBCav9dG6jEJPdBV+yp1RHVpKzxZPfT+0adaBuZlMFdbIciZo1EWA==", - "dependencies": { - "MimeKit": "4.3.0" - } - }, - "Microsoft.AspNetCore.Http.Abstractions": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.AspNetCore.Http.Features": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.Bcl.AsyncInterfaces": { @@ -453,28 +436,23 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.1.5", - "contentHash": "6kvhQjY5uBCdBccezFD2smfnpQjQ33cZtUZVrNvxlwoBu6uopM5INH6uSgLI7JRLtlQ3bMPwnhMq4kchsXeZ5w==", + "resolved": "5.2.2", + "contentHash": "mtoeRMh7F/OA536c/Cnh8L4H0uLSKB5kSmoi54oN7Fp0hNJDy22IqyMhaMH4PkDCqI7xL//Fvg9ldtuPHG0h5g==", "dependencies": { - "Azure.Identity": "1.10.3", - "Microsoft.Data.SqlClient.SNI.runtime": "5.1.1", - "Microsoft.Identity.Client": "4.56.0", + "Azure.Identity": "1.11.4", + "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", + "Microsoft.Identity.Client": "4.61.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "6.0.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Runtime.Caching": "6.0.0", - "System.Security.Cryptography.Cng": "5.0.0", - "System.Security.Principal.Windows": "5.0.0", - "System.Text.Encoding.CodePages": "6.0.0", - "System.Text.Encodings.Web": "6.0.0" + "System.Configuration.ConfigurationManager": "8.0.0", + "System.Runtime.Caching": "8.0.0" } }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "wNGM5ZTQCa2blc9ikXQouybGiyMd6IHPVJvAlBEPtr6JepZEOYeDxGyprYvFVeOxlCXs7avridZQ0nYkHzQWCQ==" + "resolved": "5.2.0", + "contentHash": "po1jhvFd+8pbfvJR/puh+fkHi0GRanAdvayh/0e47yaM6CXWZ6opUjCMFuYlAnD2LcbyvQE7fPJKvogmaUcN+w==" }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", @@ -544,8 +522,8 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Transitive", - "resolved": "6.0.27", - "contentHash": "trrI4tXQsOIB56H3u/wD4aVu5QtF8nJPtBuQ6wm8phlYSFTR3Rj3/9fXA5Mrz4X2B0lwOk1QndCPL/fWhH9Izw==", + "resolved": "6.0.33", + "contentHash": "A5HxR46JT3B81XtfYY1/vr4RvICcue7/7lkOjrTMhGX0RdDXqQHXL1NpeYB27S1CLlsjuJn2fF1LSeGRnYJbgg==", "dependencies": { "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" } @@ -577,19 +555,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.27", - "contentHash": "sqwoeaqGTeSMBTrUV8ysD8JPfUcH8sdkmv4oCfz9i5WHAGfsS/eHCpoff87sukoxwgaEBBd9YPhTwdaFE9njlw==", + "resolved": "6.0.33", + "contentHash": "o4I6H5vdDoILQvHJXvVdo33ts4zTb4FXcdc+Et1FYG0dao9GLrDQ3HXwgV8yU2M/JeEJJnsQvUwtaANJFDnjQQ==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.27", + "Microsoft.Extensions.Localization.Abstractions": "6.0.33", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.27", - "contentHash": "virsfnfbV6uJASaNKUXLQpdY0qGr48R6dUFwY00Qja5ea+kgntRgm7qzAH6GLeJjfW3zjoltrTiTrCbrAP3KCA==" + "resolved": "6.0.33", + "contentHash": "Hbq0a3DswFjen1K6hDljNENpy6bDbA/s2qsQ5M9kqa6fB3JVKWggAdqwx2GJG4+SGkZKOWkOZxQ1QVqavWaF5g==" }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", @@ -629,19 +607,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.61.3", + "contentHash": "naJo/Qm35Caaoxp5utcw+R8eU8ZtLz2ALh8S+gkekOYQ1oazfCQMWVT4NJ/FnHzdIJlm8dMz0oMpMGCabx5odA==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.61.3", + "contentHash": "PWnJcznrSGr25MN8ajlc2XIDW4zCFu0U6FkpaNLEWLgd1NgFCp5uDY3mqLDgM8zCN8hqj8yo5wHYfLB2HjcdGw==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.61.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -699,8 +677,8 @@ }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==" + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", @@ -714,13 +692,12 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "39KDXuERDy5VmHIn7NnCWvIVp/Ar4qnxZWg9m06DfRqDbW1B6zFv9o3Tdoa4CCu71tE/0SRqRCN5Z+bbffw6uw==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.2.1", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Security.Cryptography.Pkcs": "7.0.3", - "System.Text.Encoding.CodePages": "7.0.0" + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", + "System.Security.Cryptography.Pkcs": "8.0.0" } }, "MiniProfiler.AspNetCore": { @@ -782,6 +759,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -930,8 +916,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "+nfpV0afLmvJW8+pLlHxRjz3oZJw4fkyU9MMEaMhCsHi/SN9bGF9q79ROubDiwTiCHezmK0uCWkPP7tGFP/4yg==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.Globalization": { "type": "Transitive", @@ -1001,15 +987,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.IO.FileSystem.Primitives": { "type": "Transitive", "resolved": "4.3.0", @@ -1269,29 +1246,17 @@ "System.Runtime": "4.3.0" } }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.Security.Cryptography.Cng": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==", - "dependencies": { - "System.Formats.Asn1": "5.0.0" - } + "resolved": "4.5.0", + "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==" }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "7.0.3", - "contentHash": "yhwEHH5Gzl/VoADrXtt5XC95OFoSjNSWLHNutE7GwdOgefZVRvEXRSooSpL8HHm3qmdd9epqzsWg28UJemt22w==", + "resolved": "8.0.0", + "contentHash": "ULmp3xoOwNYjOYp4JZ2NK/6NdTgiN1GQXzVVN1njQ7LOZ0d0B9vyMnhyqbIi9Qw4JXj1JgCsitkTShboHRx7Eg==", "dependencies": { - "System.Formats.Asn1": "7.0.0" + "System.Formats.Asn1": "8.0.0" } }, "System.Security.Cryptography.ProtectedData": { @@ -1299,11 +1264,6 @@ "resolved": "8.0.0", "contentHash": "+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg==" }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -1316,8 +1276,11 @@ }, "System.Text.Encoding.CodePages": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==" + "resolved": "6.0.0", + "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } }, "System.Text.Encoding.Extensions": { "type": "Transitive", @@ -1397,8 +1360,8 @@ }, "Yarp.ReverseProxy": { "type": "Transitive", - "resolved": "2.0.1", - "contentHash": "op7vBwONPFeR1PYxeLw+RLqSodODDX8RWd0OinLGMVIq6yi1q9mv1j56ImuyZgiAToksiC0Dc7jbRUZ9I+jvFA==", + "resolved": "2.1.0", + "contentHash": "VgRuCBxmh5ND4VuFhvIN3AAeoxFhYkS2hNINk6AVCrOVTlpk7OwdrTXi8NHACfqfhDL+/oYCZrF9RxN+yiYnEg==", "dependencies": { "System.IO.Hashing": "7.0.0" } diff --git a/tests/Kentico.Xperience.MiniProfiler.Tests/packages.lock.json b/tests/Kentico.Xperience.MiniProfiler.Tests/packages.lock.json index efb3560..151e62a 100644 --- a/tests/Kentico.Xperience.MiniProfiler.Tests/packages.lock.json +++ b/tests/Kentico.Xperience.MiniProfiler.Tests/packages.lock.json @@ -55,10 +55,11 @@ }, "Azure.Core": { "type": "Transitive", - "resolved": "1.36.0", - "contentHash": "vwqFZdHS4dzPlI7FFRkPx9ctA+aGGeRev3gnzG8lntWvKMmBhAmulABi1O9CEvS3/jzYt7yA+0pqVdxkpAd7dQ==", + "resolved": "1.41.0", + "contentHash": "7OO8rPCVSvXj2IQET3NkRf8hU2ZDCCvCIUhlrE089qkLNpNfWufJnBwHRKLAOWF3bhKBGJS/9hPBgjJ8kupUIg==", "dependencies": { "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "System.ClientModel": "1.0.0", "System.Diagnostics.DiagnosticSource": "6.0.1", "System.Memory.Data": "1.0.2", "System.Numerics.Vectors": "4.5.0", @@ -69,12 +70,12 @@ }, "Azure.Identity": { "type": "Transitive", - "resolved": "1.10.3", - "contentHash": "l1Xm2MWOF2Mzcwuarlw8kWQXLZk3UeB55aQXVyjj23aBfDwOZ3gu5GP2kJ6KlmZeZv2TCzw7x4L3V36iNr3gww==", + "resolved": "1.11.4", + "contentHash": "Sf4BoE6Q3jTgFkgBkx7qztYOFELBCo+wQgpYDwal/qJ1unBH73ywPztIJKXBXORRzAeNijsuxhk94h0TIMvfYg==", "dependencies": { - "Azure.Core": "1.35.0", - "Microsoft.Identity.Client": "4.56.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.56.0", + "Azure.Core": "1.38.0", + "Microsoft.Identity.Client": "4.61.3", + "Microsoft.Identity.Client.Extensions.Msal": "4.61.3", "System.Memory": "4.5.4", "System.Security.Cryptography.ProtectedData": "4.7.0", "System.Text.Json": "4.7.2", @@ -83,44 +84,44 @@ }, "Azure.Storage.Blobs": { "type": "Transitive", - "resolved": "12.19.1", - "contentHash": "x43hWFJ4sPQ23TD4piCwT+KlQpZT8pNDAzqj6yUCqh+WJ2qcQa17e1gh6ZOeT2QNFQTTDSuR56fm2bIV7i11/w==", + "resolved": "12.21.2", + "contentHash": "2J+sMgNbj2DJ+ydRSqYYADDd2AajFLfPzLGxASOxcoGx4iVxyF6jscHw2IY+8QyMPWA09wN3lCtYJ5S4zIsJkA==", "dependencies": { - "Azure.Storage.Common": "12.18.1", + "Azure.Storage.Common": "12.20.1", "System.Text.Json": "4.7.2" } }, "Azure.Storage.Common": { "type": "Transitive", - "resolved": "12.18.1", - "contentHash": "ohCslqP9yDKIn+DVjBEOBuieB1QwsUCz+BwHYNaJ3lcIsTSiI4Evnq81HcKe8CqM8qvdModbipVQKpnxpbdWqA==", + "resolved": "12.20.1", + "contentHash": "KKBFnc4WZ6m9HgsKgwfO1cIxd154b8cAnP3uWhuelvFkzxqBXQQgIsHF0n3DYBG2AoTJCZDXwJpKuVC7CsKJWg==", "dependencies": { - "Azure.Core": "1.36.0", + "Azure.Core": "1.41.0", "System.IO.Hashing": "6.0.0" } }, "Azure.Storage.Queues": { "type": "Transitive", - "resolved": "12.17.1", - "contentHash": "ziN15iQ4+h0zf9EbKzFd5Zj3LiDH21qIrCknkXhpqwftPfIvlftvdyXbKQLi9+sh8dwT6PFPi/wq4oLsKNGfcQ==", + "resolved": "12.19.1", + "contentHash": "s7jBfSrEScS2yk5n61Xx+rNQCV+4SkFag17Wux4l8OufdBUkQPmEskQbOQxlPqBJNX1ycJRWj55Wd9Cz8lOLtQ==", "dependencies": { - "Azure.Storage.Common": "12.18.1", + "Azure.Storage.Common": "12.20.1", "System.Memory.Data": "1.0.2", "System.Text.Json": "4.7.2" } }, "BananaCakePop.Middleware": { "type": "Transitive", - "resolved": "13.0.0", - "contentHash": "6Zj/vfmnCXLjBG7WNdtOgZZ5ZDR3Sy1FQSshZUonIYs3OdzozmsFmqPXMd9XJ0QE9aAildgVGq/lDLpLrMI4Yw==", + "resolved": "16.0.3", + "contentHash": "gwWk5ykS1uum2/++x3UnGhmjs+4itxce1lW5YnKdb8JeG4QxAMzSWVGh3B1ehiKJNAuvNtbfBwp2BAQvOsq02g==", "dependencies": { - "Yarp.ReverseProxy": "2.0.1" + "Yarp.ReverseProxy": "2.1.0" } }, "BouncyCastle.Cryptography": { "type": "Transitive", - "resolved": "2.2.1", - "contentHash": "A6Zr52zVqJKt18ZBsTnX0qhG0kwIQftVAjLmszmkiR/trSp8H+xj1gUOzk7XHwaKgyREMSV1v9XaKrBUeIOdvQ==" + "resolved": "2.4.0", + "contentHash": "SwXsAV3sMvAU/Nn31pbjhWurYSjJ+/giI/0n6tCrYoupEK34iIHCuk3STAd9fx8yudM85KkLSVdn951vTng/vQ==" }, "CommandLineParser": { "type": "Transitive", @@ -129,8 +130,8 @@ }, "GreenDonut": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "KgsJ88vcX0UfSKAO7uzbEPOGu8wwJU3Vkgz7AgeTrnfdgIVjZFkesvMxDqjzY6F3fmMbJmfAOLjufYLFs1Fq1g==", + "resolved": "13.9.12", + "contentHash": "w/nOY3tM8nVmjI1Gyhv5/JVk3VyD7itRhz1Ul0A8C4MHavsEyNFaMA7J+lwBFKwSRsW4R52F0BhUVbomIDA5uQ==", "dependencies": { "Microsoft.Extensions.ObjectPool": "8.0.0", "System.Diagnostics.DiagnosticSource": "8.0.0", @@ -139,169 +140,169 @@ }, "HotChocolate": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Dfue5pJ99mNWaIBYv6VupDLtZo8KhIGC9blQy76BAvkipd7m9K3xhBLNyxnUA5AmTXDrKdS+RVZ21ghG/pqeAw==", + "resolved": "13.9.12", + "contentHash": "eRHrmy5rNq9rcPrIsWvoEw5BNMDntCkzGa044fpfwKayAvSvzhsMRNRtrY351jGlg5779n3fSsabwofPu3haYw==", "dependencies": { - "HotChocolate.Authorization": "13.8.1", - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Fetching": "13.8.1", - "HotChocolate.Types": "13.8.1", - "HotChocolate.Types.CursorPagination": "13.8.1", - "HotChocolate.Types.Mutations": "13.8.1", - "HotChocolate.Types.OffsetPagination": "13.8.1", - "HotChocolate.Validation": "13.8.1" + "HotChocolate.Authorization": "13.9.12", + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Fetching": "13.9.12", + "HotChocolate.Types": "13.9.12", + "HotChocolate.Types.CursorPagination": "13.9.12", + "HotChocolate.Types.Mutations": "13.9.12", + "HotChocolate.Types.OffsetPagination": "13.9.12", + "HotChocolate.Validation": "13.9.12" } }, "HotChocolate.Abstractions": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "+llX8ziARzp+aKsOaXQfZAtqE+lF8gSmTiMiRCdpf03M+IWl/uCD9965nhqkM4mauWufwBXlwA7TE4uIUu+UjQ==", + "resolved": "13.9.12", + "contentHash": "zCDFmDV0lzDJQd7KvLthQ/d9x0TsVIKLXG3t/v0SgcQBYXnMvBeV094d+3cx44xE3T4lU4DpDeRTgD3rLLA+Dw==", "dependencies": { - "HotChocolate.Language": "13.8.1", + "HotChocolate.Language": "13.9.12", "System.Collections.Immutable": "8.0.0" } }, "HotChocolate.AspNetCore": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Pg4/+sGPCn5qNwo9z8GP/LcGHKaCRsozOwNw2XVnLRY9EDIOoN2jzblgaFuDqWkXe+rd2yAnxE7NHcdBohTEFQ==", + "resolved": "13.9.12", + "contentHash": "lv4vBVGFfTOofb/T7Fm+i0rJgyS5ZCBkCmryCcNAOw3YYpt8dL67Mms8+oIEPes04N9Wbimev+1pyxmBh5SpZg==", "dependencies": { - "BananaCakePop.Middleware": "13.0.0", - "HotChocolate": "13.8.1", - "HotChocolate.Subscriptions.InMemory": "13.8.1", - "HotChocolate.Transport.Sockets": "13.8.1", - "HotChocolate.Types.Scalars.Upload": "13.8.1", - "HotChocolate.Utilities.DependencyInjection": "13.8.1" + "BananaCakePop.Middleware": "16.0.3", + "HotChocolate": "13.9.12", + "HotChocolate.Subscriptions.InMemory": "13.9.12", + "HotChocolate.Transport.Sockets": "13.9.12", + "HotChocolate.Types.Scalars.Upload": "13.9.12", + "HotChocolate.Utilities.DependencyInjection": "13.9.12" } }, "HotChocolate.Authorization": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "y+eLkswOMnSsPaO0fmY1gfNQD6I55SzXtAXhJIqsai1NpPeG2pu5b29y5UoGXNRQgb5/243gazbQbdM5j1S6PQ==", + "resolved": "13.9.12", + "contentHash": "LuTW5qZhD0bpZqQ1sTZJav+u6jc4JO7DltKhGM1nFWsOEPxMAx9OgyehQfuAoiGp0CPKHUI+M/LxDbXu1HFJog==", "dependencies": { - "HotChocolate.Execution": "13.8.1" + "HotChocolate.Execution": "13.9.12" } }, "HotChocolate.Data": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "tgXDs0TuyyPUMAUbPJltjll+HDSU19lX14IVe8J9WdDHGQXTScjyn1px8tX537wYh6Fy1XfBgrCKwmTV21+IdQ==", + "resolved": "13.9.12", + "contentHash": "NFsErsZVyMZntDrA6TPHvCgLCaOQ9QhZvmQmnVqcozLQvfCLuS6cSGwdN5zy+DKYa+yTaMG5DK7uKcxVWT//Sg==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types.CursorPagination": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types.CursorPagination": "13.9.12" } }, "HotChocolate.Execution": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "co/VtIsOf3wqabsQLwO6HbTPi4UfL8UnzFlRkP2K4NNsNRdDkurYDdECS89swAuvfttzNua4MFOA4PclbW6Y/Q==", + "resolved": "13.9.12", + "contentHash": "UsuKiq7ynoqa9LvOjUHJAb4XTtnreFmjT3unhU6wz5cVeJU02eqbIQQyiOPDlv/SEk75XxJ1EjiuXZ/sKzcsag==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", - "HotChocolate.Execution.Abstractions": "13.8.1", - "HotChocolate.Fetching": "13.8.1", - "HotChocolate.Types": "13.8.1", - "HotChocolate.Utilities.DependencyInjection": "13.8.1", - "HotChocolate.Validation": "13.8.1", + "HotChocolate.Abstractions": "13.9.12", + "HotChocolate.Execution.Abstractions": "13.9.12", + "HotChocolate.Fetching": "13.9.12", + "HotChocolate.Types": "13.9.12", + "HotChocolate.Utilities.DependencyInjection": "13.9.12", + "HotChocolate.Validation": "13.9.12", "Microsoft.Extensions.DependencyInjection": "8.0.0", "System.Threading.Channels": "8.0.0" } }, "HotChocolate.Execution.Abstractions": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "sAL6A/Qa23inTgu8sWiNoaKpaJ3MosXLsiP908+XUogMOjudpWnaSWPYu5THgl1deaQ6q55gbyiFvwJx5lRR8A==", + "resolved": "13.9.12", + "contentHash": "o65we+xKpSpn/z5uqeTT3SW8+JEu4tufMxRCXXe38K504+WNy1yuuf3DpmwKBP0I3zeXMaWOsLLFcqzYKMAMXA==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", + "HotChocolate.Abstractions": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "HotChocolate.Fetching": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "b1o8+gKmaE7rVX+fq/vFNFj+lcY414LoadaCcriEGEsz5fwIX5+SadmUIiaSuFOhuL+T8VLngh0zJXvPBI3sSA==", + "resolved": "13.9.12", + "contentHash": "dl098a0FSo2z0k3WwHdrlCeAn4fwFGOC2oQnkWjNGmTZAIuUaOrT1zoxLgFGJ/FLSUdB58jgYAiW+tD4zVE1+Q==", "dependencies": { - "GreenDonut": "13.8.1", - "HotChocolate.Types": "13.8.1" + "GreenDonut": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Language": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "qlljQwU51ecUyYa0qdOGHnWgP481QwwZsZRGwFuH/RbUwDVQOF8Fz/9aZxFmECkpiaCBfb8fHJOlzQGE52V6JQ==", + "resolved": "13.9.12", + "contentHash": "rohvOiAmZ9Wo8cLjnm5UwtrYrHfLm0YNKAqD7ZqK8QBqv3DTqlZTs3WMaJdkG6BLdZR/l8dK/g1Bl3BGhqSBJA==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1", - "HotChocolate.Language.Utf8": "13.8.1", - "HotChocolate.Language.Visitors": "13.8.1", - "HotChocolate.Language.Web": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12", + "HotChocolate.Language.Utf8": "13.9.12", + "HotChocolate.Language.Visitors": "13.9.12", + "HotChocolate.Language.Web": "13.9.12" } }, "HotChocolate.Language.SyntaxTree": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "0RYVxhsxR1vf0ue/V8GZnN8UVxh1bI74KPe0vFLLlNXRSq55LXTuGt3gYc6+LxSCc4KaItzRl6DwdgRuDRINjw==", + "resolved": "13.9.12", + "contentHash": "rEmQ0OFW+LjTtYZNenFW9IKWTPJny8ACl1XnPULcGF22mgtuxItLwGJRfceRaAKqpAV2g7oLdFfLYmjqeJc3Tw==", "dependencies": { "Microsoft.Extensions.ObjectPool": "8.0.0" } }, "HotChocolate.Language.Utf8": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "y7YY6usRd72eAHjPS/NffT9cX92FJLg1Q6litLSCdjps1PnYVYTPnkNu5Ys1ngCJjOLsB71Or5CyjO5+Q8XSxA==", + "resolved": "13.9.12", + "contentHash": "JfsKnk734a0PxEFo9XGHiAiXNKI5qV1X0mAMcqRetljaiLGKKwYM/1ndvz3JS/gvVP/oltBaRKNKk1pWO9desg==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12" } }, "HotChocolate.Language.Visitors": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "aMibQ+gWIB+L+jZhiq2Vq+Jr6DsKcLwXAwr0GY8Dx54GPq9f/UHgtMi0KWrZ3sJck5/FwvENjLAuOtb2DFBREA==", + "resolved": "13.9.12", + "contentHash": "I2T8u0gRY0TxmjLm+EYjIreihp7oJQLhRXOs8p3y7BZAmJNxfeuc6EkMn8VDca1EQeiroNmC9UTawtJNV7QNyQ==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12" } }, "HotChocolate.Language.Web": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "rQ0jTiWoHuPyF58bZ17AdfYezmrpwcHthNhjYBcVfAxkATsvrHzoPqNDIgpv8xv3xaMlpxsv+nPg+i9mW/zS2Q==", + "resolved": "13.9.12", + "contentHash": "/1HpNKOImaJcy6XLDPQaWqIE1H4Dmu4ST2Sl9lPE9EwDfYe6gBv3dS9mQ7jteyQQ7az05QhotXl2zDHD/Zx7lg==", "dependencies": { - "HotChocolate.Language.Utf8": "13.8.1" + "HotChocolate.Language.Utf8": "13.9.12" } }, "HotChocolate.Subscriptions": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "RD0eebXDBvfILKsy8dF7kMyR1puoPDzp0/BPUBzfEQalGi66F76P/cuGHN1fJrzTr1x2MIINsPmQN2udlfTTKQ==", + "resolved": "13.9.12", + "contentHash": "2VnYGlN9E7e5kGV76JU4Z/5sOag0wgUh694qwx4aPG1Lc5hPQDOL2BIk9jX7PmftHDmbxpNT3ZBvTSJXvGIoPQ==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", - "HotChocolate.Execution.Abstractions": "13.8.1" + "HotChocolate.Abstractions": "13.9.12", + "HotChocolate.Execution.Abstractions": "13.9.12" } }, "HotChocolate.Subscriptions.InMemory": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "8A0K4bTBd1CfWbPovj/b1WYb52S8ElaOxghlS8Dea3GN8q4CCF3vSwXrzfkdVynCmrv3AFQYIXV1ddMJG1YqFQ==", + "resolved": "13.9.12", + "contentHash": "yQxVqqLUdMcl7yvU4qVhIrsRA1WIb1pkiKsXuD3FQxxucW9M4qqqklx91tY33AwIGnBGva7UCnofNxHg2FRbYg==", "dependencies": { - "HotChocolate.Execution.Abstractions": "13.8.1", - "HotChocolate.Subscriptions": "13.8.1", + "HotChocolate.Execution.Abstractions": "13.9.12", + "HotChocolate.Subscriptions": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" } }, "HotChocolate.Transport.Sockets": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "YVfn1O+B0UlGKtieqRoGEeZjnFpSNjK1ZQVLvfKZ/DfCh+7FR9CwZ6II7YXWCE+M9sCQTvEo9Cz5XCpsnJDhIw==", + "resolved": "13.9.12", + "contentHash": "7VWxYdWBKhNA1LxBIba7okMvQDcaGzHlYhkmBtPGKtfg7sKqOrF6TrwlJg0peLnN8luG7TfW8Fmz8cbD7teEdA==", "dependencies": { "System.IO.Pipelines": "8.0.0" } }, "HotChocolate.Types": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "EK5PodS+N+Oi77jmBFucS6Leq0mL4xYjC2fDTq6Le+cNxMLYx+cY8PE5Kjg3rMtrd/MFOOvUSQ/heAes5nuBHQ==", + "resolved": "13.9.12", + "contentHash": "bTPnQZ0zolwj3E37ma2NPS5SxX6jj2OTQj9bszonB+92t0BQLOuX2wlgz0ux7XSmdC+ch7reCxJcrJEnPDs2QQ==", "dependencies": { - "HotChocolate.Abstractions": "13.8.1", - "HotChocolate.Types.Shared": "13.8.1", - "HotChocolate.Utilities": "13.8.1", + "HotChocolate.Abstractions": "13.9.12", + "HotChocolate.Types.Shared": "13.9.12", + "HotChocolate.Utilities": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", "Microsoft.Extensions.ObjectPool": "8.0.0", "System.ComponentModel.Annotations": "5.0.0", @@ -310,74 +311,74 @@ }, "HotChocolate.Types.CursorPagination": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Nu7ERbmzIkZKeCx/dwMQDIEVXDk7fgMrGGsnBTBVNyk5YA/hyto54CNhlM7TeUqqhYUze3wKynA8rB1sr0f+cw==", + "resolved": "13.9.12", + "contentHash": "gjYxrEgQlcYTIcLMRUbF4/++C5c87OP7JU+f+YP6+BPID+r9tfEjC0U5KuRgbSg83t5jtgK1RpMLrbdTOUUGJg==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.Mutations": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "euXYibxZS11BTQ+nhY991u4mfd72xK/25KYaA6/mkLR/to9z9Xb27QSukVF5cdCTEWnqBix6CdX3S5fq2YIYGw==", + "resolved": "13.9.12", + "contentHash": "Uvm+FfZISLM5+/vYuq4Rphns1UrfhiCfoLmdUtjMIPq4jVVl4unLxfcy1GrXdHVoBO7bOL1+gHl96e9S422+6w==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.OffsetPagination": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "cwspQsQEOUBxjOAOvcmYObf4ol5pcI6epKQahrwfOX7v8GJd+FU0Sh8YmqOA1bks4VyjueDR06t88lw6XNeJIw==", + "resolved": "13.9.12", + "contentHash": "ipcyM/APH4J5oUFSE+TMYlCZ0n3lVvvap4eOHSXiriHlNM9/deLy5CooAlMmBkFbMsiFR8XcD9Ebc7od/xwm+g==", "dependencies": { - "HotChocolate.Execution": "13.8.1", - "HotChocolate.Types": "13.8.1" + "HotChocolate.Execution": "13.9.12", + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.Scalars.Upload": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "cUMEyPMt57kEhB8kXvF5/lCyBZQkzkTFuSpTIZwTX3RmJ08bYWaXxpYLpor/jxjoe4qTIyGR+z7z2p8sIearMg==", + "resolved": "13.9.12", + "contentHash": "3cAHgOwyl0O6qznO7SyjYsUa/RdnSK1JnKxPkQ4lk5Y3pDpl4iLLKuGtReoS+n74h5WLE88U3RPR4x6JcWMDlw==", "dependencies": { - "HotChocolate.Types": "13.8.1" + "HotChocolate.Types": "13.9.12" } }, "HotChocolate.Types.Shared": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "vPpDZdVLahXD+a9xweLclWyIy3GH8IcKHmzZpOz4zeoZlxUuQCrx0ViXrSdiX1WdtOoV0nc5c26WKPIgCAVJIw==", + "resolved": "13.9.12", + "contentHash": "zWDYduCtLFxGqMV3vJ5lMfUv4h9ebU8dLwtG1Irtv5W5zOze0S+U6C0853hzDwL8/o6Torb5knQj56n78WBnAA==", "dependencies": { - "HotChocolate.Language.SyntaxTree": "13.8.1" + "HotChocolate.Language.SyntaxTree": "13.9.12" } }, "HotChocolate.Utilities": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "Z33UtFR96+iDR6uyjIW3qU3skvYEnhE/DGYnCoZUCh119t9OebvDW7ANCeL6oGXv0sZDJERvGQRhOZiBWZnqKA==" + "resolved": "13.9.12", + "contentHash": "Bo7aY9qaZ+8rcpDZFz9V03oVu4IWHmVgxlCDbMLYx1VJWOOyJA7pQb25ILxYVzScadn+lMkLy+4iq55GetLMhw==" }, "HotChocolate.Utilities.DependencyInjection": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "4tEg4xfDfiahuLrC59gH+BYfAFqDPEvoyBK7PU3ep7O2cmQgnqeE3tKMqJ1UovGMsVQ5nYwcQ98LhqrPOxECUw==", + "resolved": "13.9.12", + "contentHash": "iSTJZCLfpg7l+ExXFQbWsPPvkAPL+JLU3UA1E6avgTEzPvMpzo9I1c5mA2ItyoOrmTewKSWmnQBlv25oEFQF6g==", "dependencies": { "Microsoft.Extensions.DependencyInjection": "8.0.0" } }, "HotChocolate.Validation": { "type": "Transitive", - "resolved": "13.8.1", - "contentHash": "kmPmYrtCt1NtmyZiSvfjDU+Abc/4hI2wDLe1uDEZW8JC8O2uwH0becZm1K6j9ZUfVMLp/5ZNsQONOXzL1VwxLA==", + "resolved": "13.9.12", + "contentHash": "7DyCifF5kBD2hbrsFoQX+nVYMURaHDzAt8gFm3+Ubedqx91cV39iP/Mam1qgx3gh/shaKYSRQFw4Ao8TTpFj2Q==", "dependencies": { - "HotChocolate.Types": "13.8.1", + "HotChocolate.Types": "13.9.12", "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", "Microsoft.Extensions.Options": "8.0.0" } }, "HtmlSanitizer": { "type": "Transitive", - "resolved": "8.0.843", - "contentHash": "XfmHK4rFz9PPN0gcv7J7pc+MRpcni1mrnO04mwA+9/1zIHLgdOvLJeDwWnX5a+up4tioPvGreB+p+KljLJ32wg==", + "resolved": "8.1.870", + "contentHash": "bQWYaKg8PrlgnhM9sPALl0UorpjWQkPTQiSTVyvm8imqF9lCLqBmtC0adUDi8xUYcdg6SJC+aHCw1MOjcg+Wnw==", "dependencies": { "AngleSharp": "[0.17.1]", "AngleSharp.Css": "[0.17.0]", @@ -386,50 +387,32 @@ }, "Kentico.Xperience.Core": { "type": "Transitive", - "resolved": "28.3.1", - "contentHash": "pNl19ECq6pIFdcMxVmGF8o7q7azE0Bkdj7YTAcLlhIqGzzIlFRFc5J/2RARds5v1zPmbEfaJaU4UMwxWU8TGWA==", + "resolved": "29.5.3", + "contentHash": "8o6O60DtlCa2YZqFrKfMeb9F26/HXWXTEZNcUAhi7/zX8S9lWsFt1/ik1U21d6VRy2HA13EJIpuGbzbAQA+2nA==", "dependencies": { "AngleSharp": "0.17.1", - "MailKit": "4.3.0", - "Microsoft.AspNetCore.Http.Abstractions": "2.1.1", - "Microsoft.Data.SqlClient": "5.1.5", + "MailKit": "4.7.1.1", + "Microsoft.Data.SqlClient": "5.2.2", "Microsoft.Extensions.Caching.Memory": "6.0.1", "Microsoft.Extensions.Configuration": "6.0.1", "Microsoft.Extensions.Configuration.Binder": "6.0.0", "Microsoft.Extensions.DependencyInjection": "6.0.1", "Microsoft.Extensions.FileProviders.Physical": "6.0.0", "Microsoft.Extensions.Hosting.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization": "6.0.27", + "Microsoft.Extensions.Localization": "6.0.33", "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0", "Mono.Cecil": "0.11.5", "Newtonsoft.Json": "13.0.3", - "System.CodeDom": "8.0.0", - "System.Configuration.ConfigurationManager": "6.0.1" + "System.CodeDom": "8.0.0" } }, "MailKit": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "jVmB3Nr0JpqhyMiXOGWMin+QvRKpucGpSFBCav9dG6jEJPdBV+yp1RHVpKzxZPfT+0adaBuZlMFdbIciZo1EWA==", - "dependencies": { - "MimeKit": "4.3.0" - } - }, - "Microsoft.AspNetCore.Http.Abstractions": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "2.1.1", - "System.Text.Encodings.Web": "4.5.0" - } - }, - "Microsoft.AspNetCore.Http.Features": { - "type": "Transitive", - "resolved": "2.1.1", - "contentHash": "VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==", + "resolved": "4.7.1.1", + "contentHash": "Y3okmIxu8g/ZcoJiE2i+dCeKgnNyddsXmcJslZnCPGVPP0aRyeVINHV1h97V+OVMdqjQI6O12J2p8Duwq5UEqQ==", "dependencies": { - "Microsoft.Extensions.Primitives": "2.1.1" + "MimeKit": "4.7.1", + "System.Formats.Asn1": "8.0.1" } }, "Microsoft.Bcl.AsyncInterfaces": { @@ -449,28 +432,23 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "5.1.5", - "contentHash": "6kvhQjY5uBCdBccezFD2smfnpQjQ33cZtUZVrNvxlwoBu6uopM5INH6uSgLI7JRLtlQ3bMPwnhMq4kchsXeZ5w==", + "resolved": "5.2.2", + "contentHash": "mtoeRMh7F/OA536c/Cnh8L4H0uLSKB5kSmoi54oN7Fp0hNJDy22IqyMhaMH4PkDCqI7xL//Fvg9ldtuPHG0h5g==", "dependencies": { - "Azure.Identity": "1.10.3", - "Microsoft.Data.SqlClient.SNI.runtime": "5.1.1", - "Microsoft.Identity.Client": "4.56.0", + "Azure.Identity": "1.11.4", + "Microsoft.Data.SqlClient.SNI.runtime": "5.2.0", + "Microsoft.Identity.Client": "4.61.3", "Microsoft.IdentityModel.JsonWebTokens": "6.35.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.35.0", "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "6.0.1", - "System.Diagnostics.DiagnosticSource": "6.0.1", - "System.Runtime.Caching": "6.0.0", - "System.Security.Cryptography.Cng": "5.0.0", - "System.Security.Principal.Windows": "5.0.0", - "System.Text.Encoding.CodePages": "6.0.0", - "System.Text.Encodings.Web": "6.0.0" + "System.Configuration.ConfigurationManager": "8.0.0", + "System.Runtime.Caching": "8.0.0" } }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", - "resolved": "5.1.1", - "contentHash": "wNGM5ZTQCa2blc9ikXQouybGiyMd6IHPVJvAlBEPtr6JepZEOYeDxGyprYvFVeOxlCXs7avridZQ0nYkHzQWCQ==" + "resolved": "5.2.0", + "contentHash": "po1jhvFd+8pbfvJR/puh+fkHi0GRanAdvayh/0e47yaM6CXWZ6opUjCMFuYlAnD2LcbyvQE7fPJKvogmaUcN+w==" }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", @@ -540,8 +518,8 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Transitive", - "resolved": "6.0.27", - "contentHash": "trrI4tXQsOIB56H3u/wD4aVu5QtF8nJPtBuQ6wm8phlYSFTR3Rj3/9fXA5Mrz4X2B0lwOk1QndCPL/fWhH9Izw==", + "resolved": "6.0.33", + "contentHash": "A5HxR46JT3B81XtfYY1/vr4RvICcue7/7lkOjrTMhGX0RdDXqQHXL1NpeYB27S1CLlsjuJn2fF1LSeGRnYJbgg==", "dependencies": { "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0" } @@ -573,19 +551,19 @@ }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "6.0.27", - "contentHash": "sqwoeaqGTeSMBTrUV8ysD8JPfUcH8sdkmv4oCfz9i5WHAGfsS/eHCpoff87sukoxwgaEBBd9YPhTwdaFE9njlw==", + "resolved": "6.0.33", + "contentHash": "o4I6H5vdDoILQvHJXvVdo33ts4zTb4FXcdc+Et1FYG0dao9GLrDQ3HXwgV8yU2M/JeEJJnsQvUwtaANJFDnjQQ==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Localization.Abstractions": "6.0.27", + "Microsoft.Extensions.Localization.Abstractions": "6.0.33", "Microsoft.Extensions.Logging.Abstractions": "6.0.4", "Microsoft.Extensions.Options": "6.0.0" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "6.0.27", - "contentHash": "virsfnfbV6uJASaNKUXLQpdY0qGr48R6dUFwY00Qja5ea+kgntRgm7qzAH6GLeJjfW3zjoltrTiTrCbrAP3KCA==" + "resolved": "6.0.33", + "contentHash": "Hbq0a3DswFjen1K6hDljNENpy6bDbA/s2qsQ5M9kqa6fB3JVKWggAdqwx2GJG4+SGkZKOWkOZxQ1QVqavWaF5g==" }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", @@ -625,19 +603,19 @@ }, "Microsoft.Identity.Client": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "rr4zbidvHy9r4NvOAs5hdd964Ao2A0pAeFBJKR95u1CJAVzbd1p6tPTXUZ+5ld0cfThiVSGvz6UHwY6JjraTpA==", + "resolved": "4.61.3", + "contentHash": "naJo/Qm35Caaoxp5utcw+R8eU8ZtLz2ALh8S+gkekOYQ1oazfCQMWVT4NJ/FnHzdIJlm8dMz0oMpMGCabx5odA==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "6.22.0" + "Microsoft.IdentityModel.Abstractions": "6.35.0", + "System.Diagnostics.DiagnosticSource": "6.0.1" } }, "Microsoft.Identity.Client.Extensions.Msal": { "type": "Transitive", - "resolved": "4.56.0", - "contentHash": "H12YAzEGK55vZ+QpxUzozhW8ZZtgPDuWvgA0JbdIR9UhMUplj29JhIgE2imuH8W2Nw9D8JKygR1uxRFtpSNcrg==", + "resolved": "4.61.3", + "contentHash": "PWnJcznrSGr25MN8ajlc2XIDW4zCFu0U6FkpaNLEWLgd1NgFCp5uDY3mqLDgM8zCN8hqj8yo5wHYfLB2HjcdGw==", "dependencies": { - "Microsoft.Identity.Client": "4.56.0", - "System.IO.FileSystem.AccessControl": "5.0.0", + "Microsoft.Identity.Client": "4.61.3", "System.Security.Cryptography.ProtectedData": "4.5.0" } }, @@ -695,8 +673,8 @@ }, "Microsoft.NETCore.Platforms": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==" + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, "Microsoft.NETCore.Targets": { "type": "Transitive", @@ -728,13 +706,12 @@ }, "MimeKit": { "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "39KDXuERDy5VmHIn7NnCWvIVp/Ar4qnxZWg9m06DfRqDbW1B6zFv9o3Tdoa4CCu71tE/0SRqRCN5Z+bbffw6uw==", + "resolved": "4.7.1", + "contentHash": "Qoj4aVvhX14A1FNvaJ33hzOP4VZI2j+Mr38I9wSGcjMq4BYDtWLJG89aJ9nRW2cNfH6Czjwyp7+Mh++xv3AZvg==", "dependencies": { - "BouncyCastle.Cryptography": "2.2.1", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Security.Cryptography.Pkcs": "7.0.3", - "System.Text.Encoding.CodePages": "7.0.0" + "BouncyCastle.Cryptography": "2.4.0", + "System.Formats.Asn1": "8.0.1", + "System.Security.Cryptography.Pkcs": "8.0.0" } }, "MiniProfiler.AspNetCore": { @@ -783,6 +760,15 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "I3CVkvxeqFYjIVEP59DnjbeoGNfo/+SZrCLpRz2v/g0gpCHaEMPtWSY0s9k/7jR1rAsLNg2z2u1JRB76tPjnIw==", + "dependencies": { + "System.Memory.Data": "1.0.2", + "System.Text.Json": "4.7.2" + } + }, "System.CodeDom": { "type": "Transitive", "resolved": "8.0.0", @@ -931,8 +917,8 @@ }, "System.Formats.Asn1": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "+nfpV0afLmvJW8+pLlHxRjz3oZJw4fkyU9MMEaMhCsHi/SN9bGF9q79ROubDiwTiCHezmK0uCWkPP7tGFP/4yg==" + "resolved": "8.0.1", + "contentHash": "XqKba7Mm/koKSjKMfW82olQdmfbI5yqeoLV/tidRp7fbh5rmHAQ5raDI/7SU0swTzv+jgqtUGkzmFxuUg0it1A==" }, "System.Globalization": { "type": "Transitive", @@ -980,15 +966,6 @@ "System.Threading.Tasks": "4.3.0" } }, - "System.IO.FileSystem.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==", - "dependencies": { - "System.Security.AccessControl": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.IO.FileSystem.Primitives": { "type": "Transitive", "resolved": "4.3.0", @@ -1217,29 +1194,17 @@ "System.Runtime": "4.3.0" } }, - "System.Security.AccessControl": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", - "dependencies": { - "Microsoft.NETCore.Platforms": "5.0.0", - "System.Security.Principal.Windows": "5.0.0" - } - }, "System.Security.Cryptography.Cng": { "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==", - "dependencies": { - "System.Formats.Asn1": "5.0.0" - } + "resolved": "4.5.0", + "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A==" }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "7.0.3", - "contentHash": "yhwEHH5Gzl/VoADrXtt5XC95OFoSjNSWLHNutE7GwdOgefZVRvEXRSooSpL8HHm3qmdd9epqzsWg28UJemt22w==", + "resolved": "8.0.0", + "contentHash": "ULmp3xoOwNYjOYp4JZ2NK/6NdTgiN1GQXzVVN1njQ7LOZ0d0B9vyMnhyqbIi9Qw4JXj1JgCsitkTShboHRx7Eg==", "dependencies": { - "System.Formats.Asn1": "7.0.0" + "System.Formats.Asn1": "8.0.0" } }, "System.Security.Cryptography.ProtectedData": { @@ -1247,11 +1212,6 @@ "resolved": "8.0.0", "contentHash": "+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg==" }, - "System.Security.Principal.Windows": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" - }, "System.Text.Encoding": { "type": "Transitive", "resolved": "4.3.0", @@ -1264,8 +1224,11 @@ }, "System.Text.Encoding.CodePages": { "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "LSyCblMpvOe0N3E+8e0skHcrIhgV2huaNcjUUEa8hRtgEAm36aGkRoC8Jxlb6Ra6GSfF29ftduPNywin8XolzQ==" + "resolved": "6.0.0", + "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } }, "System.Text.Encodings.Web": { "type": "Transitive", @@ -1334,8 +1297,8 @@ }, "Yarp.ReverseProxy": { "type": "Transitive", - "resolved": "2.0.1", - "contentHash": "op7vBwONPFeR1PYxeLw+RLqSodODDX8RWd0OinLGMVIq6yi1q9mv1j56ImuyZgiAToksiC0Dc7jbRUZ9I+jvFA==", + "resolved": "2.1.0", + "contentHash": "VgRuCBxmh5ND4VuFhvIN3AAeoxFhYkS2hNINk6AVCrOVTlpk7OwdrTXi8NHACfqfhDL+/oYCZrF9RxN+yiYnEg==", "dependencies": { "System.IO.Hashing": "7.0.0" } @@ -1344,36 +1307,36 @@ "type": "Project", "dependencies": { "MiniProfiler.AspNetCore.Mvc": "[4.3.8, )", - "kentico.xperience.azurestorage": "[28.3.1, )", - "kentico.xperience.webapp": "[28.3.1, )" + "kentico.xperience.azurestorage": "[29.5.3, )", + "kentico.xperience.webapp": "[29.5.3, )" } }, "Kentico.Xperience.AzureStorage": { "type": "CentralTransitive", - "requested": "[28.3.1, )", - "resolved": "28.3.1", - "contentHash": "uBOgWJHlMzmO6+BZk1o2BDrSvdDioKftpQ/ljVm+4y/qVBBXqFli7vHbW/bEmdla9rj1T8bTw37OgklM/gGNRA==", + "requested": "[29.5.3, )", + "resolved": "29.5.3", + "contentHash": "d27b5FANBrdWR4uJEeEVnqfta97FLi5vreWr0lmdwqfHaUQMpI87vJ7Q+v+u/NQ+qtlBtyor6fN03vYwOLln4Q==", "dependencies": { - "Azure.Storage.Blobs": "12.19.1", - "Azure.Storage.Queues": "12.17.1", - "Kentico.Xperience.Core": "28.3.1", + "Azure.Storage.Blobs": "12.21.2", + "Azure.Storage.Queues": "12.19.1", + "Kentico.Xperience.Core": "29.5.3", "Newtonsoft.Json": "13.0.3" } }, "Kentico.Xperience.WebApp": { "type": "CentralTransitive", - "requested": "[28.3.1, )", - "resolved": "28.3.1", - "contentHash": "I9gz6Gq1XLbXTQ/RtCDuWpBVMYurT4+KrwfKublmxXQILpLwQzvFv5GRYe9Fa3AaHEThIdttSSv2l1y3ybzbqA==", + "requested": "[29.5.3, )", + "resolved": "29.5.3", + "contentHash": "n4V4V3fVq8ZRrus2I9RF8KcD0fX0QWE2aGsbC6Pb8g+kcai1TFHk/dsiOzDCSLSRFGMVyl/xt0o1OOBedXdWUg==", "dependencies": { "CommandLineParser": "2.9.1", - "HotChocolate.AspNetCore": "13.8.1", - "HotChocolate.Data": "13.8.1", - "HtmlSanitizer": "8.0.843", - "Kentico.Xperience.Core": "[28.3.1]", - "Microsoft.Extensions.FileProviders.Embedded": "6.0.27", - "Microsoft.Extensions.Localization": "6.0.27", - "System.Runtime.Caching": "8.0.0" + "HotChocolate.AspNetCore": "13.9.12", + "HotChocolate.Data": "13.9.12", + "HtmlSanitizer": "8.1.870", + "Kentico.Xperience.Core": "[29.5.3]", + "Microsoft.Extensions.Caching.Memory": "6.0.1", + "Microsoft.Extensions.FileProviders.Embedded": "6.0.33", + "Microsoft.Extensions.Localization": "6.0.33" } }, "MiniProfiler.AspNetCore.Mvc": { From 726211e20b954d68a3e4e4b3d3a0e5733db6bd60 Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:16:18 +0200 Subject: [PATCH 2/3] fix(DancingGoat): remove unused warnings --- examples/DancingGoat/Program.cs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/examples/DancingGoat/Program.cs b/examples/DancingGoat/Program.cs index 8df4846..2666161 100644 --- a/examples/DancingGoat/Program.cs +++ b/examples/DancingGoat/Program.cs @@ -1,7 +1,4 @@ -using System; -using System.Threading.Tasks; - -using DancingGoat; +using DancingGoat; using DancingGoat.Models; using Kentico.Activities.Web.Mvc; @@ -11,26 +8,13 @@ using Kentico.PageBuilder.Web.Mvc; using Kentico.Web.Mvc; - -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Routing; -using Microsoft.Extensions.DependencyInjection; - -using Kentico.Web.Mvc; -using Kentico.Content.Web.Mvc.Routing; -using Kentico.Membership; -using Kentico.PageBuilder.Web.Mvc; -using Kentico.OnlineMarketing.Web.Mvc; -using Kentico.Activities.Web.Mvc; var builder = WebApplication.CreateBuilder(args); - builder.Services.AddKentico(features => { features.UsePageBuilder(new PageBuilderOptions From 9953925ee8874e86eb83cefa8f95f73e619a3dca Mon Sep 17 00:00:00 2001 From: bkapustik <82807109+bkapustik@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:39:19 +0100 Subject: [PATCH 3/3] update(MiniProfiler.csproj): Add missing decription and other missing properties --- .../Kentico.Xperience.MiniProfiler.csproj | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Kentico.Xperience.MiniProfiler/Kentico.Xperience.MiniProfiler.csproj b/src/Kentico.Xperience.MiniProfiler/Kentico.Xperience.MiniProfiler.csproj index e9dd110..eba1bdf 100644 --- a/src/Kentico.Xperience.MiniProfiler/Kentico.Xperience.MiniProfiler.csproj +++ b/src/Kentico.Xperience.MiniProfiler/Kentico.Xperience.MiniProfiler.csproj @@ -3,7 +3,12 @@ net8.0 enable - enable + + Xperience by Kentico Mini Profiler + $(Product) + Kentico.Xperience.MiniProfiler + Enables the use of Mini Profiler in Xperience by Kentico projects. + https://github.com/Kentico/xperience-by-kentico-miniprofiler