From bc8e9b5cb9daf557cf9ad074213327a0406f474d Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 14 Apr 2024 13:09:38 -0400 Subject: [PATCH 01/64] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 20 +++++--------------- .github/ISSUE_TEMPLATE/feature_request.md | 3 --- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea78..c35e897f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,7 +2,7 @@ name: Bug report about: Create a report to help us improve title: '' -labels: '' +labels: 'bug' assignees: '' --- @@ -10,29 +10,19 @@ assignees: '' **Describe the bug** A clear and concise description of what the bug is. -**To Reproduce** +**To Reproduce (Required for complex issues)** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error -**Expected behavior** -A clear and concise description of what you expected to happen. - **Screenshots** If applicable, add screenshots to help explain your problem. -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] +**Environment (please complete the following information):** + - Blazam Version + - Running under IIS/Service **Additional context** Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index bbcbbe7d..df81be2b 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -13,8 +13,5 @@ A clear and concise description of what the problem is. Ex. I'm always frustrate **Describe the solution you'd like** A clear and concise description of what you want to happen. -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - **Additional context** Add any other context or screenshots about the feature request here. From 55e4cf8769ccadb5c3ed63b57f40c0ad27bf9fe3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:18:04 +0000 Subject: [PATCH 02/64] Bump SixLabors.ImageSharp.Web and SixLabors.ImageSharp Bumps [SixLabors.ImageSharp.Web](https://github.com/SixLabors/ImageSharp.Web) and [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp). These dependencies needed to be updated together. Updates `SixLabors.ImageSharp.Web` from 3.1.1 to 3.1.2 - [Release notes](https://github.com/SixLabors/ImageSharp.Web/releases) - [Commits](https://github.com/SixLabors/ImageSharp.Web/compare/v3.1.1...v3.1.2) Updates `SixLabors.ImageSharp` from 3.0.0 to 3.1.4 - [Release notes](https://github.com/SixLabors/ImageSharp/releases) - [Commits](https://github.com/SixLabors/ImageSharp/compare/v3.0.0...v3.1.4) --- updated-dependencies: - dependency-name: SixLabors.ImageSharp.Web dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: SixLabors.ImageSharp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- BLAZAM/BLAZAM.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 1b5e37ea..22c12ba8 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -83,7 +83,7 @@ - + From 403a84e5be3a7e340cf861ee27f31003db58ff0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:24:48 +0000 Subject: [PATCH 03/64] Bump Microsoft.AspNetCore.Identity.EntityFrameworkCore Bumps [Microsoft.AspNetCore.Identity.EntityFrameworkCore](https://github.com/dotnet/aspnetcore) from 6.0.28 to 6.0.29. - [Release notes](https://github.com/dotnet/aspnetcore/releases) - [Changelog](https://github.com/dotnet/aspnetcore/blob/main/docs/ReleasePlanning.md) - [Commits](https://github.com/dotnet/aspnetcore/compare/v6.0.28...v6.0.29) --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Identity.EntityFrameworkCore dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- BLAZAM/BLAZAM.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 1b5e37ea..dbb3ecd7 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -60,7 +60,7 @@ - + From cddcf7c426184060b43052f9fd661e7d6457542e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:28:34 +0000 Subject: [PATCH 04/64] Bump Microsoft.AspNetCore.Authentication.Negotiate from 6.0.28 to 6.0.29 Bumps [Microsoft.AspNetCore.Authentication.Negotiate](https://github.com/dotnet/aspnetcore) from 6.0.28 to 6.0.29. - [Release notes](https://github.com/dotnet/aspnetcore/releases) - [Changelog](https://github.com/dotnet/aspnetcore/blob/main/docs/ReleasePlanning.md) - [Commits](https://github.com/dotnet/aspnetcore/compare/v6.0.28...v6.0.29) --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Authentication.Negotiate dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- BLAZAM/BLAZAM.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 1b5e37ea..50bcfd9a 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -59,7 +59,7 @@ - + From 8adfe2eb7fadd90c0d66c8a46dbc319e8d51a072 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:31:28 +0000 Subject: [PATCH 05/64] Bump Microsoft.EntityFrameworkCore.Analyzers from 7.0.17 to 7.0.18 Bumps [Microsoft.EntityFrameworkCore.Analyzers](https://github.com/dotnet/efcore) from 7.0.17 to 7.0.18. - [Release notes](https://github.com/dotnet/efcore/releases) - [Commits](https://github.com/dotnet/efcore/compare/v7.0.17...v7.0.18) --- updated-dependencies: - dependency-name: Microsoft.EntityFrameworkCore.Analyzers dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- BLAZAMDatabase/BLAZAMDatabase.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAMDatabase/BLAZAMDatabase.csproj b/BLAZAMDatabase/BLAZAMDatabase.csproj index 9ec6f90c..237150b0 100644 --- a/BLAZAMDatabase/BLAZAMDatabase.csproj +++ b/BLAZAMDatabase/BLAZAMDatabase.csproj @@ -10,7 +10,7 @@ - + From b7f282fba8faa72f45eda5f93732ba8c81275a28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:35:55 +0000 Subject: [PATCH 06/64] Bump Microsoft.EntityFrameworkCore.Tools, Microsoft.EntityFrameworkCore.Relational, Microsoft.EntityFrameworkCore and Microsoft.EntityFrameworkCore.Abstractions Bumps [Microsoft.EntityFrameworkCore.Tools](https://github.com/dotnet/efcore), [Microsoft.EntityFrameworkCore.Relational](https://github.com/dotnet/efcore), [Microsoft.EntityFrameworkCore](https://github.com/dotnet/efcore) and [Microsoft.EntityFrameworkCore.Abstractions](https://github.com/dotnet/efcore). These dependencies needed to be updated together. Updates `Microsoft.EntityFrameworkCore.Tools` from 7.0.17 to 7.0.18 - [Release notes](https://github.com/dotnet/efcore/releases) - [Commits](https://github.com/dotnet/efcore/compare/v7.0.17...v7.0.18) Updates `Microsoft.EntityFrameworkCore.Relational` from 7.0.17 to 7.0.18 - [Release notes](https://github.com/dotnet/efcore/releases) - [Commits](https://github.com/dotnet/efcore/compare/v7.0.17...v7.0.18) Updates `Microsoft.EntityFrameworkCore` from 7.0.17 to 7.0.18 - [Release notes](https://github.com/dotnet/efcore/releases) - [Commits](https://github.com/dotnet/efcore/compare/v7.0.17...v7.0.18) Updates `Microsoft.EntityFrameworkCore.Abstractions` from 7.0.17 to 7.0.18 - [Release notes](https://github.com/dotnet/efcore/releases) - [Commits](https://github.com/dotnet/efcore/compare/v7.0.17...v7.0.18) --- updated-dependencies: - dependency-name: Microsoft.EntityFrameworkCore.Tools dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: Microsoft.EntityFrameworkCore.Relational dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: Microsoft.EntityFrameworkCore dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: Microsoft.EntityFrameworkCore.Abstractions dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- BLAZAM/BLAZAM.csproj | 8 ++++---- BLAZAMCommon/BLAZAMCommon.csproj | 8 ++++---- BLAZAMDatabase/BLAZAMDatabase.csproj | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 1b5e37ea..ee545948 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -62,12 +62,12 @@ - - - + + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/BLAZAMCommon/BLAZAMCommon.csproj b/BLAZAMCommon/BLAZAMCommon.csproj index da970227..97941bd5 100644 --- a/BLAZAMCommon/BLAZAMCommon.csproj +++ b/BLAZAMCommon/BLAZAMCommon.csproj @@ -21,12 +21,12 @@ - - - + + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/BLAZAMDatabase/BLAZAMDatabase.csproj b/BLAZAMDatabase/BLAZAMDatabase.csproj index 9ec6f90c..b4caacfc 100644 --- a/BLAZAMDatabase/BLAZAMDatabase.csproj +++ b/BLAZAMDatabase/BLAZAMDatabase.csproj @@ -8,13 +8,13 @@ - - - - + + + + - + all runtime; build; native; contentfiles; analyzers; buildtransitive From da2da53ce090b10b1f11c170c7270da2f4b96eec Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Tue, 16 Apr 2024 06:48:19 -0400 Subject: [PATCH 07/64] Remove InstallType as it was never used --- BLAZAM/appsettings.example.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/BLAZAM/appsettings.example.json b/BLAZAM/appsettings.example.json index 5569f34a..3d492b00 100644 --- a/BLAZAM/appsettings.example.json +++ b/BLAZAM/appsettings.example.json @@ -9,7 +9,6 @@ }, "EncryptionKey": "supersecretstring", "DebugMode": "false", - "InstallType": "IIS", "ListeningAddress": "*", "HTTPPort": "79", "HTTPSPort": "442", @@ -18,9 +17,6 @@ "ConnectionStrings": { "DBConnectionString": "" - //SQL Example "ConnectionString": "Data Source=localhost;Database=BLAZAM;Persist Security Info=True;Integrated Security=False;Connection Timeout=10;TrustServerCertificate=True;", - //SQLite Example "ConnectionString": "Data Source=%temp%/Blazam/database.db;", - //MySql Example "ConnectionString": "Server=localhost;User=blazam;Password=blazam;Database=blazam;" } } From 0740df431faa27af69be0ef1cffbfa9539ddd155 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Wed, 17 Apr 2024 15:37:49 -0400 Subject: [PATCH 08/64] Add input auto-focusing for most applicable places --- BLAZAM/BLAZAM.csproj | 16 ++++---- BLAZAM/Pages/Home.razor | 9 +---- BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj | 10 ++--- BLAZAMCommon/BLAZAMCommon.csproj | 8 ++-- BLAZAMDatabase/BLAZAMDatabase.csproj | 4 +- BLAZAMEmail/BLAZAMEmail.csproj | 2 +- BLAZAMEmailMessage/BLAZAMEmailMessage.csproj | 2 +- BLAZAMGui/BLAZAMGui.csproj | 8 ++-- .../UI/Computers/ComputerSharedPrinters.razor | 2 +- .../Widgets/ChangedPasswordsWidget.razor | 2 +- .../Widgets/DisabledUsersWidget.razor | 4 +- .../UI/Groups/AssignToModalContent.razor | 17 +++++---- BLAZAMGui/UI/Groups/AssignedGroup.razor | 7 ++-- .../UI/Groups/RenameGroupModalContent.razor | 4 +- BLAZAMGui/UI/Inputs/ADAutoComplete.razor | 37 ++++++++++--------- BLAZAMGui/UI/OU/RenameOUModalContent.razor | 6 +-- .../UI/Outputs/AppDocumentationButton.razor | 3 +- .../ChangeUserPasswordModalContent.razor | 2 +- BLAZAMGui/UI/Users/NewUserNameEntry.razor | 2 +- .../UI/Users/RenameUserModalContent.razor | 2 +- BLAZAMNav/BLAZAMNav.csproj | 2 +- BLAZAMServices/BLAZAMServices.csproj | 4 +- PlaywrightTests/PlaywrightTests.csproj | 2 +- 23 files changed, 76 insertions(+), 79 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 801b9604..15a46f91 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.13.2102 + 2024.04.17.1935 false BLAZAM False @@ -55,18 +55,18 @@ - - + + - + - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -74,7 +74,7 @@ - + diff --git a/BLAZAM/Pages/Home.razor b/BLAZAM/Pages/Home.razor index 4fe2f0cb..537f80b7 100644 --- a/BLAZAM/Pages/Home.razor +++ b/BLAZAM/Pages/Home.razor @@ -26,14 +26,7 @@ @if (ApplicationInfo.InDebugMode) { - - - - Test Item - Test Item - Test Item - -
+ Run Test Job } diff --git a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj index 56e2ec6d..8e820fa5 100644 --- a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj +++ b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj @@ -9,11 +9,11 @@ - - - - - + + + + + diff --git a/BLAZAMCommon/BLAZAMCommon.csproj b/BLAZAMCommon/BLAZAMCommon.csproj index 97941bd5..537fd770 100644 --- a/BLAZAMCommon/BLAZAMCommon.csproj +++ b/BLAZAMCommon/BLAZAMCommon.csproj @@ -20,12 +20,12 @@ - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -33,7 +33,7 @@ - + diff --git a/BLAZAMDatabase/BLAZAMDatabase.csproj b/BLAZAMDatabase/BLAZAMDatabase.csproj index b4caacfc..f2285f9a 100644 --- a/BLAZAMDatabase/BLAZAMDatabase.csproj +++ b/BLAZAMDatabase/BLAZAMDatabase.csproj @@ -12,8 +12,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/BLAZAMEmail/BLAZAMEmail.csproj b/BLAZAMEmail/BLAZAMEmail.csproj index 6cbc4bf1..7a91a14a 100644 --- a/BLAZAMEmail/BLAZAMEmail.csproj +++ b/BLAZAMEmail/BLAZAMEmail.csproj @@ -9,7 +9,7 @@ - + diff --git a/BLAZAMEmailMessage/BLAZAMEmailMessage.csproj b/BLAZAMEmailMessage/BLAZAMEmailMessage.csproj index a36bd3c4..742cc519 100644 --- a/BLAZAMEmailMessage/BLAZAMEmailMessage.csproj +++ b/BLAZAMEmailMessage/BLAZAMEmailMessage.csproj @@ -13,7 +13,7 @@ - + diff --git a/BLAZAMGui/BLAZAMGui.csproj b/BLAZAMGui/BLAZAMGui.csproj index 7c0c7974..dbfa75d2 100644 --- a/BLAZAMGui/BLAZAMGui.csproj +++ b/BLAZAMGui/BLAZAMGui.csproj @@ -24,13 +24,13 @@ - - - + + + - + diff --git a/BLAZAMGui/UI/Computers/ComputerSharedPrinters.razor b/BLAZAMGui/UI/Computers/ComputerSharedPrinters.razor index cd06b600..6bd35f5e 100644 --- a/BLAZAMGui/UI/Computers/ComputerSharedPrinters.razor +++ b/BLAZAMGui/UI/Computers/ComputerSharedPrinters.razor @@ -20,7 +20,7 @@ @if (context.Item.ADPrinter != null) { - @context.Item.ShareName + @context.Item.ShareName } else { diff --git a/BLAZAMGui/UI/Dashboard/Widgets/ChangedPasswordsWidget.razor b/BLAZAMGui/UI/Dashboard/Widgets/ChangedPasswordsWidget.razor index 4d51ce33..78b06042 100644 --- a/BLAZAMGui/UI/Dashboard/Widgets/ChangedPasswordsWidget.razor +++ b/BLAZAMGui/UI/Dashboard/Widgets/ChangedPasswordsWidget.razor @@ -8,7 +8,7 @@ @foreach (var user in LockedUsers) { - + @user.DisplayName
diff --git a/BLAZAMGui/UI/Dashboard/Widgets/DisabledUsersWidget.razor b/BLAZAMGui/UI/Dashboard/Widgets/DisabledUsersWidget.razor index a3e3e9a0..8ead42a3 100644 --- a/BLAZAMGui/UI/Dashboard/Widgets/DisabledUsersWidget.razor +++ b/BLAZAMGui/UI/Dashboard/Widgets/DisabledUsersWidget.razor @@ -1,6 +1,6 @@ @inherits Widget @attribute [Authorize] -
+

Disabled users changed in the last 90 days

@@ -8,7 +8,7 @@ @foreach (var user in LockedUsers) { - + @user.DisplayName
diff --git a/BLAZAMGui/UI/Groups/AssignToModalContent.razor b/BLAZAMGui/UI/Groups/AssignToModalContent.razor index 5f5925d0..9d025906 100644 --- a/BLAZAMGui/UI/Groups/AssignToModalContent.razor +++ b/BLAZAMGui/UI/Groups/AssignToModalContent.razor @@ -8,7 +8,8 @@ } - @AppLocalization["or"] - + - - @if (CopyFrom != null) + + @if (CopyFrom != null) { diff --git a/BLAZAMGui/UI/Groups/AssignedGroup.razor b/BLAZAMGui/UI/Groups/AssignedGroup.razor index 9b570f66..30ec5b67 100644 --- a/BLAZAMGui/UI/Groups/AssignedGroup.razor +++ b/BLAZAMGui/UI/Groups/AssignedGroup.razor @@ -1,11 +1,10 @@ @inherits DirectoryModelComponent - + @if (Group != null) { - var linkAdd = "/groups/search/" + Group.GroupName; - @@ -14,7 +13,7 @@ @if (AllowUnassign) { - + } } diff --git a/BLAZAMGui/UI/Groups/RenameGroupModalContent.razor b/BLAZAMGui/UI/Groups/RenameGroupModalContent.razor index 79abdcf9..803c18bb 100644 --- a/BLAZAMGui/UI/Groups/RenameGroupModalContent.razor +++ b/BLAZAMGui/UI/Groups/RenameGroupModalContent.razor @@ -3,9 +3,9 @@ @if (Group.CanEditField(ActiveDirectoryFields.SAMAccountName)) { - - + + diff --git a/BLAZAMGui/UI/Inputs/ADAutoComplete.razor b/BLAZAMGui/UI/Inputs/ADAutoComplete.razor index aa3e151a..a833261c 100644 --- a/BLAZAMGui/UI/Inputs/ADAutoComplete.razor +++ b/BLAZAMGui/UI/Inputs/ADAutoComplete.razor @@ -6,9 +6,10 @@ Label="@Label" AnchorOrigin="@AnchorOrigin" TransformOrigin="@TransformOrigin" -@bind-Value="SelectedResult" -@bind-Text=@SearchTerm -@ref=AutoComplete + @bind-Value="SelectedResult" + @bind-Text=@SearchTerm + @ref=AutoComplete + AutoFocus=@AutoFocus SearchFuncWithCancel="@GetResults" DebounceInterval=500 ResetValueOnEmptyText="true" @@ -56,14 +57,14 @@ @AppLocalization["Show more"] - - More results than shown... - - - + + More results than shown... + + + -@code { - #nullable disable warnings + @code { +#nullable disable warnings [Parameter] public Func Validation { get; set; } [Parameter] @@ -84,6 +85,8 @@ [Parameter] public bool Disabled { get; set; } + [Parameter] + public bool AutoFocus { get; set; } /// /// The maximum number of results to show in the autocomplete suggestion list @@ -128,7 +131,7 @@ async Task ShowMoreResults() { MaxResults += 10; - await GetResults(SearchTerm,new()); + await GetResults(SearchTerm, new()); await InvokeAsync(StateHasChanged); } @@ -190,11 +193,11 @@ - private async Task> GetResults(string searchText ,CancellationToken token) + private async Task> GetResults(string searchText, CancellationToken token) { var newSource = new CancellationTokenSource(); token = newSource.Token; - foreach(var source in _cancellationList) + foreach (var source in _cancellationList) { source.Cancel(); } @@ -203,7 +206,7 @@ return await Task.Run(() => { - + if (!token.IsCancellationRequested && searchText != null) { SearchResults = new List(); @@ -213,10 +216,10 @@ search.ObjectTypeFilter = SearchObjectType; search.GeneralSearchTerm = searchText.Replace(" ", "*"); search.EnabledOnly = !SearchDisabled; - search.MaxResults = MaxResults+1; + search.MaxResults = MaxResults + 1; if (!search.GeneralSearchTerm.Equals(String.Empty)) { - + var temp = (search.Search(token)).Where(r => r.CanRead); if (!token.IsCancellationRequested) @@ -235,7 +238,7 @@ temp = filteredResults; } } - if (!token.IsCancellationRequested) + if (!token.IsCancellationRequested) { SearchResults = temp; return SearchResults; diff --git a/BLAZAMGui/UI/OU/RenameOUModalContent.razor b/BLAZAMGui/UI/OU/RenameOUModalContent.razor index 1ff8bd8d..3b58ef14 100644 --- a/BLAZAMGui/UI/OU/RenameOUModalContent.razor +++ b/BLAZAMGui/UI/OU/RenameOUModalContent.razor @@ -5,9 +5,9 @@ @if (OU.CanReadField(ActiveDirectoryFields.CanonicalName)) { - - - + + + diff --git a/BLAZAMGui/UI/Outputs/AppDocumentationButton.razor b/BLAZAMGui/UI/Outputs/AppDocumentationButton.razor index 54b0632b..8ee085cf 100644 --- a/BLAZAMGui/UI/Outputs/AppDocumentationButton.razor +++ b/BLAZAMGui/UI/Outputs/AppDocumentationButton.razor @@ -1,10 +1,11 @@ @inject IStringLocalizer AppLocalization @if (!Page.IsNullOrEmpty()) { - + *@ - + diff --git a/BLAZAMGui/UI/Users/NewUserNameEntry.razor b/BLAZAMGui/UI/Users/NewUserNameEntry.razor index 4b21cd1e..5c0709e3 100644 --- a/BLAZAMGui/UI/Users/NewUserNameEntry.razor +++ b/BLAZAMGui/UI/Users/NewUserNameEntry.razor @@ -5,7 +5,7 @@ - + diff --git a/BLAZAMGui/UI/Users/RenameUserModalContent.razor b/BLAZAMGui/UI/Users/RenameUserModalContent.razor index 6a9086ae..36e1b208 100644 --- a/BLAZAMGui/UI/Users/RenameUserModalContent.razor +++ b/BLAZAMGui/UI/Users/RenameUserModalContent.razor @@ -3,7 +3,7 @@ { @if (User.CanReadField(ActiveDirectoryFields.GivenName)) { - + diff --git a/BLAZAMNav/BLAZAMNav.csproj b/BLAZAMNav/BLAZAMNav.csproj index 22bc2742..5fbe8d28 100644 --- a/BLAZAMNav/BLAZAMNav.csproj +++ b/BLAZAMNav/BLAZAMNav.csproj @@ -8,7 +8,7 @@ - + diff --git a/BLAZAMServices/BLAZAMServices.csproj b/BLAZAMServices/BLAZAMServices.csproj index 15d5f72a..407cb362 100644 --- a/BLAZAMServices/BLAZAMServices.csproj +++ b/BLAZAMServices/BLAZAMServices.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/PlaywrightTests/PlaywrightTests.csproj b/PlaywrightTests/PlaywrightTests.csproj index 3d8d7033..1c9781fe 100644 --- a/PlaywrightTests/PlaywrightTests.csproj +++ b/PlaywrightTests/PlaywrightTests.csproj @@ -17,7 +17,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive From a035ddad66ded5e8c5916d90f7bbc6f303454f6a Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Fri, 19 Apr 2024 13:09:02 -0400 Subject: [PATCH 09/64] Improve status elements presentation --- BLAZAMGui/UI/Outputs/StatusCheck.razor | 2 +- .../Settings/ActiveDirectoryStatusPanel.razor | 114 ++++++++++-------- 2 files changed, 63 insertions(+), 53 deletions(-) diff --git a/BLAZAMGui/UI/Outputs/StatusCheck.razor b/BLAZAMGui/UI/Outputs/StatusCheck.razor index 3cf9ed68..4baad88d 100644 --- a/BLAZAMGui/UI/Outputs/StatusCheck.razor +++ b/BLAZAMGui/UI/Outputs/StatusCheck.razor @@ -8,7 +8,7 @@ } else { - @Text + @Text } diff --git a/BLAZAMGui/UI/Settings/ActiveDirectoryStatusPanel.razor b/BLAZAMGui/UI/Settings/ActiveDirectoryStatusPanel.razor index c6b86a0c..a642d055 100644 --- a/BLAZAMGui/UI/Settings/ActiveDirectoryStatusPanel.razor +++ b/BLAZAMGui/UI/Settings/ActiveDirectoryStatusPanel.razor @@ -2,8 +2,8 @@ @inherits AppComponentBase - Active Directory Connection Status - + @AppLocalization["Active Directory Connection Status"] + @if (showProgress) { @@ -11,68 +11,78 @@ } - - - Server Port Open - - - + + @AppLocalization["Server Port Open"] + - Credentials OK - + + - - - Connected + @AppLocalization["Credentials OK"] + - + + + @AppLocalization["Connected"] - - + + + + + + @AppLocalization["Connection Type"] + + + + + @* @if (_credStatus) { - var firstDC = Directory.DomainControllers.FirstOrDefault(); - if(firstDC!=null){ - - - Domain - @firstDC.Domain.Name - - - - Domain Mode - @firstDC.Domain.DomainMode - - - - Domain Level - @firstDC.Domain.DomainModeLevel - - - - Primary Domain Controller - @firstDC.Domain.PdcRoleOwner - - - - Domain - @Directory.DomainControllers.FirstOrDefault()?.Domain.Forest.RootDomain.Name - - - } - else - { - Could not reach Domain Controllers directly from application server. Please check DNS. - } + var firstDC = Directory.DomainControllers.FirstOrDefault(); + if(firstDC!=null){ + + + Domain + @firstDC.Domain.Name + + + + Domain Mode + @firstDC.Domain.DomainMode + + + + Domain Level + @firstDC.Domain.DomainModeLevel + + + + Primary Domain Controller + @firstDC.Domain.PdcRoleOwner + + + + Domain + @Directory.DomainControllers.FirstOrDefault()?.Domain.Forest.RootDomain.Name + + + } + else + { + Could not reach Domain Controllers directly from application server. Please check DNS. + } } *@ - + @code { - #nullable disable warnings +#nullable disable warnings [Parameter] public EventCallback DirectoryConnected { get; set; } @@ -173,7 +183,7 @@ else { - showProgress =false; + showProgress = false; } await InvokeAsync(StateHasChanged); From 58048f4229ab1cc6fe1ea1512de71cb0bdc1c986 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Fri, 19 Apr 2024 14:19:41 -0400 Subject: [PATCH 10/64] Update some colors in dark themes --- BLAZAMThemes/OrangeTheme.cs | 6 ++++-- BLAZAMThemes/RedTheme.cs | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/BLAZAMThemes/OrangeTheme.cs b/BLAZAMThemes/OrangeTheme.cs index 84a81439..31e38634 100644 --- a/BLAZAMThemes/OrangeTheme.cs +++ b/BLAZAMThemes/OrangeTheme.cs @@ -29,11 +29,13 @@ public OrangeTheme() darkPalette.ActionDefault = "#B19A7B"; darkPalette.Dark = "#1E180F"; - darkPalette.Primary = "#402D13"; + + darkPalette.Primary = "#AB8966"; darkPalette.AppbarBackground = "#403313"; darkPalette.DrawerBackground = "#1E1A0F"; darkPalette.DrawerText = "#c7c7c7"; - darkPalette.Secondary = "#765B2B"; + + darkPalette.Secondary = "#D49C51"; diff --git a/BLAZAMThemes/RedTheme.cs b/BLAZAMThemes/RedTheme.cs index 04cc310b..e42df941 100644 --- a/BLAZAMThemes/RedTheme.cs +++ b/BLAZAMThemes/RedTheme.cs @@ -23,10 +23,13 @@ public RedTheme() darkPalette.TextSecondary = "#A77E86"; darkPalette.ActionDefault = "#B17B7E"; darkPalette.Dark = "#1E110F"; + darkPalette.Primary = "#AB6666"; + darkPalette.Primary = "#401313"; darkPalette.AppbarBackground = "#401313"; darkPalette.DrawerBackground = "#1E0F0F"; - darkPalette.Secondary = "#421818"; + darkPalette.Secondary = "#D45151"; + } From 8a539a771832467e600cf65e41eb052888e516e5 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Fri, 19 Apr 2024 14:23:06 -0400 Subject: [PATCH 11/64] Minor GUI improvements --- .../UI/Groups/AssignToModalContent.razor | 2 +- .../UI/Settings/ApplicationSettings.razor | 5 ++- BLAZAMGui/UI/Settings/EmailSettings.razor | 14 ++++++-- BLAZAMGui/UI/Settings/UpdateSettings.razor | 10 ++++-- .../ChangeUserPasswordModalContent.razor | 32 +++++++++---------- 5 files changed, 40 insertions(+), 23 deletions(-) diff --git a/BLAZAMGui/UI/Groups/AssignToModalContent.razor b/BLAZAMGui/UI/Groups/AssignToModalContent.razor index 9d025906..0e7af1c4 100644 --- a/BLAZAMGui/UI/Groups/AssignToModalContent.razor +++ b/BLAZAMGui/UI/Groups/AssignToModalContent.razor @@ -122,7 +122,7 @@ public EventCallback OnGroupMembershipChange { get; set; } /// - /// The directry entry that we are assigning + /// The directory entry that we are assigning /// [Parameter] public IGroupableDirectoryAdapter DirectoryModel { get; set; } diff --git a/BLAZAMGui/UI/Settings/ApplicationSettings.razor b/BLAZAMGui/UI/Settings/ApplicationSettings.razor index e5a3ad88..2608c5c8 100644 --- a/BLAZAMGui/UI/Settings/ApplicationSettings.razor +++ b/BLAZAMGui/UI/Settings/ApplicationSettings.razor @@ -24,7 +24,10 @@ - + diff --git a/BLAZAMGui/UI/Settings/EmailSettings.razor b/BLAZAMGui/UI/Settings/EmailSettings.razor index 24c280ce..94b9fe1f 100644 --- a/BLAZAMGui/UI/Settings/EmailSettings.razor +++ b/BLAZAMGui/UI/Settings/EmailSettings.razor @@ -7,7 +7,9 @@ - + @@ -28,13 +30,19 @@ - + - + diff --git a/BLAZAMGui/UI/Settings/UpdateSettings.razor b/BLAZAMGui/UI/Settings/UpdateSettings.razor index 8c3dffbe..f3c38494 100644 --- a/BLAZAMGui/UI/Settings/UpdateSettings.razor +++ b/BLAZAMGui/UI/Settings/UpdateSettings.razor @@ -57,7 +57,10 @@ - + @if (settings.UseUpdateCredentials) { Configure custom update credentials. @@ -120,7 +123,10 @@ - + diff --git a/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor b/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor index fcb5604d..31220418 100644 --- a/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor +++ b/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor @@ -1,24 +1,24 @@ @inherits AppModalContent + + - + @* + + *@ -@* - - *@ + - + - - - -@AppLocalization["Require change"] + + @AppLocalization["Require change"] - - @code { - #nullable disable warnings + +@code { +#nullable disable warnings string newPassword = ""; string newPasswordConfirm = ""; MudSwitch? requireChangeSwitch; @@ -38,8 +38,8 @@ //User.CommitChanges(); Modal.LoadingData = true; await InvokeAsync(StateHasChanged); - await Task.Run(async() => - + await Task.Run(async () => + { try { @@ -62,9 +62,9 @@ { SnackBarService.Error(ex.Message + " " + ex.InnerException?.Message); } - + }); - + Modal.LoadingData = false; await InvokeAsync(StateHasChanged); } From b00a52f801452405afdf73dc11dad9d4c8ed8c58 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Fri, 19 Apr 2024 14:23:51 -0400 Subject: [PATCH 12/64] Add developer usage-tracking and logging opt-outs --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/Pages/_Layout.cshtml | 2 +- BLAZAM/Program.cs | 18 + .../Adapters/ADOrganizationalUnit.cs | 2 +- BLAZAMDatabase/Context/AppDatabaseFactory.cs | 1 - ...6_Add_Dev_Logging_Opt_OutMySql.Designer.cs | 1800 ++++++++++++++++ ...0418222246_Add_Dev_Logging_Opt_OutMySql.cs | 40 + .../MySqlDatabaseContextModelSnapshot.cs | 8 +- ...230_Add_Dev_Logging_Opt_OutSql.Designer.cs | 1865 +++++++++++++++++ ...240418222230_Add_Dev_Logging_Opt_OutSql.cs | 40 + .../Sql/SqlDatabaseContextModelSnapshot.cs | 8 +- ..._Add_Dev_Logging_Opt_OutSqlite.Designer.cs | 1795 ++++++++++++++++ ...418222213_Add_Dev_Logging_Opt_OutSqlite.cs | 40 + .../SqliteDatabaseContextModelSnapshot.cs | 8 +- BLAZAMDatabase/Models/AppSettings.cs | 13 + BLAZAMGui/UI/Settings/SystemSettings.razor | 61 +- BLAZAMLoggers/Loggers.cs | 57 +- 17 files changed, 5702 insertions(+), 58 deletions(-) create mode 100644 BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.Designer.cs create mode 100644 BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.cs create mode 100644 BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.Designer.cs create mode 100644 BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.cs create mode 100644 BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.Designer.cs create mode 100644 BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.cs diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 15a46f91..0eb21abe 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.17.1935 + 2024.04.18.2259 false BLAZAM False diff --git a/BLAZAM/Pages/_Layout.cshtml b/BLAZAM/Pages/_Layout.cshtml index 6876c658..834867ca 100644 --- a/BLAZAM/Pages/_Layout.cshtml +++ b/BLAZAM/Pages/_Layout.cshtml @@ -48,7 +48,7 @@ 🗙 - @if (!!ApplicationInfo.InDemoMode && !ApplicationInfo.InDebugMode && !Debugger.IsAttached) + @if (!!ApplicationInfo.InDemoMode && !ApplicationInfo.InDebugMode && !Debugger.IsAttached && DatabaseCache.ApplicationSettings?.SendDeveloperAnalytics == true) { diff --git a/BLAZAM/Program.cs b/BLAZAM/Program.cs index 24204b67..343aa781 100644 --- a/BLAZAM/Program.cs +++ b/BLAZAM/Program.cs @@ -84,7 +84,18 @@ public static void Main(string[] args) _ = new Encryption(Configuration?.GetValue("EncryptionKey")); //Setup host logging so it can catch the earliest logs possible + Loggers.SeqServerUri = "http://logs.blazam.org:5341"; + if (Debugger.IsAttached) + { + Loggers.SeqAPIKey = "xE50e1ljqtgLzHcu8pYC"; + } + else + { + Loggers.SeqAPIKey = "8TeLknA8XBk5ybamT5m9"; + + } + Loggers.SetupLoggers(WritablePath + @"logs\", ApplicationInfo.runningVersion.ToString()); builder.Host.UseSerilog(Log.Logger); @@ -106,6 +117,13 @@ public static void Main(string[] args) ApplicationInfo.services = AppInstance.Services; + + + + Loggers.SetupLoggers(WritablePath + @"logs\", ApplicationInfo.runningVersion.ToString()); + + + // Configure the HTTP request pipeline. diff --git a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs index 20d7fb2f..f5b926fe 100644 --- a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs +++ b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs @@ -59,7 +59,7 @@ public IEnumerable SubOUs - public override string SearchUri => "/search/" + DN; + //public override string SearchUri => "/search/" + DN; public override string? CanonicalName { diff --git a/BLAZAMDatabase/Context/AppDatabaseFactory.cs b/BLAZAMDatabase/Context/AppDatabaseFactory.cs index 6ceb7f47..677a967e 100644 --- a/BLAZAMDatabase/Context/AppDatabaseFactory.cs +++ b/BLAZAMDatabase/Context/AppDatabaseFactory.cs @@ -4,7 +4,6 @@ using BLAZAM.Logger; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; -using System.Runtime.CompilerServices; namespace BLAZAM.Database.Context { diff --git a/BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.Designer.cs b/BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.Designer.cs new file mode 100644 index 00000000..f5b34eac --- /dev/null +++ b/BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.Designer.cs @@ -0,0 +1,1800 @@ +// +using System; +using BLAZAM.Database.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BLAZAM.Database.Migrations.MySql +{ + [DbContext(typeof(MySqlDatabaseContext))] + [Migration("20240418222246_Add_Dev_Logging_Opt_OutMySql")] + partial class Add_Dev_Logging_Opt_OutMySql + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.18") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("FieldMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "FieldMapId"); + + b.HasIndex("FieldMapId"); + + b.ToTable("AccessLevelFieldAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("ObjectMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "ObjectMapId"); + + b.HasIndex("ObjectMapId"); + + b.ToTable("AccessLevelObjectAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("PermissionMapsId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "PermissionMapsId"); + + b.HasIndex("PermissionMapsId"); + + b.ToTable("AccessLevelPermissionMapping"); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("MembersId") + .HasColumnType("int"); + + b.HasKey("ChatRoomId", "MembersId"); + + b.HasIndex("MembersId"); + + b.ToTable("AppUserChatRoom"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ADSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("ApplicationBaseDN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FQDN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Password") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ServerPort") + .HasColumnType("int"); + + b.Property("UseTLS") + .HasColumnType("tinyint(1)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectorySettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectoryFields"); + + b.HasData( + new + { + Id = 1, + DisplayName = "Last Name", + FieldName = "sn", + FieldType = 0 + }, + new + { + Id = 2, + DisplayName = "First Name", + FieldName = "givenname", + FieldType = 0 + }, + new + { + Id = 3, + DisplayName = "Office", + FieldName = "physicalDeliveryOfficeName", + FieldType = 0 + }, + new + { + Id = 4, + DisplayName = "Employee ID", + FieldName = "employeeId", + FieldType = 0 + }, + new + { + Id = 5, + DisplayName = "Home Directory", + FieldName = "homeDirectory", + FieldType = 0 + }, + new + { + Id = 6, + DisplayName = "Logon Script Path", + FieldName = "scriptPath", + FieldType = 0 + }, + new + { + Id = 7, + DisplayName = "Profile Path", + FieldName = "profilePath", + FieldType = 0 + }, + new + { + Id = 8, + DisplayName = "Home Phone Number", + FieldName = "homePhone", + FieldType = 0 + }, + new + { + Id = 9, + DisplayName = "Street Address", + FieldName = "streetAddress", + FieldType = 0 + }, + new + { + Id = 10, + DisplayName = "City", + FieldName = "l", + FieldType = 0 + }, + new + { + Id = 11, + DisplayName = "State", + FieldName = "st", + FieldType = 0 + }, + new + { + Id = 12, + DisplayName = "Zip Code", + FieldName = "postalCode", + FieldType = 0 + }, + new + { + Id = 13, + DisplayName = "Site", + FieldName = "site", + FieldType = 0 + }, + new + { + Id = 14, + DisplayName = "Name", + FieldName = "name", + FieldType = 0 + }, + new + { + Id = 15, + DisplayName = "Username", + FieldName = "samaccountname", + FieldType = 0 + }, + new + { + Id = 16, + DisplayName = "SID", + FieldName = "objectSID", + FieldType = 2 + }, + new + { + Id = 17, + DisplayName = "E-Mail Address", + FieldName = "mail", + FieldType = 0 + }, + new + { + Id = 18, + DisplayName = "Description", + FieldName = "description", + FieldType = 0 + }, + new + { + Id = 19, + DisplayName = "Display Name", + FieldName = "displayName", + FieldType = 0 + }, + new + { + Id = 20, + DisplayName = "Distinguished Name", + FieldName = "distinguishedName", + FieldType = 0 + }, + new + { + Id = 21, + DisplayName = "Member Of", + FieldName = "memberOf", + FieldType = 4 + }, + new + { + Id = 22, + DisplayName = "Company", + FieldName = "company", + FieldType = 0 + }, + new + { + Id = 23, + DisplayName = "Title", + FieldName = "title", + FieldType = 0 + }, + new + { + Id = 24, + DisplayName = "User Principal Name", + FieldName = "userPrincipalName", + FieldType = 0 + }, + new + { + Id = 25, + DisplayName = "Telephone Number", + FieldName = "telephoneNumber", + FieldType = 0 + }, + new + { + Id = 26, + DisplayName = "PO Box", + FieldName = "postOfficeBox", + FieldType = 0 + }, + new + { + Id = 27, + DisplayName = "Canonical Name", + FieldName = "cn", + FieldType = 0 + }, + new + { + Id = 28, + DisplayName = "Home Drive", + FieldName = "homeDrive", + FieldType = 3 + }, + new + { + Id = 29, + DisplayName = "Department", + FieldName = "department", + FieldType = 0 + }, + new + { + Id = 30, + DisplayName = "Middle Name", + FieldName = "middleName", + FieldType = 0 + }, + new + { + Id = 31, + DisplayName = "Pager", + FieldName = "pager", + FieldType = 0 + }, + new + { + Id = 32, + DisplayName = "OS", + FieldName = "operatingSystemVersion", + FieldType = 0 + }, + new + { + Id = 33, + DisplayName = "Account Expiration", + FieldName = "accountExpires", + FieldType = 1 + }, + new + { + Id = 34, + DisplayName = "Manager", + FieldName = "manager", + FieldType = 0 + }, + new + { + Id = 35, + DisplayName = "Photo", + FieldName = "thumbnail", + FieldType = 2 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("CustomActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomActiveDirectoryFieldId"); + + b.ToTable("ActiveDirectoryFieldObjectMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AppSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AnalyticsId") + .HasColumnType("longtext"); + + b.Property("AppFQDN") + .HasColumnType("longtext"); + + b.Property("AppIcon") + .HasColumnType("longblob"); + + b.Property("AppName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AutoUpdate") + .HasColumnType("tinyint(1)"); + + b.Property("AutoUpdateTime") + .HasColumnType("time(6)"); + + b.Property("ForceHTTPS") + .HasColumnType("tinyint(1)"); + + b.Property("InstallationCompleted") + .HasColumnType("tinyint(1)"); + + b.Property("LastUpdateCheck") + .HasColumnType("datetime(6)"); + + b.Property("MOTD") + .HasColumnType("longtext"); + + b.Property("MyrtilleURL") + .HasColumnType("longtext"); + + b.Property("SSLCertificateCipher") + .HasColumnType("longtext"); + + b.Property("SendDeveloperAnalytics") + .HasColumnType("tinyint(1)"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("tinyint(1)"); + + b.Property("UpdateBranch") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UpdateDomain") + .HasColumnType("longtext"); + + b.Property("UpdatePassword") + .HasColumnType("longtext"); + + b.Property("UpdateUsername") + .HasColumnType("longtext"); + + b.Property("UseUpdateCredentials") + .HasColumnType("tinyint(1)"); + + b.Property("UserHelpdeskURL") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("AppSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1") + .HasName("CK_Table_Column1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.DirectoryEntryAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Sid") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("DirectoryEntryAuditLogs"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.LogonAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("LogonAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.PermissionsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("PermissionsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.RequestAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("RequestAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SettingsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("SettingsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SystemAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("SystemAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AuthenticationSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminPassword") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("DuoApiHost") + .HasColumnType("longtext"); + + b.Property("DuoClientId") + .HasColumnType("longtext"); + + b.Property("DuoClientSecret") + .HasColumnType("longtext"); + + b.Property("DuoEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("DuoUnreachableBehavior") + .HasColumnType("int"); + + b.Property("SessionTimeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1") + .HasName("CK_Table_Column2"); + }); + + b.HasData( + new + { + Id = 1, + AdminPassword = "password", + DuoEnabled = false, + DuoUnreachableBehavior = 0, + SessionTimeout = 15 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)"); + + b.Property("MembersHash") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ChatRooms"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ChatMessageId") + .HasColumnType("int"); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatMessageId"); + + b.ToTable("UnreadChatMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("CustomActiveDirectoryFields"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminBcc") + .HasColumnType("longtext"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("FromAddress") + .HasColumnType("longtext"); + + b.Property("FromName") + .HasColumnType("longtext"); + + b.Property("ReplyToAddress") + .HasColumnType("longtext"); + + b.Property("ReplyToName") + .HasColumnType("longtext"); + + b.Property("SMTPPassword") + .HasColumnType("longtext"); + + b.Property("SMTPPort") + .HasColumnType("int"); + + b.Property("SMTPServer") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("SMTPUsername") + .HasColumnType("longtext"); + + b.Property("UseSMTPAuth") + .HasColumnType("tinyint(1)"); + + b.Property("UseTLS") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("EmailSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1") + .HasName("CK_Table_Column3"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Body") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("CC") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TemplateName") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("EmailTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("AccessLevels"); + + b.HasData( + new + { + Id = 1, + Name = "Deny All" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AccessLevelId") + .HasColumnType("int"); + + b.Property("AllowOrDeny") + .HasColumnType("tinyint(1)"); + + b.Property("ObjectActionId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AccessLevelId"); + + b.HasIndex("ObjectActionId"); + + b.ToTable("ActionAccessMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("FieldAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 100, + Name = "Read" + }, + new + { + Id = 3, + Level = 1000, + Name = "Edit" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("FieldAccessLevelId") + .HasColumnType("int"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("FieldAccessLevelId"); + + b.HasIndex("FieldId"); + + b.ToTable("AccessLevelFieldMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ObjectAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 1000, + Name = "Read" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AllowDisabled") + .HasColumnType("tinyint(1)"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("ObjectAccessLevelId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ObjectAccessLevelId"); + + b.ToTable("AccessLevelObjectMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ObjectActionFlag"); + + b.HasData( + new + { + Id = 1, + Action = 4, + Name = "Assign" + }, + new + { + Id = 2, + Action = 3, + Name = "UnAssign" + }, + new + { + Id = 3, + Action = 8, + Name = "Unlock" + }, + new + { + Id = 4, + Action = 5, + Name = "Enable" + }, + new + { + Id = 5, + Action = 6, + Name = "Disable" + }, + new + { + Id = 6, + Action = 7, + Name = "Rename" + }, + new + { + Id = 7, + Action = 0, + Name = "Move" + }, + new + { + Id = 8, + Action = 2, + Name = "Create" + }, + new + { + Id = 9, + Action = 1, + Name = "Delete" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionDelegate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DelegateSid") + .IsRequired() + .HasColumnType("varbinary(3072)"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("IsSuperAdmin") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("DelegateSid") + .IsUnique(); + + b.ToTable("PermissionDelegate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("OU") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("PermissionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AllowCustomGroups") + .HasColumnType("tinyint(1)"); + + b.Property("Category") + .HasColumnType("longtext"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("DisplayNameFormula") + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("ParentOU") + .HasColumnType("longtext"); + + b.Property("ParentTemplateId") + .HasColumnType("int"); + + b.Property("PasswordFormula") + .HasColumnType("longtext"); + + b.Property("UsernameFormula") + .HasColumnType("longtext"); + + b.Property("Visible") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("ParentTemplateId"); + + b.ToTable("DirectoryTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("Editable") + .HasColumnType("tinyint(1)"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("DirectoryTemplateId"); + + b.HasIndex("FieldId"); + + b.ToTable("DirectoryTemplateFieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("GroupSid") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("DirectoryTemplateId"); + + b.ToTable("DirectoryTemplateGroups"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("APIToken") + .HasColumnType("longtext"); + + b.Property("DarkMode") + .HasColumnType("tinyint(1)"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("ProfilePicture") + .HasColumnType("longblob"); + + b.Property("SearchDisabledComputers") + .HasColumnType("tinyint(1)"); + + b.Property("SearchDisabledUsers") + .HasColumnType("tinyint(1)"); + + b.Property("Theme") + .HasColumnType("longtext"); + + b.Property("UserGUID") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("Username") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("UserGUID") + .IsUnique(); + + b.ToTable("UserSettings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.NotificationMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Created") + .HasColumnType("datetime(6)"); + + b.Property("Dismissable") + .HasColumnType("tinyint(1)"); + + b.Property("Expires") + .HasColumnType("datetime(6)"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Link") + .HasColumnType("longtext"); + + b.Property("Message") + .HasColumnType("longtext"); + + b.Property("Title") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("NotificationMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("NewsItemId") + .HasColumnType("double"); + + b.Property("NewsItemUpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Slot") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WidgetType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserDashboardWidgets"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteEntries"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("IsRead") + .HasColumnType("tinyint(1)"); + + b.Property("NotificationId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.HasIndex("UserId"); + + b.ToTable("UserNotifications"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("Message") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatRoomId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.Property("PermissionDelegatesId") + .HasColumnType("int"); + + b.Property("PermissionsMapsId") + .HasColumnType("int"); + + b.HasKey("PermissionDelegatesId", "PermissionsMapsId"); + + b.HasIndex("PermissionsMapsId"); + + b.ToTable("PermissionDelegatePermissionMapping"); + }); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessMapping", null) + .WithMany() + .HasForeignKey("FieldMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", null) + .WithMany() + .HasForeignKey("ObjectMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", null) + .WithMany() + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", null) + .WithMany() + .HasForeignKey("MembersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", null) + .WithMany("ObjectTypes") + .HasForeignKey("CustomActiveDirectoryFieldId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.HasOne("BLAZAM.Server.Data.ChatMessage", "ChatMessage") + .WithMany("NotReadBy") + .HasForeignKey("ChatMessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatMessage"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany("ActionMap") + .HasForeignKey("AccessLevelId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAction", "ObjectAction") + .WithMany() + .HasForeignKey("ObjectActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAction"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessLevel", "FieldAccessLevel") + .WithMany() + .HasForeignKey("FieldAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + + b.Navigation("FieldAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", "ObjectAccessLevel") + .WithMany("ObjectAccessMappings") + .HasForeignKey("ObjectAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", "ParentTemplate") + .WithMany() + .HasForeignKey("ParentTemplateId"); + + b.Navigation("ParentTemplate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("FieldValues") + .HasForeignKey("DirectoryTemplateId"); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("AssignedGroupSids") + .HasForeignKey("DirectoryTemplateId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("ReadNewsItems") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("DashboardWidgets") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("FavoriteEntries") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.HasOne("BLAZAM.Database.Models.User.NotificationMessage", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", "ChatRoom") + .WithMany("Messages") + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatRoom"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionDelegate", null) + .WithMany() + .HasForeignKey("PermissionDelegatesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionsMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Navigation("ObjectTypes"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Navigation("ActionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Navigation("ObjectAccessMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Navigation("AssignedGroupSids"); + + b.Navigation("FieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Navigation("DashboardWidgets"); + + b.Navigation("FavoriteEntries"); + + b.Navigation("Messages"); + + b.Navigation("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Navigation("NotReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.cs b/BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.cs new file mode 100644 index 00000000..6088fa03 --- /dev/null +++ b/BLAZAMDatabase/Migrations/MySql/20240418222246_Add_Dev_Logging_Opt_OutMySql.cs @@ -0,0 +1,40 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BLAZAM.Database.Migrations.MySql +{ + /// + public partial class Add_Dev_Logging_Opt_OutMySql : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "SendDeveloperAnalytics", + table: "AppSettings", + type: "tinyint(1)", + nullable: false, + defaultValue: true); + + migrationBuilder.AddColumn( + name: "SendLogsToDeveloper", + table: "AppSettings", + type: "tinyint(1)", + nullable: false, + defaultValue: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "SendDeveloperAnalytics", + table: "AppSettings"); + + migrationBuilder.DropColumn( + name: "SendLogsToDeveloper", + table: "AppSettings"); + } + } +} diff --git a/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs b/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs index 83e36076..28be53c6 100644 --- a/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs +++ b/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs @@ -16,7 +16,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "7.0.17") + .HasAnnotation("ProductVersion", "7.0.18") .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("AccessLevelFieldAccessMapping", b => @@ -451,6 +451,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SSLCertificateCipher") .HasColumnType("longtext"); + b.Property("SendDeveloperAnalytics") + .HasColumnType("tinyint(1)"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("tinyint(1)"); + b.Property("UpdateBranch") .IsRequired() .HasColumnType("longtext"); diff --git a/BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.Designer.cs b/BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.Designer.cs new file mode 100644 index 00000000..4481e6df --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.Designer.cs @@ -0,0 +1,1865 @@ +// +using System; +using BLAZAM.Database.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sql +{ + [DbContext(typeof(SqlDatabaseContext))] + [Migration("20240418222230_Add_Dev_Logging_Opt_OutSql")] + partial class Add_Dev_Logging_Opt_OutSql + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.18") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("FieldMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "FieldMapId"); + + b.HasIndex("FieldMapId"); + + b.ToTable("AccessLevelFieldAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("ObjectMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "ObjectMapId"); + + b.HasIndex("ObjectMapId"); + + b.ToTable("AccessLevelObjectAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("PermissionMapsId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "PermissionMapsId"); + + b.HasIndex("PermissionMapsId"); + + b.ToTable("AccessLevelPermissionMapping"); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("MembersId") + .HasColumnType("int"); + + b.HasKey("ChatRoomId", "MembersId"); + + b.HasIndex("MembersId"); + + b.ToTable("AppUserChatRoom"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ADSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("ApplicationBaseDN") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FQDN") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ServerPort") + .HasColumnType("int"); + + b.Property("UseTLS") + .HasColumnType("bit"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectorySettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectoryFields"); + + b.HasData( + new + { + Id = 1, + DisplayName = "Last Name", + FieldName = "sn", + FieldType = 0 + }, + new + { + Id = 2, + DisplayName = "First Name", + FieldName = "givenname", + FieldType = 0 + }, + new + { + Id = 3, + DisplayName = "Office", + FieldName = "physicalDeliveryOfficeName", + FieldType = 0 + }, + new + { + Id = 4, + DisplayName = "Employee ID", + FieldName = "employeeId", + FieldType = 0 + }, + new + { + Id = 5, + DisplayName = "Home Directory", + FieldName = "homeDirectory", + FieldType = 0 + }, + new + { + Id = 6, + DisplayName = "Logon Script Path", + FieldName = "scriptPath", + FieldType = 0 + }, + new + { + Id = 7, + DisplayName = "Profile Path", + FieldName = "profilePath", + FieldType = 0 + }, + new + { + Id = 8, + DisplayName = "Home Phone Number", + FieldName = "homePhone", + FieldType = 0 + }, + new + { + Id = 9, + DisplayName = "Street Address", + FieldName = "streetAddress", + FieldType = 0 + }, + new + { + Id = 10, + DisplayName = "City", + FieldName = "l", + FieldType = 0 + }, + new + { + Id = 11, + DisplayName = "State", + FieldName = "st", + FieldType = 0 + }, + new + { + Id = 12, + DisplayName = "Zip Code", + FieldName = "postalCode", + FieldType = 0 + }, + new + { + Id = 13, + DisplayName = "Site", + FieldName = "site", + FieldType = 0 + }, + new + { + Id = 14, + DisplayName = "Name", + FieldName = "name", + FieldType = 0 + }, + new + { + Id = 15, + DisplayName = "Username", + FieldName = "samaccountname", + FieldType = 0 + }, + new + { + Id = 16, + DisplayName = "SID", + FieldName = "objectSID", + FieldType = 2 + }, + new + { + Id = 17, + DisplayName = "E-Mail Address", + FieldName = "mail", + FieldType = 0 + }, + new + { + Id = 18, + DisplayName = "Description", + FieldName = "description", + FieldType = 0 + }, + new + { + Id = 19, + DisplayName = "Display Name", + FieldName = "displayName", + FieldType = 0 + }, + new + { + Id = 20, + DisplayName = "Distinguished Name", + FieldName = "distinguishedName", + FieldType = 0 + }, + new + { + Id = 21, + DisplayName = "Member Of", + FieldName = "memberOf", + FieldType = 4 + }, + new + { + Id = 22, + DisplayName = "Company", + FieldName = "company", + FieldType = 0 + }, + new + { + Id = 23, + DisplayName = "Title", + FieldName = "title", + FieldType = 0 + }, + new + { + Id = 24, + DisplayName = "User Principal Name", + FieldName = "userPrincipalName", + FieldType = 0 + }, + new + { + Id = 25, + DisplayName = "Telephone Number", + FieldName = "telephoneNumber", + FieldType = 0 + }, + new + { + Id = 26, + DisplayName = "PO Box", + FieldName = "postOfficeBox", + FieldType = 0 + }, + new + { + Id = 27, + DisplayName = "Canonical Name", + FieldName = "cn", + FieldType = 0 + }, + new + { + Id = 28, + DisplayName = "Home Drive", + FieldName = "homeDrive", + FieldType = 3 + }, + new + { + Id = 29, + DisplayName = "Department", + FieldName = "department", + FieldType = 0 + }, + new + { + Id = 30, + DisplayName = "Middle Name", + FieldName = "middleName", + FieldType = 0 + }, + new + { + Id = 31, + DisplayName = "Pager", + FieldName = "pager", + FieldType = 0 + }, + new + { + Id = 32, + DisplayName = "OS", + FieldName = "operatingSystemVersion", + FieldType = 0 + }, + new + { + Id = 33, + DisplayName = "Account Expiration", + FieldName = "accountExpires", + FieldType = 1 + }, + new + { + Id = 34, + DisplayName = "Manager", + FieldName = "manager", + FieldType = 0 + }, + new + { + Id = 35, + DisplayName = "Photo", + FieldName = "thumbnail", + FieldType = 2 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("CustomActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomActiveDirectoryFieldId"); + + b.ToTable("ActiveDirectoryFieldObjectMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AppSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AnalyticsId") + .HasColumnType("nvarchar(max)"); + + b.Property("AppFQDN") + .HasColumnType("nvarchar(max)"); + + b.Property("AppIcon") + .HasColumnType("varbinary(max)"); + + b.Property("AppName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AutoUpdate") + .HasColumnType("bit"); + + b.Property("AutoUpdateTime") + .HasColumnType("time"); + + b.Property("ForceHTTPS") + .HasColumnType("bit"); + + b.Property("InstallationCompleted") + .HasColumnType("bit"); + + b.Property("LastUpdateCheck") + .HasColumnType("datetime2"); + + b.Property("MOTD") + .HasColumnType("nvarchar(max)"); + + b.Property("MyrtilleURL") + .HasColumnType("nvarchar(max)"); + + b.Property("SSLCertificateCipher") + .HasColumnType("nvarchar(max)"); + + b.Property("SendDeveloperAnalytics") + .HasColumnType("bit"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("bit"); + + b.Property("UpdateBranch") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UpdateDomain") + .HasColumnType("nvarchar(max)"); + + b.Property("UpdatePassword") + .HasColumnType("nvarchar(max)"); + + b.Property("UpdateUsername") + .HasColumnType("nvarchar(max)"); + + b.Property("UseUpdateCredentials") + .HasColumnType("bit"); + + b.Property("UserHelpdeskURL") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("AppSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1") + .HasName("CK_Table_Column1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.DirectoryEntryAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Sid") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("DirectoryEntryAuditLogs"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.LogonAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("LogonAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.PermissionsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("PermissionsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.RequestAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("RequestAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SettingsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("SettingsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SystemAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("SystemAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AuthenticationSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminPassword") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DuoApiHost") + .HasColumnType("nvarchar(max)"); + + b.Property("DuoClientId") + .HasColumnType("nvarchar(max)"); + + b.Property("DuoClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("DuoEnabled") + .HasColumnType("bit"); + + b.Property("DuoUnreachableBehavior") + .HasColumnType("int"); + + b.Property("SessionTimeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1") + .HasName("CK_Table_Column2"); + }); + + b.HasData( + new + { + Id = 1, + AdminPassword = "password", + DuoEnabled = false, + DuoUnreachableBehavior = 0, + SessionTimeout = 15 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("MembersHash") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ChatRooms"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChatMessageId") + .HasColumnType("int"); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatMessageId"); + + b.ToTable("UnreadChatMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("CustomActiveDirectoryFields"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminBcc") + .HasColumnType("nvarchar(max)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("FromAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("FromName") + .HasColumnType("nvarchar(max)"); + + b.Property("ReplyToAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("ReplyToName") + .HasColumnType("nvarchar(max)"); + + b.Property("SMTPPassword") + .HasColumnType("nvarchar(max)"); + + b.Property("SMTPPort") + .HasColumnType("int"); + + b.Property("SMTPServer") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("SMTPUsername") + .HasColumnType("nvarchar(max)"); + + b.Property("UseSMTPAuth") + .HasColumnType("bit"); + + b.Property("UseTLS") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.ToTable("EmailSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1") + .HasName("CK_Table_Column3"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BCC") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Body") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CC") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TemplateName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("EmailTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("AccessLevels"); + + b.HasData( + new + { + Id = 1, + Name = "Deny All" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessLevelId") + .HasColumnType("int"); + + b.Property("AllowOrDeny") + .HasColumnType("bit"); + + b.Property("ObjectActionId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AccessLevelId"); + + b.HasIndex("ObjectActionId"); + + b.ToTable("ActionAccessMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("FieldAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 100, + Name = "Read" + }, + new + { + Id = 3, + Level = 1000, + Name = "Edit" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("FieldAccessLevelId") + .HasColumnType("int"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("FieldAccessLevelId"); + + b.HasIndex("FieldId"); + + b.ToTable("AccessLevelFieldMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ObjectAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 1000, + Name = "Read" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AllowDisabled") + .HasColumnType("bit"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("ObjectAccessLevelId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ObjectAccessLevelId"); + + b.ToTable("AccessLevelObjectMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ObjectActionFlag"); + + b.HasData( + new + { + Id = 1, + Action = 4, + Name = "Assign" + }, + new + { + Id = 2, + Action = 3, + Name = "UnAssign" + }, + new + { + Id = 3, + Action = 8, + Name = "Unlock" + }, + new + { + Id = 4, + Action = 5, + Name = "Enable" + }, + new + { + Id = 5, + Action = 6, + Name = "Disable" + }, + new + { + Id = 6, + Action = 7, + Name = "Rename" + }, + new + { + Id = 7, + Action = 0, + Name = "Move" + }, + new + { + Id = 8, + Action = 2, + Name = "Create" + }, + new + { + Id = 9, + Action = 1, + Name = "Delete" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionDelegate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DelegateSid") + .IsRequired() + .HasColumnType("varbinary(900)"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("IsSuperAdmin") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("DelegateSid") + .IsUnique(); + + b.ToTable("PermissionDelegate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("OU") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("PermissionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AllowCustomGroups") + .HasColumnType("bit"); + + b.Property("Category") + .HasColumnType("nvarchar(max)"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("DisplayNameFormula") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("ParentOU") + .HasColumnType("nvarchar(max)"); + + b.Property("ParentTemplateId") + .HasColumnType("int"); + + b.Property("PasswordFormula") + .HasColumnType("nvarchar(max)"); + + b.Property("UsernameFormula") + .HasColumnType("nvarchar(max)"); + + b.Property("Visible") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("ParentTemplateId"); + + b.ToTable("DirectoryTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("Editable") + .HasColumnType("bit"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("DirectoryTemplateId"); + + b.HasIndex("FieldId"); + + b.ToTable("DirectoryTemplateFieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("GroupSid") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DirectoryTemplateId"); + + b.ToTable("DirectoryTemplateGroups"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("APIToken") + .HasColumnType("nvarchar(max)"); + + b.Property("DarkMode") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("ProfilePicture") + .HasColumnType("varbinary(max)"); + + b.Property("SearchDisabledComputers") + .HasColumnType("bit"); + + b.Property("SearchDisabledUsers") + .HasColumnType("bit"); + + b.Property("Theme") + .HasColumnType("nvarchar(max)"); + + b.Property("UserGUID") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Username") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("UserGUID") + .IsUnique(); + + b.ToTable("UserSettings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.NotificationMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("Dismissable") + .HasColumnType("bit"); + + b.Property("Expires") + .HasColumnType("datetime2"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Link") + .HasColumnType("nvarchar(max)"); + + b.Property("Message") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("NotificationMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NewsItemId") + .HasColumnType("float"); + + b.Property("NewsItemUpdatedAt") + .HasColumnType("datetime2"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Slot") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WidgetType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserDashboardWidgets"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DN") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteEntries"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsRead") + .HasColumnType("bit"); + + b.Property("NotificationId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.HasIndex("UserId"); + + b.ToTable("UserNotifications"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("Message") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatRoomId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.Property("PermissionDelegatesId") + .HasColumnType("int"); + + b.Property("PermissionsMapsId") + .HasColumnType("int"); + + b.HasKey("PermissionDelegatesId", "PermissionsMapsId"); + + b.HasIndex("PermissionsMapsId"); + + b.ToTable("PermissionDelegatePermissionMapping"); + }); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessMapping", null) + .WithMany() + .HasForeignKey("FieldMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", null) + .WithMany() + .HasForeignKey("ObjectMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", null) + .WithMany() + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", null) + .WithMany() + .HasForeignKey("MembersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", null) + .WithMany("ObjectTypes") + .HasForeignKey("CustomActiveDirectoryFieldId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.HasOne("BLAZAM.Server.Data.ChatMessage", "ChatMessage") + .WithMany("NotReadBy") + .HasForeignKey("ChatMessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatMessage"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany("ActionMap") + .HasForeignKey("AccessLevelId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAction", "ObjectAction") + .WithMany() + .HasForeignKey("ObjectActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAction"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessLevel", "FieldAccessLevel") + .WithMany() + .HasForeignKey("FieldAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + + b.Navigation("FieldAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", "ObjectAccessLevel") + .WithMany("ObjectAccessMappings") + .HasForeignKey("ObjectAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", "ParentTemplate") + .WithMany() + .HasForeignKey("ParentTemplateId"); + + b.Navigation("ParentTemplate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("FieldValues") + .HasForeignKey("DirectoryTemplateId"); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("AssignedGroupSids") + .HasForeignKey("DirectoryTemplateId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("ReadNewsItems") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("DashboardWidgets") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("FavoriteEntries") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.HasOne("BLAZAM.Database.Models.User.NotificationMessage", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", "ChatRoom") + .WithMany("Messages") + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatRoom"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionDelegate", null) + .WithMany() + .HasForeignKey("PermissionDelegatesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionsMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Navigation("ObjectTypes"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Navigation("ActionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Navigation("ObjectAccessMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Navigation("AssignedGroupSids"); + + b.Navigation("FieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Navigation("DashboardWidgets"); + + b.Navigation("FavoriteEntries"); + + b.Navigation("Messages"); + + b.Navigation("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Navigation("NotReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.cs b/BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.cs new file mode 100644 index 00000000..6c7f3c78 --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sql/20240418222230_Add_Dev_Logging_Opt_OutSql.cs @@ -0,0 +1,40 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sql +{ + /// + public partial class Add_Dev_Logging_Opt_OutSql : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "SendDeveloperAnalytics", + table: "AppSettings", + type: "bit", + nullable: false, + defaultValue: true); + + migrationBuilder.AddColumn( + name: "SendLogsToDeveloper", + table: "AppSettings", + type: "bit", + nullable: false, + defaultValue: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "SendDeveloperAnalytics", + table: "AppSettings"); + + migrationBuilder.DropColumn( + name: "SendLogsToDeveloper", + table: "AppSettings"); + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs b/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs index 0a21ea3c..3a475aba 100644 --- a/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs +++ b/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs @@ -17,7 +17,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "7.0.17") + .HasAnnotation("ProductVersion", "7.0.18") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -458,6 +458,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SSLCertificateCipher") .HasColumnType("nvarchar(max)"); + b.Property("SendDeveloperAnalytics") + .HasColumnType("bit"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("bit"); + b.Property("UpdateBranch") .IsRequired() .HasColumnType("nvarchar(max)"); diff --git a/BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.Designer.cs b/BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.Designer.cs new file mode 100644 index 00000000..a95ed3c7 --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.Designer.cs @@ -0,0 +1,1795 @@ +// +using System; +using BLAZAM.Database.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteDatabaseContext))] + [Migration("20240418222213_Add_Dev_Logging_Opt_OutSqlite")] + partial class Add_Dev_Logging_Opt_OutSqlite + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.18"); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("INTEGER"); + + b.Property("FieldMapId") + .HasColumnType("INTEGER"); + + b.HasKey("AccessLevelsId", "FieldMapId"); + + b.HasIndex("FieldMapId"); + + b.ToTable("AccessLevelFieldAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("INTEGER"); + + b.Property("ObjectMapId") + .HasColumnType("INTEGER"); + + b.HasKey("AccessLevelsId", "ObjectMapId"); + + b.HasIndex("ObjectMapId"); + + b.ToTable("AccessLevelObjectAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("INTEGER"); + + b.Property("PermissionMapsId") + .HasColumnType("INTEGER"); + + b.HasKey("AccessLevelsId", "PermissionMapsId"); + + b.HasIndex("PermissionMapsId"); + + b.ToTable("AccessLevelPermissionMapping"); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.Property("ChatRoomId") + .HasColumnType("INTEGER"); + + b.Property("MembersId") + .HasColumnType("INTEGER"); + + b.HasKey("ChatRoomId", "MembersId"); + + b.HasIndex("MembersId"); + + b.ToTable("AppUserChatRoom"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ADSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("ApplicationBaseDN") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FQDN") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Password") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ServerPort") + .HasColumnType("INTEGER"); + + b.Property("UseTLS") + .HasColumnType("INTEGER"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectorySettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectoryFields"); + + b.HasData( + new + { + Id = 1, + DisplayName = "Last Name", + FieldName = "sn", + FieldType = 0 + }, + new + { + Id = 2, + DisplayName = "First Name", + FieldName = "givenname", + FieldType = 0 + }, + new + { + Id = 3, + DisplayName = "Office", + FieldName = "physicalDeliveryOfficeName", + FieldType = 0 + }, + new + { + Id = 4, + DisplayName = "Employee ID", + FieldName = "employeeId", + FieldType = 0 + }, + new + { + Id = 5, + DisplayName = "Home Directory", + FieldName = "homeDirectory", + FieldType = 0 + }, + new + { + Id = 6, + DisplayName = "Logon Script Path", + FieldName = "scriptPath", + FieldType = 0 + }, + new + { + Id = 7, + DisplayName = "Profile Path", + FieldName = "profilePath", + FieldType = 0 + }, + new + { + Id = 8, + DisplayName = "Home Phone Number", + FieldName = "homePhone", + FieldType = 0 + }, + new + { + Id = 9, + DisplayName = "Street Address", + FieldName = "streetAddress", + FieldType = 0 + }, + new + { + Id = 10, + DisplayName = "City", + FieldName = "l", + FieldType = 0 + }, + new + { + Id = 11, + DisplayName = "State", + FieldName = "st", + FieldType = 0 + }, + new + { + Id = 12, + DisplayName = "Zip Code", + FieldName = "postalCode", + FieldType = 0 + }, + new + { + Id = 13, + DisplayName = "Site", + FieldName = "site", + FieldType = 0 + }, + new + { + Id = 14, + DisplayName = "Name", + FieldName = "name", + FieldType = 0 + }, + new + { + Id = 15, + DisplayName = "Username", + FieldName = "samaccountname", + FieldType = 0 + }, + new + { + Id = 16, + DisplayName = "SID", + FieldName = "objectSID", + FieldType = 2 + }, + new + { + Id = 17, + DisplayName = "E-Mail Address", + FieldName = "mail", + FieldType = 0 + }, + new + { + Id = 18, + DisplayName = "Description", + FieldName = "description", + FieldType = 0 + }, + new + { + Id = 19, + DisplayName = "Display Name", + FieldName = "displayName", + FieldType = 0 + }, + new + { + Id = 20, + DisplayName = "Distinguished Name", + FieldName = "distinguishedName", + FieldType = 0 + }, + new + { + Id = 21, + DisplayName = "Member Of", + FieldName = "memberOf", + FieldType = 4 + }, + new + { + Id = 22, + DisplayName = "Company", + FieldName = "company", + FieldType = 0 + }, + new + { + Id = 23, + DisplayName = "Title", + FieldName = "title", + FieldType = 0 + }, + new + { + Id = 24, + DisplayName = "User Principal Name", + FieldName = "userPrincipalName", + FieldType = 0 + }, + new + { + Id = 25, + DisplayName = "Telephone Number", + FieldName = "telephoneNumber", + FieldType = 0 + }, + new + { + Id = 26, + DisplayName = "PO Box", + FieldName = "postOfficeBox", + FieldType = 0 + }, + new + { + Id = 27, + DisplayName = "Canonical Name", + FieldName = "cn", + FieldType = 0 + }, + new + { + Id = 28, + DisplayName = "Home Drive", + FieldName = "homeDrive", + FieldType = 3 + }, + new + { + Id = 29, + DisplayName = "Department", + FieldName = "department", + FieldType = 0 + }, + new + { + Id = 30, + DisplayName = "Middle Name", + FieldName = "middleName", + FieldType = 0 + }, + new + { + Id = 31, + DisplayName = "Pager", + FieldName = "pager", + FieldType = 0 + }, + new + { + Id = 32, + DisplayName = "OS", + FieldName = "operatingSystemVersion", + FieldType = 0 + }, + new + { + Id = 33, + DisplayName = "Account Expiration", + FieldName = "accountExpires", + FieldType = 1 + }, + new + { + Id = 34, + DisplayName = "Manager", + FieldName = "manager", + FieldType = 0 + }, + new + { + Id = 35, + DisplayName = "Photo", + FieldName = "thumbnail", + FieldType = 2 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ActiveDirectoryFieldId") + .HasColumnType("INTEGER"); + + b.Property("CustomActiveDirectoryFieldId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("CustomActiveDirectoryFieldId"); + + b.ToTable("ActiveDirectoryFieldObjectMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AppSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("AnalyticsId") + .HasColumnType("TEXT"); + + b.Property("AppFQDN") + .HasColumnType("TEXT"); + + b.Property("AppIcon") + .HasColumnType("BLOB"); + + b.Property("AppName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AutoUpdate") + .HasColumnType("INTEGER"); + + b.Property("AutoUpdateTime") + .HasColumnType("TEXT"); + + b.Property("ForceHTTPS") + .HasColumnType("INTEGER"); + + b.Property("InstallationCompleted") + .HasColumnType("INTEGER"); + + b.Property("LastUpdateCheck") + .HasColumnType("TEXT"); + + b.Property("MOTD") + .HasColumnType("TEXT"); + + b.Property("MyrtilleURL") + .HasColumnType("TEXT"); + + b.Property("SSLCertificateCipher") + .HasColumnType("TEXT"); + + b.Property("SendDeveloperAnalytics") + .HasColumnType("INTEGER"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("INTEGER"); + + b.Property("UpdateBranch") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdateDomain") + .HasColumnType("TEXT"); + + b.Property("UpdatePassword") + .HasColumnType("TEXT"); + + b.Property("UpdateUsername") + .HasColumnType("TEXT"); + + b.Property("UseUpdateCredentials") + .HasColumnType("INTEGER"); + + b.Property("UserHelpdeskURL") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("AppSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.DirectoryEntryAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Sid") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("DirectoryEntryAuditLogs"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.LogonAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("LogonAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.PermissionsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PermissionsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.RequestAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("RequestAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SettingsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("SettingsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SystemAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("SystemAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AuthenticationSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("AdminPassword") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DuoApiHost") + .HasColumnType("TEXT"); + + b.Property("DuoClientId") + .HasColumnType("TEXT"); + + b.Property("DuoClientSecret") + .HasColumnType("TEXT"); + + b.Property("DuoEnabled") + .HasColumnType("INTEGER"); + + b.Property("DuoUnreachableBehavior") + .HasColumnType("INTEGER"); + + b.Property("SessionTimeout") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + + b.HasData( + new + { + Id = 1, + AdminPassword = "password", + DuoEnabled = false, + DuoUnreachableBehavior = 0, + SessionTimeout = 15 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("IsPublic") + .HasColumnType("INTEGER"); + + b.Property("MembersHash") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ChatRooms"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ChatMessageId") + .HasColumnType("INTEGER"); + + b.Property("ChatRoomId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("ChatMessageId"); + + b.ToTable("UnreadChatMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("CustomActiveDirectoryFields"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("AdminBcc") + .HasColumnType("TEXT"); + + b.Property("Enabled") + .HasColumnType("INTEGER"); + + b.Property("FromAddress") + .HasColumnType("TEXT"); + + b.Property("FromName") + .HasColumnType("TEXT"); + + b.Property("ReplyToAddress") + .HasColumnType("TEXT"); + + b.Property("ReplyToName") + .HasColumnType("TEXT"); + + b.Property("SMTPPassword") + .HasColumnType("TEXT"); + + b.Property("SMTPPort") + .HasColumnType("INTEGER"); + + b.Property("SMTPServer") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SMTPUsername") + .HasColumnType("TEXT"); + + b.Property("UseSMTPAuth") + .HasColumnType("INTEGER"); + + b.Property("UseTLS") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("EmailSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Body") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("CC") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TemplateName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("EmailTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("AccessLevels"); + + b.HasData( + new + { + Id = 1, + Name = "Deny All" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AccessLevelId") + .HasColumnType("INTEGER"); + + b.Property("AllowOrDeny") + .HasColumnType("INTEGER"); + + b.Property("ObjectActionId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("AccessLevelId"); + + b.HasIndex("ObjectActionId"); + + b.ToTable("ActionAccessMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("FieldAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 100, + Name = "Read" + }, + new + { + Id = 3, + Level = 1000, + Name = "Edit" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CustomFieldId") + .HasColumnType("INTEGER"); + + b.Property("FieldAccessLevelId") + .HasColumnType("INTEGER"); + + b.Property("FieldId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("FieldAccessLevelId"); + + b.HasIndex("FieldId"); + + b.ToTable("AccessLevelFieldMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ObjectAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 1000, + Name = "Read" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AllowDisabled") + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("ObjectAccessLevelId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("ObjectAccessLevelId"); + + b.ToTable("AccessLevelObjectMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ObjectActionFlag"); + + b.HasData( + new + { + Id = 1, + Action = 4, + Name = "Assign" + }, + new + { + Id = 2, + Action = 3, + Name = "UnAssign" + }, + new + { + Id = 3, + Action = 8, + Name = "Unlock" + }, + new + { + Id = 4, + Action = 5, + Name = "Enable" + }, + new + { + Id = 5, + Action = 6, + Name = "Disable" + }, + new + { + Id = 6, + Action = 7, + Name = "Rename" + }, + new + { + Id = 7, + Action = 0, + Name = "Move" + }, + new + { + Id = 8, + Action = 2, + Name = "Create" + }, + new + { + Id = 9, + Action = 1, + Name = "Delete" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionDelegate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DelegateSid") + .IsRequired() + .HasColumnType("BLOB"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("IsSuperAdmin") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("DelegateSid") + .IsUnique(); + + b.ToTable("PermissionDelegate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("OU") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PermissionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AllowCustomGroups") + .HasColumnType("INTEGER"); + + b.Property("Category") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("DisplayNameFormula") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.Property("ParentOU") + .HasColumnType("TEXT"); + + b.Property("ParentTemplateId") + .HasColumnType("INTEGER"); + + b.Property("PasswordFormula") + .HasColumnType("TEXT"); + + b.Property("UsernameFormula") + .HasColumnType("TEXT"); + + b.Property("Visible") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("ParentTemplateId"); + + b.ToTable("DirectoryTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CustomFieldId") + .HasColumnType("INTEGER"); + + b.Property("DirectoryTemplateId") + .HasColumnType("INTEGER"); + + b.Property("Editable") + .HasColumnType("INTEGER"); + + b.Property("FieldId") + .HasColumnType("INTEGER"); + + b.Property("Required") + .HasColumnType("INTEGER"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("DirectoryTemplateId"); + + b.HasIndex("FieldId"); + + b.ToTable("DirectoryTemplateFieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DirectoryTemplateId") + .HasColumnType("INTEGER"); + + b.Property("GroupSid") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("DirectoryTemplateId"); + + b.ToTable("DirectoryTemplateGroups"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("APIToken") + .HasColumnType("TEXT"); + + b.Property("DarkMode") + .HasColumnType("INTEGER"); + + b.Property("Email") + .HasColumnType("TEXT"); + + b.Property("ProfilePicture") + .HasColumnType("BLOB"); + + b.Property("SearchDisabledComputers") + .HasColumnType("INTEGER"); + + b.Property("SearchDisabledUsers") + .HasColumnType("INTEGER"); + + b.Property("Theme") + .HasColumnType("TEXT"); + + b.Property("UserGUID") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Username") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserGUID") + .IsUnique(); + + b.ToTable("UserSettings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.NotificationMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Created") + .HasColumnType("TEXT"); + + b.Property("Dismissable") + .HasColumnType("INTEGER"); + + b.Property("Expires") + .HasColumnType("TEXT"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("Link") + .HasColumnType("TEXT"); + + b.Property("Message") + .HasColumnType("TEXT"); + + b.Property("Title") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("NotificationMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("NewsItemId") + .HasColumnType("REAL"); + + b.Property("NewsItemUpdatedAt") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Order") + .HasColumnType("INTEGER"); + + b.Property("Slot") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.Property("WidgetType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserDashboardWidgets"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DN") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteEntries"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("IsRead") + .HasColumnType("INTEGER"); + + b.Property("NotificationId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.HasIndex("UserId"); + + b.ToTable("UserNotifications"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ChatRoomId") + .HasColumnType("INTEGER"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("ChatRoomId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.Property("PermissionDelegatesId") + .HasColumnType("INTEGER"); + + b.Property("PermissionsMapsId") + .HasColumnType("INTEGER"); + + b.HasKey("PermissionDelegatesId", "PermissionsMapsId"); + + b.HasIndex("PermissionsMapsId"); + + b.ToTable("PermissionDelegatePermissionMapping"); + }); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessMapping", null) + .WithMany() + .HasForeignKey("FieldMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", null) + .WithMany() + .HasForeignKey("ObjectMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", null) + .WithMany() + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", null) + .WithMany() + .HasForeignKey("MembersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", null) + .WithMany("ObjectTypes") + .HasForeignKey("CustomActiveDirectoryFieldId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.HasOne("BLAZAM.Server.Data.ChatMessage", "ChatMessage") + .WithMany("NotReadBy") + .HasForeignKey("ChatMessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatMessage"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany("ActionMap") + .HasForeignKey("AccessLevelId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAction", "ObjectAction") + .WithMany() + .HasForeignKey("ObjectActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAction"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessLevel", "FieldAccessLevel") + .WithMany() + .HasForeignKey("FieldAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + + b.Navigation("FieldAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", "ObjectAccessLevel") + .WithMany("ObjectAccessMappings") + .HasForeignKey("ObjectAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", "ParentTemplate") + .WithMany() + .HasForeignKey("ParentTemplateId"); + + b.Navigation("ParentTemplate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("FieldValues") + .HasForeignKey("DirectoryTemplateId"); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("AssignedGroupSids") + .HasForeignKey("DirectoryTemplateId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("ReadNewsItems") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("DashboardWidgets") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("FavoriteEntries") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.HasOne("BLAZAM.Database.Models.User.NotificationMessage", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", "ChatRoom") + .WithMany("Messages") + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatRoom"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionDelegate", null) + .WithMany() + .HasForeignKey("PermissionDelegatesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionsMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Navigation("ObjectTypes"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Navigation("ActionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Navigation("ObjectAccessMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Navigation("AssignedGroupSids"); + + b.Navigation("FieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Navigation("DashboardWidgets"); + + b.Navigation("FavoriteEntries"); + + b.Navigation("Messages"); + + b.Navigation("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Navigation("NotReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.cs b/BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.cs new file mode 100644 index 00000000..2fa7dcf3 --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sqlite/20240418222213_Add_Dev_Logging_Opt_OutSqlite.cs @@ -0,0 +1,40 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sqlite +{ + /// + public partial class Add_Dev_Logging_Opt_OutSqlite : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "SendDeveloperAnalytics", + table: "AppSettings", + type: "INTEGER", + nullable: false, + defaultValue: true); + + migrationBuilder.AddColumn( + name: "SendLogsToDeveloper", + table: "AppSettings", + type: "INTEGER", + nullable: false, + defaultValue: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "SendDeveloperAnalytics", + table: "AppSettings"); + + migrationBuilder.DropColumn( + name: "SendLogsToDeveloper", + table: "AppSettings"); + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs b/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs index 12bf6806..542ac306 100644 --- a/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs +++ b/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs @@ -15,7 +15,7 @@ partial class SqliteDatabaseContextModelSnapshot : ModelSnapshot protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.17"); + modelBuilder.HasAnnotation("ProductVersion", "7.0.18"); modelBuilder.Entity("AccessLevelFieldAccessMapping", b => { @@ -449,6 +449,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SSLCertificateCipher") .HasColumnType("TEXT"); + b.Property("SendDeveloperAnalytics") + .HasColumnType("INTEGER"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("INTEGER"); + b.Property("UpdateBranch") .IsRequired() .HasColumnType("TEXT"); diff --git a/BLAZAMDatabase/Models/AppSettings.cs b/BLAZAMDatabase/Models/AppSettings.cs index af61e8da..e9c18746 100644 --- a/BLAZAMDatabase/Models/AppSettings.cs +++ b/BLAZAMDatabase/Models/AppSettings.cs @@ -45,6 +45,19 @@ public string AppName /// public bool ForceHTTPS { get; set; } + + /// + /// Whether to send error and debug logs to the dev log seq destination + /// + [DefaultValue(true)] + public bool SendLogsToDeveloper { get; set; } = true; + + /// + /// Whether to send usage analytics to the dev gooogle analytics destination + /// + [DefaultValue(true)] + public bool SendDeveloperAnalytics { get; set; } = true; + [ValidFQDN] public string? AppFQDN { get; set; } diff --git a/BLAZAMGui/UI/Settings/SystemSettings.razor b/BLAZAMGui/UI/Settings/SystemSettings.razor index bc5e69ea..1069cbd7 100644 --- a/BLAZAMGui/UI/Settings/SystemSettings.razor +++ b/BLAZAMGui/UI/Settings/SystemSettings.razor @@ -1,8 +1,19 @@ @inherits SettingsComponents @AppLocalization["System Settings"] - - @if (settings != null) + + @if (settings != null) { + + + + We ask that you allow developer analytics so we can understand how our app is used to focus our + efforts on what our users think matters most. + + + + @@ -15,34 +26,48 @@ } - - - - Download Logs - + + + + Download Logs + Log Directory: @Loggers.LogPath - + - + + + We ask that you allow developer logging so we can quickly and transparently improve Blazam and to aid in our developement efforts. + + - + - - + - - Save Changes - - - @code { + + + + + + + + + + Save Changes + + + +@code { #nullable disable warnings AppSettings? settings = new AppSettings(); @@ -66,7 +91,7 @@ [Inject] ApplicationManager applicationManager { get; set; } - + async Task RestartApplication() { if (await MessageService.Confirm("Are you sure you want to restart the application? All connected users will be disconnected.", "Restart Application")) diff --git a/BLAZAMLoggers/Loggers.cs b/BLAZAMLoggers/Loggers.cs index 7c9e13e4..a9bb6ce3 100644 --- a/BLAZAMLoggers/Loggers.cs +++ b/BLAZAMLoggers/Loggers.cs @@ -14,18 +14,8 @@ public static class Loggers public static string LogPath => _logPath; private static string _logPath; private static string _applicationVersion; - - private static string _seqAPIKey - { - get - { -#if (DEBUG) - return "xE50e1ljqtgLzHcu8pYC"; -#else - return "8TeLknA8XBk5ybamT5m9"; -#endif - } - } + public static string SeqServerUri { get; set; } + public static string SeqAPIKey { get; set; } #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. public static ILogger RequestLogger { get; private set; } public static ILogger DatabaseLogger { get; private set; } @@ -34,7 +24,7 @@ private static string _seqAPIKey public static ILogger SystemLogger { get; set; } #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. - public static void SetupLoggers(string logPath,string applicationVersion="1.0") + public static void SetupLoggers(string logPath, string applicationVersion = "1.0") { _logPath = logPath; _applicationVersion = applicationVersion; @@ -61,7 +51,7 @@ public static void SetupLoggers(string logPath,string applicationVersion="1.0") //lc.WriteTo.Console(); lc.Filter.ByExcluding(e => e.Level == LogEventLevel.Information).WriteTo.Console(); }) - .WriteTo.Seq("http://logs.blazam.org:5341", apiKey: _seqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning) + .WriteTo.Seq(SeqServerUri, apiKey: SeqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning) .CreateLogger(); SystemLogger = Log.Logger; @@ -70,28 +60,29 @@ public static void SetupLoggers(string logPath,string applicationVersion="1.0") private static Serilog.ILogger SetupLogger(string logFilePath, RollingInterval rollingInterval = RollingInterval.Hour) { - return new LoggerConfiguration() - .Enrich.FromLogContext() - .Enrich.WithMachineName() - .Enrich.WithEnvironmentName() - .Enrich.WithEnvironmentUserName() - .Enrich.WithProperty("Application Name", "Blazam") + var loggerBuilder = new LoggerConfiguration() + .Enrich.FromLogContext() + .Enrich.WithMachineName() + .Enrich.WithEnvironmentName() + .Enrich.WithEnvironmentUserName() + .Enrich.WithProperty("Application Name", "Blazam") - .Enrich.WithProperty("Application Version", _applicationVersion) - //.WriteTo.File(WritablePath+@"\logs\log.txt") - .WriteTo.File(logFilePath, - rollingInterval: rollingInterval, - outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}", - retainedFileTimeLimit: TimeSpan.FromDays(30)) + .Enrich.WithProperty("Application Version", _applicationVersion) + //.WriteTo.File(WritablePath+@"\logs\log.txt") + .WriteTo.File(logFilePath, + rollingInterval: rollingInterval, + outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}", + retainedFileTimeLimit: TimeSpan.FromDays(30)) - .WriteTo.Logger(lc => - { - //lc.WriteTo.Console(); - lc.Filter.ByExcluding(e => e.Level == LogEventLevel.Information).WriteTo.Console(); - }) - .WriteTo.Seq("http://logs.blazam.org:5341", apiKey: _seqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning) + .WriteTo.Logger(lc => + { + //lc.WriteTo.Console(); + lc.Filter.ByExcluding(e => e.Level == LogEventLevel.Information).WriteTo.Console(); + }); + if() + loggerBuilder.WriteTo.Seq(SeqServerUri, apiKey: SeqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning) - .CreateLogger(); + } } From 7baacd21ce0619d678fa0803d3b49de984b15158 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Fri, 19 Apr 2024 14:37:47 -0400 Subject: [PATCH 13/64] Change error logging for no DN --- .../Adapters/DirectoryEntryAdapter.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs index 0d7f8393..877e16ef 100644 --- a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs +++ b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs @@ -457,15 +457,19 @@ public virtual void MoveTo(IADOrganizationalUnit parentOUToMoveTo) /// protected virtual bool HasPermission(Func, IEnumerable> allowSelector, Func, IEnumerable>? denySelector = null, bool nestedSearch = false) { - if (CurrentUser == null) return false; - if (DN == null) + try { - Loggers.ActiveDirectryLogger.Error("The directory object " + ADSPath - + " did not load a distinguished name." + " {@Error}", new ApplicationException()); + if (CurrentUser == null) return false; + if (DN == null) + { + throw new ApplicationException("The directory object " + ADSPath+ " did not load a distinguished name."); + } + return CurrentUser.HasPermission(DN, allowSelector, denySelector, nestedSearch); + }catch(Exception ex) + { + Loggers.ActiveDirectryLogger.Error(ex.Message + " {@Error}", ex); return false; } - return CurrentUser.HasPermission(DN,allowSelector, denySelector, nestedSearch); - } public virtual bool CanRead From 79c09e6e5421a66b2f4fce1cae5a356c9e3e6599 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Fri, 19 Apr 2024 15:36:18 -0400 Subject: [PATCH 14/64] Optimize uri searching for directory entries --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/Program.cs | 12 ++++++++++- .../Adapters/ADOrganizationalUnit.cs | 3 ++- .../Adapters/DirectoryEntryAdapter.cs | 2 +- BLAZAMLoggers/Loggers.cs | 20 ++++++++++++------- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 0eb21abe..33b888ef 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.18.2259 + 2024.04.19.1934 false BLAZAM False diff --git a/BLAZAM/Program.cs b/BLAZAM/Program.cs index 343aa781..9c074257 100644 --- a/BLAZAM/Program.cs +++ b/BLAZAM/Program.cs @@ -117,9 +117,19 @@ public static void Main(string[] args) ApplicationInfo.services = AppInstance.Services; + try + { + var context = AppInstance.Services.GetRequiredService().CreateDbContext(); + if(context!=null && context.AppSettings.FirstOrDefault()?.SendLogsToDeveloper != null) + { + Loggers.SendToSeqServer = context.AppSettings.FirstOrDefault().SendLogsToDeveloper; + } - + }catch (Exception ex) + { + Loggers.SystemLogger.Error(ex.Message + " {@Error}", ex); + } Loggers.SetupLoggers(WritablePath + @"logs\", ApplicationInfo.runningVersion.ToString()); diff --git a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs index f5b926fe..27dc535c 100644 --- a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs +++ b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs @@ -7,6 +7,7 @@ using System.Diagnostics.Contracts; using System.DirectoryServices; using System.Reflection.PortableExecutable; +using System.Web; namespace BLAZAM.ActiveDirectory.Adapters { @@ -59,7 +60,7 @@ public IEnumerable SubOUs - //public override string SearchUri => "/search/" + DN; + public override string SearchUri => "/search/" + HttpUtility.UrlEncode(DN); public override string? CanonicalName { diff --git a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs index 877e16ef..431266d6 100644 --- a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs +++ b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs @@ -32,7 +32,7 @@ public virtual string SearchUri { get { - return "/search/" + HttpUtility.UrlEncode(DN); + return "/search/" + HttpUtility.UrlEncode(CanonicalName); } } diff --git a/BLAZAMLoggers/Loggers.cs b/BLAZAMLoggers/Loggers.cs index a9bb6ce3..03ee4099 100644 --- a/BLAZAMLoggers/Loggers.cs +++ b/BLAZAMLoggers/Loggers.cs @@ -14,6 +14,7 @@ public static class Loggers public static string LogPath => _logPath; private static string _logPath; private static string _applicationVersion; + public static bool SendToSeqServer { get; set; } = true; public static string SeqServerUri { get; set; } public static string SeqAPIKey { get; set; } #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. @@ -33,7 +34,7 @@ public static void SetupLoggers(string logPath, string applicationVersion = "1.0 ActiveDirectryLogger = SetupLogger(logPath + @"activedirectory\activedirectory.txt"); UpdateLogger = SetupLogger(logPath + @"update\update.txt", RollingInterval.Month); - Log.Logger = new LoggerConfiguration() + var systemLoggerBuilder = new LoggerConfiguration() .Enrich.FromLogContext() .Enrich.WithMachineName() .Enrich.WithEnvironmentName() @@ -50,9 +51,12 @@ public static void SetupLoggers(string logPath, string applicationVersion = "1.0 { //lc.WriteTo.Console(); lc.Filter.ByExcluding(e => e.Level == LogEventLevel.Information).WriteTo.Console(); - }) - .WriteTo.Seq(SeqServerUri, apiKey: SeqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning) - .CreateLogger(); + }); + if (SendToSeqServer) + { + systemLoggerBuilder.WriteTo.Seq(SeqServerUri, apiKey: SeqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning); + } + Log.Logger = systemLoggerBuilder.CreateLogger(); SystemLogger = Log.Logger; //Serilog.Debugging.SelfLog.Enable(Console.Error); @@ -79,10 +83,12 @@ private static Serilog.ILogger SetupLogger(string logFilePath, RollingInterval r //lc.WriteTo.Console(); lc.Filter.ByExcluding(e => e.Level == LogEventLevel.Information).WriteTo.Console(); }); - if() - loggerBuilder.WriteTo.Seq(SeqServerUri, apiKey: SeqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning) + if (SendToSeqServer) + { + loggerBuilder.WriteTo.Seq(SeqServerUri, apiKey: SeqAPIKey, restrictedToMinimumLevel: LogEventLevel.Warning); + } - + return loggerBuilder.CreateLogger(); } } From ed1862033e1163ff96ab62422cd664843db0b59f Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 11:39:43 -0400 Subject: [PATCH 15/64] Code merge of AD and OU tree views --- BLAZAM/Pages/Groups/CreateGroup.razor | 17 +- BLAZAM/Pages/OU/CreateOU.razor | 16 +- .../Adapters/ADOrganizationalUnit.cs | 31 ++- .../Interfaces/IADOrganizationalUnit.cs | 9 +- .../RegisterPrintersModalContent.razor | 33 ++- .../UI/Inputs/TreeViews/ADTreeView.razor | 40 +++ .../UI/Inputs/TreeViews/ADTreeView.razor.cs | 74 +++++ .../UI/Inputs/TreeViews/OUTreeView.razor | 66 +++++ .../UI/Inputs/TreeViews/OUTreeView.razor.cs | 64 +++++ .../UI/Inputs/TreeViews/OUTreeViewBase.cs | 192 +++++++++++++ BLAZAMGui/UI/OU/MoveToOUModalContent.razor | 6 +- BLAZAMGui/UI/OU/OUTreeView.razor | 256 ----------------- BLAZAMGui/UI/Outputs/ADTreeView.razor | 257 ------------------ .../Templates/EditDirectoryTemplate.razor | 8 +- 14 files changed, 511 insertions(+), 558 deletions(-) create mode 100644 BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor create mode 100644 BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor.cs create mode 100644 BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor create mode 100644 BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs create mode 100644 BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs delete mode 100644 BLAZAMGui/UI/OU/OUTreeView.razor delete mode 100644 BLAZAMGui/UI/Outputs/ADTreeView.razor diff --git a/BLAZAM/Pages/Groups/CreateGroup.razor b/BLAZAM/Pages/Groups/CreateGroup.razor index 8c02e303..5721d840 100644 --- a/BLAZAM/Pages/Groups/CreateGroup.razor +++ b/BLAZAM/Pages/Groups/CreateGroup.razor @@ -73,7 +73,7 @@ int selectedStep; - + @@ -89,17 +89,20 @@ templates = await Context?.DirectoryTemplates.ToListAsync(); await InvokeAsync(StateHasChanged); } - async void OUSelected(IADOrganizationalUnit ou) + async void OUSelected(IDirectoryEntryAdapter entry) { - if (parentOU == null) + if (entry is IADOrganizationalUnit ou) { + if (parentOU == null) + { + parentOU = ou; + return; + } parentOU = ou; - return; - } - parentOU = ou; - await InvokeAsync(StateHasChanged); + await InvokeAsync(StateHasChanged); + } } async void CreateNewGroup() diff --git a/BLAZAM/Pages/OU/CreateOU.razor b/BLAZAM/Pages/OU/CreateOU.razor index 8dc500cc..a61621fd 100644 --- a/BLAZAM/Pages/OU/CreateOU.razor +++ b/BLAZAM/Pages/OU/CreateOU.razor @@ -84,19 +84,23 @@ return false; } */ - async void OUSelected(IADOrganizationalUnit ou) + async void OUSelected(IDirectoryEntryAdapter entry) { - if (parentOU == null) + if (entry is IADOrganizationalUnit ou) { + if (parentOU == null) + { + parentOU = ou; + return; + } parentOU = ou; - return; - } - parentOU = ou; - await InvokeAsync(StateHasChanged); + await InvokeAsync(StateHasChanged); + } } + async void CreateNewOU() { LoadingData = true; diff --git a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs index 27dc535c..92cd898a 100644 --- a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs +++ b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs @@ -14,9 +14,6 @@ namespace BLAZAM.ActiveDirectory.Adapters public class ADOrganizationalUnit : DirectoryEntryAdapter, IADOrganizationalUnit { private IEnumerable? childOUCache; - //private IQueryable? childUserCache; - //private IQueryable? childComputerCache; - //private IQueryable? childGroupCache; @@ -27,7 +24,7 @@ public async Task HasChildrenAsync() return HasChildren; }); } - public async Task> GetChildrenAsync() + public async Task> GetChildrenAsync() { return await Task.Run(() => { @@ -35,9 +32,9 @@ public async Task> GetChildrenAsync() }); } - public HashSet CachedTreeViewSubOUs { get; private set; } = new(); + public HashSet CachedTreeViewSubOUs { get; private set; } = new(); - public HashSet TreeViewSubOUs + public HashSet TreeViewSubOUs { get { @@ -46,7 +43,7 @@ public HashSet TreeViewSubOUs } } - public IEnumerable SubOUs + public IEnumerable SubOUs { get { @@ -142,6 +139,26 @@ public virtual bool CanReadInSubOus ); } + } + public virtual bool CanReadUsers + { + get + { + return HasPermission(p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.User && + om.ObjectAccessLevel.Level > ObjectAccessLevels.Deny.Level + ))), + p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.User && + om.ObjectAccessLevel.Level == ObjectAccessLevels.Deny.Level + ))) + ); + } + } public virtual bool CanCreateUser { diff --git a/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs b/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs index 7e56ae4a..e3f265b2 100644 --- a/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs +++ b/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs @@ -13,17 +13,18 @@ public interface IADOrganizationalUnit : IDirectoryEntryAdapter IQueryable AppliedPermissionMappings { get; } List DirectPermissionMappings { get; } IQueryable OffspringPermissionMappings { get; } - IEnumerable SubOUs { get; } + IEnumerable SubOUs { get; } - HashSet CachedTreeViewSubOUs { get;} - HashSet TreeViewSubOUs { get; } + HashSet CachedTreeViewSubOUs { get;} + HashSet TreeViewSubOUs { get; } bool CanReadInSubOus { get; } bool CanCreateUser { get; } + bool CanReadUsers { get; } IADGroup CreateGroup(string containerName); IADUser CreateUser(string containerName); IADOrganizationalUnit CreateOU(string containerName); - Task> GetChildrenAsync(); + Task> GetChildrenAsync(); Task HasChildrenAsync(); IADPrinter CreatePrinter(string containerName, string uncPath, string shortServerName); IADPrinter CreatePrinter(SharedPrinter sharedPrinter); diff --git a/BLAZAMGui/UI/Computers/RegisterPrintersModalContent.razor b/BLAZAMGui/UI/Computers/RegisterPrintersModalContent.razor index f619e4b5..deddd658 100644 --- a/BLAZAMGui/UI/Computers/RegisterPrintersModalContent.razor +++ b/BLAZAMGui/UI/Computers/RegisterPrintersModalContent.razor @@ -23,7 +23,7 @@ - + @@ -84,23 +84,26 @@ } - private void destinationOUChanged(IADOrganizationalUnit newDestinationOU) + private void destinationOUChanged(IDirectoryEntryAdapter newDst) { - if (destinationOU == newDestinationOU) return; - destinationOU = newDestinationOU; - if (destinationOU != null && selectedPrinters != null && selectedPrinters.Count > 0) + if (newDst is IADOrganizationalUnit newDestinationOU) { - validated = true; - Modal.YesText = AppLocalization["Register"]; - Modal.OnYes = RegisterSelectedPrinters; - Modal.RefreshView(); - } - else - { - Modal.YesText = AppLocalization["Next"]; - Modal.OnYes = (() => { activePanel = 1; InvokeAsync(StateHasChanged); }); - Modal.RefreshView(); + if (destinationOU == newDestinationOU) return; + destinationOU = newDestinationOU; + if (destinationOU != null && selectedPrinters != null && selectedPrinters.Count > 0) + { + validated = true; + Modal.YesText = AppLocalization["Register"]; + Modal.OnYes = RegisterSelectedPrinters; + Modal.RefreshView(); + } + else + { + Modal.YesText = AppLocalization["Next"]; + Modal.OnYes = (() => { activePanel = 1; InvokeAsync(StateHasChanged); }); + Modal.RefreshView(); + } } } // protected override bool ValidateModal() diff --git a/BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor b/BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor new file mode 100644 index 00000000..1fe8047f --- /dev/null +++ b/BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor @@ -0,0 +1,40 @@ +@inherits OUTreeViewBase + +@Label + + + + + + + + + + +@if (RootOU == null || !RootOU.Any() || LoadingData) +{ + + +} + + + + diff --git a/BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor.cs b/BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor.cs new file mode 100644 index 00000000..8a655fed --- /dev/null +++ b/BLAZAMGui/UI/Inputs/TreeViews/ADTreeView.razor.cs @@ -0,0 +1,74 @@ +using BLAZAM.ActiveDirectory.Adapters; +using BLAZAM.ActiveDirectory.Interfaces; +using BLAZAM.Common.Data; +using Microsoft.AspNetCore.Components; +using Microsoft.EntityFrameworkCore; +using MudBlazor; +using Color = MudBlazor.Color; + +namespace BLAZAM.Gui.UI.Inputs.TreeViews +{ + public partial class ADTreeView : OUTreeViewBase + { +#nullable disable warnings + /// + /// If true all directory entry types will be listed. + /// If false, only OU's will be shown. + /// + /// + /// Default value is true + /// + [Parameter] + public bool ShowAllEntries { get; set; } = true; + + + + + + + private HashSet? GetItems(IDirectoryEntryAdapter parent) + { + if (parent.IsExpanded || parent.CachedChildren != null) + { + + var items = parent.Children + .Where(c => (c.ObjectType == ActiveDirectoryObjectType.OU && ShouldShowOU(c)) || c.CanRead) + .MoveToTop(c => c.ObjectType == ActiveDirectoryObjectType.OU); + if (!ShowAllEntries) + { + items = items.Where(i => i.ObjectType == ActiveDirectoryObjectType.OU); + } + var hashst = items.ToHashSet(); + return hashst; + } + return null; + } + protected async Task> GetChildrenAsync(IDirectoryEntryAdapter parentNode) + { + return await Task.Run(() => + { + return GetChildren(parentNode); + + }); + } + protected HashSet GetChildren(IDirectoryEntryAdapter parentNode) + { + + if (ShowAllEntries) + { + var children = parentNode.Children.ToHashSet(); + return children; + + } + else if (parentNode is IADOrganizationalUnit ou) + { + + var children = ou.Children.Where(c => c.ObjectType == ActiveDirectoryObjectType.OU).ToHashSet(); + return children; + } + return new(); + + + } + } +} \ No newline at end of file diff --git a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor new file mode 100644 index 00000000..6d7a4775 --- /dev/null +++ b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor @@ -0,0 +1,66 @@ +@inherits OUTreeViewBase + +@Label + + + + + + @* + @{ + string itemIcon = Icons.Material.Filled.Folder; + } + @if (context.IsExpanded) + { + itemIcon = Icons.Material.Filled.FolderOpen; + } + @if (Badge != null) + { + + + + @context.CanonicalName + + @EndAdornment?.Invoke(context) + + + } + else + { + + + @context.CanonicalName + @EndAdornment?.Invoke(context) + } + *@ + + + + +@if (RootOU == null || !RootOU.Any() || LoadingData) +{ + + +} + + + + diff --git a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs new file mode 100644 index 00000000..c3f5dc65 --- /dev/null +++ b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs @@ -0,0 +1,64 @@ +using BLAZAM.ActiveDirectory.Adapters; +using BLAZAM.ActiveDirectory.Interfaces; +using Microsoft.AspNetCore.Components; +using Microsoft.EntityFrameworkCore; +using MudBlazor; + +namespace BLAZAM.Gui.UI.Inputs.TreeViews +{ + public partial class OUTreeView:OUTreeViewBase + { +#nullable disable warnings + + + + + [Parameter] + public RenderFragment? EndAdornment { get; set; } + + HashSet GetChildren(IDirectoryEntryAdapter context) + { + if (context is IADOrganizationalUnit ou) + { + if (ou.IsExpanded) + { + return ou.TreeViewSubOUs; + } + else + { + return ou.CachedTreeViewSubOUs; + } + } + return new HashSet(); + } + async Task> GetChildrenAsync(IDirectoryEntryAdapter parentNode) + { + return await Task.Run(() => + { + return GetChildren(parentNode); + + + }); + } + + + + + + + + + + + + + + + + + + + + + } +} \ No newline at end of file diff --git a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs new file mode 100644 index 00000000..98b1f0ab --- /dev/null +++ b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs @@ -0,0 +1,192 @@ +using BLAZAM.ActiveDirectory.Adapters; +using Microsoft.EntityFrameworkCore; +using MudBlazor; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Color = MudBlazor.Color; + +namespace BLAZAM.Gui.UI.Inputs.TreeViews +{ + public class OUTreeViewBase : AppComponentBase + { + + protected ADOrganizationalUnit TopLevel; + IADOrganizationalUnit? _startingSelectedNode; + + + IDirectoryEntryAdapter? _selectedEntry; + + [Parameter] + public bool StartRootExpanded { get; set; } = true; + + [Parameter] + public string? Label { get; set; } + + [Parameter] + public HashSet RootOU { get; set; } = new HashSet(); + [Parameter] + public IADOrganizationalUnit? StartingSelectedOU + { + get => _startingSelectedNode; set + { + if (value == _startingSelectedNode) return; + _startingSelectedNode = value; + _selectedEntry = value; + + + StartingSelectedOUChanged.InvokeAsync(value); + } + + } + + [Parameter] + public EventCallback StartingSelectedOUChanged + { + get; set; + } + + [Parameter] + public IDirectoryEntryAdapter? SelectedEntry + { + get => _selectedEntry; set + { + if (value == _selectedEntry) return; + if (value != null && value.CanRead) + { + var cache = _selectedEntry; + + _selectedEntry = value; + if (cache == null && RootOU.Count>0 && value == RootOU.First()) return; + + + SelectedEntryChanged.InvokeAsync(value); + + + //if (TopLevel == null) + // OnInitializedAsync(); + + if(RootOU.Count > 0) + OpenToSelected(); + + } + } + + } + + [Parameter] + public EventCallback SelectedEntryChanged { get; set; } + [Parameter] + public Func? EndText { get; set; } + + protected Color GetItemColor(IDirectoryEntryAdapter item) + { + if (item is IAccountDirectoryAdapter account) + { + if (account.Disabled) return Color.Error; + if (account.LockedOut) return Color.Warning; + if (account.Created > DateTime.Now.AddDays(-14)) return Color.Success; + } + return Color.Default; + } + protected async Task InitializeTreeView() + { + //Wait a few milliseconds to trip the async into acutally awaiting + await Task.Delay(500); + + //ApplicationBaseOUs = Directory.OUs.FindSubOusByDN(null); + + + if (RootOU is null || RootOU.Count < 1) + { + TopLevel = new ADOrganizationalUnit(); + TopLevel.Parse(directory: Directory, directoryEntry: Directory.GetDirectoryEntry()); + _ = TopLevel.SubOUs; + RootOU = new HashSet() { TopLevel }; + } + if (StartingSelectedOU == null) + { + SelectedEntry = TopLevel; + SelectedEntry.IsExpanded = true; + } + else + OpenToSelected(); + LoadingData = false; + await InvokeAsync(StateHasChanged); + } + + + + + + + + + + + + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + await InitializeTreeView(); + + } + + protected void OpenToSelected() + { + + if (StartRootExpanded) + { + if (!SelectedEntry.Equals(RootOU)) + { + IDirectoryEntryAdapter? firstThing = RootOU.First(); + if (firstThing is IADOrganizationalUnit openThis) + { + openThis.IsExpanded = true; + while (openThis != null) + { + var child = openThis.SubOUs.Where(c => SelectedEntry.DN.Contains(c.DN) && !SelectedEntry.DN.Equals(c.DN)).FirstOrDefault(); + if (child != null) + { + child.IsExpanded = true; + + _ = (child as IADOrganizationalUnit)?.TreeViewSubOUs; + openThis = child as IADOrganizationalUnit; + } + else + { + var matchingOU = openThis.SubOUs.Where(c => SelectedEntry.DN.Equals(c.DN)).FirstOrDefault(); + if (matchingOU != null) + matchingOU.IsSelected = true; + break; + } + + + } + } + } + } + //InvokeAsync(StateHasChanged); + + + } + + protected bool ShouldShowOU(IDirectoryEntryAdapter entry) + { + if (entry is IADOrganizationalUnit ou) + { + if (ou.CanRead) + return true; + if (ou.CanReadInSubOus) + return true; + if (ou.CanReadUsers) + return true; + } + return false; + } + } +} diff --git a/BLAZAMGui/UI/OU/MoveToOUModalContent.razor b/BLAZAMGui/UI/OU/MoveToOUModalContent.razor index e6a8cb3a..f6acbac3 100644 --- a/BLAZAMGui/UI/OU/MoveToOUModalContent.razor +++ b/BLAZAMGui/UI/OU/MoveToOUModalContent.razor @@ -3,11 +3,9 @@ Choose OU -@* + - *@ - @code { @@ -48,7 +46,7 @@ DirectoryModel.MoveTo(ouToMoveTo); - SnackBarService.Warning(DirectoryModel.CanonicalName + " has been moved to " + SelectedOU.CanonicalName + ", but changes need to be saved."); + SnackBarService.Warning(DirectoryModel.CanonicalName + " has been moved to " + ouToMoveTo.CanonicalName + ", but changes need to be saved."); await ModelChanged.InvokeAsync(); Close(); return; diff --git a/BLAZAMGui/UI/OU/OUTreeView.razor b/BLAZAMGui/UI/OU/OUTreeView.razor deleted file mode 100644 index f5e1108e..00000000 --- a/BLAZAMGui/UI/OU/OUTreeView.razor +++ /dev/null @@ -1,256 +0,0 @@ -@inherits AppComponentBase - -@Label - - - - - - @* - @{ - string itemIcon = Icons.Material.Filled.Folder; - } - @if (context.IsExpanded) - { - itemIcon = Icons.Material.Filled.FolderOpen; - } - @if (Badge != null) - { - - - - @context.CanonicalName - - @EndAdornment?.Invoke(context) - - - } - else - { - - - @context.CanonicalName - @EndAdornment?.Invoke(context) - } - *@ - - - - -@if (RootOU == null || !RootOU.Any() || LoadingData) -{ - - -} - - - -@code { - #nullable disable warnings - Dictionary OULoadingStates = new(); - - [Parameter] - public bool StartRootExpanded { get; set; } = true; - - [Parameter] - public string? Label { get; set; } - [Parameter] - public Func? EndText { get; set; } - - - [Parameter] - public object? Badge { get; set; } - - - [Parameter] - public RenderFragment? EndAdornment { get; set; } - - IADOrganizationalUnit? _selectedNode; - - [Parameter] - public HashSet RootOU { get; set; } = new HashSet(); - - - IADOrganizationalUnit? _startingSelectedNode; - [Parameter] - public IADOrganizationalUnit? StartingSelectedOU - { - get => _startingSelectedNode; set - { - if (value == _startingSelectedNode) return; - _startingSelectedNode = value; - _selectedNode = value; - - - StartingSelectedOUChanged.InvokeAsync(value); - } - - } - - [Parameter] - public EventCallback StartingSelectedOUChanged - { - get; set; - } - - [Parameter] - public IADOrganizationalUnit? SelectedOU - { - get => _selectedNode; set - { - if (value == _selectedNode) return; - if (value != null && value.CanRead) - { - _selectedNode = value; - //if (TopLevel == null) - // OnInitializedAsync(); - //OpenToSelected(); - SelectedOUChanged.InvokeAsync(value); - } - } - - } - - [Parameter] - public EventCallback SelectedOUChanged { get; set; } - - ADOrganizationalUnit TopLevel; - - - MudTreeView? OUTree { get; set; } - - - IList ExpandedNodes = new List(); - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - - - //await InvokeAsync(StateHasChanged); - - await InitializeTreeView(); - - } - async Task InitializeTreeView() - { - //Wait a few milliseconds to trip the async into acutally awaiting - await Task.Delay(500); - - //ApplicationBaseOUs = Directory.OUs.FindSubOusByDN(null); - - - if (RootOU is null || RootOU.Count < 1) - { - TopLevel = new ADOrganizationalUnit(); - TopLevel.Parse(directory: Directory, directoryEntry: Directory.GetDirectoryEntry()); - _ = TopLevel.SubOUs; - RootOU = new HashSet() { TopLevel }; - } - if (StartingSelectedOU == null) - { - SelectedOU = TopLevel; - } - else - OpenToSelected(); - LoadingData = false; - await InvokeAsync(StateHasChanged); - } - void OpenToSelected() - { - - if (StartRootExpanded) - { - if (!SelectedOU.Equals(RootOU)) - { - IADOrganizationalUnit? openThis = RootOU.First(); - openThis.IsExpanded = true; - while (openThis != null) - { - var child = openThis.SubOUs.Where(c => SelectedOU.DN.Contains(c.DN) && !SelectedOU.DN.Equals(c.DN)).FirstOrDefault(); - if (child != null) - { - child.IsExpanded = true; - _ = child.TreeViewSubOUs; - openThis = child; - } - else - { - var matchingOU = openThis.SubOUs.Where(c => SelectedOU.DN.Equals(c.DN)).FirstOrDefault(); - if (matchingOU != null) - matchingOU.IsSelected = true; - break; - } - - - } - } - } - //InvokeAsync(StateHasChanged); - - - } - bool CanExpand(IADOrganizationalUnit context) - { - var result = context.HasChildren; - return result; - } - HashSet GetChildren(IADOrganizationalUnit context) - { - if (context.IsExpanded) - { - return context.TreeViewSubOUs; - } - else - { - return context.CachedTreeViewSubOUs; - } - } - async Task> GetChildrenAsync(IADOrganizationalUnit parentNode) - { - return await Task.Run(() => - { - return GetChildren(parentNode); - - - }); - } - - - - - - - - - - - - - - - - - - - - -} diff --git a/BLAZAMGui/UI/Outputs/ADTreeView.razor b/BLAZAMGui/UI/Outputs/ADTreeView.razor deleted file mode 100644 index 66953093..00000000 --- a/BLAZAMGui/UI/Outputs/ADTreeView.razor +++ /dev/null @@ -1,257 +0,0 @@ -@inherits AppComponentBase - -@Label - - - - - - - - - - -@if (RootOU == null || !RootOU.Any() || LoadingData) -{ - - -} - -@code { -#nullable disable warnings - /// - /// If true all directory entry types will be listed. - /// If false, only OU's will bee shown. - /// - [Parameter] - public bool ShowAllEntries { get; set; } = true; - - [Parameter] - public bool StartRootExpanded { get; set; } = true; - - [Parameter] - public string? Label { get; set; } - - [Parameter] - public Color TextColor { get; set; } = Color.Default; - [Parameter] - public Func? EndText { get; set; } - - - IDirectoryEntryAdapter? _selectedNode; - - [Parameter] - public HashSet RootOU { get; set; } = new HashSet(); - - - IADOrganizationalUnit? _startingSelectedNode; - [Parameter] - public IADOrganizationalUnit? StartingSelectedOU - { - get => _startingSelectedNode; set - { - if (value == _startingSelectedNode) return; - _startingSelectedNode = value; - _selectedNode = value; - - - StartingSelectedOUChanged.InvokeAsync(value); - } - - } - - [Parameter] - public EventCallback StartingSelectedOUChanged - { - get; set; - } - - [Parameter] - public IDirectoryEntryAdapter? SelectedEntry - { - get => _selectedNode; set - { - if (value == _selectedNode) return; - if (value != null && value.CanRead) - { - var cache = _selectedNode; - - _selectedNode = value; - if (cache == null && value == RootOU.First()) return; - - - SelectedEntryChanged.InvokeAsync(value); - - - //if (TopLevel == null) - // OnInitializedAsync(); - OpenToSelected(); - - } - } - - } - - [Parameter] - public EventCallback SelectedEntryChanged { get; set; } - - ADOrganizationalUnit TopLevel; - - - - - IList ExpandedNodes = new List(); - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - - - - //await InvokeAsync(StateHasChanged); - - await InitializeTreeView(); - - } - async Task InitializeTreeView() - { - //Wait a few milliseconds to trip the async into acutally awaiting - await Task.Delay(50); - - - - if (RootOU is null || RootOU.Count < 1) - { - TopLevel = new ADOrganizationalUnit(); - TopLevel.Parse(directory: Directory, directoryEntry: Directory.GetDirectoryEntry()); - _ = TopLevel.SubOUs; - RootOU = new HashSet() { TopLevel }; - } - if (StartingSelectedOU == null) - { - SelectedEntry = TopLevel; - } - else - OpenToSelected(); - LoadingData = false; - await InvokeAsync(StateHasChanged); - } - void OpenToSelected() - { - //ExpandedNodes.Clear(); - //var newExpandedNodes = new List(ExpandedNodes); - if (StartRootExpanded) - { - //newExpandedNodes.Add(TopLevel); - if (!SelectedEntry.Equals(RootOU)) - { - IDirectoryEntryAdapter? openThis = RootOU.First(); - openThis.IsExpanded = true; - while (openThis != null) - { - var child = openThis.Children.Where(c => SelectedEntry.DN.Contains(c.DN) && !SelectedEntry.DN.Equals(c.DN)).FirstOrDefault(); - if (child != null) - { - child.IsExpanded = true; - openThis = child; - } - else - { - var matchingOU = openThis.Children.Where(c => SelectedEntry.DN.Equals(c.DN)).FirstOrDefault(); - if (matchingOU != null) - matchingOU.IsSelected = true; - break; - } - - - } - } - } - - - } - private Color GetItemColor(IDirectoryEntryAdapter item) - { - if (item is IAccountDirectoryAdapter account) - { - if (account.Disabled) return Color.Error; - if (account.LockedOut) return Color.Warning; - if (account.Created > DateTime.Now.AddDays(-14)) return Color.Success; - } - return Color.Default; - } - private HashSet? GetItems(IDirectoryEntryAdapter parent) - { - if (parent.IsExpanded || parent.CachedChildren != null) - { - - var items = parent.Children.Where(c => c.ObjectType == ActiveDirectoryObjectType.OU && ShouldShowOU(c) || c.CanRead).MoveToTop(c => c.ObjectType == ActiveDirectoryObjectType.OU); - if (!ShowAllEntries) - { - items = items.Where(i => i.ObjectType == ActiveDirectoryObjectType.OU); - } - var hashst = items.ToHashSet(); - return hashst; - } - return null; - } - async Task> GetChildrenAsync(IDirectoryEntryAdapter parentNode) - { - return await Task.Run(() => - { - return GetChildren(parentNode); - - }); - } - - HashSet GetChildren(IDirectoryEntryAdapter parentNode) - { - - if (ShowAllEntries) - { - var children = parentNode.Children.ToHashSet(); - return children; - - } - else if (parentNode is IADOrganizationalUnit ou) - { - - var children = ou.Children.Where(c => c.ObjectType == ActiveDirectoryObjectType.OU).ToHashSet(); - return children; - } - return new(); - - - } - - private bool ShouldShowOU(IDirectoryEntryAdapter entry) - { - if (entry is IADOrganizationalUnit ou) - { - if (ou.CanRead) - return true; - if (ou.CanReadInSubOus) - return true; - } - return false; - } - -} - - diff --git a/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor b/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor index be2d5813..18ece2ee 100644 --- a/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor +++ b/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor @@ -270,8 +270,8 @@ await ParentTemplateChanged(null); @if (!DirectoryTemplate.ParentOU.IsNullOrEmpty() && DirectoryTemplate.ParentTemplateId != null && !DirectoryTemplate.ParentOU.IsNullOrEmpty()) { @@ -644,6 +644,10 @@ await ParentTemplateChanged(null); } else { + if (Context.EntityIsTracked(DirectoryTemplate)) + { + + } var result = await Context.SaveChangesAsync(); if (result > 0) { From d9f6643531c8f2ef0d58b50501af3c85dac41746 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 11:41:29 -0400 Subject: [PATCH 16/64] Fix for null exception during custom user creation #308 --- BLAZAM/Pages/Users/CreateUser.razor | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/BLAZAM/Pages/Users/CreateUser.razor b/BLAZAM/Pages/Users/CreateUser.razor index d453f05d..a662d139 100644 --- a/BLAZAM/Pages/Users/CreateUser.razor +++ b/BLAZAM/Pages/Users/CreateUser.razor @@ -122,14 +122,18 @@ @AppLocalization["OU"] - + @* *@ + Back - Next + Next @@ -214,15 +218,17 @@ newUser?.StagePasswordChange(customConfirmPassword.ToSecureString()); await InvokeAsync(StateHasChanged); } - async void OUSelected(IADOrganizationalUnit ou) + async void OUSelected(IDirectoryEntryAdapter entry) { - if (selectedOU == null) + if (entry is IADOrganizationalUnit ou) { + if (selectedOU == null) + { + selectedOU = ou; + return; + } selectedOU = ou; - return; } - selectedOU = ou; - await InvokeAsync(StateHasChanged); } From 4e8ba25d88dedae163465deacfbeb35a1f4e5c87 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:43:31 -0400 Subject: [PATCH 17/64] Show and allow only the OU's a user has permission to create users in #308 --- BLAZAM/Pages/Users/CreateUser.razor | 22 +++-- .../Adapters/ADOrganizationalUnit.cs | 99 ++++++++++++++++++- .../Interfaces/IADOrganizationalUnit.cs | 7 +- BLAZAMGui/Navs/Buttons/NavBrowseButton.razor | 3 +- .../UI/Inputs/TreeViews/OUTreeView.razor.cs | 4 +- .../UI/Inputs/TreeViews/OUTreeViewBase.cs | 23 ++--- BLAZAMSession/ApplicationUserState.cs | 2 +- 7 files changed, 134 insertions(+), 26 deletions(-) diff --git a/BLAZAM/Pages/Users/CreateUser.razor b/BLAZAM/Pages/Users/CreateUser.razor index a662d139..b4d5ea59 100644 --- a/BLAZAM/Pages/Users/CreateUser.razor +++ b/BLAZAM/Pages/Users/CreateUser.razor @@ -123,14 +123,14 @@ @* *@ - + Back - { await CreateCustomUser(); selectedStep=5; })">Next @@ -222,12 +222,12 @@ newUser?.StagePasswordChange(customConfirmPassword.ToSecureString()); { if (entry is IADOrganizationalUnit ou) { - if (selectedOU == null) - { + if(ou.CanCreateUser) selectedOU = ou; - return; + else + { + SnackBarService.Warning(AppLocalization["You do not have permission to create users in that location"]); } - selectedOU = ou; } await InvokeAsync(StateHasChanged); @@ -340,5 +340,13 @@ newUser?.StagePasswordChange(customConfirmPassword.ToSecureString()); SelectedStep = 1; await InvokeAsync(StateHasChanged); } - + bool AdditionalShow(IDirectoryEntryAdapter entry) + { + if(entry is IADOrganizationalUnit ou) + { + if (ou.CanCreateUser) return true; + if (ou.CanCreateUserInSubOUs) return true; + } + return false; + } } diff --git a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs index 92cd898a..d6440eb1 100644 --- a/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs +++ b/BLAZAMActiveDirectory/Adapters/ADOrganizationalUnit.cs @@ -4,6 +4,7 @@ using BLAZAM.Logger; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; +using System.Data.SQLite; using System.Diagnostics.Contracts; using System.DirectoryServices; using System.Reflection.PortableExecutable; @@ -121,7 +122,7 @@ public IQueryable OffspringPermissionMappings } - public virtual bool CanReadInSubOus + public virtual bool CanReadUsersInSubOus { get { @@ -139,6 +140,77 @@ public virtual bool CanReadInSubOus ); } + } + public virtual bool CanReadNonOUs + { + get + { + if (CanReadUsers) return true; + if (CanReadGroups) return true; + if (CanReadComputers) return true; + if (CanReadPrinters) return true; + return false; + } + } + public virtual bool CanReadPrinters + { + get + { + return HasPermission(p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.Printer && + om.ObjectAccessLevel.Level > ObjectAccessLevels.Deny.Level + ))), + p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.Printer && + om.ObjectAccessLevel.Level == ObjectAccessLevels.Deny.Level + ))) + ); + } + + } + public virtual bool CanReadComputers + { + get + { + return HasPermission(p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.Computer && + om.ObjectAccessLevel.Level > ObjectAccessLevels.Deny.Level + ))), + p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.Computer && + om.ObjectAccessLevel.Level == ObjectAccessLevels.Deny.Level + ))) + ); + } + + } + public virtual bool CanReadGroups + { + get + { + return HasPermission(p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.Group && + om.ObjectAccessLevel.Level > ObjectAccessLevels.Deny.Level + ))), + p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ObjectMap.Any(om => + om.ObjectType == ActiveDirectoryObjectType.Group && + om.ObjectAccessLevel.Level == ObjectAccessLevels.Deny.Level + ))) + ); + } + } public virtual bool CanReadUsers { @@ -164,7 +236,30 @@ public virtual bool CanCreateUser { get { - return HasActionPermission(ObjectActions.Create,ActiveDirectoryObjectType.User); + return HasActionPermission(ObjectActions.Create, ActiveDirectoryObjectType.User); + } + + } + public virtual bool CanCreateUserInSubOUs + { + get + { + + return HasPermission(p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ActionMap.Any(am=> + am.ObjectType==ActiveDirectoryObjectType.User && + am.ObjectAction.Id==ObjectActions.Create.Id && + am.AllowOrDeny==true))), + p => p.Where(pm => + pm.AccessLevels.Any(al => + al.ActionMap.Any(am => + am.ObjectType == ActiveDirectoryObjectType.User && + am.ObjectAction.Id == ObjectActions.Create.Id && + am.AllowOrDeny == false))), + true + ); + } } diff --git a/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs b/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs index e3f265b2..e5773bf6 100644 --- a/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs +++ b/BLAZAMActiveDirectory/Interfaces/IADOrganizationalUnit.cs @@ -17,9 +17,14 @@ public interface IADOrganizationalUnit : IDirectoryEntryAdapter HashSet CachedTreeViewSubOUs { get;} HashSet TreeViewSubOUs { get; } - bool CanReadInSubOus { get; } + bool CanReadUsersInSubOus { get; } bool CanCreateUser { get; } + bool CanCreateUserInSubOUs { get; } bool CanReadUsers { get; } + bool CanReadNonOUs { get; } + bool CanReadComputers { get; } + bool CanReadGroups { get; } + bool CanReadPrinters { get; } IADGroup CreateGroup(string containerName); IADUser CreateUser(string containerName); diff --git a/BLAZAMGui/Navs/Buttons/NavBrowseButton.razor b/BLAZAMGui/Navs/Buttons/NavBrowseButton.razor index 0a19b9d4..b390a7ca 100644 --- a/BLAZAMGui/Navs/Buttons/NavBrowseButton.razor +++ b/BLAZAMGui/Navs/Buttons/NavBrowseButton.razor @@ -8,8 +8,7 @@ Disabled=@(Monitor.DirectoryConnectionStatus != ServiceConnectionState.Up) Title="@AppLocalization["Browse"]" Icon="@Icons.Material.Filled.ViewList"> - + {if(entry is IADOrganizationalUnit ou) return (ou.CanReadUsersInSubOus || ou.CanReadNonOUs); return false;}) SelectedEntryChanged="@((entry)=>{SelectedEntryChanged.InvokeAsync(entry);})" /> @code { diff --git a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs index c3f5dc65..5ccb5475 100644 --- a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs +++ b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeView.razor.cs @@ -22,11 +22,11 @@ HashSet GetChildren(IDirectoryEntryAdapter context) { if (ou.IsExpanded) { - return ou.TreeViewSubOUs; + return ou.TreeViewSubOUs.Where(o=>ShouldShowOU(o)).ToHashSet(); } else { - return ou.CachedTreeViewSubOUs; + return ou.CachedTreeViewSubOUs.Where(o => ShouldShowOU(o)).ToHashSet(); } } return new HashSet(); diff --git a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs index 98b1f0ab..30d4192d 100644 --- a/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs +++ b/BLAZAMGui/UI/Inputs/TreeViews/OUTreeViewBase.cs @@ -54,7 +54,7 @@ public EventCallback StartingSelectedOUChanged get => _selectedEntry; set { if (value == _selectedEntry) return; - if (value != null && value.CanRead) + if (value != null) { var cache = _selectedEntry; @@ -104,15 +104,15 @@ protected async Task InitializeTreeView() TopLevel = new ADOrganizationalUnit(); TopLevel.Parse(directory: Directory, directoryEntry: Directory.GetDirectoryEntry()); _ = TopLevel.SubOUs; - RootOU = new HashSet() { TopLevel }; + RootOU = new HashSet() { TopLevel as IDirectoryEntryAdapter }; } if (StartingSelectedOU == null) { - SelectedEntry = TopLevel; - SelectedEntry.IsExpanded = true; + StartingSelectedOU = TopLevel; + } - else - OpenToSelected(); + + OpenToSelected(); LoadingData = false; await InvokeAsync(StateHasChanged); } @@ -174,17 +174,18 @@ protected void OpenToSelected() } - + [Parameter] + public Func? AdditionalVisibilityFilters { get; set; } protected bool ShouldShowOU(IDirectoryEntryAdapter entry) { if (entry is IADOrganizationalUnit ou) { if (ou.CanRead) return true; - if (ou.CanReadInSubOus) - return true; - if (ou.CanReadUsers) - return true; + if (AdditionalVisibilityFilters != null) + { + if(AdditionalVisibilityFilters(entry)) return true; + } } return false; } diff --git a/BLAZAMSession/ApplicationUserState.cs b/BLAZAMSession/ApplicationUserState.cs index 350c308e..133a2c55 100644 --- a/BLAZAMSession/ApplicationUserState.cs +++ b/BLAZAMSession/ApplicationUserState.cs @@ -507,7 +507,7 @@ public bool HasPermission(string dnTarget, Func, } return false; } - + public bool HasActionPermission(string dnTarget, ObjectAction action, ActiveDirectoryObjectType objectType) { return HasPermission(dnTarget, p => p.Where(pm => From 9c5e6b62c474467088be81f6d2809b0077a89d84 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:44:18 -0400 Subject: [PATCH 18/64] Cleanup of treeview code merge --- BLAZAM/Pages/Groups/CreateGroup.razor | 2 +- BLAZAM/Pages/OU/CreateOU.razor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM/Pages/Groups/CreateGroup.razor b/BLAZAM/Pages/Groups/CreateGroup.razor index 5721d840..d8f07fb8 100644 --- a/BLAZAM/Pages/Groups/CreateGroup.razor +++ b/BLAZAM/Pages/Groups/CreateGroup.razor @@ -11,7 +11,7 @@ + SelectedEntryChanged="OUSelected"> @* @context.Name *@ diff --git a/BLAZAM/Pages/OU/CreateOU.razor b/BLAZAM/Pages/OU/CreateOU.razor index a61621fd..4c003f85 100644 --- a/BLAZAM/Pages/OU/CreateOU.razor +++ b/BLAZAM/Pages/OU/CreateOU.razor @@ -11,7 +11,7 @@ + SelectedEntryChanged="OUSelected"> @* @context.Name *@ From 172ddf28fe9a75582aa25badbfa455ffe012fefc Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:45:04 -0400 Subject: [PATCH 19/64] Add InstallationID which is derived from MS OS UUID --- BLAZAM/ProgramHelpers.cs | 36 ++++++++++++++++++++++++++-- BLAZAMCommon/Data/ApplicationInfo.cs | 5 ++++ BLAZAMLoggers/Loggers.cs | 33 ++++++++++++------------- 3 files changed, 54 insertions(+), 20 deletions(-) diff --git a/BLAZAM/ProgramHelpers.cs b/BLAZAM/ProgramHelpers.cs index 872936c1..8aa8df88 100644 --- a/BLAZAM/ProgramHelpers.cs +++ b/BLAZAM/ProgramHelpers.cs @@ -29,6 +29,7 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc.RazorPages; using Org.BouncyCastle.Ocsp; +using System.Management; namespace BLAZAM.Server { @@ -37,10 +38,12 @@ public static class ProgramHelpers public static WebApplicationBuilder IntializeProperties(this WebApplicationBuilder builder) { //Set DebugMode flag from configuration - ApplicationInfo ApplicationInfo = new(builder); + //ApplicationInfo ApplicationInfo = new(builder); ApplicationInfo.inDebugMode = builder.Configuration.GetValue("DebugMode"); ApplicationInfo.inDemoMode = builder.Configuration.GetValue("DemoMode"); - + + //Set the installation ID + ApplicationInfo.installationId =GetInstallationId(); //Set application directories //Program.RootDirectory = new SystemDirectory(builder.Environment.ContentRootPath); @@ -61,6 +64,35 @@ public static WebApplicationBuilder IntializeProperties(this WebApplicationBuild return builder; } + private static Guid GetInstallationId() + { + //Try and get os id + try + { + string ComputerName = "localhost"; + ManagementScope Scope; + Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", ComputerName), null); + Scope.Connect(); + ObjectQuery Query = new ObjectQuery("SELECT UUID FROM Win32_ComputerSystemProduct"); + ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query); + + foreach (ManagementObject WmiObject in Searcher.Get()) + { + return Guid.Parse(WmiObject["UUID"].ToString()); + + } + throw new ApplicationException("Searched but could not find a CSProduct UUID"); + } + + catch (Exception ex) + { + Console.WriteLine("Failed to get client ID (GUID). Error: " + ex.Message); + throw ex; + } + + + } + public static WebApplicationBuilder InjectServices(this WebApplicationBuilder builder) { diff --git a/BLAZAMCommon/Data/ApplicationInfo.cs b/BLAZAMCommon/Data/ApplicationInfo.cs index 8a554da1..934be6c4 100644 --- a/BLAZAMCommon/Data/ApplicationInfo.cs +++ b/BLAZAMCommon/Data/ApplicationInfo.cs @@ -59,6 +59,10 @@ public class ApplicationInfo /// A static access to /// public static bool inDemoMode; + /// + /// A static access to + /// + public static Guid installationId = Guid.Empty; /// /// Indicates whether Blazam is running under IIS or as a service @@ -142,6 +146,7 @@ public static bool installationCompleted { get;set; } + public Guid InstallationId { get => installationId; set => installationId = value; } /// /// Use only for UnitTests diff --git a/BLAZAMLoggers/Loggers.cs b/BLAZAMLoggers/Loggers.cs index 03ee4099..cbe235e0 100644 --- a/BLAZAMLoggers/Loggers.cs +++ b/BLAZAMLoggers/Loggers.cs @@ -16,6 +16,7 @@ public static class Loggers private static string _applicationVersion; public static bool SendToSeqServer { get; set; } = true; public static string SeqServerUri { get; set; } + public static string InstallationId { get; set; } public static string SeqAPIKey { get; set; } #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. public static ILogger RequestLogger { get; private set; } @@ -34,15 +35,7 @@ public static void SetupLoggers(string logPath, string applicationVersion = "1.0 ActiveDirectryLogger = SetupLogger(logPath + @"activedirectory\activedirectory.txt"); UpdateLogger = SetupLogger(logPath + @"update\update.txt", RollingInterval.Month); - var systemLoggerBuilder = new LoggerConfiguration() - .Enrich.FromLogContext() - .Enrich.WithMachineName() - .Enrich.WithEnvironmentName() - .Enrich.WithEnvironmentUserName() - .Enrich.WithProperty("Application Name", "Blazam") - - .Enrich.WithProperty("Application Version", _applicationVersion) - + var systemLoggerBuilder = CreateLogBuilder() .WriteTo.File(logPath + @"system\system.txt", rollingInterval: RollingInterval.Hour, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}", @@ -62,17 +55,21 @@ public static void SetupLoggers(string logPath, string applicationVersion = "1.0 //Serilog.Debugging.SelfLog.Enable(Console.Error); } - private static Serilog.ILogger SetupLogger(string logFilePath, RollingInterval rollingInterval = RollingInterval.Hour) + private static LoggerConfiguration CreateLogBuilder() { - var loggerBuilder = new LoggerConfiguration() - .Enrich.FromLogContext() - .Enrich.WithMachineName() - .Enrich.WithEnvironmentName() - .Enrich.WithEnvironmentUserName() - .Enrich.WithProperty("Application Name", "Blazam") + return new LoggerConfiguration() + .Enrich.FromLogContext() + .Enrich.WithMachineName() + .Enrich.WithEnvironmentName() + .Enrich.WithEnvironmentUserName() + .Enrich.WithProperty("Application Name", "Blazam") + .Enrich.WithProperty("Installation Id", InstallationId) + .Enrich.WithProperty("Application Version", _applicationVersion); + } - .Enrich.WithProperty("Application Version", _applicationVersion) - //.WriteTo.File(WritablePath+@"\logs\log.txt") + private static Serilog.ILogger SetupLogger(string logFilePath, RollingInterval rollingInterval = RollingInterval.Hour) + { + var loggerBuilder =CreateLogBuilder() .WriteTo.File(logFilePath, rollingInterval: rollingInterval, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}", From ec0ff4f299ef0f5f86bb91cc5f14cfb56c9cb5f6 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:49:32 -0400 Subject: [PATCH 20/64] Fix for home drive dropdown being ineffective --- BLAZAM/Pages/Users/ViewUser.razor | 2 +- BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/BLAZAM/Pages/Users/ViewUser.razor b/BLAZAM/Pages/Users/ViewUser.razor index 73664ee0..2052c6cc 100644 --- a/BLAZAM/Pages/Users/ViewUser.razor +++ b/BLAZAM/Pages/Users/ViewUser.razor @@ -378,7 +378,7 @@ } @if (User.CanReadField(ActiveDirectoryFields.HomeDrive)) { - + } @if (User.CanReadField(ActiveDirectoryFields.ScriptPath)) { diff --git a/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor b/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor index 58a3f25e..4093e09e 100644 --- a/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor +++ b/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor @@ -1,7 +1,7 @@ @inherits MudSelect @code { + private string _driveLetter="D"; + [Parameter] + public string DriveLetter + { + get => _driveLetter; set + { + if (_driveLetter == value) return; + _driveLetter = value; + DriveLetterChanged.InvokeAsync(value); + } + } + [Parameter] + public EventCallback DriveLetterChanged{ get; set; } } From edd9f70323263e61d536b69d6b2d550c3b8c9011 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:50:27 -0400 Subject: [PATCH 21/64] Improved settings page presentation --- BLAZAMGui/UI/Settings/SystemSettings.razor | 64 +++++++++++++++------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/BLAZAMGui/UI/Settings/SystemSettings.razor b/BLAZAMGui/UI/Settings/SystemSettings.razor index 1069cbd7..b4229730 100644 --- a/BLAZAMGui/UI/Settings/SystemSettings.razor +++ b/BLAZAMGui/UI/Settings/SystemSettings.razor @@ -3,40 +3,32 @@ @if (settings != null) { + @AppLocalization["Manage Web Application"] + + + @AppLocalization["Restart Web Application"] - - - We ask that you allow developer analytics so we can understand how our app is used to focus our - efforts on what our users think matters most. - - - + Set up a GA4 account and enter your tracking ID here to collect data on the usage of your installation. - - Restart Web Application + + } - - - - Download Logs - - Log Directory: @Loggers.LogPath - + + @AppLocalization["Data Collection Settings"] + @@ -48,19 +40,49 @@ + + + We ask that you allow developer analytics so we can understand how our app is used to focus our + efforts on what our users think matters most. + + + - + + @AppLocalization["Logging"] + - + + - + + + + + Download Logs + + Log Directory: @Loggers.LogPath + + + @AppLocalization["Resource Usage"] + + + + + + + + + Save Changes From 39eba40d23d7c8bb0d745e3d3dd20c6da062f43b Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:51:24 -0400 Subject: [PATCH 22/64] Minor dashboard improvements --- .../CurrentUserDashboardWidgets.razor | 19 +++++++++++---- .../Widgets/ChangedEntriesWidget.razor | 23 +++++++++++-------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/BLAZAMGui/UI/Dashboard/CurrentUserDashboardWidgets.razor b/BLAZAMGui/UI/Dashboard/CurrentUserDashboardWidgets.razor index e5b1b9f4..c812516b 100644 --- a/BLAZAMGui/UI/Dashboard/CurrentUserDashboardWidgets.razor +++ b/BLAZAMGui/UI/Dashboard/CurrentUserDashboardWidgets.razor @@ -10,7 +10,7 @@ T="UserDashboardWidget" Items="CurrentUser.State?.Preferences?.DashboardWidgets.OrderBy(uw => uw.Slot).ThenBy(uw => uw.Order)" ItemsSelector="ItemSelector" ItemDropped="ItemDropped" - Class="d-flex flex-wrap flex-grow-1 mud-width-full "> + Class="d-flex flex-wrap flex-grow-1 mud-width-full mt-5"> @@ -57,12 +57,23 @@ } else { - It's lonely in here. Click the + button to add some widgets... + + + + + + It's lonely in here. Click the + button to add some widgets... + + + + + } - + + - + diff --git a/BLAZAMGui/UI/Dashboard/Widgets/ChangedEntriesWidget.razor b/BLAZAMGui/UI/Dashboard/Widgets/ChangedEntriesWidget.razor index d76eddaf..019aa729 100644 --- a/BLAZAMGui/UI/Dashboard/Widgets/ChangedEntriesWidget.razor +++ b/BLAZAMGui/UI/Dashboard/Widgets/ChangedEntriesWidget.razor @@ -2,7 +2,7 @@ @attribute [Authorize] @code { - List deletedObjects { get; set; } = new(); + List changdEntries { get; set; } = new(); protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); + Task.Run(async () => + + { + var search = new ADSearch(); + search.Fields.Changed = DateTime.Now.AddDays(-1); + changdEntries = (await search.SearchAsync()).Where(x => x.CanRead).ToList(); + LoadingData = false; + await InvokeAsync(StateHasChanged); + + }); + - var search = new ADSearch(); - search.Fields.Changed = DateTime.Now.AddDays(-1); - deletedObjects = await search.SearchAsync(); - LoadingData = false; - await InvokeAsync(StateHasChanged); - } void RowClicked(DataGridRowClickEventArgs args) @@ -69,7 +74,7 @@ GoTo(args.Item); } } - + void GoTo(IDirectoryEntryAdapter args) { Nav.NavigateTo(args.SearchUri); From d6f3b0a13eb704b0e1b7c004c37c6ed5edac87a7 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:51:43 -0400 Subject: [PATCH 23/64] Disable impersonating in demo --- .../Permissions/ImpersonateUser.razor | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/BLAZAMGui/UI/Settings/Permissions/ImpersonateUser.razor b/BLAZAMGui/UI/Settings/Permissions/ImpersonateUser.razor index 5e7a9f71..866e84ec 100644 --- a/BLAZAMGui/UI/Settings/Permissions/ImpersonateUser.razor +++ b/BLAZAMGui/UI/Settings/Permissions/ImpersonateUser.razor @@ -1,28 +1,35 @@ @using Newtonsoft.Json +@using System.Diagnostics @inherits AppComponentBase @inject IJSRuntime JSRuntime +@if ((CurrentUser.State.IsSuperAdmin && CurrentUser.Username != "Demo") || (CurrentUser.State.IsSuperAdmin|| Debugger.IsAttached)) +{ +
- + - - + Color=Color.Primary + ButtonType="ButtonType.Submit"> Impersonate User - - + -
+ + +} +else +{ + Impersonation is not available in demo mode. +} @code { private LoginRequest imperonationRequest = new(){ Impersonation=true}; public IDirectoryEntryAdapter? User { get; set; } From a7967db04d2d754ef5829832890218936aaaf678 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:52:25 -0400 Subject: [PATCH 24/64] Changes for moved treeview components --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/GlobalSuppressions.cs | 8 ++++++++ BLAZAM/_Imports.razor | 1 + BLAZAMGui/_Imports.razor | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 BLAZAM/GlobalSuppressions.cs diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 33b888ef..2b435891 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.19.1934 + 2024.04.21.1638 false BLAZAM False diff --git a/BLAZAM/GlobalSuppressions.cs b/BLAZAM/GlobalSuppressions.cs new file mode 100644 index 00000000..4b46ad14 --- /dev/null +++ b/BLAZAM/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "", Scope = "member", Target = "~M:BLAZAM.Server.ProgramHelpers.GetInstallationId~System.Guid")] diff --git a/BLAZAM/_Imports.razor b/BLAZAM/_Imports.razor index 3bf54606..17a2a059 100644 --- a/BLAZAM/_Imports.razor +++ b/BLAZAM/_Imports.razor @@ -58,6 +58,7 @@ @using BLAZAM.Gui.UI; @using BLAZAM.Gui.UI.Dashboard.Widgets; @using BLAZAM.Gui.UI.Inputs +@using BLAZAM.Gui.UI.Inputs.TreeViews @using BLAZAM.Gui.Layouts; @using BLAZAM.Gui.UI.Settings; @using BLAZAM.Gui.UI.Chat diff --git a/BLAZAMGui/_Imports.razor b/BLAZAMGui/_Imports.razor index 7ce42f73..fb6b12fe 100644 --- a/BLAZAMGui/_Imports.razor +++ b/BLAZAMGui/_Imports.razor @@ -50,7 +50,7 @@ @using BLAZAM.Gui.UI.Modals @using BLAZAM.Gui.UI.Dashboard @using BLAZAM.Gui.Helper; - +@using BLAZAM.Gui.UI.Inputs.TreeViews @using BLAZAM.Gui.UI.Users @using BLAZAM.Gui.UI.Users.Fields @using BLAZAM.Gui.UI.OU From 41436839c1170dd832e8fcf41af4a670360b0fb0 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 12:55:05 -0400 Subject: [PATCH 25/64] Partial changes for code-merged treeviews --- .../Permissions/PermissionMapper.razor | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/BLAZAMGui/UI/Settings/Permissions/PermissionMapper.razor b/BLAZAMGui/UI/Settings/Permissions/PermissionMapper.razor index 4b7c36e8..d85c1b18 100644 --- a/BLAZAMGui/UI/Settings/Permissions/PermissionMapper.razor +++ b/BLAZAMGui/UI/Settings/Permissions/PermissionMapper.razor @@ -1,4 +1,5 @@ -@inherits AppComponentBase + +@inherits AppComponentBase

OU Privilege Mapper

@@ -6,8 +7,22 @@ + @bind-SelectedEntry="SelectedNode"> + + + + + + + +
+ + + + +@* + + EndText="@((context)=>context.DirectPermissionMappings.Any()?context.DirectPermissionMappings.Count().ToString():null)"> @if (@context.DirectPermissionMappings.Count() > 0) { @@ -26,19 +41,13 @@ } - - - - - - - +*@ @code { -#nullable disable warnings + #nullable disable warnings OUTreeView? OUTree { get; set; } - IADOrganizationalUnit selectedNode; - IADOrganizationalUnit SelectedNode + IDirectoryEntryAdapter selectedNode; + IDirectoryEntryAdapter SelectedNode { get => selectedNode; set { @@ -48,7 +57,7 @@ } } - + IADOrganizationalUnit SelectedOU => SelectedNode as IADOrganizationalUnit; IList ExpandedNodes = new List(); HashSet ApplicationBaseOUs = new HashSet(); protected override async Task OnInitializedAsync() From 1e7184c5dbe3205894841e5786e2caf5d1e934b6 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 21 Apr 2024 19:28:52 -0400 Subject: [PATCH 26/64] Don't encode search URI by default --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 2b435891..a6b21c15 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.21.1638 + 2024.04.21.1930 false BLAZAM False diff --git a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs index 431266d6..d59a9ce9 100644 --- a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs +++ b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs @@ -32,7 +32,7 @@ public virtual string SearchUri { get { - return "/search/" + HttpUtility.UrlEncode(CanonicalName); + return "/search/" + CanonicalName; } } From 803bc3974b548c6a3a93639c6db79ce11189304a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:38:15 +0000 Subject: [PATCH 27/64] Bump Octokit from 10.0.0 to 11.0.1 Bumps [Octokit](https://github.com/octokit/octokit.net) from 10.0.0 to 11.0.1. - [Release notes](https://github.com/octokit/octokit.net/releases) - [Changelog](https://github.com/octokit/octokit.net/blob/main/docs/releases.md) - [Commits](https://github.com/octokit/octokit.net/compare/v10.0.0...v11.0.1) --- updated-dependencies: - dependency-name: Octokit dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- BLAZAM/BLAZAM.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index a6b21c15..6603ee5a 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -80,7 +80,7 @@ - + From d894ec35dea0f97430fbfcd671163c78267ce0d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:59:06 +0000 Subject: [PATCH 28/64] Bump xunit.runner.visualstudio from 2.5.7 to 2.5.8 Bumps [xunit.runner.visualstudio](https://github.com/xunit/visualstudio.xunit) from 2.5.7 to 2.5.8. - [Release notes](https://github.com/xunit/visualstudio.xunit/releases) - [Commits](https://github.com/xunit/visualstudio.xunit/compare/2.5.7...2.5.8) --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- BLAZAM.Tests/BLAZAM.Tests.csproj | 2 +- BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM.Tests/BLAZAM.Tests.csproj b/BLAZAM.Tests/BLAZAM.Tests.csproj index b1da1ddf..00770045 100644 --- a/BLAZAM.Tests/BLAZAM.Tests.csproj +++ b/BLAZAM.Tests/BLAZAM.Tests.csproj @@ -11,7 +11,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj index 8e820fa5..f9eed8d2 100644 --- a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj +++ b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj @@ -17,7 +17,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all From a0960298408fd2c61fc0e5278dea2c4fc4f08769 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Mon, 22 Apr 2024 11:40:02 -0400 Subject: [PATCH 29/64] Added background blur filter to session expired dialog --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/wwwroot/css/site.css | 3 +++ BLAZAMGui/UI/SessionExpirationWarningProvider.razor | 9 +++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 15a46f91..23b7ab9c 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.17.1935 + 2024.04.19.1216 false BLAZAM False diff --git a/BLAZAM/wwwroot/css/site.css b/BLAZAM/wwwroot/css/site.css index 856d97dc..24ac9b17 100644 --- a/BLAZAM/wwwroot/css/site.css +++ b/BLAZAM/wwwroot/css/site.css @@ -8,6 +8,9 @@ html, body { h1:focus { outline: none; } +.blur-background { + backdrop-filter: blur(10px); +} .app-icon{ margin-left:0.5rem; max-height:2.5rem; diff --git a/BLAZAMGui/UI/SessionExpirationWarningProvider.razor b/BLAZAMGui/UI/SessionExpirationWarningProvider.razor index 8eccaf98..8ba7f367 100644 --- a/BLAZAMGui/UI/SessionExpirationWarningProvider.razor +++ b/BLAZAMGui/UI/SessionExpirationWarningProvider.razor @@ -52,13 +52,18 @@ + OnYes="@(()=>{Refresh();})" + Options=@(new DialogOptions{ + ClassBackground="blur-background", + CloseButton=false, + CloseOnEscapeKey=false, + DisableBackdropClick=true})> @AppLocalization["Your session has expired."] - + @code { private Timer? sessionTimeoutCheckTimer; AppModal? ExpirationWarningModal; From 28a186b141b6b08b467a49eb55b2d7b09c715f5a Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Mon, 22 Apr 2024 15:27:49 -0400 Subject: [PATCH 30/64] Fix for missing application root, which caused breaking of self-updates --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/Program.cs | 4 ++++ BLAZAM/ProgramHelpers.cs | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index a6b21c15..b946a43d 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.21.1930 + 2024.04.22.1925 false BLAZAM False diff --git a/BLAZAM/Program.cs b/BLAZAM/Program.cs index 9c074257..310eb11d 100644 --- a/BLAZAM/Program.cs +++ b/BLAZAM/Program.cs @@ -81,8 +81,12 @@ public static void Main(string[] args) builder.IntializeProperties(); + //Create and discard a new instance of Encryption to inject the encryption seed string _ = new Encryption(Configuration?.GetValue("EncryptionKey")); + //Assign installation ID + Loggers.InstallationId = ApplicationInfo.installationId.ToString(); + //Setup host logging so it can catch the earliest logs possible Loggers.SeqServerUri = "http://logs.blazam.org:5341"; if (Debugger.IsAttached) diff --git a/BLAZAM/ProgramHelpers.cs b/BLAZAM/ProgramHelpers.cs index 8aa8df88..07a93165 100644 --- a/BLAZAM/ProgramHelpers.cs +++ b/BLAZAM/ProgramHelpers.cs @@ -38,7 +38,7 @@ public static class ProgramHelpers public static WebApplicationBuilder IntializeProperties(this WebApplicationBuilder builder) { //Set DebugMode flag from configuration - //ApplicationInfo ApplicationInfo = new(builder); + ApplicationInfo ApplicationInfo = new(builder); ApplicationInfo.inDebugMode = builder.Configuration.GetValue("DebugMode"); ApplicationInfo.inDemoMode = builder.Configuration.GetValue("DemoMode"); From 615053d0cf339907e4fbb9145f3c1615c50c82ce Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Mon, 22 Apr 2024 18:07:09 -0400 Subject: [PATCH 31/64] Fix for attempting to check appsetting before migration completes --- BLAZAM/Pages/Install/InstallDatabase.razor | 2 +- BLAZAMDatabase/Context/AppDatabaseFactory.cs | 24 ++++++++----------- BLAZAMDatabase/Context/IAppDatabaseFactory.cs | 12 +++++++++- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/BLAZAM/Pages/Install/InstallDatabase.razor b/BLAZAM/Pages/Install/InstallDatabase.razor index cdb32f18..9ee1aff4 100644 --- a/BLAZAM/Pages/Install/InstallDatabase.razor +++ b/BLAZAM/Pages/Install/InstallDatabase.razor @@ -86,7 +86,7 @@ else await InvokeAsync(StateHasChanged); try { - if (await DbFactory.ApplyDatabaseMigrations(true)) + if (await DbFactory.ApplyDatabaseMigrationsAsync(true)) { Completed = true; await InvokeAsync(StepCompleted.InvokeAsync); diff --git a/BLAZAMDatabase/Context/AppDatabaseFactory.cs b/BLAZAMDatabase/Context/AppDatabaseFactory.cs index 677a967e..328c18e6 100644 --- a/BLAZAMDatabase/Context/AppDatabaseFactory.cs +++ b/BLAZAMDatabase/Context/AppDatabaseFactory.cs @@ -140,21 +140,17 @@ public IDatabaseContext CreateDbContext() : databaseContext; } - /// - /// Applies all pending database migrations - /// - /// : If true, the updates will happen - /// even if the database is seeded. If false, no updates will - /// be applied if seeding has already occurred. - /// - /// - /// If true, the updates will happen even if the database is seeded. If false, no updates will be applied if seeding has already occurred. - /// - public async Task ApplyDatabaseMigrations(bool force = false) + public async Task ApplyDatabaseMigrationsAsync(bool force = false) { + return await Task.Run(() => { + return ApplyDatabaseMigrations(force); + }); - return await Task.Run(() => - { + } + public bool ApplyDatabaseMigrations(bool force = false) + { + + try { using (var context = CreateDbContext()) @@ -187,7 +183,7 @@ public async Task ApplyDatabaseMigrations(bool force = false) Loggers.DatabaseLogger.Error("Database Auto-Update Failed!!!! {@Error}", ex); throw ex; } - }); + } diff --git a/BLAZAMDatabase/Context/IAppDatabaseFactory.cs b/BLAZAMDatabase/Context/IAppDatabaseFactory.cs index e75e0ec0..1ad49133 100644 --- a/BLAZAMDatabase/Context/IAppDatabaseFactory.cs +++ b/BLAZAMDatabase/Context/IAppDatabaseFactory.cs @@ -9,6 +9,16 @@ namespace BLAZAM.Database.Context ///
public interface IAppDatabaseFactory { + /// + /// Applies any pending database migrations to the database synchronously + /// + /// + /// You must use true for if you want to apply migrations to an empty database + /// + /// Force the update even if the database is empty and has not been seeded yet + /// + bool ApplyDatabaseMigrations(bool force = false); + /// /// Applies any pending database migrations to the database asynchronously /// @@ -17,7 +27,7 @@ public interface IAppDatabaseFactory /// /// Force the update even if the database is empty and has not been seeded yet /// - Task ApplyDatabaseMigrations(bool force = false); + Task ApplyDatabaseMigrationsAsync(bool force = false); /// /// Creates a new connection to this database /// From 37341bf6b4ccd1e94e1ec128b2feda751293b9a2 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Mon, 22 Apr 2024 18:46:10 -0400 Subject: [PATCH 32/64] Fix for Azure Web app WMI access control --- BLAZAM/ProgramHelpers.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/BLAZAM/ProgramHelpers.cs b/BLAZAM/ProgramHelpers.cs index 07a93165..aa2981d1 100644 --- a/BLAZAM/ProgramHelpers.cs +++ b/BLAZAM/ProgramHelpers.cs @@ -43,8 +43,17 @@ public static WebApplicationBuilder IntializeProperties(this WebApplicationBuild ApplicationInfo.inDemoMode = builder.Configuration.GetValue("DemoMode"); //Set the installation ID - ApplicationInfo.installationId =GetInstallationId(); - + try + { + ApplicationInfo.installationId = GetInstallationId(); + }catch (UnauthorizedAccessException ex) + { + Loggers.SystemLogger.Warning("Cannot access OS WMI to get UUID {@Error}", ex); + } + catch (Exception ex) + { + Loggers.SystemLogger.Warning("Unexpected exception trying to access OS WMI to get UUID {@Error}", ex); + } //Set application directories //Program.RootDirectory = new SystemDirectory(builder.Environment.ContentRootPath); //Program.TempDirectory = new SystemDirectory(Path.GetTempPath() + "Blazam\\"); From 84c04940c17e4e034001f0329c22660ae3e7aaad Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Mon, 22 Apr 2024 19:12:37 -0400 Subject: [PATCH 33/64] Final fix for Azure Web --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/ProgramHelpers.cs | 12 ++++++------ BLAZAMCommon/Helpers/StringHelpers.cs | 12 ++++++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index b946a43d..8d88bd16 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.22.1925 + 2024.04.22.2312 false BLAZAM False diff --git a/BLAZAM/ProgramHelpers.cs b/BLAZAM/ProgramHelpers.cs index aa2981d1..ab7b0f15 100644 --- a/BLAZAM/ProgramHelpers.cs +++ b/BLAZAM/ProgramHelpers.cs @@ -46,13 +46,12 @@ public static WebApplicationBuilder IntializeProperties(this WebApplicationBuild try { ApplicationInfo.installationId = GetInstallationId(); - }catch (UnauthorizedAccessException ex) - { - Loggers.SystemLogger.Warning("Cannot access OS WMI to get UUID {@Error}", ex); - } - catch (Exception ex) + + + }catch (Exception ex) { - Loggers.SystemLogger.Warning("Unexpected exception trying to access OS WMI to get UUID {@Error}", ex); + ApplicationInfo.installationId = Environment.MachineName.ToGuid(); + } //Set application directories //Program.RootDirectory = new SystemDirectory(builder.Environment.ContentRootPath); @@ -78,6 +77,7 @@ private static Guid GetInstallationId() //Try and get os id try { + throw new ApplicationException("TEST"); string ComputerName = "localhost"; ManagementScope Scope; Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", ComputerName), null); diff --git a/BLAZAMCommon/Helpers/StringHelpers.cs b/BLAZAMCommon/Helpers/StringHelpers.cs index b9df466c..2a9447f0 100644 --- a/BLAZAMCommon/Helpers/StringHelpers.cs +++ b/BLAZAMCommon/Helpers/StringHelpers.cs @@ -3,6 +3,7 @@ using System.Net; using System.Runtime.InteropServices; using System.Security; +using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -53,6 +54,17 @@ public static bool IsUrlLocalToHost(this string url) url[0] == '~' && url[1] == '/'; // "~/" or "~/foo" } + public static Guid ToGuid(this string input) + { + // Use MD5 hash to get a 16-byte hash of the string + using (MD5 md5 = MD5.Create()) + { + byte[] hash = md5.ComputeHash(Encoding.Default.GetBytes(input)); + // Create a new Guid using the hash + return new Guid(hash); + } + } + public static string ToPlainText(this SecureString? secureString) { if (secureString == null) return string.Empty; From 4dc3c6a8b86472be00235a2d1edd2c193f8c024e Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Tue, 23 Apr 2024 22:18:52 -0400 Subject: [PATCH 34/64] Attempt to fix #329 --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/ProgramHelpers.cs | 2 +- .../Adapters/ADComputerSessions.cs | 2 +- .../Adapters/RemoteSession.cs | 28 ++++++++++--------- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 8d88bd16..ef325eaa 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.22.2312 + 2024.04.24.0209 false BLAZAM False diff --git a/BLAZAM/ProgramHelpers.cs b/BLAZAM/ProgramHelpers.cs index ab7b0f15..20231df0 100644 --- a/BLAZAM/ProgramHelpers.cs +++ b/BLAZAM/ProgramHelpers.cs @@ -77,7 +77,7 @@ private static Guid GetInstallationId() //Try and get os id try { - throw new ApplicationException("TEST"); + string ComputerName = "localhost"; ManagementScope Scope; Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", ComputerName), null); diff --git a/BLAZAMActiveDirectory/Adapters/ADComputerSessions.cs b/BLAZAMActiveDirectory/Adapters/ADComputerSessions.cs index e3152868..dbe03693 100644 --- a/BLAZAMActiveDirectory/Adapters/ADComputerSessions.cs +++ b/BLAZAMActiveDirectory/Adapters/ADComputerSessions.cs @@ -109,7 +109,7 @@ public void Dispose() session.Dispose(); } ConnectedSessions.Clear(); - + } diff --git a/BLAZAMActiveDirectory/Adapters/RemoteSession.cs b/BLAZAMActiveDirectory/Adapters/RemoteSession.cs index fbf44b9f..13d28ab6 100644 --- a/BLAZAMActiveDirectory/Adapters/RemoteSession.cs +++ b/BLAZAMActiveDirectory/Adapters/RemoteSession.cs @@ -99,7 +99,7 @@ public class RemoteSession : IRemoteSession public AppEvent OnSessionUpdated { get; set; } Timer t; - public RemoteSession(ITerminalServicesSession session,IADComputer host) + public RemoteSession(ITerminalServicesSession session, IADComputer host) { Host = host; @@ -187,7 +187,7 @@ public void Logoff(bool synchronous = false) { Host.Directory.Impersonation.Run(() => { - if (_session?.Server.IsOpen==false) + if (_session?.Server.IsOpen == false) _session.Server.Open(); _session?.Logoff(synchronous); _session?.Server.Close(); @@ -201,10 +201,10 @@ public void Disconnect(bool synchronous = false) { Host.Directory.Impersonation.Run(() => { - if (!_session.Server.IsOpen) + if (_session?.Server.IsOpen == false) _session.Server.Open(); - _session.Disconnect(synchronous); - _session.Server.Close(); + _session?.Disconnect(synchronous); + _session?.Server.Close(); return true; }); @@ -216,10 +216,10 @@ public void SendMessage(string message) { Host.Directory.Impersonation.Run(() => { - if (!_session.Server.IsOpen) + if (_session?.Server.IsOpen == false) _session.Server.Open(); - _session.MessageBox(message, "Administrator Message"); - _session.Server.Close(); + _session?.MessageBox(message, "Administrator Message"); + _session?.Server.Close(); return true; }); @@ -235,9 +235,9 @@ private void GetNewSessionState() { Host.Directory.Impersonation.Run(() => { - if (!_session.Server.IsOpen) + if (_session?.Server.IsOpen == false) _session.Server.Open(); - if (_session.Server.IsOpen) + if (_session?.Server.IsOpen == true) { int id = _session.SessionId; ITerminalServicesSession updated = _session.Server.GetSession(id); @@ -252,7 +252,8 @@ private void GetNewSessionState() } catch (Win32Exception ex) { - if (ex.Message == "The system cannot find the file specified.") + //The system cannot find the file specified + if (ex.ErrorCode == -2147467259) { OnSessionDown?.Invoke(this); @@ -262,7 +263,8 @@ private void GetNewSessionState() } catch (Exception ex) { - Log.Error("An error occured while refreshing a computer session state.", ex); + Log.Error("An error occured while refreshing a computer session state.", ex); + this.Dispose(); } } @@ -286,7 +288,7 @@ public override int GetHashCode() public void Dispose() { t?.Dispose(); - if(Session!=null && Session.Server!=null) + if (Session != null && Session.Server != null) Session.Server.Close(); Session = null; } From 5996ecd81ab1a404a1d8dd5fb7e677380785317e Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Tue, 23 Apr 2024 23:19:16 -0400 Subject: [PATCH 35/64] Typo in comment --- BLAZAMActiveDirectory/Adapters/RemoteSession.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAMActiveDirectory/Adapters/RemoteSession.cs b/BLAZAMActiveDirectory/Adapters/RemoteSession.cs index 13d28ab6..61399633 100644 --- a/BLAZAMActiveDirectory/Adapters/RemoteSession.cs +++ b/BLAZAMActiveDirectory/Adapters/RemoteSession.cs @@ -263,7 +263,7 @@ private void GetNewSessionState() } catch (Exception ex) { - Log.Error("An error occured while refreshing a computer session state.", ex); + Log.Error("An error occurred while refreshing a computer session state.", ex); this.Dispose(); } } From f553b19794069c846ed1810f9a920397c66a1173 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sat, 27 Apr 2024 13:03:01 -0400 Subject: [PATCH 36/64] Fix for #330 --- BLAZAM/static/img/default_logo5.png | Bin 0 -> 511978 bytes .../ActiveDirectoryContext.cs | 17 ++++++++++++++++- BLAZAMActiveDirectory/GlobalSuppressions.cs | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 BLAZAM/static/img/default_logo5.png diff --git a/BLAZAM/static/img/default_logo5.png b/BLAZAM/static/img/default_logo5.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc66206a04f8e7ec5d341f30775c3ac6567a586 GIT binary patch literal 511978 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%0Ab7`G@ZbiEd89e2&wqR< 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�wezA4yQ=J!UL#9Dd*p5VNciG31>UG2BP}yQZg4 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

Y&VwC>iz8Y?i6KO(@4`@rDQn^*ZaZVJ!rgQfG5 z*amolf!e(6)x=Y0g2)Y5fM};P|bQU9Wo& zuYT8v-PYZ&N&PM8yukOyC;DPTYEV5k;>RBLf!u+>H&7mCVlEaFk z?a&zBCzBKPl3QPlZ+91NXO419AAWh=83|PB&30tfe?7eaZ)@n`^|-MH|Xtx_nnxTWR3EB2vhiv^*Pqfh%9#NBt8whu+&fng5l}dp$c1l zjw-@5La^q9rzYvx#QZ@|P2h|619(GVSoVWy>I7nbxuU2i@C%7=fOK zC&}dG7H5iN3PI}p$O>z&TY`clMT|RwBu=Y{K~%}4n*mHXjOr&q4rZeJ36F85^XQ*U zMhkIOQ?*6{jpoEIwmGN2bTIDY{fq10q$GK)ruoP+B16*fHOF-}?EBx^>RN1MLW%wL z65kJQ)=%yKTY9=lHc^i_xv}SI7(sUv(gOuEspR6neXT3rQCMFW)0EJN1Espw_jZg( za%|@iLk?L7+Cg7iBEYP-NTrzOduby1pE(dJ9KHV8-7?h@TD3E_Nj~Bnws|4brEJj> z`!@c&ejjfxTVB&wZMk*{l7nSve+*A|lvY{($+p5f2lYssz^{a_syL{*`@1FI!}2x2 z;%RqJ)aWWYZw@;CRiv+N+B0KyHiq=JDwaM61P4IT zXSsP3k8Io>l37aa4XL0rPy}+R!j>$5E=X6tADU{QWZ|fmYl99t|Fs;rZ*XP)V$*RT z@#vy|eHAf%eAmSLrw|{ttifzH8@+S9_ohtH?_$+m!gVdmFk__Ns5Rc`>Cwj!jtq`@ z?$8(PoxQV-_Hz`vJnMIB?h5owfei-kxxmW%NzIJ{XmYds+=8LkP9>S28Ykf3!pYQU z4I6L>XvEhHPE_Q5B@1bp)m`z2hv)lk4b{8Bm^ns-?5d?7PqS=o>;WE7;$F_UAFuUG z_f}hvYYZy3Y~shaxmbtZ_A866ujOjCMJH-uCN?_nh`(vMxXfj*Q`TwPNXSUjra-*m|u1XZhj9IX^`;u)>m%$iig{g)>n z*yY2q^nQiik7-qfwD6pm0E?CC_5h&K&bmN`N`?|dy3a*I*^}k*p8jz^Nti+oC0Iku zY*ZGSovkxATW`=J^5ILGA<~e0~6O<0#PF z`;C!Y2$J0J``H>w3{I)2+p;C12;Wmd-aR+{}C*P8)7XyK9teuOF5}F z(hF>MwH!nA1W<^3=WdsZ@=rdGxC?XlgZr1lb6=H$KOtk<+K1ijL=>gK2RiTG+wYt!uS zrHxS*fbT3=MHmc<1gZ}qo%3~+iW-4-HzfcQCX$)*Vo|QvB%$WB^x7VLcJXnNWuD!d5|W>d}O20^eRmsV(qrrC`PNbRMU=_fouRzJjktY z$0xJ}hZsbJ*|m9#zLC`vkh$q_BQ}&XF8@b$>q6>ywXmj=Vsfy^r9Ll8G}n<10n>yL zVQ67dJ~qg6{QYYX?7y4VI>CP*f4X|B?F5#PZc(y1$k_O>x!oK(TE? zp(k45$QVdZ%7-kWDpyA)M4uGzqOhSq)YI0tBi9oWDsG=cuJmq)T7!BKoNJd^9ho1w z%&YP!l)~C^IO^SVYCnKEr@}5P!_NU^+PzZ;8ckINR+mk)g}El-HirCXDw*D^A~cmP z&S56^zVLP#@R$g8H_>We5E>-d1EjI8z*wT#X@FXNd0#%V5XET0pVyshO{GLTsRG+KD)~3tGV5cA7{22M9fyAs8-x8YY=!nI; z5&bUVRDDA*2Zz5SR`gM!R&fdOKs8;28wR;M3DoHQI52} zlec*>YM%;t>gI#|2d?@2gawd8)6;APffrQMJEUyZUC^V~%p{APr+<2s$k``F7i*f+ zfxKfZt}6Jpp{4tmJ795b!Jz`QE*V3hM{`3_sZx-q>x{(gYDACn(KH*uXQJ?APK-Vx zkI0{M(DIdAMt#-$h4Z_fgFU}nBmabN3tqeXFCO2WONojW^Bw_B!6E+|sc(3 z0Qg0m>yyaj(z(aJzGtb7!B(c1W`qI!c10L+QFl1c0a+r(GuiJ?z{^*ig7;)9Q)IFz z(iTmUMf{Cl`fNA&zVPtgg^9_cz>{m=i;0~zzHNEzCQdc2k@$UIzy0mt+s03%=Gdfz z4AdP)b^Vf3ED03}){nE0M?3!cK)qe_>v%##BRS>~>_(!rL=)EMb@4uaoeUB;utkJU zLavwOtDiR7+CH`MwP3CN&(`noG&yWyN$oV*9l{uXe2kl6d!OPefZyhgisD%oXClBB z;@OQzn`@UmG#1eBFxI1hN9H@TQ~amh6`qL8#)pYt^ot##yz+NVSSX(|4`1U)*XdX)hJkYvOxT~UbRYY|XK38GkUa`{GlkOqB0X*R+ zk4^m!4DN@$yGNAY|Kuae#7c``z@C!UnV>9=wX4UmBpbvZ$s?CdBT;p^4f4&Wvl-69 z9>J6;Avhl>-*Zf$d&IFd6ywU^gX$l;{V4_+qR$t9O%qSl8;lu3h*b{K5V(*f+9X)W zZ`L)C2b^p%(?Z)VsKPjPlP!bK>Fe$HO}Ra>TxfX^e!msTn>;m)ZxTN~*zQ^#`7;|w zI?26igP&Le>x#{cr<6^!UsrTK^G$B zUx8(AF>vXbx2CCCbm)S9{4Dcvwx#U`^yj>7p@(wo(#q>OW&sE9Af7-eg``O~IEN8JYzJ1YVl2Yr8^qtd^(FapaQV|(KN&-0+0~N|hjp_r7C9*+F5Jfy-`VFlf%|OY7&WSvmYw1t!_bsl`I~Sv~t%o;~ zUK01*+D-izC{`10djcH1GEfXTNwq9)Tr-Y6|1Yih$D>s+_+~S*V2$#ZXS^~QDm4|b zjFYu5J2q1@uxGwSJjI25wCbU3TBl;4p$U3o*a&Cku??Vun!DT0|619?jLk zHyh;>7;)KTvw|k^-vfA{K1N=eR!)kT>=-neBq%CLvG_4nHfX?yy8 zXP1~%$+7_KA>uF*5s|FZ%o#(NNs5v3_zJz#w_jLcuYQ;l3rQPI;@}c2ZcsW=Dk$cw z)Vua|w8ASjimV1)=<<)GZZ{JyhsAnc`(1Dw z5RtG&5Rj($D6z0p4N+Hr$JLZWEfnr5Z{22ox4YfRh4Xy6%R`;!pQ39HmvWk0dk(80 z@T;5d!+t6t5cK=yH2IYGLwmegDei%PP?ahC_MFoN!{j`tZu)n>e_c;PH>z&hKxm5- zeZ}tP1HbZLf+XA*4l`Y~+v~TsEbr;!8a3AivkYgdkwh;)N-pNrufhv8-#J~7wL-LC zCpk5$qe@OruMVs8niW}}*DMMxS$lpzxTVAWGA#WWhvOBLZ?pRY)B2RaR`0@@swAY- z|Gf+_^fwe&a@oe4JbeoU_!}K^8)j5_=d%6!Wgb~5KUb(Aav#*v=L-0)OnGiuha_5P zp4?ra3xw%95E{ODOLsK(2KEUUx2{{L&h~#!f7X_k{wm-WjaMV6%ciET4RCX!5R`?h z{R&H`IsS*)qo8Nxw9^7dUcRToaEF@V2FHmnsD^Xrd6~ z!yk1B|8hj%qEg|;Z%p*E)-~!JrVK9<=i1zp=4ii?n6&>W27QFNRy@(*7e)KS?k9zI z>13qb5qUz9jl*Y~s=4k?@B0vMJ0R)y{8ScYm{uzWLMsbAyM#c~mUu_$&Xh4bpAwH0 z>sy79#5;g~gq0~{*(9gX(ZJLn_a);P_t*#U+#lUFsG51k0hN`1^X&!GhuIAa{c3>) z9=>AjQ!6@mf1d#k?}D|}?^b`_!iq`t>0oXIgQWUg#Qj7@c1?V^n6ZF3F1a=>|6GK2 zhynW@rS23bPT9p!;-v1Pnd}!hddUXj)}VBX25jf{6x@r48zP7HczuOcs#axFF9{#> zQuzh+Ibp!Bem}ik$T&D2A=DrZZ&`i}*0*^UGFKc?mYC{a6UD!%Xedo-CAfM?OCs*T zNbS#nOGv6iQ_ZxWDq|Z=z{marH-a`I_f@+0!zJUxy*#8}K4AjX$L#ni{3nwvt}c@x z$l#!h!D<0bKn`5e2#K86Nm{D67tgPRO@hR(5tAYUVB4I2p%aB_r)u}`noSFbA`pRn z@{1w9Im5nB3Y6)Zso<- za`WTNR2vCo_1T-Y)fk(ibg-w(gF6zQk0Fk8hd2V-T}_khvvtvx%N`#zBAiAH4kkwb z4k^Nl)|OD`C0$X??gbe;Ri%lZqG?90&d0!!CBn2%e`6Q^%I9$?vbag&(4o$pP4ma_ zFkVGP1&d-RCAeAGJWtMIXxynh*beO9n)@W37M`J0>f5CX?OkasAF_Jm0ZBV69rZ7p8>stac3D-Jq|2XXHy1=z^uo(t4@Gi02`kZ_kbo+F?5~QKH#@GWp}|8PUqxtPw2wFe|Y*;eMcuXgEKu^EIIO3PGYdWcfK` z78lWTOAjyg)DeyU$J1Fw#np7(8VC?9Sn%NP7BslKyZZ|ScXzj-!6gvf-7P?HXxu{s z4RmmK`**%G#<}QA7^8RBu3EL$oX*J^o*@lssXnVjzJCr zwV(EnH|?FoQ6y>l{^gy0>U->xu>}Be?;pNcRa>3;LR~!XEV01_`w05-)v7p4KN`|j zdwG^+yU>uIuIvAqA`@_6bz^3&^iAj^;>eMZ2g^4tZ8@_5-_TO}Cr$+{)2Tz$8wo5l zp?ul^R0NP2mHmw?=O^rNI0Iiy0gFn`^W&ON-S@{N`TQsZu#_rTt=BKt0M%|{YYBCY z;IgP6nEzoGlDC{&3Yul>H7Cgu!eCpBYZ^Q)O|!1wcB$jH>_yx{dycku-Y2M_i{S~jb8{py#1IZ$Gnn~v^fsJ<6axv? zUr6;u&v`%SO(-Rzj|c9?Az3mRY{{SP!b&%G4Rl?9QlQMpCsA;`lS6s_10WNFUM~!C z^J&VrqG!+X;3De9aA(L>)iK%Qq%p;V0r&fic={8PL$s012m2>re+l|a`c&oociFrA z+t5_=@LnIRc)4%lB!KHXi6Ho)sruuD%p7OD_WnT)4h43=w5FdjnQ>@58h%Vq z-T%xorMJ_O-%g5J5wdHXOAY27CNHk;wp3)ov31MgAXy{dxez=#9yIM#Sj! zl#L)ak0wNm4?UkMi1`96{`3OE`Xwjuh;I!y&?o1qEf{!DHqw2wWZ-`}Mi*_P39=aG z;(O_GFJs6VO{0oiGNDYTd=tz-JG%MtvfY_QzubTX^IK8mQfADNaA9nLq! z&!4jqWpGxlF|BWYNj+_>oKT4Q{kw#0Gpq$~)#z6Ps=E`je@0fasfG!H&l$@7`eONZ zfU@pOUJBGsD%(f!eN4f69h-RCp(s_qyxOZBw^Xu=Ki7@|TTlq_=Ii;|?lb&!KAFtP zFU#FWjARW6#(|xey!s_WcKIqp_Bm!`RFooZKt2RXzRs`aj%qN_kE1W+&jjzrj(f-*=PWqT zoq=AL)dgvzh0R&i$E=oCWxE9~YCbB7&vjQ)w$fAt7XRQ1b={XJUWrsNvErWz&;=52 zlI8LP3JD9TtU93MDuI_D|HmsMKm$abE%tRSwNz<;0NQ3%?nJB6QZ49gFLaN1?nRGh znrz_yj2JQJX_(03FfBw0BFKK%#!F3%7&TY0Hv3~(cZUlycCh;50Sd6qr~?blZj(Xo z3;L#T-0Y%L2;s)CP;!uyWd3TJ?p{ut`dz~4=PlvaQsYSfymCz@l*V#vtVY0eTTQFx z>pR~l4z2ZKH)u-mV98x4m7JI`se=O&P;T;#^51?pMkrl@zoY#9$mr_?%DyYpDKESg z^om>9-}gLHjy#GKZsUE>+sjl+2g@v9;CEQ#E9EV*HaQi*&89x}qX;cW9__#*(J=fM zA%U4D&qbay%%1SDaRo|`OY;T&{yI3?S=%aD)^G#f%i%0I+SO%8NAUWvQIAQ4Je(qp z_mLijJO(u~h9U)p0bv+P8F8-z(E~v!W1I5DNnnr7sbD=l1Y3(0o|1W7mzq36$`%zU zASJ$XZ}8E!WUJy!ipeI?!E2|iXGQPK8B98aSQ8DXJ&0u?4f1ny)dGiV%?UikpNm$; zws`cs#lnYs$s-fdiYsH&xbZW-+!h0wdDNBf0?@41>!XgD!_7x8{~(K8KnMdd8*h(ja*nkfK|Qs#r3EBc5iS-*V%J>y$pkyZ3YdsY5r`@_Ht`XDi=Htn8b$vlPk_+@FHaPY|MsQe0dg**!YjIeGUfHaH808w_gtFl85&uMdpn>zwc} z-=xM(3L1?NmWp7k7->uv2M29ri{Lon6k&p1kH7%e;&B-s{EXNql68Je&-gt?yht;; zmN*CAf=%Nz3lNsN;Os-Ej6WC>&J@#^B z?d_*JxJ+>hY_0Y0mVYvA9%h~oW$qJcROofY(OWrfXqaevVrTjL;T$x|Wd)}zEr{!qnEv#*BYJ11XUaDv(rg9Wh!ky)@?%#-|a%{P0jFIMo(TLL{fcL7N{FWhPKwdpnr2Nlvxt#Y;X&|Hg*U1l_G}IbU`TION z$A0ro%p5kK*sBZrM`;EwCc4m{iACjxrdpBj&H|1*m}~!}Jz*Ynz5sIbR63QzW+BIq zW?qT{Zb^JDmnbn(%uGml; zB1F8NwZ1==4^@GEtjiv+0GGni!y-IY0^KF(J;=QC6ePUabla|Jqm=UBP)twTv=5tu ztZYlK(3Bfm(fA9E>W8b+3Ho+h!?KNV-a85o>%D;3+I5Iec9tUTUSw1!(7vI|Z-H|_ z>%`?e03Okkq%Z;d_mo^tIHzz*P6V@Ber1$X+26c<&sM#U5$m$3oiN;*nEEKmY+Tg$ z7t>8BaA8=HlLW4I6le@cKHi*rgDN5xDYPYYy(map>>9dM&g%*G^4*9$Cl`^2>oBU!$n$Dj?^s)(XNGLZG_2mKPjIeE z*@E)N?F;))Rv*UGXM2{u#$)O-h{?tiC80`D0K$fClehJ^tiH!t6|qQNoUrYL?`wyR z7gi*DSB%g;^bsdNf8)J}>aU6`?hjS|z*F>j?Lrx+r;K3Du7E=jr!-twB0o+n9I%!RbLapo7L+0P)s zK~y$D5PPsain^M#uTCFZ2Z0t z6BM*QEVT##N3L?2Cq}R4#H304g|0z;1+Bl%4SmOj3ad3BLRLm@HT*&(eJH$a0jCN8 zy508nQtv+w+3+NKDuCuwjo_Y@qZ^%2{;;l1#$ZJyX!8!?U-}LyrIcv0U97o2+i27_ zW<>dLKc|yrUh%5-yQ0q$26BX-JcV^i|5-6p`O+-4gK^M`gS$m(`DJML9-RBVj9=l{ z(9K|Ms*>TD(>L${i<4Z-o%pR`wyO$7oEDZRW}($k8QsU%`z;O?TEaE`G#tq}>>mux z(z-F2m7jyWpI!>*4bMA2kT)?)*eMZ2Leog_xi^*G$4U}~in<6Ai|4!Cu1b8H^*?z4 zU10RSTAhBtl^|y$M`98Gs-DMT8Z7Bi8s4r9>Tl|!cijjSM4CZ@haC+TM8Z_-Clle{ z6M6pYbiXxAczDkvjZT2>1VCM5^!>_NzIILEcvdyv{MWY;nc@RZ1nbm2D@cUa#xvdA>4HTu+*L_FvA=)mJ?jrO^$kd}g=r zm?e{DM6vMk=2=ye9H3S{{Vf;zeLVr$hS!wA8so&4otmr0P>CnGZvk>~%=VGyw%)}p&zBhX!R(Tq>!t^ivE2QK;y``+Vw#SR z`0ywUEc(_SIO$89Nn3gt3^YZt(xdVFKNE#_fb?#4*)*ZlZ3ShQ$qT#8L!y7kpjdecB z*>P#RO-IjscLc1P-#&E(4zH(U07*r)XDVdt?Lp#cYlHw0^6UKrC}>(G=uraz4s(5} z1+B;bXOl=1m-Y$`oSz2+2&EaHSFKu)xDk`)03+SPUch#(HGWnDLeTsF>$>FvFoVoD zZ_@o$J^j=9a@VQhI4T@uvY$tCd-OVaz5m^q5L4XMm8ava>iy%Xo!4Rsk6~}~>XBMX z&jt0eDYb4yJth~A6uY`bv9W)s!euk#=-P)xK*|?{hDS(0U=uBct)ek(tugE(u5T0H zLSV-b<;ssLiP^LTa4jIK2rlF??_%&UcOz}Go$0d*L?Pijq^0Rz!q4$uBHsO})uPhxLPaTOb@M`4F&pDe**SAX zmbtZx+L6wHeS~-fiQ;QigvYW$MM~y23|vH(auP&CnC;!`ZiL_S&$^!R3`A#p(_k}# zP#*qtI9z(JP993WuwBYCkwoiH;Y-*AVfBa(zp#@kgQ??Xzwi73<)5Fu9$NdKTgJzH zQycsQ|1&4|Hz9o3v{E*H%O9!8$g0b)BG(YF?eE|;rA}j=hi3pDAWX@DcsZF;f@q{$ zjFiOr!>|dpv&LwB&Fc2@9tu`!N@QFAY=&>6*P8@~OpglWON#5tITj+}V3b{aO5C}h zQ$x<+p{BO==zFjnI;;KJ&AJuI7%~QQqGn!h>j?9oXftg`bW;1I}tynfnUHN>EFiaNXSz zPag_JVMW2%N@l6|=0Kn%u<6NETlQP6_!*_g#E0U#*Qv9+v#kGmMjVo(zIM41)`Ha>7C6+Vwmh>ZUeLBxywzVW|(Q83U6mT8EyQgu5Zqy;9idX znT&VgTJwm^*I!hkuY7jaJv`-gGA1@kq}2eHBcVJ)QIV)3$Xi>l_qGFcb;1^ypOL75 zLCAq)iW0vNFO4-!kU}kmzqiS11aeWPHPnB*seS7#yZvjioU>Z{<&7ET7n=iodYU>O z@p=;3+ocdGjp=}eC7(E4sVt^AI}tq`ypLM`a^-L15=Sa29pm-5drD?`qcy>x<(n3M zDECSVZ%%%rvL`{}h@j7<<#hc{8maW;^rFX005E}@wB+0`Z7H`LNMMGNy^du(fL=G- zIxHy0DUcA-!zuA4)qt4a4hDJ@CDZZ`pT5Oa$9UG%uX?_%x6C;&U#)lU-35@LMHZ(b zN5Fb;?Z~B2{Dfr;E_ge|dOHhxdN=u(hYo}6Gcn`0NSXLDjc-v@ipH1~tDBY?9ryu9 z>m6LU_#1sgc@y7fSrw4fqy*SRdg}s@h{3;UZ{8X88Bvq5J_f2S#9$VYir@oAkAgrO zhnLZ8P@T_<(TTO%)7RJ1x@W7aGunbTE9aBJ1J~>;Plh-7Ve5~j^8^$CzDwJ+QLF+8 zeXfihuUT+PeQ7$%)Vek~npu8b&I7Z}iBzg=;Jb|o_>8xBSxidjLpq@|l__Bfuxh7i z3`h)>Pdo&q7nVeBbOh(8@5$aK-mY7quVfhvQ1!@gW;RD?M6cg>`QlnJ3oyP5{`MCm zAO)&}sIgk{jiQF)A8)rB*M30PlIF)`0;}WYAe0Z#o@bO*WV&{0hGCi@Owwgglw_{n1?h0l>As9*9O z<~0eX-j1NZB>IK=r1&SJTFDpSa8+X5rU zuW707TKb_ZBJieh&rp7%;J?*B-J=ZeXlf(%33~tQ;C!Mz4$#>*in89iAm-G!n`_=s zph#oIjn316N2;_D6mWZIPlUY@zM{F$BlI1w;S7>$y=-V7*sgfrX6?oGL97Lz_A0I$ zAXa^_^SStq59m&M2Ts=a8UQbS`H$DUxZhi!5gr7f8nh9HI*XtS7c9#6KOrUYrvcLn+`lZz8RI67r1jOE zw4LOdo!A@x@e0S(C7p^R=(WS@c@f6IiL#xPa8y!<3?Qh(@S9{j{ zt)`q4v$E>Z)q>L651B3ff8Rv>f?jvWJ?L&j3z{rxgDX2dcvE(IV<{Qb4Z3)}{7?ms z@h=3?M?dWd0OkY!k=3 z@n831bHIq7gr2M5Ph9U#5=iD#O@t6M+;8Ytkg7Lg~%c z-+ryJKSk7jI9rSlZZ)Vn)YjyB|$AWY{!#T+ivS#|6REK6=PKKWm|pV7XhuxEikcZ zN$)!CjHAo<4poNNL($8|_SzZP>1d8+s^%ln4Y|Ie@e?|;_w6$Dcu6NQNv|;>mIAV4 z+qxoP{vluU{Z9Ee{mz8Q#qEsf_kcyuRD^=T^D10zqX9>ZmC54#%z5`!zhh#YPWka( zPWkcq2ypTh3zxaPEl)K+s`NHx-_}(Rs-()x6`jY89#$ zm^h?RnvoW#c|*n$wwE?He>xukt_uq@sR6qJ;*B1WNm2qn8D<>s_w>8vL425`eQ=54 zU!YRSs@56;a^#r0Y`xe>ifCTn*NYih3K)L@96}@tSwo&RnS~APSXJqd+FNF$$kj2n z#vCD2|IJYq7U`=x_>Aa~dI#4D-6HAuV!rdn)Zem498ZBXh@KMf=8w{+u>kfR-dvy8 zThB&gF-_AOu9m(-ry3fc{L6=$H1P9jfN;0xJ1TA$VzZKd1^T&;j!S|V(fG}>{AYKz zeRzVVlQdPt?6;dx75w!a|kt@#%iD8_F}_ zpy!IoN2!0czt)Y=8Ibd(;>ri9JPZ8{yvnu9f@D~2K6O=gwtNTw*X^-%_U4jRTJN}4 zckpDZs)Nl3{U7TwWb<#2U3{T8l|s0)^&z1>T+U`-m1n1%0-}gZjwHiA7HKX#9ksZO zDQ?BpF&P>e-?R^&Hg$2w>PgvZ0UolXa>2TpSzAmVH71fh=@MQCRvP2wBA?T6HChcl za|x}?ly7D``OpV@%0d!HVI{bsuWEZe)_#6DY(Wnbf}T!_@Muxa6tH5F+2~l6?maiP z*RsyCsM8gk?t89RlU8NwIgZIeU7sf^RglDRq<|+0(64~&)b&%q?(Of{r^a5V3l+*F z)yM~awh)iQyK2O+WS>m+^0c#Dd5$L|LE?meey`D0i8ztC08pD-U3a0k!2AB7v1_A%N{;w zC6Kp4`AR*axp`@p4E;=4nGlr;dy`}>$WO_!uz3XCHHBWBU!gV*p+E*MML8R0>p2CF zrbBco<;!vuIt^|I8D5@7Fb*~YLT^0kVXi=#zp(B%P>vv5qv*$~Z1W>J&VFQK{%$h1uxr_kG-~`u7T~c)C%2Bi>z#yxoT* zjJ&Ov6Qb1~}7t`_s(%3k(b+Hw2xt(BchV!IJ+ z>ZN^U^BuR8(vvPdj-YiF({cm}qjp=S_sJ0?Wti_7@Y_1Kwo*S8V4JK^b}m4gjtVY< z{2m!j*MzrH65=M*(9g6u#-j;NDDAU%G{W3#3F5w_gn(RF9r8q5P#>+y`VJBLFVDbA zCw*lSydW4^Ze7@l%2VqL~qy zHaE*J{~=jBNiRwwY21-v!PACKwS+ES)dg#PWW;sUlD28HQd069k2&S4w_N?tv(Uq55f|kNsK#-i5L>IpLnTUnfjCYvJLZx zWuO~a@!GjC`5@uf@StXo)VC{_elnUPRK`A6Gn?QWxLyc(H(elFtQ$ zQWDR|*Hca1{ZSg;eat`~Yq?G-dBgK{2qj&CqV z?WOMqczC}{d*LoSSpklpzL7-ZK*EL=rEf#1AyclFdhauG2HKRF1oI2Wl1r>L^wwiQ zoIeJyrxwJ8xaM$v_5`ZfPf@qn2CC);xf(JFVLh9lfrf87su>unS`fI8{;WM$9XvY3 zJ&SQwgATnE<7>#W9i0Pu`CgGl4xdYGj^6D4OYS6Y zd(~R69@yCHFj<2+oZ{p%J1f|2B#b4o-wIxUb@E1QHz&39|*MW|s#yFuh(?_l9gD+i+8 z2X*;;pMAp9b_ja#thoUayYyDBjBLZBByC7P4uI#Nsc((8t-X*`3y+WGp#Fw~=zTTC z>vOZHLx>(FDImlNUFq;n4$LMSqfvOAx^k=(Fn+0r3HG#?e?J{$!`VVoCoea-RUd)}|vI2P|ks`D?_@b`K z6{Z?~M)$buYof+C~J5Bg*{TjD^93Dg#H~dVrKT+3(tf@Knjo8Um~iZlGRITCTPO)AfYVXH4<7k4kxg%Y~DS6}d9 z&fuCxy)%cs1H0e{olk)w=Z(Aih;H zyZhc+gC_Y}v^6&)RT?6?8duX+~zetX*W7AaammaJwF@G{mdSU5UdCE}>c(D$JaVHY**?R9O{|QQ_`8|Dm=H8XbY6~;m=Uqz^pnmqw zeeK)5uRl1t^EuKX`&7!Hlp*w%MxtE(>~s3oe3W1I44JuoT{)gLdqGkQhna3P7aZl( z*p=rGc{bL12$|ZSf%*E})+Bn<3s*nguuN9(HDkiJeQ6#GZ*ey5`d*yUGJcS(g$T>4 zHe8*m?=ZQ%vHW6_gwP!{J}8K4ze5caRlplzg?!fbpQC3isK#(^iY7S*Q}U0jfc{-9DvqhQ?Qq{~C%5T293=iH;1#QBQ(V)jC_g1gjhJoKish^6qsS=}pdWO-h zJ1P${6~@T_NQUzJYiGLcSZuuDW<64cY2%7*35H0-ELBXhhLHD3?I0!!TlE(CDDVQ^J^4*ReR5E zh>kH-W2g^kET_%$sABx0WiMW#-}?McX*OT)Q9Hdh-pM5v#$o2MAnJW%OJInAIT7=g z!R79gyAXcpIcVGZ?tCA>`CeO!=7|3U(__SH{_IVT(b|!Y(FrKYhBF&{PH74B-)m1a zH*|h|pHo%lCAFz-d7(nLWqzvxN)WppDk@B|DGD(+>TVOehn?xO_o!*qmr8!&o$gNcA_&CCBBqW3D#rdtt-2;k5GoUEsVF|x}X=e z+;>Ol06=$w0Xt>yr}vG=Vfxr2xJj31)fI`vxs_x1$HWa1kZ9;#6{ngKW6^@jYs%+pe+D&0O&7jqM{ zoj9GK9*+Yy_P^ENFNeA5BvWBPZ9pSi<>N|dAWW#ACcO3Pm;v0}$lrFyWI7CjH_v`T z2&$xh(uH#DN4IRZ(}}mgg$%%vqPx*VbK>W?Mo2X@Hp*@t{n8JKHV;ofE{o*dd`g0X zAGw#&AKPn4;+K$&yywxb;>%MPQfzR<1rBKDbj*iSt+cd9n&8v5j`sum67K?wWixq? zLs`A5PW$j9=)|=N(H&*0 z2KpSeTuwRW3B3#$$DWiMSEA&YNVzftPYygcPgEtl^C}{HA@51IOr9Z5^*Q~&W`6uc zN+Z(q(SD;f>OYDk?`=k_VfsibK|=B&fcn2z)Lf@Db&GAkO75|#99|!2p4UGjGanz{ zkNJa{19#aJ_!1nz%f_X&tPZuRsXm(257R;k<5B{O4k{^ej}5tMaCHk6TeKi(b!~0u zpsZkjBGHf>^ou{Sg%rvloF{=Cf)n+i#$!f8*e(S8kxk8kdlwRgs(c}?VP9aLbwNNn zzOgqflo;6KnJ45+BqXy-sj47jUP=Zz#+ws6mNmP)3AA+ykA0x*MXoae_jLl@h|$?yJjL{n zQdqhs@MP77GnRzd^L0yB?M0+P_yit15VYn5qV4pCA0G95zj#`{CU|H(+(31`KIaPl zr^WTXZ}cJOHZS*j%I_7j5u_HEv3l*~u7bhDwJ_ht{y>LgL;%+@z#i3R!MLea#KHg|HaPldr}ip*fxW( zKg7>hU3Wt>v9(v9q-;UWASTs6v9<4w*AKo(@%W?!?cdA;yu-zlb$Fh>x~3pM@MBCRz)u zRiEp*#xCmP>Q82Le8g*OBr_H!-eKIAy`8IgU*`*SI2UFr z%EO9#CUK5z_miCkgWuuc^(b$K7c!av-3wqJlu;bMlbq$vl1jf3d zGwhjNN}LUkXSL4Y6QBLzsZpwvr_dn7IC{XU6r_$z7wItZIP>>#qW_L5|2?1NX{A}k zGV=M?XV5=;6Q)#(F}xm6ep8`3rH=ei6T6pgTMD1>W!zrJSG4{ zqWmFOAU*%-o4YLTZ_E<}|2-^9jb|Dp*Jtb{Zpv#!ZbFig3NghwDh_ntFAh-ttMAHW zaz=g;`qv>UXVI$UcQ%@4b36aJthEIoHA;x@n{K=EG7V*Q?rda+c6p!fNv3|+p!*F5 z+&UUTdQkhuU^td`U*~|&AIl2Nlq8EkHY=)94zHu_QLBgStKQR<^v4t# z!Xz?B$etX<+FGd2gOwb59i9ZCwNZK(o2gd7Fw=DVO6Ap|s7UbumXhm7Y*(VR+2^>E zyVXOSOY zCqQ&Ct*SRQA4RfS_!x=sESk{s-|xKlw{dJ2+x=9&M0LL`P}$^(k&*_AsG}P{#C;_e z+k)xPeH`n@27Z;LRLBxxjUADoKEBYKZT#Da5D?Lm>;3|QyWzJJTGlaA6N$SD41)W9 zF*fG6kjvG0JyhlF-Hn4(aW0l9DiVGxuQn7YdfUQZL{p zUU?_8f&+PJ>6Gvc18lZ)a0Vcd*;_HcprB*NkNXk~9;E~eF! z1%HXzI^O^s1mpsb?vWVY$t#|2Rc!mk>)~pl@3AM4^KluCBwklKU}#MIGQIDoya8SfXE%0#caez;nQ-lWDb++b zz2Wxi{Szj17opDN54^{o&CLJ$D56`;^XWf-${`uOIdCOIyy2SHZ8uf>meu7o30ox@ zet)o7?exduZU6o2sSi?{7cTO;miqi^f#J-Xzw#gbd)C%b0!^H-Irm`Q;oVi|$&Y5P zJ4EmSA$po$>G<_kan$+{w&0^>ArT|;5ev>jVNjExyn>#)Pjh?}o*WI)v&Ix?NJr7( zlD=_`cu{P4!QRvy%6#xx@xzI~FG-X>@oHNw>fOl(5BPFUa5gdnWOPOgZjeTx#>@N4 zzfEh%T=}}P#qYBO+)w2=2lEW@@9DtLv|cCnW<5Xg`H#=tG~42uUG&%z+t969+Si1H zc4F%FAio;<_0w5I;u94pE2ELE1ga)Egmf!r)P|g4dW_l+w(076r$L*~EWA4;od)>P znm+dY8A-j-0X47(akKAGRKmq$R8cG|=L?oRHutLyqI;C!O=aVt=b-V#Oy`27{YJt@wL9Pg%%JQ8g zW#zd;yoN<^>UIoFcy8cJYHZYDdxOsqq7sVEuj(PkO}}`K4T6pS-GEx-j)CO@-}pMA z7u;HRn&DlWGt45)(H}U`jFHD?#H(^8Gn7}&d#M#H9{1yVZBl2QP?4HF6-_702d%)2 zM%g8!gm+{?{t5qR%!XZ_3Eoi7rQb5xu?h^yMe%-yk+lS$bObH>rm8p53S%*gW{ZN3 z_4QjpZm*r#6d<=bE)p6oVdaOLM*$tZ(1gUkCH-8MOBKP(Q7XZg>v?xd_6~~JBJmit zPs=%JF=Y)~=!Ie06P*$wEwhf!EV1?fp$9&7v3Ud9@%F%%FKWEP=Fz$sWZEw*<99~$ znOJK}hkBmR_St^Q(=;lV&vA|>%|R?{CU_UJHkBqvHwCE(rhm)@CK@}gsG9#2Y$ZDj z>tOw|a8(URnx4(L9qnKY zO%Z0tkP@)XhxoyY%ZJ}?Om5ZOfgwFd%d4sRMindSM$HSRB*Ue$6!J_KAq}m3trZ)W zZkx-?%pqd)PF3}X)lAsAZZO zu>U9V_I~;_w2PaErXfnpR&QPx6>Y6i2BhHBP=<+{WRRcMu$;S|ZC?(D0#- zy|H041V^?;HhE)3rK1IiY$%F_hZwT8-3EDn?>9#3HgK=(`EsZ&83I&Jd?ai5Yh{|r z{T-I-_ae3rvrDhpILN7BYljS|VX~^8-XSNRdx>QEtCjNQj0DC-RAOM(2-%uBUFc}o zC_F7FCN+~d>Ye`sS;R(Lz4*R!q42|GD6H&{1Rqx$BpR&EhQ6SFpiCM!Wf!fWERb19 zkcNYS603(|M!@v*FB4?`z#L{aUWOnAr88Kk_<|z_3?^27mKr(aBPsRaifhK;U{h?2 zPHg?V@Qu-(v570eHmDY_1_NZPFj#eBMy%}ag6BxKjink{Bnaeimgs*O?x_XO;VQxp z;eQ8cRAc$R{lZNqp@ot)hZ}92{})iJR}5N+I8$<)f(VZOtD4TPtb1NZ3LP^wCu#f- z4!oZm;h<3-KGe(#+_wqCB6{@w?`@}lk>?4h3;^pp@$*I5@?-wOu+8FcznGhd-*GL3 zvSA;8hqug)GEt51Sc6wuW72FtjZVZgN~*RmCXQ@-u#E8PQ!O4X96oaUeg2RNl_D~* zd%-i^yaJ(kIj=SAQ@3oGP-NHzRc_+Y3PZ*9QRZ=j)#>-Rz26I0E*I15wKqsWo}fo&0yrKgz3YLJYe1a zFmCFjR%REa^<{vo)K-+3&wB{)_3eTdAg0|x+{+!0J*NYLbuxo1LUm&o**LhJc!P%V z!Wa_`tsAT_^jR6AI2YSe7s#eovnuuvUfdX6^9}VmyFhPyy+--|$8Z?JD-7__5^-me(bTjc?m7I6A}W*c&yB+=d;CwVBf4SQ z^COKuYyYj^&kr}g*sabuIzW~$|1{OSvGBgu_&(eCE-#*S%of>{O=BxaQO0hNDC0a? z8K*F^%U^nl_Pfz_99$qbpz#aju+p<$ zViyB|1+_)4AQGCCn!K`C#n#)_Xh^1}bur~{DO0V28a`-<b82eBsXviNwXJC5QNU;EtXM`hf4VxfJ})r7|KNlM|8&8+CVP51OiWC?_4~G* znF4;3({pw@X3dk&U4pOT+^A_J@!}GrP3NvhNo|=Yi2qx)slB38#oPT;m95{^%~U1W zJ4c}R`L~});3FblGDs2iXS3qN{Atil4=E82!Ifa1$8-5}R*Qj9VDO|%zFPt7g=^=r-~gM@dwjxLSSkg0vXVynn#k!NTyWP4pw48+%?7NqlziTW`CL?@JEXL&WEp%Tr*w1Z5bKrr!|`5Sm+Iu9?^T zR?oP|6Re5kDKQjojDpl-)#JY-=mue-vwnzevDxQ(GQP<7dPcc9d&PYQ|G$%IGSlcN zmfCtG#;r>}RLcOkHNwL|3!2Vr3vyE@9~~7WqW`mN&n6ErujPKM+6x3``tWL5g8W22 zx=0k`L*t=>Q-6nI9or^0@s}U2hdoYv?u-M^65lexU0oB4RXTE%QjP%(L+}(;N5weg zcyZd+4p@H1(du%pYrk0EL1W}iS?Rx<a-2s(V$-)A8LSS+QU+hwBLd6)!|uJw5?MZieJ|@_inL)j8!>1=p_Ajd^Qp^86?KUbUGd4yd7RB*CUNveh9dgBC?V8Nz%}lDI)`G-Hi=YY4#cKCp zOsd2Zdn>p?{56^x%Ga26~{(^jgO8?r5^jCt?YxnAgu&bM0$is*>6aXMA12;^biqh z_r+2d@NsJI5b38eus3RtO~pQ#O#VGr-N&o6rKWPOPezAIV_Jx#2yjr9#;z#Q6!!LL zN`|IXzw*5BbO@#LXN~n6geUC|zFPr9dq+t368mmHunuR}TI0C3shT2nGk1Sv-;bs= zn?H5gdY(f-^ohJiCt+~y_jPuOPoy~uxF-Y$+{$!cymomL&YpP0KnOBOf0PW*2n#a{ z1Xg!Fdo&$BviJq@KD@R}v6Ufrskkw3?mjI?reWKi(DRCy$d=>Wi1GFYF7XTV-1Idq z3?B{C-`vtEXh9?m+| z7Vj~2eOV|`gz~;Xl~xnA!!}iGF)6IDRx`^zpjJE-Cx#T&EWl-QwsD)?JtYTITwXMG z#{_^~y}UE0xgYYU)c1|f4 zkW=@$fo{9%7y+rc$($nqdczI=0ANfQkj~EM&z{6;(V}PQZp$83+V6Ew>QAWf@&i{_{DXj72^XlMud{g8db5-EL?L0dH6!s1!!VLB{z;w5u$NFS2r8}gBCDw1JESWHw!Bpyu6G|;1Rk7izeRS_{~Y3v^BX-# zqt~08jWnaF>MNz1{3Hi^rZKr%?@+hb8se3{+Kb&V9MmJpP;^=poM<>EyGi=*rGLAk z@P#zdyR#B~>iiy3u9&8fCHIIRcaGjp7n>?YBB$vT3g!|AtOS7oXPg2e-GdmqP9cH8 z7zh0lJyH?j7E07RGz#x4a=8A=c9uB8^;ultcSE&7>X6s=-|6IBl&-(1(HT40a@)#-C!nB z+6-R|xGk+GUI~V&eH)gQ#e8mP(gp+@Tpj?1(VJZlpmn7xSJqamt`o>HJ^sTxlbl;^ zd^CRHW1#NSNR`wi{}B)iDo&|NDVDj$gftT^DX^Y$&d&ZosHUWgDSiQ*p-Eg~JzC&f z4XRd{ld<>?*}-m*+QjC^m|=qvvaCQS+RAUj8904pw}{*<20aYSUVz&ed=h;=VL;g@ z^(9-VI*F0Ds(O#wKklu>+Rg8B2l@mYz0Fo^wuihix2r4ZF^PfdfsMtTq^UvC zvMRTkF*lus(X8DY+0eBiS&o@^>U@3XRz9c-E1BkttA#bTci*U~7oxL1&xsCwHJ?h> zFVb}Wyh~x77-KO%z(Vk=sj*ptCm))p0cyb9mc%sb8M$y;LK+VwCTb#5(lK^Rr26{5 zVR}=;$tbxdpo4$N6J2(m_hT(fYI$WkyM)Yi%8&lPXdH1V~4~ zQWzn4u@z!q*z*~VBhv41^Bf~{S!uX;8EeTIBK>fkX0*u;H>52LiEJt(j-`taopMxk z*U?W)B(Ue)s|?9F7BfY{rA0O@HwwiQykpR%`IsVu68bw;orRB^%(L@=+Iu*>0<5@d zlUt^+1#G;1Lu$`sh{HfSSbc@7{N|LZ0%65xbnY-2+Q`od=O3rzC`dDmY!nR%e^5a7 zq2aV>fzO#1Hy;#4yb+yV*JlYs`bZnJ3{c|G#CNg>Rp#Qvn=hd||4=(^5UBuBJV_{Y zwdO67f(Uo~yr7eE2Q2M{4=fHHuqlZa(+(O4)v4*5X@0Iey z>!T@?P{(PkT#l>{C9J^4N`A)iL2zia*C5mV!kDTJW|--5uh2uZ5la?Q%QU1`3py(M zo{q*U|C})x%8uy#ohD#k-PR_?PhPgK*5s$`sgH~lu7WXIV#rfHD1dVy`cwjby$th} zA?kGzro4(|R12%Eo~%fy>)&wr@<&esY6|m&$qXbMsMAK~#|P2T4izTO{}>Ge=vHWI zFsvmDLhYBnybR)-^@`~+aAZ+t9fP&L{zCFrXFurD^y>_f;|Qmo2Ht6qT8I~4SyJeH0-j>iK?cr-chj4%7nI}h``(r$3Mz!T zwZ?0&546!kjHOdR{A?zf+h5sNWh_`%yncw_!Xv1EB~(V&FVv3lg*aG9~QB#CR@{VwxX*TXc5<#{A-)j6qg zs*z0UvBgJbV(&Q9<%=^*J39^WW+z*9c~zaWU5`-*L124P-I%-OomthGtJ0Zuv$7Tv zXVNf^_5Km}+Q_>HLCST`tSm7g;kmC`&gS5wkgFc^r&pK zw8LlTC4|NOVRQF41N%W;afqr{GOh4@>#SuFu5%BGUNh90<(-yQuc*iC)yJsg3|!vI zUxA{`^YRW%%8&B|YweK_Z1&){ijYx_AmVh5S?LAk#Z#$aJL;n& z%d7i_qwD&k5-Y6D%^?%Mh}&J!?S?w)87G8>U9p^Lam)lHH6gcrTTC;E7wOY?kubXa zc!~=&{g#Qx4{MLhn$b<71o}5TfhuqQlNEKy(J&J~w;V4vC7+Hk`!f?zsKy|OL4v#Q zFku?O3XV?FTLO2z^J12J(ki+i=G@(!(c_-387v<5)8R@vW}37y7I4IBVP)_5s3`J4 zOnbwENUHqb6UHHR$QkRdz@isYcu^@y2TR;meUhGNd0?jFC^rQA_Q|+$x_5|>TxZ?e zHH^mOl7y-W*oi&E`x-Or?du#$xqq>5+hy)%hwVD9`oK>C6zuu$*K_+UWX;{Sa5ba? z0VKN@MDG5J{!BTlhz7x^z12p^YUdb+iTg9Rtdj+siU}B;SBWmJvC@|#`dq!qr|)ja z5jmB4pm_{zH+p*saCTXisqsJ^*qY*Ns{(P$Z+!nm6+T1fJ;o&c+~J~-dNu-_QZE`f zK@o$JmHwW^Aqx8LbF?m61@l0giR_HGaSOdQ*Uw%&!Fi3#e>ep86T#E%%IzcOtQS{= znHYKCA-^Kh` z;8g8r2^A+DVp{(O=s+>~*Dn0h^eWeMF=co^grgiI z2q#^=4e?)KB;k!2cNbmo$aV({tyl4-E(X+nzpE|<0@rp*jaGFk9z6;@sq$Q9N38nD zrkq@8crtFAf5cf|c%M@pto3!Cgu0bmPS9&@C>9*8afYovz2Z3#7vL`i70*Of6AVdzWW@aNcC*!B9q-_ra z@`ZjOz5^NKQMO`?GwX}8#kR*x_(25;uLetOGXWq0pn$AVK)rx{Xqh(+l6yk-E#Q`lF$0*_%kiNM^P0%c}jmmTx515(n9?zTlnnEY!Fa^m>xP zFClUjir*S|>=Feiw|0Jd#>?U*W_1W{4x^q;s zWmj@h7wa^F;SZJsTgjhWi7DQKuIzN1b-XQf>_MG>yDp`)SD8mq8wyF>rwM4so1wtX z{-LF!nv&SuvPsfoE{wrZhNiW9_eHHH#V=k0?cFL(z{=niN`W&N%E&@1sb0QnZel6q zTZGVQI`xkeikJH-UNOk)##P7#=>^OHDzJOnsuJFY$yuB=H2;x?0Hq>!OnMTs_N+zsPx=z~1jc z=R)tmf*42q;uICkmo*RNF1qAFysFI!+og*x>Iw(EoY_ZBP3 z))+6le^LTCLjyN+%<%0Giy116gm;dvT(medK!RXfMX47vG5QSHuHj3c9ak)Pn;+6l z#LDqXh6BZI#e+F|#f=(w^_=mz-6=)H?MKsGASiW1S{}%Be2x@ML_icYP*Kr}Big51 zN}TLOORSMNCLguGpZ=QB)v#`G=LZaYM6zi4c*~T49%qX5zG#XT?LW@i_r@HMZ+wDB zwS)>&s=c^jVRcOThogguv;$WY#0htoq-eO8QwEvu3$TtC4{FFy9Q^C;`&Y`1I($&7)w{b9cn$tjBTF z?%d+*@#PzWawgGIYT%5I{&zy@ec`PL1dSo`SB=8ii1=0XYw$|i!6k)d4?uKqg{Lq0 z@J2a~&E@OzpFJxC6SgIP%S~B^YeU6U;Xs$){F$cDeJ!v2vp(TlgrrR-C?yPJoN7pE zwqwVPY{=63ThLOW82G2b(3?1un!z{gttyJ5 zkPYG4#$&q;R*qi@4J?dvigZ6bDY>LmWsVU9(MyhK%3{|vxCX87kE$H zkrq(62M@jRw!n)4u^^dtC`8n3DgD+{KJHWc9!>c3BuJq6nU+}2UtGp5 zS@h3ED_88wAbI2MHVCHNblWq4uNhGEJ-f&9b~q9)u91#HqHC>GA5cRszeu`rcl?Jd zrjYGSP+EN7OxH>F2Gbf4b*6!SUwT#4SqM@930D6uJ(pZ(4ernF@2T7vVgc}s%~?w% zo{NC<_4)u0wolY)ruH+n+%jCX#E!wg4V!X-$h64qQ|p(?tJ_7~ZCx?~SCtct`TJ|7 zGGXY|&lg1UIpQMNqZ3G&->rpy6Y_-~5mz3cSESYW`T!)+Zp`hqDx-FJ{H5ApUkYQJno*I|{z;^MG)%9bH zO7A0lg<6#%UEtF|n2qB`iSp0sB9?hxp*p4POwm-K+;P*IIYq^uO>8de zLaIL=S|xHi*sRZF|B#p^JTn+fULSv2NKU)3xE&lEI-tGmOT*6n;S>(RnPR^2Uv=b# zNVHvNy3#Z-a1R{QAS8bk;&oKFKm4Tgo^%lGA?r?H*K*%Uv2@=EMdN+Zk8)AZkpGic zw(Jy2cVUc3H{FV)>A9)l$F^mviO0Yh8{!5J+f=mudIEr~Qv+1;cnss@R%GNuSdSXY zU}awELNKZQ|NCYq?(6yCTzx;^X>mAM2-zUK&oXvdr8ch6_M8BjTKPmM_mdB$!X}C_tE2!gX;tC&^M{#pQ%V zWUUZqsr&zY#GPC8st&vsCrTXJtkXI&EYL3Z$LY2OVMH3gV#`h36^!Pr2G6{Rzv!y1 z*!VS*Gz|Sx()RfmG><6ydtE60E)SG=whM3kb_@<*&5|ZrTe$-|PzQCZ2#U!}9o}2K zEGCV?5o;z4q|7ymM5CaR!6(!Vtro)!d+mi(-Z0b*GZZOJcZxWG+DAK%5oaIbN>_>ozA@({XWslnX#A`(CQ-1NI@jyY#eeKw*>9M?}@%)UK%hq-8)2nsS$)CS_1-DJn zs=C(wDbh%ta|HJzFs#Zr&wx_V`MGn#pXJMO{?pqpH~*>Zu{vAuUT*(Odb>S$@h~y! zL`7cGeqVq3eg0H$0pKlLgsca_3Mj9l{t&K5bee?b_vpNU0?dW`>^D!!UUryI7x?iC z@H2#qIW2E~wE{do#PqnUxY7n;De=}R?9d>TnhNE}t281tXmnP+kD9E|&9abyr;*m( zY}*?^8?nvvXXPmG9{=U$(bl^H^U2Ljo*pil1lsKM&pgFLzEo3-O~d0CLjQ38P3{I< zr{B4W+#eK~l&2EmlWvov8EPG{8%)EXR7i7luVx^g-G)Nn3Cqq)W=6S_viwTD?o-5k zYc>34;Px{g3tvfuopudMrHK6<*F@*Ri4&ru-D9AvJw9E%TJ!Vc-6o~Rs^?z%uqD=a z0sQ~W_C1k|S%Kx$pGS8|lc75Ap}P{-dzIjWq`u4N5vg-qR~|@c{5nn12xujYF7ecG zdckPw{@XpWOnpNJP*~OU>&whg{L6!L&rs8xl2=g`*o3<@AudU#EaYB3(?h{uH4eC-H8eAwJdnQK`S^8g?7w=d;^rEY3^o{hyPs7w$A~mSYNO?&p$o4yY8jg^Jn;)9Uqv?r!xUMU1Q9 zAv+_@2glg6`OOH4@7!~@qBwmoH!*jNBm}Cwty<^L(RM}ENKCVN>(foY#S^%rc?oZ% zZtK~voU|CVv)C!ITYlsAuzaL>Wwul7IK+kW-(3ZL$!?m{JDVszGX7aCzy!3;$;bjI zq>eIe=1{4sy*cYU=ztmRAJTTB3ok9E zFfJmD24OXZWvVvA;GraLXMpN*y6NIF0uxk~nRx0^{ty=XL7>=`!}p5zlMv3c z)<5x~(rxPBa}0F!HJ~HmeR{aan*MbplK4BHZC*knBc9i{;0wHLJsV^Pblj9bfxC31 z2|z;3<-V-&lx+Ryd(OxD^)EZ|KEj3X`1mbj*W0Lw&IHE#pMbet9@Dhbf$7)nAV8=}NQ>M@mOsf-P+2JZs=TgmM+n%P^?<5u)6zQA%xK+%AkbS& zqZ}Wvn!Pdm`P=XNmx`mk(RyPV21W=2&5_^(SmXP(A6qIDXidC+sd}?7>Kf^clNU?w ztgq~sSsAAF7!`Hb3RnO44X0Bqc+#OQu!54vU@E#3mus!rkLxn}(lH95|B5KKg!H8F zcZC+*U08o+S=`t}q*xnkDO)VLc&EKDmvdBkG;HYqmYe4W2nY70-0|6ipsxzVVt$LB zbof{?sFnhp4c4MTxqegE)175IlPULPk7&CnKY5A#3y2{sxBFZxK$4~U6?$KgZ`|X4 z*MJ;*c4Y`=I&y;aUv5tJA$3%G5gS^fQQ`QA5Dhdr&?zdYC&#g4%=ZRW!u!fYyvgwe zwVP@iGV!H@S^#I9{}+tsZ0lF5DC=ABP1~$`pvy-siU=id+-?QH2VzTR2{@E7O;QP@ zl%R_AztKTx;gAH9xKDEFl|6Df9g+H=!7sH9-k0ma*KrlTf!w_<=x=-Ncsd|_YLy{;^En6CYSm6r`P8f}BkZ(3Y44Z1>1-l1X)Sv3wQsnv-uXHzb zBXl{!#Pq(AO@m#zS4*R* zC1YNPrLc1LF(&Ig(T0Vn+vTy zTUIr!J2as-L(sG|l?H8f)mf@2wk0P&$;;<_1GP6&1}Xwr37U7LSu-oed?Qg5y6m}5 zf!WyBCYb(c%VlgwM3W>!pVi4<$>9eoPxc{M zCrM!Un9lbA1Dv5`nXh86wo!*4k8YU;jLE^3eDW^Bg(A_zQYmrj!bgXx4WGX)19#f@UXLo@LO-9SGRJi}6Q`~Fb$ z#jh-chR#vO|s;SaPWW>G(!1bg3~ zLV)3GSnSQoPMjN!R#JJ5c5gf%N1VK!GhN%ZhqT{yxw!&vp3HvG+kU6ciofquCu}5^ zud0VAIkC80%_l-HP*HnBfg@v_a14e~wO`d$IL>Z!+HyuqA+85nUkC` z5&h%d3^KKMJ%qiYwJVs~H{?)U76?jI1xc0yFKua6o6KyF1ULT?vzf691fp^7ROY2| zqKL0`G_r>i$>|WAVCrBR93jGq4Dk8%+a?8-70jdG73k{^&+ScbZnVhqEULam$JX?1 zc@yFWuKz|ntoiFe6g3#IBbr<64;>*nk;a*wO#g##2V&W!kHsd=P=^fnP3o0LS zRz={K|HfrnkwjHxkaG%$N?S!+!%nQRBCWAPtRc!w^chLevzpV;6qfvgh=5+Ku$f=4 zt+8=}lBBXfVUhcfZ>W^BhW$-rccx5Mb5y~&DHYhh%IhOkMCu=CtOBffJZI=+J|r)j z&tyZ?BLr}iLC+&(Wl`>rMNb0@PyQt!Jb|ZHyZPqG+QuS;GH3bmK-1_rl zC?{2uXQjub=46)?A(yv9FY2U?tZgjpeS7^g*Nkg+=wDGcFkK%Wvw>15iAVaZoEaAAJPX- z`fVEzqZ&Z8EyB0t7{!b7@SRx>2U#A3Cs;8*#AjD9pI390@x-fLMby2y5`2veU@}iX z!$A&J?uWsRsRXI2!LaeI;5$+*M4nu1+8;e4D2h&a`*~W_-_rQhzZn&L$zx#Ju(G#lA8aHie9Ac-PDOgav z1aRG-g2QGie0vMH#X{H((NVZkes2>c4T(^D}Xdw z^;$=e2!e-Avy--eNv3jBE&LNO%AdH@yBq6SB<*)Xd6~%U@TW;cNm@BvPN7?_%mVR> zsf@6w*T^n)daR}`bd%#7)JIu4w*GGR$L9==JU$o1-F%>b5XEo+dkI){v5~9PcC_k${?CAxdS{w95p0; z*}gBCc}Hs#95ef>&-<&#iYh1!Nt&MPldoyBJ}=i^Qds9zQYm;9Qc{2TCLZge#mz5wSMzZ0i`ANu;$4`bW~ShpbNFSVtn7v$04W0IpO>mt zA*<9KXt2wh^&$JyK^dd3$BiLs1}>A5@}ZYFyBu9uv9gqyOVSfY$ZH=bvY0Ahf?>7w zZa#~vGWxyDSAXG61MVYnIV8nr#jCp>GG3M;8_E98WDGsLP@%KH=aih4cSa}I%Sktz z6{7ulTEd6VOp*hW(AOO{#)WH&O~nq?^wMv(A;B}F)OPSwo8{S6aqtX)(?F%#KgS=6 zt+1L=#1ZEFpi2i)w_UJ}J?vBFdQlnEn7aIx{d4;{Cc6#Y=B-WU%3ICaNNUB!

@C z^l(l&6UgAd=`H2??mBd8oesJ;Pq|yD7cY&DK4)n{*?`l2c`&woyqUB;Qt0%G7^82& zFmv}YeBfo~R;i4@E5}5`4&b13AOJaXS8{zC^w0vW4tN^}l@>^`2Gtd0x21Cr%C8-> zqdXpln(0NDHkn9%Ir#CH>FPBsTsJ8o_M3Cg{ENY{N!>+v0Zbir@63o?ZanRG|7~?) zy`xCg5-AI--W^NEu6(?^BJ zO3&E~e*YZdjEM(2i>LwBhgh>}k7=}6A7Ja2%I|dl_w6Oope!qH(3b=mDKa;tgM78m zbjWI~X8J7nnO@ssnSKu*5xm%ngT2d~x@u(a5`C70QIPz9K#3p9AIi&C%z+38;oha? zIE$TccEemf=j;T0n?K-X^lvuwLHxzy-N=G?=u1!#FONfNJj{q$6sm*$YYylb&dHpGmS27zjFm3+M_W7W z&$?k1bx`(%k~fsI_-EBL79K^-ivx&I@Chm-a+SKdU`?*kzds77WSsp#5X3R+Bj7ml zSV!PC?Z!YtTyh+UGP}I`g+KnaB1HOF;BY~JcReXw>hv}hLRB`v24iSw$Y@ccn-03r zn4=Zw4RcNGbwRXzp`!CA#k3I(4Vhq*OcBd%6QgRr!+iYr7jnJx!OgMLpSqBRl6bRT z4Eyif6f+?_!I!ygr`AVp7DU%loS{<$^Faq6uBrVVO?@xIXUU4WQYIR$UdQZw87fcS ziR9s~xqU3H4mis}Jb+?$?s>@jV6_W=2p^rGosx&p`b+7xVf?0p9*XmJ1;Y|01!?rT{4z5PtNv;Sfm8^5F2+h2}B38lp5 z>2|nlpH|RSYN%2bh#H$3b^qlLs4!iwG6jXsfR$KfPjf{-QRtfe!f;;WSVPEu2vPe+ z6g}q^9rd>1mSpCO_tn5}@J$+c9oXG>fE1FThA2(?f)8AxJ?=iG(L8zh%i5( zNg`nT?s)1jW^Hby^?h-E;y%olkDnFS5MY|t_)X8udAWwMxfeV3f16XN=`ayoX(Ca@ zkVm`-?RZbVc<;cg^J%)H-=*NvCJk5plrGxKdz*F*5s$}|Clo4LZSYK!ijClz?Trqr zw*Ge`jlpa6GWXZbZeJrKI1cfxXk*l93Rs9tHDg~X)DoYrx9@WMU4MAEozFTa4=8Ja zS&j*Dp+~=8Gl*GhP-B;e;X|WtgNmv%N!L0Wr0***mBTw>!ZQ_nSpo8~#UBq&(PXFH9)?hxfwi`YOr+$eZ1X>3|Hq zG@yrqZTxuzGAoJ_W<+dHMl!A))ky|5A{kz8@S#WSm*)6#)9_cG?3RwEMC+;Zi$`l8 zVHLdNu^aP@6?Eb_c~Hj!hj2|%#|e5tMrzL8;|r8xuB(Pqq?uWB(W2ohkC z+0C#v%>XYeG9nd4;Yokq9DLI$6x^UuJ$>qSoXiRSM4jk!dN$kM zN%AjbpNIYj|Bjt6jN2M&kxum2llulCbT`&Zp-)82&8S;@_sR;D2q{+_IZzpio<)tH zt6Xzm_Nb|Y)DT3KX5I^B(AHPa;ZcrCXg;eP#F)@L-fBxWCpQp#QT7fE&8M2f6kg8$ z#EW`wv*YFwo845NkW9SlF_zjLB+NOE#EVDwpR$;a9<=>)at`$i zvUVBbZ{lvI%z3Y;eO9=k5U0CNopHu70WAQTU9_A?R$G;oME(OVt!nvj6%CFU4TzhOg-+WL z1sd!?RbWP&pNPp)w%}uYw8hYR)1rL6Nd55BP5c(!@f7o$SJJfLM~WITpeTm~i!u!o zF3+o#DT9gm7zjv&!@Ec&>n-H|&bYob#JJ3l&SmPT@Fi7KqTJk3bGxOy>^cRQ@9RAU{ExMs$ohx00=knXHaVZe92Yq;z| z1H#i{1R$0jhHxfR-1L`B#G3w_#$vKLWMq)9joARswyhOx{fig1EN*6o?`hv=FS0%+ zF|792$cul4kqg4hyZ)zAD^Zp=(H@EA_^u_gzKLasB>Gpq^hh<=c;2|IQ!|RAwAhw* zfh=AzI?9V&eUKtmjrt{$e}WnYPJFB^ZD$ga6Ky!l$CdLVd%v`&XNRSLr{I|n5K-t0 zmbi*yLslwC5DTiz2<6>mX#TL6TzPmUd?_xmC*-5g)GgGb8bBK6@_RGg)Xg%O+h|G6B7;0LR`P5h_vHNXTFQ)+~Py72;f7do29`$n^jCG!Cj8ae z((JDqgN~E4;~=WODLGf#dp@v(!R+y9<7NVz@CqqN0JySucn~lx`Fp&S7Z(fGFJNKkCvykoN;hhdFhO2GS-%yzn%4? ziKj*J6MZB=4=wWi2HJGncq~w)6=IUdm6B?Wf4co;#Tm(G_Tgvasu*(l15SaeneLWp z)9$FySOyHgt3cR!M$+n9V0&JT7x70aJ4VXagd*V+H-ETfR#xSsc23pML4TZB+)vCW z&zfaaUG)vdmCA+}t~`Ra%g(3H?lTMj{-hZ>tB%;naxJJl)(mh-1xbz>D}2=AO=AmeA)S6;?-T=)|nFHsm={3bx+ zamCr2>U+&9VaT6gyj0tYv2uT_-=-qL2(S>gHsZGDpYya_;cnG<@LIzw7plzIx%k{5x;`7L@MuX#VA{ zc$olZF$=Epi7IF$knycpb>g-hqSg=hmb%uxD_ha1J8=GSbvm^G1XSPNFDQGH1dWLM zb)WEZWmsENmzN=^s6-NtO7-tND=Pbbo0FJ|UU$8j^okxZ=&rdUgxe2XHkBvLoP58( z-^@C%#LNrk$L*KiV*XxLmzd!9dC;=&T%vvoDxq7D_RfCNGev`pb78@aeW(qrcX-m# z+_$Uak$KEua0R~tL>#LjXe-Tjp3w#qhyjx*m-E%b6szQv5{nJw-55oq9$?4)pT0G% zk0VD~4108R6h|%=pj+RUzLRG)^f)(o+Km5;n}%L^ip4UpO5wzlfE0Ii>N6qpForg~ z)F=_Vn>gNp1B@8A|fn0veL;f<+Jg>@D^6-J6{i;wBUv@YI;cWVeUso=~9afLve{{V)kE6S_u zZ=q|(!;@1A9kf9`U$#V8uWEwuDn6GkO{8+v6u{pHjBub{ul0%hT}iZeJ9C3OchSg~ zmxuo32g^Hy#wN^qax43?%xQ&faEyY4zt!-3XLpX-BsKW*S>(rA%L#!u{=$G$a>NP- zCgG=b$CY*O7#?Y>(D<L;Dx{&Zn!vgy_x?T`FBxf-SM(mbd;x^Xj$iHL)^}YTh}M0aPwlXNKh3HD{)sS9kQ0` z$xcnToTo_!vA; zPH)3iP+b;sEuPhLdCb<4P}32WpZE?_o$yS*Ac@C^vFm>w&Znay6OOn^F1&p-jy+wm zb3XYaj%Pfg%DtlN!AzVuyJEg8)uhYfk)9E&Ox;Y|^2*P1SmM!6Gspaa2M){3?JT5j(5ETL|{3&{gHz%ABbROx{E zk!tJ%(HP;o&}t^Mf?K4`AJZzRqa-;#ncx5KIWptZ|EZQh?6{r+G)4S#b^ERB%vAo8BI7Mj=VO98PeTO~Jj2&O&U7qQ}ff`Lim>{!iBxu|z3`jS(s_U+Mbj216B@9r02s}|AR z%$>tROXT*3^wC;0BhJ69f7Drn>467n!O(&NY8_8CH1BJXGOY>qdm69*yu{1<5V4LbM9ir)2^ zq1(&Rg)%`FX?3MEONK;qA}x3o&|R0tKZV<7X%tx_CB*E?G*xhhU*`5duBkI(vq`EGwbCaaT7x8Z|SOwR-5$iLE5Vk>^X6lK)Ck_8b7GIWbtCT|0mCweY4 zXtSX?WvyJ`h@%iU?%V&Vy=d^}koV7RSj|W1+O^GGTMQ=O0+(W+70(0CrvUXUIK0Va zj{wL%Qz{CCde&Z7KyH*{^MTImmlC!8r!`iK_A#zgj#B0Py<25ao0&I1yV%apwueM7 z#y|W=*LkRZ{k$GYL(f~iRT@=6pavbnM23c{g#iS(bJUpl;(v)PHDltN8@=KA)?om7 zJk3H4paWYvgjPGHL$0GwpOgvsq=S2f)3gO~bi1x+x_l zXF-}0mQ`QV^h+rX7)DK&$G}H7rFt>5SNB>I?S&Z!g2U{!R+zI)AhK{=)}DWUWn6jw z&r1Egg$_zRy&IQxF0Y&ScWaK%8%DX!XtydvadAH2#OJsS-qcKE{(Yx}S$fV=5UT!> zjo2sSL}2yt`Qthm@h*!hzbEPVD~n020_mK>)Q0p`{uW~q5}kqYPV3@}n5kGgWDfiL5LIhpU!k1N(yR*bd?xrYUJ%kO z-yX3f&wJ{}3#0Q92(0HyjI=g8?WYhKfix0#SkGV+d#su~Ym7W?283LJQ@T$c@cHAG zX01EO#xekF2B4H-MX!bCYf2V%Q>8wh?D~zsjXY6YZ*as#$>_XV%$m^f@jU`ZDX0Qt z3GjzhsqmAR!~0T2oyNU$uyh|#WwI()jw=vae+?J_j37;Z zrjXiJqjR8m*I(_MS%eCsHfkXoQHkk7=3_O7iOcxhT3Y80V7B^I+>R?8*0EsKwMj>0!1A~4aQB>$N)f^c*)!Ud&Bv6r1Um-Z78c@Kq#b;3JTIyQneY~8LLzSRPdDoUZ|}#xk+qF zJR-2}*9wf@e5|SSdQJ^-r*#;mF|R_7$*rVLv??VE(Y1XTkUlO2r;+rOthDQfsi`-9K*mIS1Ctu|o{j35U`BuBp?M4Sa#|k{)5e|j z&ky0GL@!Mh9ouse20*#gLIycL`F5@XGcp_Tqi!R_VUj5P7$z7(m>wWF@kciMP2eY* zHW`m#0!$Dj%`EZeecC%f)%Y2Zrn*QBlx#E2M zp%m^;izll_(Y-X9VmqHqwIa|=^nZKxf{;Cw)&D*I{vWGZs4n2CI+f?^r|cth$t5oo znr(0FHG0@KI@<{6jx{GwI&OYVEqz$T`VootGDg~#c89ApyeNpq`qt~LVFHfQ6;f)_ z=^LAgr?^^HXZ05^MCzH%o2M6}(bu_0L8JE&EM5mx0ZivxFsZX7+gj@ z)LGK|TuX&Tq0N7H)<=aWIc(sv?z;<;@!LOUX&uz+`jRmJ{}XW+t3Y%uJRO~?)s3b@ zA=-_gQu}YEtlF-uXDYV)Zr<3OKELwaW*Hfk#bjNYd5b^U!0Zqh=_fnGUlQ*7E*ZcMz0+^{~Qu zZ3Kp!uH0@sYjKY8KLap~d^9u`?tktfod5W&LkN*7OscB`rxD*QBB_T6TJe$mH{YZz zRy=t1mY(=VuAuLRtR+;YeEy=|eRCqq^D~K{2pKAf>ha^UZ0u~sR4dQd2h1xSz+0cR zdjk&alA>WD_r?`l))CVu8{hD!F*}{omSJG;j=b@KxvN!=L(<)(d(kga7oVBx#O-`R=zjz(Nd%H zu2LGRj^G$-^uFPX7QbbId&|-D<~5$nA9Tfil&^gj_msYNX&3)`J%rJ8h_QTuo;D(S z_cbfy-Q68a!KWKB;5MMAr{@my*o<`ZxYz%6GT&tmH(bqy*b5Jd zKW;j#oH3x&{#FC>j1|xMl)JE{rH&8n>^MiU!pKsh)>2;qh}M5^)+KRt9MavcKs+i| zVqKg3kZ~XjTeJsXs;kHcat`(mq6VK}`QGi3&Sjwev;7`}C6ih3Q8gkK$0pe7d9l8O z2Znp329hL*)ARyTuU$bQQaizFXM|Fa^G@@#1UM0APxJ>^S^1OqLCM(3-I#YERkr@G z3q00H2OOst=7wQQJ7hLhU8W$JL9!q=WnFa302`^V3F^jmz)zxUb0)gm6@>K+XfGV{ zzJu61cC+SdF|d7NFhJ#(ktVSI5+6M0??OQPwh1k;FJUv74o#DE0X;xKil&mSkoDF6 zVp=Qys3|qJAx0Xc^v=aF9wSIHs!Lchb=R!#5Q%yQPM*f}>cF$Fd7^W7`_unFSpGME zNOmq!n$-YLXq0ILZ;+)w^5)vp_HF-oW&e~?KhfOp4+P2r$r?|sprv)d%A>Z4;iEiw z3(IePmRJTU{*$$;8y+t$wZkz4=+?b2ON;;z`Mas{mWJVW>l+UoXaGD&K+3vTNaxC< zrWnhXNeW2TG_kS4Dj?EHG>%w*YA3aS*s*s9?B2j4o`>*iqw+9h_^CYQ@+~F&-j@Ib zw9cf9Ui!{lC>8tKEYu&vFN(D<@3&f48ag&2;NY$Ui1uvSlKn9Ky5_2cuq=vH@0@Rz z9g(U#v6wOJZT2z@F)>$a6@ty~UTar5-SbRs)oN~mVE{_zF7`P9bF>!IeL zAx!dnW}`>&9ha-;f~eENXa&U@$|P3)3wz2HVdU)mo`l|(;^fe&zh8c2h=gt`JE^tF zB2rB`cHTtm@RLtfr}rT2F=tf}=jEwpiWFK1=0b_?MPtX>!)x%Z*ITc9!@7gx@6mc^ zH}xy4fO#k=>0+fGRx1TkdDGAU&$|3It6%?+dvvx?&)sBIx-&Mlzg|Y^Wu&g2H~M_> zqvJ;o?5-X3DTv^>8jY#{C+DvysP0D#&mXs$xzF0%%6XTXsSAj-L|$dVa-J6;YX`oc zkmLFqNzF=_Pl&$$n*`(#jPzZ{7Jli)i{HN0-&PF9wOq;gk(eb;RTq`cbZsToL>kqq2gywBfE81Eb`GP@9V|qiOvuNY!v&!unu0so^h;Z{@L$wzU+*#<| zIzJt={kb1k46WavWDQWd?tqHWMGIUBDZ)D8>xf>2eUfdTOL1A3H#czT;2Q&!n2(~81Lf*1l##A{C{E7?#7e!N1Qcq*3R+A_H;eh`mgrAG0BFen zgyeRt1UNi#4w`+?`;1cP|9`tXiJXd086S`sJ9`50CFRW?YdFj!7>t7DfR7Aaz(&3^ zdd3O@%dian()}hnoxtL0E@J9h^f|}T%Ix>hL%r=r@R|}(6;eN7(PogUExA=)1n~CN-u{% zJ3*!GAUCw=1OOZPsIWxBPoqfx0P-dn zAgKFHYVpZVOtp|kgE&q&UnJX`EJ``s`=@7I!$_pU;ss`@zx1GUfAT{abEjblB#)bI z!h2on#S1F;4umiWi=6mJ<%r3{E1TB9cRsp>V9u-`)X%t2p{&eyGvVV$p|>M?M$|78 zaR0$3U$-+yQdZPNYX81p0uG%F9jymRpGkUyT@Z5>@ zlW{~7_Xho8NVgmN^@h9L5YUPe5z6B?0#Vtv5mIq`W_|IEvmYBQR`myclAd(q0=-xU zw^cA9af@bp(V=-uI762X2efH4M6i6KNdjU-X&N0tM#W<{9D#V|8UORS$8ek z$SIopWeW;r9dIHkt_NID_LlH>TjVq~x$QMTluihR!hi57jg9Q%VY5Pm-hf*mC^5D6 z)r-x4K^4Pa(mHJ{CE6iPp2br%{h-4gqGzHDz->k2b8Fek=)V1ArocUX2Mfxz6Fpp+i~(umC0aW#5l zgx6=^WAMR`p+)q6lR05>8>nXjy1CYHNb1t^>~2G5dA_==Xfgh zLY2pW(;z~MU~VFbDgKOrm3_I@YbD?AYh2Ls5RrC*rWwlA*Wp_uW=ddm{%{g6?6US4 zvDl*Q?b32^`FqFe9K)+?OeM{k+?BTVuAc_}_gu`BM8AM4iGX#m;>F3uVEuYgIIIIr zi%kTf1ks0EbMx&8R+pxMvA-W;DP@Xak5Vbk|1Naf6L9$)rA9$9B(HN=GHq2Q$0Ccz z5;ML+B;BfJf@=RFbB=z6?4Rs3BEny?0X~?#`;Ia({TC>Qthx%O7xb9xy@5aR_!$p~ z2$8FtbS=cu>n4GP^yE=w8g{Qj#=IXLREw@)O&vO;%9vOd2RaM2JJHt(FL)vcy;D7Y z%CPwo*y6W;B^@M3yRme@*ALoIV2zalDF$z_eMWdVZp*RI!|QV2UO8s1fl{pSwm&cn zISlO3u!nnODU+a zxb`$LFQjamP2izk-9`5VtvoWYV@58#ZQtK-$mt@pvw1SLaN@Zc4xKdb+}ezS zmP3p@Lq@%z$z9V8y*o2if@&iPDlUZYSy;#1HQ%k@>A&_#2AY>$)B76*PUT}Yz zw3-dgCjAigzbj+4+{TqPx{L<@i8Xl?DUgPuH1x~Q;G=kHg8%qh+Il3N*bduxRp zBZPUKv?I>JnZNcf`)SRTqWc?m>hY&G^E@*R){4LnvuTxx{QUiEOk_lkA2A=+G%&$Y zomkZ0pp$kN_X97hSbHA4)R;6XzXB;KLC+vu`=}((ScLJ;Ae7z-$oMg6Dxh&$u&G``V8Day+-C%2C&iwG#$XKr}-^WpJq+Rq2XkNd@4Pu2G+BAsHXJ ztXT9|FDThgNF)4&V7BFN7PbXbZ~jzF>U|rGx1jCY;0r> z+6PEKndYt&A zDt+c3e7j@kO>MyafRFqs>jYd^Ex(29XB$u_rFXZ|+duL6@Hg;d|9aXp7hkF9)guO6 z%zE(z9KG1NMfxN+D9o}6N>3J}m5XOlfNi`D$(HCm-bnQBm~6t`32R}?6&TIFa53i^ z83(2FW6Ql~t4;!PO6_q^@B(7$R@9@BcI!_ z#gxf@+^o@B!7bm;>A4V0mlxj>M*BPS>yee~tM&!NNRbt`)~NIFat8lWDVnXuYiY}h z`Qts0@i4i}k=4G8m5m9^A!K7K!)kkfrYu@J5!ZQ-gV-@MVZ67%9%qU!X6i4}z8MMB z{IdwV#yNS({!lBA_*bCHJ(Sq*HIL1hRWHRH`@_S-(|?rVE?h+3`@c$VqA~%g)Kd0} zG}iZ`dR<1BLX&-?2;>j4FOfrzuOd%N%VSd56`xZPO1HtsW!tV6oDWY<@|y&6htWj9 zNF~x=zy8m)uq&$kq|W#)`iowd-VUrdbgDnesf{Ars;E7RbLF*t+RfjB8>3qVek#=F z8Nj+KKe?Qe92cbhj#UqIFv$LiJ}*eH>btDSyg?qkc$Bg@E}{Ywef*3^#f`65tkrbI z{$41zG+NEAftw+qzf}AU3NU9$1=i_HEmZz_QBXRqw6uu``{fC-6}%n`n1D8J?B!1 zrPUVj%ZZHyAnoPfHy3`kaisNHAQt{?30ldVwU*7C{m%_h4r+l9r zWv!!9pk9#+vmaw7c86qMmDl`rA+Th(#2Wl1no3v!fJilB}f=3 zm8VX3g&b&eE-ZIy*GddXV*^o5#@@9v!%pt?lT>NqR-WcGDt!uh*E!#nPW^A;2W^1O z293gABhbhBiGTxp#BX8==R`E+|t?h2?pGKfgGx5+a8<4xC5UV@9 zZaO}5o>AjbC7#LW?ipGS1fdQ^Ed$mv(Cc)aUG&P+^8$@K0JSEjftiD_YHAjHfGW2| zJ957%flrL|T#{syj<>2RSv+g~F3FNzsoJx-q5{h9z{FAi+ zmgBwuRx9aS0ow=x*~h)lsy%~@gVJ>KA{craVZB@A4+>Jz5{v&o<{c-Yro3NsmZlf^ z`>{HuX;`wF2^t=t(0M5hf~Vi7v#kHq4h_3$mO0{T?>pU|e`_Q?I87x)xNr>UO(eQ*hUUz{2||MJNIa^k?a z_(|qkLB$_!XOt&h%Lw16I==iA8cViz%S0|%U@YpmIT}A(mT!VyIsE~Wl2 zZ<+T0AI+8SdS5(pdPZmFC}w1(B|nOd_#dF+l^84rLJw~Ie&)n^_Sa>-2so+v<@B_r z{6OQN*C}R(rlcqGx2Y_z&P?(c6PK9cZD#8CzW0~;Oyr4G89+#edx>Jo)3G6mH}f4M zFUJENlIIr}$K3}N!|pR51pgXud-2B8Fuwff=I-+?JX0E2s9gNe7iFTL&88c9i^f~G zn>Xz@80io)uW{D%Y@(R+)q8*(F)(f@CYhW%?38BlfVAWHlQC5Og!{Q1bk;TLNMoEC zQtFBNvDGxQ()44CShzLR6;XAMwMg(g^xQ~Jp;FdoTw_9E;8wRzvS|r2zkqoMT9KHQ z$M6SXuC5j(unq^Eq=vh|t{FBV_7v5-k--4+1&36&QRJNIy#9!#zul#QhtB{alvxje(0u*Or4F7Z5JTKwxVNZFwoZPV*B|s~aq<{VQv1`)Cv(oHDP#{b;UjVyL5efr^ zZjP7_J@%T6=`O&HNL9O6^PBzvNCNw8oluWc0=;RqeH1fBy*u7}u9U{H0tp?ugqr)^ z{`SK(B6{_TtpYKxmq1n(s?Q(FXr>O7)It&}>ke_bQwgQf(X#%5ht6Y)wPXCNCzb&z z*xTZhwHAt=3S625RO{mRcGl*0#XNZwb-m$atr9Z?#OTIiFsW=dw_ka{- zJ6{Aq5ELYK9Um_iXki zlfkYSuFbYNNPy0hcOzK+DRkqNTDDw^buvzs34a8t?xyzIprbg`0NjcK0 z2mf&+5;ddJO|)9j_siJJP#gdA2(D?SlxAh`o_ZWgPunHWWWijri(ktU6*Dt2J)y2 z6mF$LFiWER75(BOb>ZWfH&TN!`g^)cHKAp3d2I+)Y7;`7vaTQyb;3+VWIJJnczE}n z&UP*K)hQjf(-A97a?^4kG)t23xu^eT!yOf~biEJs5ckT3VgDJIKtLX$Wt*}+o{J@T z=V{ryCdpfRW-RNrDhzajC;3C_x8OG6lxaG_rrt{cOxsmd?F6_2g`fsp3}#KL7ONKy z8U#NM;l8isL;$=R4-{PX&1CJdhw%m_j?eEW`{vL4GsAot-zIFXw+9D&I&0st-0Z|8 zc5W3)E{6qVkuJ)o^2z_<9LfGsDM8w9vY1tFP&UCUebKffEijTUdk|n^Dn`O+`TnV- z(Z^wJqKIiVcTE)>2PW2t9@#`O+~a6`9eF>HjzS=p*`orU!z`C{Y6MLlO^c~ns&!m< z&<8fwYOyIs5mo*XL)p~ZKj4V(k-};+1-A;G_E9te@THaWo~MFmzZ!JZ*GZqN<8Ze% zZ8Dlp207NOziNI}vwK}j3_Kz24~x2fG*V#RutUxUmyvG?^g zTCHp2baOUEODYyHTx2Jf2B_JWJgFC$)+zbtGp00-12p303SuLAeS#L)Li{aFrX}ql zhmyJ@VGmla46cz_3-`Iv0=km|k=&&Q^k$&(RD0~kXF#I)Dev^98r#cyoURF0d4uZ1GH*-cFmOCCI(8j2!>s=kj{@Q%XTaDAZVK zLZ;(~RRcn?P|brpmC?k;xg^>L4@{M(<~(*^N4_sbM?qbXAWJz%S(SFeP=i8gwY}F= zGiOI72QRkz%g9GgQ}MD;h`>n8gKm3A^i!Hl)d!L4$&c}a18zAx(OZJZ>y1Q!Gh|t% zN~2=@^mO}`FmK_{7!k1@oLlev_*Yq$opxVl6?VR66m=f#LEI^)2|5%8LMdF%q|(8`R(oK&+wFkklBSqV*eBG zF2nT-=D-Tx3&SQ`LE55@E!pNf)ZCc*O=Q&LL>mF40}qi*<&1~fV1bGk4PS3*8#Ox^ zX;NMmytlTdaf0`>Yt3W%Ny7`xNJLI(;QQw0fe<4m?1i(=c|76qvzV%G)xU3N8%(8g;jb?rm35P*hl^O zef`_^Rg8>{|E)1r`D*w5O@feR_r6Z`mntLpMq1r5 z>g1?0*H3j`Q@>nPaP8DZzE+a`s^95Yw!+3tT$fPQM)iW&pl=NnYz?kx=r>dC1ig`B zq$ckE$Aa3;jrtSQ^^S6Y5*odRdC&Vk&f9G>=1%1KR=M#{{KSZ@@lHN2UF=XO-_Nx_ z_kCrISC{-(w&v|&TkVKt79A-Dgfw5@zBs z@RvhEE^&Vu;_ai(scjMHI7>n;Ca9WhryWA$`W^tp-y-U|-ddGSAlnhq`wN?Em}TkF zaz^6DmwzIqWF>7(762R@@Lg9wO8@E*=_yl9R%SRIaTSF5QuOlu{QykbV+*N*rwVCN zPGKewtnhWIYl$4gfA`t5&o@bHv;VM+awf2Z?AT%!S1=Ks$ZnnaiPj4N^Mcm)$k!yN z4*b;;18;fsXf-1=goR7EAC~P4mw!AM%F9X>0ulqtjA7+HPZjl=-)mAvVeV?Hl}9ip z`sZ-#?W$Q%v4%>$k&J0Zom-%Xru@CFa2D_UrZgj_m#Mk4^NgmM$}7d1pD6beo03#w zo!jqR4oYJpqXU9cHIw&VufCX)koWqlRXroZD@7ZK>c_79eRSTNVYRd6ukeOjd}&-l z+aWK3P4ZiIujXBi_0(Q#&sS)}CjlHT0++(bHVd;izAqco)Wfzp8wzcChW40OxH^==_BUR)nN6>Rhz7N_eNx$UFidIU&NfS6y?#zwzCo#M|)BDo)=!7om?DuU-misk^PEMeAWj1biEw&@px zb#E1ihlq=fR3+HqHG8xZ%(T_dE+;|;$b)q{U(%+jbN32l8WNfyFX^W$#Sfi@|hSQ41d6&8BtPDAy9xL)L_sq5Hns#W`8W3y?=AiCO}{;D5(%V9wWS zrFO@i0lP1JH7DE=d2U~Kh$@R$4!gN_?-)&b6UQ3M7NK82%T85Wr%dBac6#=vE3$$# z_;^had&PxD`gcrZorFApb%od&Zy}H1kfM?^E^nvgjt{uTCr8}ef zV&8{h7kb}WB$13+ZL|rtREvgK^^8lW#b3xp8uPT^iLmI?fVPy)W$SEJCrYJt*I0Vv zw|>uDULSW%ZY07&<4^)WT})zxLQ*5?jb7f1zsn=N%koJYdf5Sp!U>M>hr?{-OfF@N zLqpq_87az+S6s`3LhUpYAB8CgD()e~GBpBEhV)cZe>yz)r9;}R=-!IUtbjPR$8Hd! z(KAhF?WED%oO?%~9$v3+E10QMY&|1NM9`M^s)tQ|=vjJ~W(2|nGptm3Cs+;GEuVQN z)$R|>;VZbpqx#`6`T0Nk2~QwS`L3a}ewf*-rjL{FxWJH7|F=uM-!N5yosEsXwzV$J zzRK~A@b^RTnJSZd>1=@#8jB{h$IL-pBjSW@i^Vzg&+pDM33C?0@&+PqvOsiz-nyMs zLSDskXqoK+L}%M0%VkPKMTKSNQHdD%#opy17)}e|u)4H90}0jKr+%A$?Z^KcM!pki z=HB&d1u|#kJ}gIS{#4JH4*WfxN8Q&~A#f6WO$9+9Kx-$EE7E1u>7#MSb+?zl=QGW; z#ZKA+(i@gN6P!tN>s^rWba}0{Y6s-yEyv>qURrkrt`U)PVRrQ%;H>_EI)17q%m}LP zsBYYdsaAz{ou^kUMzeW@es3z1iTpN@+rXJ%^N~}PCvsMZu}iZv@GAufU481M(Gocj zm#RjrOCt`mUqEJ5K!7TV!56owrMlfF&2Xvg7;7CYy)qiuF|}~yING^DW9O^V{npCt zLe7^X+?#plg=0&N}{of28 z#xs)VBj}i$(>N;M1Y61_QbJ}|Tn8jguEmec5cHo75U|GFNa#w!2# zMm)H~qz}%ov_W6g^KX@?wMbPT6b4h)e0sRI{~>BwM31z{>!C4o+USHZI#L$ zD(}*axlGw&CLvLU%r#1ez%Kn4KeW2G`W_E<_$r2Gu}-#;VoV?tS=hW9G|vFBuFLRw zoVJl|Tz3Hv!n}Dn1*l7VDM02=2UyZM*aH&%6XYhGN&oczxQOCS?K&D)|5zlI_li5Q zs)y^XBgr%B-r_k#z}37x7%=3{udHxs|AVR#1NsWSkx2z5ZhXx3hAM;NDjiXI0(eK# zw|QaHGesjZh3r;y1Z_8q&ds!cSvDbeg7r-l=}vK$=7g2F2Vf1XL0mi5#n#cFFHL0q z@y?|u@WwUHHblNTi!Uy-v#b8YQpP~`)hF4i-)rHo`sZYKj&`HXPJcFfha&&;_<$no zp7JX*nrOD;5OJdiN{{pLp30J;v9NY*pcm87eV^_L{5#3H34?Mxymoemc6LLwGcz+w zQ}TKC$D`vHK8t@UD~@`PH;%39Pl8-W{i=@I8%0~ai+8T-%a5ro(hN#?RqPC%zhvUas-U#vsyk4qtx{psG}Qld(gS%ZiNyD zbYMr$1)g!5Od2NjvkpgRj;7K^1_8y}hHUx}ScB{A8QcYiCfpGAu_u0%ZeBk4oqt!5zX$AcLb-GRKP_bHz|L@i_m{~_DRlErH?`LTzC=lQrB4&mMdpIg4e3&2k`opukwXfKJjOzl%eBH04 zKUMarQ_{7qfuaZKZN)NIsJcbOguViSlpWGTZ+!~6KIoN3iwby}=GVW`+{%qxM#*ik zgrZ49Pbol~KnwdpJL~ILriCL3AU@NZyYO^*>c}t2G;zk(D=9b|A6{R(pWyy?xf!t<5o_#Nt=}J7H-sRG|9&c{53siefPlO|J94c!1?El6}0cHt6F1V2hDq1AZyU5g9sYv(tJS)X)4HQ5DoV z;Y=oc)RYg;xTKb&PS4*%2GZYOCN&AH$<}syU&~^UMr5G!L2ra1`6Vw$+k|{%d;?SL z?hD(Y^mzKY9~KcR$9$39DnBs)P7KDx?Z_J*19kveZuXIxNa3j!kb$63u;pfl?iT6nqBc5_B z-Oo+j@0fu5Pn}IQ>fB$@A-U5}Co`5CyB?-}c-K(>??=R0|Or zcd@&&kMXph@iKb0YEcAi7t$e7u-jAyLPBHDhfA@KosupCRes{C?7<@liSy;yB1J#Q z^@Gc~6 zPc7nxo{bnGvsiB9cC13<%`B8#mtMG^yjgI~_69Ea;90_y-0J5^Z|v=(_!!70ULVB2 z5)I|IsqxRgE#jdmI+AUk1RW!FoX$W^h4qwV1h_5j0!EdV+j~`zuUsr0AMTJ-5V#z1 z1jtrC_ME*ZuUV?MtiJY=@-3cW-`hoz{x^8_96mv~mceH#z^Vd2a5mqMMkdzlglFfI z$Vu@(+~MxSt??j?-2p%)*3NLuHPQ|@Il-p9B8WKK3KrFh5o(@r98A(w=>ZncZMs}L zzelEjffM~P-`Q9-Z*$IxH8=yfYGx@czGYbNWrX(bW$<^(e4Y{iR7z?%l~)vFl5Q|i zC}1*Lf1Xi+<&{#O!}_MK1cVy(|4hqorL|rRn(fiYXrj%Ky=@seZ^ClpRpH}?xRMWB%ED^|XIE0BbiSAzYuNA~mZMB_w`xpz^j zCYNZ(c{nPMo9j+hO>&Jfl8EpNzPlQY1IMf7?JLkS1W(r* zBRhjJu9)>IY*^C@mMEWXz08b^O@-#6J_I6_PpR=fHfnCp|NZ{7WhXaZcvi%X)?zz7 z|K!2;+y>{weVBJD=*tsp5v0Y^htiwTqDX8BG|Jo`(?WUAz|U6+bT9?Q|3dAf@`6$2 zr&8YWvG)UYpPf&j>-{<8hHB26foJbT@ysNVJ5 z+I}eaZrrVPAE9}FYy*2p>R9V@c~5k(|G=HTBWoa5yb9FjDuq4Vcr8e!^sOc!sY=5u zXe7_Pic-YJzA5}}4(gH%y}6Z$WM8yKL@!!n%jpY;p1@pZf+z?80qQlK@Y1Ki(l$1dglsle213h*6!p38X9Z%E z6m;)3>0v^tduIC)s$(5>ITJ}CZ4c9R1J&>0(rS$+Iz^E@oG7=t52d%5W@VT?)f#C1 zcs%8U%`Zau+wKm}pH!WN9BkXyB|4U3e<76hr<-4TkL7@ejt^JeUsxLvvD4Eb|$}K*NC1(F`H_(#SYcRsWtuSoUw16$<6o@G@M*UaF;IA z#O?9_>V+NbzRSG$-c<%Yb3!lqyYIAz^0$o`^0MU!JkJnz8n~qlRmX3H8Pnu!i?r!tt{D9V|FzvKJ<)D<- zrfz?(j=az(XXlxe4RI1)S|O3>GpXLD&NHzUbia|BjZpaCbKO9IqpVkI&Hee@>J>Yl zHtCkPT{;c(n*47%Y1sm9xpJD?v}*UYd8>|53dju^EZ7q|d(3P}wnZk28k8AGOyLGm zN}WviSz2xWFmDk46eUDYr<v(Y>M*@FwgvUsXGbO35jiozn@3HpGLnnElmPmSt33l{oqgZW5%0Z zG1*Kd1x@^loQwIW;PTxHz*R3Wq81-U(^#HpTk?;{9ycsj`3-nfp;+{MPn#4LPwQ1~O?x8+go)Sc%79 zRuP>XR$bTA~2qGP64 zW@r7FGYp6b`T?sL>!ge#PbANWHkf@?#L!Cd*p?Ab{TD+}vA7{m+}Na=jHQTL(4S*g zS)9;=ES>Yg2D$FqhXKihtid0}d6Eq2C6D7@Sr~u3)Oa)Vvm-j*Pzqtp^NFqJX?)5f zI+Y7KG0okcuJMM^Z z37WZKsf{V4pJ_`$OLTNd+F{RANGnOG8SB{8t{!QBsQ~13lT6jeStm39ds&pj0JbbM zvDU5a%usYjduJ|$5NCiZF_$GwznM;Hnr+_c3EmGfYGO$WG7z@U8+`;qM_Xa`wa5t{ znwbUd8j@CsFO$Yi@Xr)dI>=|v3i4LV+Jyb}2%fr9Nm&vw4;9vd(fp1Ryy;&WC|gV~ ztih-V;90B2pniA1S94}=#@_9Ke?9R)dPVp?4oPBMh*?{&zj*%HyxOqJ?xEprC~>xH z5g7CMyp83{W!vp>aohDe^luwDWjrlN_ei3NB8c8LAyss~IBOsgxi5JXkl83`7W!By z9KN39@%KhDQo?j$W0gjpniE@@1>-Zr=o+>vm?3Z6>#`7xM?1TrNO^`x=0|YKub=%5 z-Q6u%zVlKKPk@t!VVu6!W7*zPR>f+6P6W2 zq)!i{UQ>N1qVlDzkSK}hh@5CWEjwrm*aH4e-*)6OHBc_+ zS3JcVQ_%Ti#(tnOq-!yrYos*OgWR<_@xhnyz0@qcQ}IcgN^{aAarX_3P~hY|Xa)I* z!oqPX390mQn2eFz-SH{0NvyEj596=;nJz7qydGCEL--7{LD`e5;w94oOtxv8KuL!= z2MXax$>nZezZzZAaL)b1Pd9D+b39ZzFGq-Cc6fHp*odDs3FIflE8 zJp?3?*o)57Zq!_}?~cTxSr7nP91M1=>1b`$Y+AwXS~OpE@#HR?)L<+8Ih*ahW%&MS z<8S9$l5&CZ;h!Tj8;0@|RkOwQhEt~b?8YfJan?Y&SrvL&CPk>d#nT)~NuQG25W)RH zLp#DrEq{Mq3}DYCaN|ZiBl_WcKs%v;;)4aB6SpElV>-NzZT~E{{#;vI8?DV8Z*Z}g zGYEZ5`FY$V@yav(fY~@sW+OHDSR7-vgz-&VMWh5Y}f;r85d8 z0a@f*`Fl@@%&3D)!X9ymkI=o{5;x)xFNLN$PK$rq7v4g?n{llz-&n@V92rd^1!YEB zLZ24)TW05i2UBMc_Ah)>{=?vJp+u%%x&`$m!bl?hw)}@&r=5+&gRma8%IBymy z|4NUw;_atLabbpKy+CTLw#M<>WJQu%rZsUOoA)jR?hjfe1Wt89h$mDkL0tg!UXxny z>z!tf>80bl8rv@vl@!b9S0gD?8+E73uMeau`_}kU^)%B!U>z<%Yo^(7&2;woTdpK%bdH&v;BpsdM41T;j$X zfK^O&T$nb+e+aYqvqgD@X$K7*otVAFSRk(F>pMmXc#izCT9*_`r<8mfA4|UzChIHY>Yp1raD4>H>aVg}gxDhMD5~V$7Jhh?pBarVFJGWD z1>Pi~g0jzA_pS}93KL#qYiykscIpEKyde8{(F4vabz7P%mNr!I#9(+!um~Mx(>9w!-9R)JK)RUj$*77N<4IOI} z;_+7Os0Snf zfQN=PHE-^K>cl0<6rk2xodHQJo~SF=Z!YlWv!T57Of5dy4s)NLTjFe5I0+w}_0&M( zWal{7Ot5WXSTz6kyTSqI4%d1ex94KVoh+5H3fSx$SkLUQt)f ziDUP#X?uL!$0l*RiC=9lCs?MY2bBI&a!YB_38YHZhybS%YiUHM&;%H^zaFlY<57Rg zd5e~qKbk-;*iyi6xmb3F$};{C#A*IAZo}Dw-L{{YJH7LRXJ8CMi(=Qo?I237dQJ& zl&N`$=Mc?IIPHdS2sIOY*5^z;UR`p_NY@MA%ZE`rlqEV6QMkN=}YFVX=Pk$T~|< z86&ep>BMd$W%xPfK4Yf<8#JynYp_0WcE}bWJF6ohdUh@?Y#uNd8yc>yP(&RH~?pZKy zcxhAhxE+UnGs`>YHiRdzM|C;F9_3(Xve36Wq5ZNzHf^yaA^Q+VqhI5l!L}iMFB5{z z^S8v{W84!(sW#abDbKw62*Ldij}{e>?Z-`8e=RYV?aN>?Fz3iuv-iz+d@t#FWz_(F z&@a7@#mu4aSFVRQ)H%xowF1go`I%YRDYi$qA0lqZJy0(YDmMeDWF z-sKHS61gTi;eG2yVJiExf?R3fqK+o&Nis>K3N#-u%5?r4D)OoR0EJC`OU?LN|H1#i zUz5Ss4?SKTtF$6u)N*sHU?L2PG6x^?!1vPOQ&3?D1Bcm1huMU%nd<$wj=)*sVV>Ub zot$<)4F2*|%~-IE8I~EnL2o-MMEr%4O(!9n9YDFa0+tvuswn1;Kay>jD2CC^}{7yV8!Sbdml#V zv<$Rb#(CJTB=F^1lNXuH=cnTWE7#kSV1T+4ZF^dx>KG|Le=3#8vb}K1^|r)sc>o3v z4H>CDyajsqJcl1v1Z}51r2pI~4i!|o5x+C}Mq+=aKG9*Uxa`?b*1~_s3_1ubC7FS0 zOx>>dB<9q1q+F6Q6K9R7%fsvzPiofSy~XDv6>`A$n`~9_PqbOG+->d}TJ(Qv4=0Bw_0JNt)bUltHobDt1 zUkfJa_!=*sQ>ySWvYvA5+wHfwRejiSao6J z=?OV3HSBL&{GaBy87e)Ja&M`-HPl4zo&w5GRSZ}f_YC`XzSadpI0xpt-U%TwJ^2&6`Z31*r}kKFT=%yTfR)szV-=jXV;PiaWrh8aCGYXo0#Ko5;MzJg znSJN(p${JdHrWLxFD43n7KoFF+1gJ7KiiEhzKv;(J`Gt~b#uqbc%ska^h z=xDzrs+tm;zw?+SODjvsu1`Bx&wwlwBe*=$=P%BlTvWl8ANF%=z0UTgKY)6?K>i(X z(WU&A9E?fF3KUA&e5>VES(JI$v6n_|;Ss>6XA(gjAmTEUS8~oXQs8#Ka>~ml!JSt# zQ|4|kJoDS$^_ID^ev({%CVNGuZY!D-eSNthH*WIw@@Aw|Kc$L)Qad64+xJEPq{!KQ z3+MDP?T&>>Dy@NoB9}R>T>c1_sc9o`H*>tX#X^fRhGDBlUy1b2w^&mIREak%H8Ltd z!DCAulq7ZXNrZQSorqm2^@GqSy(f6oaEoPE zG8%o?d_ZS&1-F`Q@tE0getipM*oc&?&a6In)}m2qlRlLT+C>fx0BuLz;$I2s#pBg{ z33@`AJZHY)A_wP5xAzhclWAD-Uj)YCNw;Z7KJ9ltk=NS_8;NSBdX9OSeMd;G>_ysx z`>>R07nat}Ekw&okqZog)FxG2Egdi#;a4bI%&=gYHf?tz1lpJ9U@r=aj2+QxoSWZC zflxONU|$eUv-LQg`X(JkzPtfLUm>pTS3*BHi%{IlfAZ-U?Oyl$^l7y!N=I1vV&A)v z2+D$_0ea<^&hKtB#K$cz(U6(jpm}6pk(s2RS?AB~4a76`@`#sr6|Al_iyep~tC{!C zePeoU@xH6EvW-3Cx#{1ak%O1{Be9rW_iL#oRjbzLnWm_) zpGZ;puH3QqP=1WdaQpL6C$wfFA2sW0)fjHL=s$KxepX?h;B>!I^+C-T9M=S?V5Xqk zw3IO9-VfsHoSU5(WnRfBJhqH8p%D~>1;s^uw6RISVnKzY?gg2Ra-g5+^=)(%Q}Yjk18xrxUp#6mSH~c zTTS)DV&EkH1s32FR$ho;G6!k=Cp%--82r;_MD;TYdCFllAtB+?nzV|iU}Qp9P~1eX z?rh53#6k_Z#Fg}f(CjpgQ9CASJfDgvX$0Da2(T6Ic~ikuq)gvf>%@gvt_nc5e#z## zr~BWo?Txs;?YCKe-YS=)(|;LH2UmAtOM7RSGI!5nNY+sq!W)@mk>@AtpVf%`@R~=3 zz3a>0uM5pKm6jX#TBD!d7P(vbbQXED)=cYY|Hxp_+P55Q`>57o7C4{-f zD>8~XFj_N1!1}JcywcVVH{9}?P4EN%!ZXXLFe%o}V?9_yC-Cjl7bRCo zlt{g}o=00s4p|dMq`gf;&1ETLv>jRXA%L&8$VpASgM9db3OSU$NByoPYr&nQr^!Ca zlPAZvan_Ovl>Nz@6c2CL8yPxX@DQG%g*kN8wXOojSC6**R_QEstmeMnV= zQ5wgpN9nC`G#iyZw;4HPBs!r~XzDc7_z>~Zxcu<(d#iSoFa$eV_xFdl+QIn)y{bvw zI7v3dg1{4+!4wvjOk-bU*0{-!4$k@C1zYE0Whevl6_X#3ur3q3v<;NQvcx&l@IXfJ z^7hvVo2+lyl5_yE%VRdh4!j($xRU%JS7n4-d`ga4FqYbS`GAp^x**jA{LQ;^ebQgJ zq@@&?%XWDJ!GhJmt?}n&W`Ad$LZ_1+J76(=B3>`cy7w;sE?UPS)=w~=W#Vh7ib(DEW7RyfIDLkmnBge5~|L^?0Jgeov? z)>!F%1A#&Lmtp&rBPN_vpmjNKsFLrwMVOC|cqMSp22gN{*58kx_&Z55E~k08A8YXgSs;8&6tb3>EW;J#Hgnc(@J^w`bAzn~-rV@XQbTFwiZf|gu~vTt z#eWA!c<-#^9-8^QFy9gLb^jhK)OUgx+Mn~k#1=u1wo~|Q@W(P1{h$35r!UMVCFsC z&vQTP{lGUDxXwD~AN$&S|D-!m5579F6iVe#+T5SWTjfeV-ksm?Rcu#^GScs>=0B(j z6L_$uR`s2Ntfh@9=CnrY+>o8l&;S7PEYo2No=jYOw zgn;w+e|kynhNp}xTcU+SSZuMCIIDDJb71SP&Eeb^C~ zJ~H@{?IdD<2=zx$_>6!}A?+@DwR!!r?M8Nk+3N&~Iuo*)}dZB(c= zGAPH($dsFQBoMC@H(dCYN}s=-NonY?otQ4GV5MU7uXK9-CvT7L2AHG7cOJ=ZC0l^a z3#XSUJJ#J1q=yf2?hG8zn6-XPv*GwL6Rj#`^dKqBrT8*M=8EBR1Ox;@y#$UD1v-al z5S@c|C{$nW%iIfotwc}3)coG&-A|n6RX=h6eK27S9$_ z9_Gfy)kI_c_(Afw1*z`;0gK)hPX?+%KLyLMrI(6T^4^;kwwxqf`>SL{&HveIMl$F8 z*m}*#Nlr<@35Y;?&^}cnp>GcE7`>y=tb-6z5*bxOL%IM#@Rg~l>eop9r-IJ2n%Mc_ zgNYCFCkkOQa5ze75Hj<_F~`LA1mUnyvk!m8gG97Xe++^HdsD*@@Gmea7ehwv;6I|l z+B}9%=A4gDXx|!tP@72&2FqssPzVnpE*7nk#|^0q&)5r#wAYuG)?QgX8f+t08Fa2a z0f{VmzI2(CnJ}{{R{QTp;h~NQ<(|9Ro>*|fTOW=*$nEc`jjGFD`Cy!LkH>StA4Y3p{C2khvJ;{~mlwPpOy5$pXY^%$ zM!Aqg6(3vsRm^Zqzw=ib0PDg+l(9W`cG(`%-JVL1m#}KeZ&ydy=>X#`Ec5Tq4PLPaBu3fo*Z(hqpS|Ky&eYKu(H1 z-A+%iK$1M+6Xo_Ml~giH9j*3iATby6U%f|mgVTR(ZqLRzg09FfA2?uteF`Lo)!ze) z(S0{L)x$QV5co_50!#YYIW7RC_Q98X+J0AtZr_&!{1P~01|)4^B+WU+2k^J_uT4}k zAUk1$DrwWPvbb`zJOI$bV~oWz;0s5d-{%g#p=;{sS=Q(Q+q~c|?N<&3g;9sOuX_7} zvN^q8Y_d4q%Q&E$_H-pk^IEd={$oHllXcDhoYVl4$?{zY#{-h5^YK6R{*>^Z1n#;( zIEGs%Abq7PO{t#F&ZP2j;R{FWl+XOWB;SC0FPCFNp7&a7PTrG;4zG-w^m}M^; z+xIgctktygFTQRC9eL)QqkNMQP0&>EJY~nIOxO9m+ZlT}MKjMKbP<+%l{;WFogxK9oe?vcn~QpNwK%O9>QDwF&2C%-wAjh;!Q(2wEA z%Lyl9l`Js|MXFZIz=65+-NepQZ}i_`)D%UderKQ1t>jnFR|&H6%LktB?itPG1w~_0 zwB`M=H#xeWn!GHRM~sj+prlh#sZo9REa-&CykQ=*iu_b&`w+~RGzrAd6^+blPMI8~ zT^p;Ji_kv2xMaYbf;Yb|NcRl#6;`;keq~D`B~}$!f;)eYF~cve_@%fN)=jSeR%BR+ z(w|-P6lI(5Hgn^dbX?}zX7(=l4LAsB)!Ik5MBV&I*uS}n^7I*LNic;$&l0)4p(RkV5R~xrtKL0iMY@^1B z|M}n59XtQm`WLnQTJoJjPJvJ5zcmbenb5Ybh^S?*@NVLTsoH-(mfLp5m(%*}pZefV zMxi%GE;b#W{^wjnjn~J6xw@geL!qWfy}{O2%)#X!JUVcb>0fV%Ttx5ANFulJB~kzC z0#AlHJ~lQjbp#T5Br`@0l~WJ+JQ(qN)!Uy@sn%#VXbkD(ts7x5`9WS)I9*y{wymra zdzjm1-aEfJ7g!JU_GGT7@h8Eu5=!l^bVgQOtuVsEM3?N~)m3zbn=V zJo^2pr9h8M(V4Ss&#Y{9UD5tgNcYz3rz395t-NtWuoN}9CSs^d)tuwb!!H9A1+lco z>A-klsMgt}CPe&eQ+^^Do=Db=tQM6Gpu=vQE!E@Q`B%p@428aP16(0fWX+uyvt{n9d6l?z7Hn4&bS$Z(c*gt@F>8GwvwS5qz+63 zpK+b|RduRTaoFO#bgAEvf&(ogGDLMF8T^LWs!YnRN9#`=fF?1-lgF_LI!}yNHYDh} zOw!vWkq@rc-mjJqx+*bCdY4-GvaK2_LhyLg{Q;mu{K=Na&!-Jits}fMQaY5qRgD{Az;y1TA*+LS`7*eK_d`B> zU>mXE(1ga?8-a!Cx*QhT9Lkqx%FnpJ$S3aB%Ws&`8#r{e0mF?m6qj+jPJI3Bwi2cN zk7dN5ysqXy(R7xAm-SN*z!MQzZ2x=ps>U6DbNvIqz?9x?_RX_Bzc`U!!o?M2NkT23 zf2$QGHfJ>)se53w##kT$F;#1AgI+{y6N$k8)^I%_(r13~StJXy8kz2(82-3ej>oU8 zN#*Rn`tHdF!}?5{?WY$GJ3JXHKh#*))p91JUgP-Z_@@vqVs0K;!YKqQHX;R#*e$vepSKi)Tn`9|H`_m{*3L`^9@IoGb|9rM00x6V z*Db%yyMSbHhIP4O)_M%Q)G@`oQ=c`HT$n9S!u72tR{o-d`!r?w%*J>aj< zUX=AqfD#n-@vvd9{4N9V2c~lyod5A%EY6Ul*g~2-#YBZFjuc<5&O3f~DUwp$-+;-M zOo)ew%z0e4rUZxW4klTiE;s;We(KZ*$>=Lo%ikDb8C+U9--NumG_uyu?>u11Wox{L zEq=5LH~DKrWAeO@BsyWzlmwWsvqP@;XH=n==OExD`W=2Yjnzo`y@*4XMBRZm)XIGR zK%|3M)~TMbfVz(x3d7QP@MENovDc=kbgk z9+_ykpmdH*7_kCT*ed?-WZOJmns-lt!Z#!-!X=O6^=@7l&}&F*O^^3}>uJKSa;7to zCcsJ<|E^ILwh7tEFawERTlgL+*=GGz28I*BOQ&bzLWi^j9;n&dA9#Hu;K()pbUxd3tZu6VO699t!IaUZ9P;E&n*&dJV}bjd*M!vITAMGBgBI3I6iGBi0uJQN zjEC5#UaYJBzkghO2c8FmI-7je0`%zU3y>X6xAphykk6F5s>-p9Zx6U%W;LrF;T!PE z0Kqdec)#L;ut)5DLG?PVc=__5)jk{N&D90#K?bSb(nsMxhKnfEZ2a|+yPk4WAJJ^E zQq4%wIm>z8m{O$8lFbiqZ}H)bKedAzO{?cuY`LaVDo@k5F(aoF(!qO~Eu)=JZ~y)F zE59tPoMUI(uBY-ot#QVf1FoePh%1fQ{#q#l74@%e$HreXc1F6wyP4ff6x5?rH(qL1=??h6QVQlTh07fzIc6aE%LU5Rutd|-gwpp6c%+iE4dZ0&R5D$uLO^mn>~ z-;!kUIV1S6*3#c^$WkSqBn){+$6K`(xBL)^bQr&q1BF7|C!{&vu%OvfZBRK zl&YG}QHe}Ru>)(WyXI;CJ*tu~ZKkV&)Bzm3OWKvEKv9-kixm*0H&^~=2XwFy=1}u! zW8u1E>oU^7Wv(vSJ?dk70~K(qYEY)ZRp^)VBncyr2Iil6!&e-2dM8HYM69PSkL%!u zuR5R0XhIX6ep#9uLsznw5&uw54$U&wwshwADg$mxc)-i3Vl}i581tYPr4typZhh`e zU8bjiqJ7mV_S;A-4*;}EcSTPOw=S$v8shyil=9^o%)CICRzRK~cG*X1vcLy29FeZ} zUDlCvaaFNq5D)uQ2%kUN^L1WlhnmBy1GM%Set20&SILCba>T(S5wZ(>rXfHAi=Kb3 zz5^2)04m%7s?KVQekYh!-Z^B*mVSr2oLDK;z(48@Z>kf05{E-xbcV{lxyvI5gCI=& z05;+j3@6lS`FAs+U#qtuC6nuHRndP!x;JAu z@jT~$cYBGVR9pmBq8Fj{V`~a4l6m5OJm2g4{D9%H>$VB=ihm7r4+95dUajA5+&^2V z0D(ZOEnbnp46o65xqijvBhEk({+#uiK@Yt4JwIi~58^Cfl$ma8k3}STbWdCAoGe4Y z@*yWh-!lZ6?U|9&s8}a-fHkDs!K#9d8JRj|LewjLuioUj==IS6jhj325Evl=4rz71 zS-bf)@PbP<(A+{ffV2O;wOZ)xt87}US#2?F$9)~Dg2D!-*=BEC_#CnbrHIw5Oormk zy=*$|8mnbZQ;c?EdR$fZ;IJj6icAAZiBQb==Ruue5$t!70b3N_GYsaluy)eN<-dNh!kTiNg zuATyct*!e-YovFLTt5lx`-{tgV}eJ@LG_QJw&Uq>wsugwo6Ip;TWe^c#x5Uj;upsH zLFVfItwr%jFIQe;FUD%e`f5MBFSu`6Yd$GJ>wEA+(vJR}c5PEmbPiRtMN-M)N5@#l zrN$4dTixFJ&Ox;q-AOVjdVVELYGYfcisz1e&>Lsy;C8w6QsLJb$--A^SO9E1$VdLz zJG1XzqbE!>ic$ont4KDblGOwX0uKs`#P*XI@e{*z-Rap|p|4vz{%elY&w{^7iIIxp&L-r$BnAIJs|c z)X58I?kSSgSj&GDqgb-`2w7)N?<*tbXjcyt3C0HpU2bs4avNO#1GCFL^2FXMvT35694 zq)0jHhU1UDbP70KyrA@oU}SO~;3~ACiX7B|?l(`>_+8}`3lF)1YWfp9i2$EsAyxIS zX{b0!(xNc~I--BPLK-2&^0fb@0%$#Bkt77jF?@bsK?K_;Qi*jDXi8D0geB5vY1BX} zgD2xD+6{vO4>!@HNWrI}497h@Rm@F|_DzUQt*qo?64SN}@v#Ueta6-itViGfS=K!W z_U_8%s0veH0t^9ezX>1y65c@@oi;cjPYxpar)n5o7_6jpxsT{oVv^`#Y(Ujn_{-1L zuDCh$HC{$ARp#i7tl;!%M~)#E&4pgCDs+}1;D-@7{J7K^Ak*hk9$x;Ib<97{8wuG+ zBgW;ONK!o8vKQ+l?qC(<^IiO9ynRJjM6Ak`Bv0|#K4e&^mbaIx_xEor`sE?N6G`0f zH+c7oU6iTv7kY(Te3K@xe=*CcC+!>?snFwXhRi+fdG<&-yq0m2Ul% zp^8PlH=W^~Y@(j+`@LYTuCLmvGJa&spG3LsdGMQP9sp(c>Slha*0=Odyf!!Jeb%~zN zf)Gjgja@9abp;p^B!+D;@y4c7&d0EpoD1oB zE^5U+xA|%-NCg0r9uwgh4rMEG<0#+!#T5rki`$kIa@< zHbIs_VUXZ|&rBbtdT{Q^DQ!p%(7f4jQEvjt{+pW|sm$s-k;Eg$&ep)MUWY2u4=fLm z1mQ8P(;peipdL(MuFVPK+4sx_z8zV7o;4~yX=f}no-(LCMAO{emHIQ^x+aE;a7!kC z&Ve&S+0pb!MNXKI?Rer-4%_;`mqg%!E({Wrx3)%ixZ0vXru1T5;=43{0CkSf6^F4*G1)rG zs&?C_?GMmnKcYoLNOWpOzP`Nr2(m26?!Gx7Lq#w!?oXQ-Ci{-MeqMn^47OVR!~%$_ z+U5C20MaS}6OInqlN2)p1r6Fr;Iq+Bl(~}gJ6%D>toFvj3u&GI(%c*~Y; z4%j!XNNj%j`#F#KTnuL9@=tLZ++GySYz?2b<@LXrHmnY8>{#lrGXC~48IivXUHG@v z?2I(Kz7{omw|H}-UBWzQvj#=%L)>OYCORTV+doYEhfPF<;|M82CTY&>eI@?=r5I4E zmpDQMV@v~gG>A?pF-K3)hd(En3n>CXkLF?k{2S*-`~rut2{8jqqBmq z&I@`yDaZjF#Y8*B{n)RLCy(yRmQWg8$f$HYh&4U3!awN_PE# zSsW-|P(4UvCVD%Tqz{a(R+WsY{NIlG+!C`cN z+&E_x;A28B=m1xXb%YB$krmkvf&-sXMOmma8JJ~+W!?shbB#E0uV6T<<~~$G3^m22 zQwP+GC1=Dn+U8m<4u5hG{a^bYHceROMI;q>(1=4jGViWTCqx^EdFmsx-_3E^O$dtP z-#U^Q1Gl^(Uvs5gK>#q&3azqgt;0lPLD-I#B}4hj>(yX-?2<9D(MR+H}yA2w+H5(iJO;ch2DQ|d;J z!XREDGjG*^Y-R19g>p!@1m1yHL)fvEh;X=*K!<^f`VWs#+zM!5XBcn$OFrOFSyW|! z=sAP>h}%lr9Z6@aQZ%a|t;GE|vTt`gftYBS$yayGf6rwhGb-9fH;*}vu){JI0j!tO zsGi+|1D4Al(<=>Vl$Y z=^JoqOgXw&MP%GMw0$F`j`iH)ivXx$Gsd2Z%Yh)(BFO^f&2_mW%5O018b z@sO|kPZKyl9tlacBJsA!tpB`5_FF$!>7dybq)0nR%Pc7Gaa%nI={(XvU+iRf=wur> zJ!1O4x<4B_xP`@qZxtf5Px9tgdLqc^2Y9?r3gBegwFDUq#;6H=Wa?X%iWv=<4a)Zg zy^~0xw^bn1k}c$o5V?!I>X$|80PlI&N`YzyMSJ z=3mYuJ#(m4UHhzeQ^v8+gRTb(O!0JZkgF+29N-fH)eHV!B5D3gbk}^R4>JqCqn(h2TUvu4wC$)&p;*>s z8$lv3zLMdBR!u(}_GX##dGF|6(AD04PZDGG04ZLy0pSj>kfxfVGB4?c zjpDQ4m`$SKlt+ysn4K=n6M-%i7T~g(iD_Cy5Xx#NlB|=(f=K3f(geBOe+>+tuh%(k zMhmPBB7)A<=$AC3W`e^0e5t^3kTT#VNbb}p$oXxAXOaA^`!gQ=S9c6o8eXTeJwQ}Y ziF;z_71% z%hDWDq%YF|orFFGsjD8HTsriVF(&8H{Ty-t{QZvLKeCNq25fnbTaHUJ!I7_PljGn<{KFGZ;xIWa3R16y31f-u1WS?)Kw@6v3__^xsxR}`fk8YmT+&He?* z?gdBwmwy&Lloa;1i}`BljYfGo>ym?_xm_hUt+(p7pS=>a>|(0`ra8br3+)p^zWJiN zd%PPj$I91!N@abL**#xatVr=Z^uArTns!=p%89Cx&kg4T#<@;QcBNEZV2NAjx_)Q@ zIuNl4*kc1en>NEk4vj?iYre#$I1W9j%5R5J9ebZ|y{6FSdhdF7BZLfi9~w8QD83WF zd%1q_{}y%DTFVIP61}J*ugVu)V=1U?cl@ebvIzkK%N_~>I4S;wL_{RaMDdhLQ*TH% zaz+5f1HL2&MYnayFRcs@F3Jo$M2ZGv_3=Z}1TofC*LRIcQ z$-9@$T_^gnRXrasSOXt2{o*&dmycm?D?Vq&JM|{Pai$!lYXT;M5uGh@l%dVY_uHdH#+Hw8z?4O)ZBYsMSTHvKHWtDbmaQWY$A6*V)boR}0 zPJq6d$HcIW|DbXsejgk1snX*tPQg^JkflDHca+iMQV5$yb?&`KO5DGZ3ln{l9g0v1 zq7F7P+}~A@zzp!^(u;QF-V?J~W<9)@5vhgdrXgPlxg<#w&yAT>_h`izwvk_XHyX&w z6Yksn=j9u0(5wJaF&HT58=H|I!tz_>yO+)UzZ9nnd)pWvCcSyQ5`Lsg!c_E(o1`5X zWiMvMH*UcFYiAKs{If@gC_K&VW)0@owJME52fR0QVryR5COP)U~K^J%xYhs5Wd2e(`R)j@Kl)bjRK(OHG)F&v9jqrg<-P=0tQ=rt?JO)(^j`L~ZkV`c#I_0FcinH2aT3?n|%!04+ z|ND2cN`tyV8cJ_p)2S8tEX7|O>83n+D2AmRvOp2u{cci=m<21^c*DeTp{r10kk;I3 zZ*BG?xNIhWvlU#J^VK`6?ocmL=J(ain_wOPZQZd-F!Y>G;n#BN%7>fGtM$Yg`N`Q_ zxbO}o^z`R5y!lLyd@77h`|aFZSAg&S^3T%pdkM6Npxf*EW!Yzk+Ipy?{+kyvc2}=U zCn|1eU&U;uiS(5-R5|{+rKW)-tYc~#-`uR%e<<~&y?URvixO?S6{UkHT4O54s@caS z(eNZ#Du%9s)AJcw?WdmJx8zK*aUS8vimqnNih1wEHTB|#o4xF7=B)^f$~-D@vwyCr zat)6Jw)T3IPy5{4@wQOWfuyP+n}Ty^Z+PvxWE6WZ9RX+-Wg4=iT?O9w;P}bYjotG> zY>qN&%vRqF!gsH!5{t2;=gjT+Z-#`MJ`r8Y30HCLbodMVyBYZZtfzH@HrOr0h~j?Z zmM_yLGmZ^@`z1f`@ONFW`A<(_mOIzya5K;m695Ic+B(E?ScaYKjDAFQu)xOnP+nLj z=CyPBf)#)bg0r2bt}$JHE1V;N++w8Q+^i`Zme>aLwgD@KphqBwA>rHA^D?HqxaYkP z4mipDn-G1L;=ZE$Z%8XdN{#@{h$mrjZD}XI?dT4qa0u0pr!S%X|Cf;Q$>|}VgW$O69bWNWfy8PeH!p<50S)IN2Fg5lU zFU{_2Yr&yjWW5O=z5g}|8knn8$L|ix+&*7Iy9jaF7s#0k&Gb`N5|6)1P5GpZ8_g?; zm1ExVV88r?MaO6eFC+t7BMwQ=LTezuPs{wYFA00b&K>y@$@<(9HEo;MOho#XpyF%< zWUy`sJLwDU_3O6Md1ge?Vpn)?B={BSKb!TCqrbnxS$lEg^{=MU3vNMu+WA-Fh;|hJ ztBk7Tj}kWPdg#bs+V*A*+phavb&VN8w&}KkN7Y1QTjdRjH4@i<$}z2}xPvWd&35q5 z!NP@Ct|2lx;AlyXd3&@j)mv5LFxxSO7tgFCte#b1v7Aj-2Tnt+mz#qrO7J(of@K&M ze9cPXI5662(0e}ny}!!d0FhCiR>?Q@?QfRENa4v1Si{pfO?w1o8!S% zWViLdgF|;vSFCFj4}~iJ|~ol#fxhcskGpoitI!WUiA65J(MXb#MvY7mIe z^4u8>0)#{k9eRS= z0?M9A)U;YTt(!thK~5H8!n1%RV{Khg1bc!#o-JG6e7s65L3PVG2B#Qd&z2M#^N@RW z<$u3Q*^MzF>iKVGV(G)jg`Cg$soIgOYjJM>l>Y@HMb+E_$7Lijw4t|f+&PXZK4LEV zXiDs#vSQ(<&v^ZqB8F*zQ#5g#==e$j3X#7Wx& z!HISjL1~m0!Qs8=PX`)?lNDj1!3^*xYO_5wk#>@U`NXBTUQ(S$mh(IXH#rmrJMT^D z@`Km`M%OiUWm(W$FM^jP0}(5u7vs$^;-@Rxp_+Rdzj-$OXw{NL*(kB~JhA*F@oO#aruAGvhJ=F^{|`|qvq%uRlPbIF0{h~%yMqo*eQPcnUiGg-$aJsOD37yJ#Bx~K@*95H9#hEZc=@I zCM#6=+EYAg)ijj>FWKS?HM_?nIqzP4Sz>szcbHH7Bh9sJ;v456+>` zw_TD{Z#Y3YEOa>r1ufI#rGOb=x8P;qJw;9cC2b~8m8Jw2X5I;YTc9J$!@Xbr=P7r_ zLBUx$@6#8CD`#7$Ie(Cy|xCCr)nT%OWdtihCK{ ze{&7#znj+7vLXtMHYZ62w)0eQ1s&4yy-*r>78~Ib%-9kMhCM}}8psUh&SPU8 zy=gNO>t>}R&QF0jO^)mBPwJ;RFM+p|iuPERGwEsm4*F>fC3Aa9QRwOlLbBE=FoCPTzJ9_x{f*`=u|_2^8Lde1q(a1Y;%KO-#1+KhUus1Xlhjce#( zofiFA^T`PL?dgA|TAYMIVIDOm96_O-FvzGwx2Gg~L++A#_m0q-E@mkatYQnaOq7rM~iJ|-?ej9N{E{hs&u zlN1sy6U3acR$fNG&pR)!(=0JqRH2#cRX?TW(eWU|DZnn9bZoG1T9I|t$z;V-FL`cj zG~9mRO)XFWbg{VCEX`g_ZO2cZp|}_OK;F|9+#!3w-WWyI z`Y2m_`XU`Ofw_QCUq==F z>{Om!?lsu;8#fC3qUb>%Q9hQ$*e<_~#`Ski5wFNBD~SG40hB3lhU*Egqaz33A}x=v z>q{_vuVl*TI}^^&{miw{w=YNWAMEENn9s|E___v!&Yc2-MIcU2h9xWRH~DSpGw=o0 zdk*Q4ID9oq^7P7ppy{(f3h~ZLt+I4*MXP`*Vt{~gr2WDAjtg&$4U-;sDz>9AJqXd_ zk9s*k^)OU2RY!bqhFe)xtpOx~Gfu94|AG464$M*`F`okj=8#gJ5vEH?dy5)W%K=?o zEjS`9^)L<%PXQGoBGre3=~Z)hHC^Su!_K!-A6_SYOWWt>`uh4Gnb?R@{x`s`dbeff zaEvPiSF>BEwceJ>|DMK%;A4$%-h)f|MG_}RG6diz(@D$xJxQ^%+`2o?wiuE$HFlR3 zB){JvjM({OvQeeJk!?$TR|xdEz}7t2r9|^oV!fmPDddvXb?iM9h4X{g zcu_Ym*SnJpDA^66JG7I0U&r7pQ65nLTYUsClPY0)tzV7sBuO z!gq=bdGZH&o%TI^zOwZ`IS{v-W|4a=S43_y?CRYWO^dg$RZf;bkTU`0usA}AFD;H} zQT^{yB8Gacl{Eo<|Nf-4lqtH@Yo*{wa@x<+>B9~m?K+#5#OhNnAH*6Ii24pX+opG6 zmR@{x17ojbB;`sSeGX|*t%$JIdb|N^xM$HP??(#v$_T1rrHDM|;-&!dlc87{wsF&W zh@b;J`mUnq_Z3p@b2Pm058iv^*)9pvj&X0{Xqyb@4K`95eeS{5-$?qrs%xyMctD5} zC0bf?^1_uo9dT+uyHGh>X^WbF`4EqM;=X`n)GCb}?(^5BlEV2HwsHRoZ=-jvVYS!> zkT+iv_2KebSJEz)i#A5so2wkrq6os%b^U$(6MnF4ENr&RX-Fo*cdLj*zKQ4rVqfgj|KV9=nR$fz1d;L znh*IYbCdQRi&X6$n@U&0S6s6KltvC&g#do=t`HSa3-zPO`c_ukRyGqcmx&%8JrK-4ao51(2OynD zPS+QIz4sJNRmP2Nvxwin&EE~O0}>JPxWG7nd<)uq`9yJZ9(^{WeLAVI5OFR%z^IsK zWL)AC?5xQjl_JQUlnV4SixFaw?C+OPvvB8|9r}wmRfM znC}=xKtyeU8ap2$|B5+~=#qeZwv_su{f`^^!RID>)bx1j-VO7rl*wADvm&+bZvT4) z9hav3O=Cr&kB{2NhNs`(qca_;p=sLNP&JDXCDa_S64+Tm9(=i3M@*u&@Ph$nxJ?I* z4WBlMCks^2$X#Y+Xmloy!x@#PaLrH98Wq~M3Oaa(*#~tEH{jYlbfJ4*9l^Q8>_ttN z1d9XA;N|8y^?+{uCi18yyzYx_n_e0?Z`Q~pHxnt{ISNK)cR_bVAy(h4+g(Fu>vMS% zc(!C?CHs`%DBh)i&BxU1oj+dCsJjY=1=~Zqu-zMGhjm8Nw7rT zzH<0%*t674#uS|zGq7vd_+{!MzwQ##Z5xzu^XIq=Fk@Q8c=~s?(&fRL)?8lq^&pyc} zC`9&MPRfyLv+6po_v>fFZ>!9mq~h8@e+w#ZFv()J+u=YM*V#lyjRm{=DTu8&%rye}M9-M>s+8E~GgfNEX+f1RoNYATkKbHPs ztExJ_8e5bxFspn1f(qUnH75P%n{B`T|a8 zimM%aSFv-r)^_DKka$3JRkx5tztfggJ(m9yT%I+P1Bt6#Vrbz=K_pMQdX*wJbk)-O zj^nFV7rs`izESsS_+o@0akZ%+9{O6p_}|lPjwXMtXphb3one2MQs|9F`X(xa=@l6;w$6mG^ukn2;KX5>9WWyhx_&&u?N zaJW{X(%GRi5F-_cSkaz&SdS&}8x&Pv2xlV2o))r^jYw@FZmPH8>3x)gqhFw5WQwCc za;%CMo&31q=1tN)e@xKnt+wB0e@3&nF9S)_vCikY7|y+oYpJ3yxO=j@pFND91e!61 zQK2+(^#i@2sM)~$hM*+$b0^76*v+WtdPV7ii+>cz?9!F_Ef5A z@ZmMoOQ()|UgVI4Fxqb9BF9^g-ITO#rqh|C9mQkoxjIqg{CZAUa+>~Rq-xI(L83c3 zy*04iSd+S@JM>!ps&1ytVDIvlw_*^IWv?(|iz)AZ0{j;$MNolOj15lnz(O)WGc~b#FoZg&HoR08Ry{k}CSL=cd zQh61{B|F^Otp|H2-`0)yZWMJ8Q0%nh%V~SvnD-x-@q>ZqKnHZ?41P-4Xh-JH6rITn z4ot$&0c-m9#>OY$?gq>$26shwa*ED!W=*W)r~_=rUv*lLefV?LEA{Moj@vf)Tf@HA z;fvj*qwV5fD+%Y`DTG5ltmEPmBBCFYco#JB>r0j124U5Sib@|w(Ct#6jcS=3MA<$P zfLk7Xn?uC%zJWgsVk%8keH}Qi!~Px5HaAVxe5>O}pWn}w;SWuTyDP6ik@_4OY5ng} z&1&X>GnJYLptTbcs}F7#KGTMJ^TwV!Wi%RP=Z3EGq5SNXYO3v&e%&oSY^x!s*on0K zoW(e9qYA8~YP(O8T<=qlOAtS1Vs4)ibLz&=vSIrJ?aFNlf*RM}HWw=}@cCkt)58aM z0`W%;q@;zVFuRim8uM;@aMN1Mb;Q+LGViOW)c6)})=T%LQho}YiT&|4$Q5ii`3ZU- z?$yG$CN^l!^f!yFLWFzXz5<9@Rv3f{MHr+XgKx(TFXPW%Vvc3dDtXbBg$*C7$e~5w zRuH84O4GW{V{vO39kYuq(JB&oEl8f>#a|_T*L?EiF$HIlR~~T(>mNAij%W-kkJ_|X zwYP{`>fupl3``FaaHccO=|Vz6L)-2tCSlVKY^y&i9yv`ow7gmzu$XuPbxR@low@l| zQo&0TP!;W+A+x9RV&eJFVM#dD7(1``!nP>YIaZ-wb&6j>BVJ?qOfk|j_=p;4Ru7C8 zeMGW$(ZNV&h^(Bx-SR5@&1aTsTK|}%8$|mBk67v7zk*2Ov`SXqV6j8P6~xr}&(pd_ z?C=GxwR25wwUGv&^L*?2gi1JmtR&ojp=wSjS7tw{CThpq`^HhiQ13ROsk6is!ocVC zEG8!W@W?;jhSvH#{}Sg&1Tg`2Q#y$^t-0alHJlQP ziUWUkrh;TGtEW6yP6=#o;d?AgVV%w^DIy7^JnwUP*H|tIlp&Q~-vkjDw4)sg1Hg&E zJvj?tXu0+NNnFxExNEN@51|gbL#$CR)bl^f1uW5#c1f+E z!poKFLq8~=hbFFIW)Gk_CZ0~9mt>$E0)Yw7BUJH#WT-k<{VZ-$Mnx>Sd&iLyFP(LJ z*6S(=;(O}W??(*V1(Eby`#WX0$^-iHxJ6&Y9*u`cK_!k(yZtS-Mfmo^$^3CEI471u zUigEbe$M;jchIoV4B+G)_NOG2OYQCBfkw_yYFIW5nX)WRq~G7;&S(DO9_=6_yxnxF z>f}a0{I|!-gb++7`XGB;Z62ILRzjKkeZt%9>O&kb2PSh!)%62rxp9DhF5Q;)pIxtD zjJ{i_?$tB=x{*;6}?b+DAQst=h#*~gniwhCVpKCWXADX0Mg z8vf!M7G!r%MhugRUp=i`nFZ}O0rk0b-k|SLsuP$i85qhk_>)GbHlmK`4WQb^vbt0p z8Em!pjNtOHv=3pJ-X3dzlFVc6a>P0aS8xpJpO%vRR$-loK1q>0p0xglT|>#L#fYCG z9P$Xu_~C7Ez-M1iasK_AchmTRClG(DY0|E@v)+pNi}c^B{n(zjhR42I-3M6&oCXD- z+>`}g_PgA*E69^6`7`t}K6X1ZhR+Xo*%`lLumh!h3Yc#+UN?!|<}&LGeMdf6)pnC2 zjoGd9Uenh)E~2Y(}Yko^PdjwkPKO z?8>pX9Bqz%xpzSc+WUmTwE7!GEnWC!8mRuiDd_kLOcXIpq@9y$v+V z0I{02eT)|XUyYhA&56k_f!@f$orO5g%9qb@~c%N?j2`+;#0s=@h z&Y`%@N}Bdxl@cs%7+)FOYE340q1!UKKW3{i%?YdXodg;byfH#vE`Gd?eXY%rh8LR$ zPC6Joe%u)jP1J-UndM3aU=H$w zao#T@+}{i`?cta;w_5KbYJrYp`uwh-*fJvNfr~WIA_p_idt&@OtWZ+yohLmREolk7 zI?qZT^MwnGWf!n*NM=aT(YN@d5x#59)9}C<*JY)~77|*qd&gHoGbw@Qdz^D`bl{D2 zS?cHSiw83a?9gy8J;f_yA zqV+E;X)Hw0SH95RUf}Kx07mzaC>vt~9V(u%FV@h_qsw>tGNM50j2u@kNl->X=`(h_ zl9LjLR;Bi#AtLG9>;prFSv{@3{rBQpP1TQmg@|!yUpN%#3(?AGbtuP9ApI$JWNG0yDLVuS(iYs6Q3e2tjz!z;qLZwH8njv$R?45nNrQ1Zf@Y ziXAWd((c^#eY=;ULd4<|8FnJ<7M_21NIKg4ng4#dt$t+%fHKYNvR|rxOu`L{m~5!5 zdVR_&c6i|c%Oi+1xP7AhxbURzEvIH>7o`g(_ObJWyHmLA%c@%2bqSycZ)8RrbodA9 zTXUV?C~x)ucslF0D8K$|3nJZ(ba#j#4bmkoT~c2_q`PKBKqREQ8+3 z7+~mOnBV379LMtl_yf51-k(_OTx$qOFdR%VWXv|cBA~T>Vw=x#e}B*zO0u|7k${MRk((4K1eV95m+qvcuY~9#yYnBpshL zT+g$w-mY!D@j4`s@9dnaJuG7VE?koO!sG)DX4GH`TbEMi?Q&vHB|uZB#)cU+dz5wk zvqY`53T6rM*8Rjhr2NhAg)OSSQSSKl30+AA09n(^jh9wv(>VO{jT|5il75I{vd}W* zu0La13QdGQ42<1R5J2YKt$Tl39(f#ZVL48cg~nVESL|jJhGza~JZVi^UFSH37*(bh z8SbxWMem8a9U5Cs2#eyst)E7r#%zWE~To1=?-GLE1aiYMK%LXVSM{B&n3Bipm=Q8)11omy z7Sz?m!|63y#`$xGVI;F6J%>=@1{d+7BVK&?{~u@ig(q$W3l5o1?R~|hVVTJP%+;V9 z+?wP-P(gu7-!&8+4nnqq=^Y4}!!Kq;7-n~&vuvI-(d)aP*3CU9kcSxG#*v&Q597LGmEjziY2osEy-HD395IPG))ZRhjL zlKLpegP>D@G8jk(U+oUfGO1Q&7*baK+7j@J4!H0DZ84FURv$v1iS=S>`&9@&Uqwe6 zlHp9_*UImZF=A}V9I}J6iLs7_ntnm&+=~9L*K2RoPAVUUp(DP6A%(8<8PD|Ijf^Jw zGDGn*{U@w0&vXQkgw^glY;V)`&Y!}Lq0R@YGn9|pczdmGTcmG!1eNkeg{Bm8-v8l9 z^AA?&B!+d9)PQH&k8VvZfpnXxYLNVx&BpAt^VhOG*DwXh&3!fS%lWSD3A0(%teCpV zWm4D~N)?lM!hD%wH|KJl_sa@s?$w(MY=xjJ)jJ6Ydn3lR+&L{>dmcDn;}gf%k!ZAi zT=ZUZ`;T3j@hhC4hSTuNHXpS3T};gVtt~2f{kmsD`5Hu(p@EH)dQqQeDNpd(ko<5> z1i)J4p1?JuUr3+aE=_zpl$eOSYX*}2%rl9WG6r`|zG?AF7Z7_hu$QyxAhUNx)iesj zQF5TO#TdUjIbGZ4Pcn?e*mC9m9DSuxFS(zxGAJbuE!82{e`-cA=6okEx(aXmPF+T- zzHk{JuA+K*GgqkhVw6T#pJ%=K;p>Wga1vLm#2#&qfB0PAS^`SQc?nE*JLqlZ7$!M+ z({O}v?RYqM6JOQIFf^B34%Esm^fW@cd;`y+su!Ita9eW(mZ^b}R0o<^!C>mldwAvC zV$^peR#etC7eGG%bpxl)+^UA6+D`)lXKfNJ{Ql_koAX(iDYozm=rAb<3a(M^k(s(N z|A^9_qjVs&INU-8tewZq>D?r@4`Og@-t{BDp>eRr!NY-AXakxH+C zVTn_%PYKA*et74I>&85j{dfNymRb!tHL#1O z)uW}|H#f`F#7MX<1f)zu%;52ANI3ROh9M5k57$f%Ir?6enH|_v6Xu> zNPpH+ds8At={^7Tv?R)o%@&tmf56CI2#$6vcKBnP?ZLb$*@v9SBGA&4(6^JwTL6ii zi&P=9}xLYovUhF?*r{?A9yCq$Z*Z9HrLVS+VG* zrbUu`ML@4lfHdSWrV>52)S3P3HOK#O&kfy#gKwW&w+y_ju+kNCeEg`HwpdmJi$#Qw zuFxS@Vydggcg<3ws^CJ`Ok8IP`WM;s>UK;X=`;lJh!@tnoXtv&SmQL(=Cm+c}3e3v9yu8mEgRDaQc z5>~ne72FF>Cr~nVsRpU@$Nh>cJM>2~&QShL>7f`R%Z~RhgB{Q|_09eJXue5`+U2h* zCcp!832I)xS&Ir_!hOf&1RZY_NV;Td@mfr|5;V|0TZ4nL^gOR`n9(qFPLjd{ZIyTu z+=eyL0ecNYYY)@-=-dX+37`Z5-;P(iXF(XP|&n{vkpyGt_K zZw{#~LrqCf)%dSV|CMlG%@OOXT>%?O@gexrSmGP%rT(pbFd{*NZ$wze8cT4L7D7v8 zL9h4!+lZ`$b)HN&Bho!<8TSh%zlPXy)U<5MX_C)*wC)>mG^hSilS!QB;#6W7F$c|L zzYChf9{AT9xhuJp{VPS^VWzfDclP&cioCA+#EE8 zJzO0gwX7W3bQY;_J1W`LaN0D=KYQB6?oS@sH-MKjy*f^OkegoAgO-0=rF=L`e0)U> zgcY$G#)!Ubb_9G^bgzjNMoH-wtil2gMd6o>;7deS5KJwr#vc#`(2 zN3WZw6||Sg>r*Zngl(T`5F_Op=V4k=z3;`ugF#9JESeS-LrPMUdRAyMlBf}66Wvts z8VXD|8nr~KL@%gCcVc9z&cNB6wwQ8{tAChMe8S<46?2f|CNgA~;wHc??Ch@(!1LHd7u7zQS$SwM5xLR>K~G9vXl>a%YUlYm15RH*t$ zb1F_#8#Z!Q^(@w{;wWdu{OB&}ox)bAnE6BLl;_Ot?D-Vh5eX|@f@%c&??LYFb;b`< zM2-PVi%jA5gAQop!n@s3jESZYOP7$MI~3j)j(oAW>r3E3IQfiFFDpqgKyok({cQ(X zId>5T2$C_>;-db_kzj8jfP|G`J@TPu%aJf9yrkA)Y40%W(MX)A)4WnrOL}9XMFELg z;9E13U~T>%EmAjcBq~4&mspf!gnE%s@`&Wu-{xtv#s_(W*{xRS9jWboyuxO@u*Ye< z>BiPvlDt}A9h*!i&vC@Mp?|6gX$hT%Y8=axD8nE!2i0*R&!C+qz2!CchRa`NR_?7S zUx&=KOUbbvKf`db6190R>hO!cJ!{_Rc#s0$jw8A*M+8Obwzgl4h61a>QOk7r+&Qrz zgP}$Oe6#!q^@yApyY@KWka>TdQLMgmhIQ@Gu5|a^isoX)39@U&H2k5`fs2S$Z|5H1 zL&4!4b>Ko@o$pA0{Xp=4Ev-##>SKqV@f@Rx0+;2k%nq^uVRKV_lax)#*oOs|Rpf=B zR!X#P!)c)pCP~6YK^|CmaSffM{q=^I!d`D*8~2sE*6BK1gbBl($50CsUdvk~plR3z zB<)oL%|W04y&1$G`u;cZ$x{-a9|q_M0O_7X^M5&+sD}2Y762&(1_Djtp@1Ii3=krC z!6pHVkDqiw#i5}^sj*=9nB)bJh?B4dSPWr6Na5~efy|?RR2qjX4`2x?Y}7I7f0_a9 zzTMB0Mc*TU4;u*At6l#6yL9DPC?5hZU#zYYR4Mq+7%EiOqbB^3YRPrYCk6p}@K@Lf zo@^O8?D20+N-Ix*cqXupo!{dC7_cKa-1quqtwi4fh|vtm-oW<32$0I+X-$%)l5D~} zZn_Ao#@~0fX^J>_opF=0$YCI6>%#sX`TYu1DUICt>s)*vWM}+0RnAxe0Uxs+7X96tWh2v5t8)o)*S?>=}9Jmp+{C1Xn9_aUWsQ__pTp4O7N0+Blc-TEAgIUNUYx;sB8z$a)91HNreEIGe}B`g7NgUv&3(nh6;2vt82p zJo2V2`RpVE7_$b7KyYN(6@c#613zrsToh#e>V|xNM&_OZI0gsvtfs#aJi$_Z6|^-p zDI7*e&Q;`l8K=vcUlm=E5yH~1g`>)Fn|GDGI(qRIZqw7;^!c^*IPg8%pJeh5 zca;eb)(*4p7E5hN&|fa zd}CNS^MsVRB`G}Q+{rndSE(Fvz($uLSKh`gJyZ62X5}81CBIYV(O0s%zh1zvf#-Vt zeoXVj2%!ypnqnGqp|JI&fp&MJstbCkR9e$l8vO2-n@heb9P+TAw=`o+lBijdBCM23 ziIV`v%s9~KzArt=rFJy}T|5B9fZAYC2BKO@S#rYnq2oCIVya`O>@Nz^pE%gsv6Hv& zsdF4?emmfOr`~e!a}0jR<)~?Fo^}nYxlg%wemJbA-^i84rFLbWZ%Nv|Zl{b`I97V^ zWmK7ec`2g4%e_;wlg}^5wVP6}tc1&!0+4$ED4s_kz)u{IF)zztsD}Dt4+Uwcuu|SO zhTY2vQE6~SEFYsK9nRXq?5=L+tnQB(se=`mobU6N=&PPG)qj)y!*tcF-5hte?(kV1 zSGAlyinNNf@BAG^Sk&1YlPz!dEc|364*a^+_E?~m>VV!t3%j~@r+u@g0}0eob2~Kz zHJA}Q`uKhM6u4OgKe@RN^{sc}!@5N%`2@axvHJUGe(G?SV(%uKZpM;-|;xM0YcQT(=+oIyevQD=6NkBO~ainz#{)f{RBsB30 zXT70dj>=$)MT_S2ix4^ao6W~eE-h_$H|$3|(PyCS@+rKCWXuXR%&{(bj1>5d^q!3F zsNrS-!L=%@oo9>1aD<{85&qE+a_tdC$k-J4!FL^uZjwzfU=uR*uiT|mr z38x|V(UtO8M%0zw`#1ePv;-(9MPLdZDqPOI*DxJ-w8i1GJ^NtfDAFZCP!?Nlba?i0 zuhdZSMnA1`Ze_WvG^OlRUZj(eS)irVF(OF;QKp4pNyO^kvXD@d5EC=1RwXJT*sKD- zT`2LE0=A06u4Te5ZvExE&UoQH*V1pNt3vnWQ#lle$N*i7)MFdA=)T}2fsikO75;C& z){F_xTOBl*=7%?C1%GAv>y^!PdWBQe$jG@0-g|l`cl~mO4cUqq_(FyIRRdr3!-y)ip_$Ti%g!L!qX5(H(#6KchY(2n$g!@IJk7K3~TUG6% zZfwHl%W8b8%U%l;-7+ZuM+~{PIjL!v_golr1LjNKlY2W-W zHG;d%FIN+;6mo47iYzgh;MQl5c@B*)w9hjzjobh<#w`3A$hU?_(5_#f{}O#YGo5YM zZyt!0|BNvGJo_!&X%QhsFy*nv!%Mc#&e3dnHYMFqD7-8R^niiQhFfY=z2#0$8OhmF zq;0=m8L>q*h?jrxswid_SN)B(pE_qhJkkW--mKW|i#e{buh#y}*0v`2%PPs7W*ADNpZ14^Z zxn5C_6Gcl`8OE2vm>(8J9*HfW+h7V(5r5wbUeYXs@(*P^Xw$aNeCM5V5W>iNy?%1A zp-9JYxAmpuv>%!}7*zdl0V2w%mbqxS|54Y87$6%RT!sMed*eJSekAvsFS1`OT(g+s z^R#vl=DtYDujkxLrp6U3Vvt`fdG3{6NtiC2XP>ztEgk+yoimN;KyuDxp(pKD3EK!= z;}ow&?g>CUAr4@&Hrd$TvEH9zZYln@R}vP;IW0!ScBx}x#^BiQQ#=A9Cp2CPNtj!` zP}LdRH4@NUhr8Q-IeKE2vNRQ!!im^*=BDS0r_D54JJBA4ZF%oxPM`e;@x_EOz_r=w z_0}~Q)q=_|HDDv}vc7w4&Cycz8j-96D$cnLPPvc=M{}(7k z$g={a3?`=Le)2m>AO$7zU&E7mk)=<(Nk&h1h)e=W8GC6SkMJ{xsrekp_aOd=2dt32 zxV(wLI82U|6>9M!j#s6I`&bUTkQCxZ;6FAn2$G7tqCR*T6pxueb>wcnf2COT7?19B z+;Zu53}yq%oXT*nH6dWda?J%yC{gW`6dt*XE3Wk()k}O1up$JiJ4Y*O!fwq51CaN3 ze4+S|^)7YX)oDuo^grwY`>+CeyA1E$g@%#4yppVAS z|51%;@VEIR<>ILtc4)b=dr7js*KP`$m=Gpz2ja0TS5}UWk0Zuu zZUDWk_?AYoXmH)F$Y61K`I?7ANH{=VXRkXsIiJ2F&I;HQNsnj=cy|`OxXl5H3?3TN z+2i;N?;Z-q>0@(mY*DXX17Ax3Qc#6dZOpAo}*iO zzpusSZcr4&1&7t9svdX%a_|6?B)Wfm*rzLhNh zgi*9@tu&%D_nhgMnXDx;Znk{2~Ur|x?ipKQVjOTBMcv%LY| zcU8g%nD9OmC>lq(@KLefDh6TTd##u9s}e$~xrOBL^Jz04Z^j8LlYE@*>yY)#{)qMB zy^s7+80&lC-xbO2$32v-Ox%7%9 zkTN5r+~HE5O@W{EGDwkW=8OJjZ0X|+Ms3N{r+YuN>Xo)t5?(V!maq6;U?*NpC|}7x ze5ek6riI^?iHk8S)r{y@4f;4H7gzoS^1kbSrj4v-T}V{TE#FszWHz`NKs6|hS$$<{ zrO2PCKh6%vnCg0Xfxfv54ciZJ<#sO}E^A@hS4%de)*KQvpw#)C17fPxrIEWXf8=U) zAZbfCwz$PHX8VLY7`zyco-8x%YkugC{cvRDj#if?`wNfcX=(%tlAcsaDd6b_Ha0Pz%)$ znT`DYM1^_Nw2uMO^S_&`RNn%jCe0RW?^hzCQL8Maz2wxM+$}ZLTb<(_^Wc|@3u{pc`3)}7aZlvqeag*cU(#td4W9jx% ziYjS?tUzM>+y@O z$y^YdvE0o^BtV*eFWnGOj%F-O+xw2HxY_`@S!w>C2@~d46?DI{8BHr~i$rB!n4_jq(b(2Tk3zICTpJK}R#!55nWwv8f{5l|4Qe|^$@p{9U;-|*5A0P(!)YZJ!snz0 zwH%|-Mg1J#cM9=s>X4|mWfZ#Hx>YYv2Lk^3iK0RYg6p*3)f<%bhs32-Z2hU#wa`ca z{jp&k#|JP9wXxq4r~p$yw?g*^KTmCra?bYS7Q9RO=}t_1y}Z1lO1g(4ju^84{5U5j zenhPf*QKblgTT&rpyH7O0l%j(tw!wXZ$-MPiHN=EK>7dRv(`PxUDKe=b>y(e+8{Gi z{X$%_mRC^Fr+6xA5hfKos;?tRk@rSTaLpU*oX1B40TTLb5Mv95d@{J@U?)X!^VvNT5qP zj+O?pU5Vd56yIlYjOYWmB3Gg>!R&cRD`a;gO|r6rZCkREaeyO5jbDeH`->UN8SakP z;Z&)CL%x%f+@-DkBgRxmHQER22pW5pukDH z8W`|z{x`gV@A30gi2MKs&vD`gl+SQW;xV5OHxkxfPXDQURmd=OJ1YYu7!m`KO3F6D zdsP3Tl^TPxc$TXLJ&g}n>p_JRqf~Xy_YV-{L(NL@5yzxu0krUY#BOCP^xIO3;oC1S z{XN3utxhaIa&-7!KXM?9?0xfR2 zaq!VFxpTXJmlh1LU<_Chls4#V(av&Fe`cwvB*4x_RzmrON4N=2az4^9k%32Unom!O z3FjOoh&t`R+m`#LUo4Pk&qiwYv5_&P2*yDhj0^CJ*yYH`743{=hrJ9-cRsmu-t~Pz2$J;mc?Hv$4VwX+q zDhmBN+#EA*U%PkNnYq>({vGKh{ySng`O1d`&Jp{k9mD256(%bKCh1}czII#je{H`c zvlI{X_QefVe~!Fhn`L;4V-SDsc^!0B+ZuG%eSLGWDReF8#avs9#VPRd?s`_!$6#@) zLezOtTo<>w5Ez%cnH@9ZI}(r<^Y!`wy~oTE_X^)2eCj&JodRhfw3l>K}M^ zjImL=<(lbT&)i!rR54%jYkJ`F+Vvx6n$_B38M*$cX2=g0|3Z-WhyN{@0_!NZT18v~ zO$)9RzSf@!|5F~N0JtkL&O{kiD?@$FSDCqLf#;PBPn4$C*Tv2*1}B@n4gxwIPW~*Q zqDZaCKWgmae>CIS)|iPU|DLw0ytUpfclG^ydq?Zg`XX_tC1Ze$<s;=7*0p80krF0a6J6;?c-R94M93=}-wd>fHV7=-%7-aH_!t&L zjz8!lxvvpbbn+kl+RVVX3Sb;fvtafZ-v1xZL8eJ_JkI2ArgSv6Gc^VXMfqW1Bx`Q=p;e1&kXc|ZVeA!Fs-cUxqcj}6Rv44YGTJ51g-FyK8}(Y)xP z3|QFt726OS`R0GqYZ|JQykQa=HIqkA^XG3CiBWA6wXeK4E&aBwLrQi2W9S4JAy1Qi z=8?s5h(K=e9;CnLF{JrA-J(ZfzMB^}JlC?m+gV0W{ zFG7TvmGIlJ1pU5ZguhV;hnbJ(BimhpCZ{<{Oj#Zhrr2xhG%3g3PlQ1dn=7^*g9Y&L zn56ZPG-ohM8YL`WHRl?!2$Xw@*Fu9t8Wu}{1+ScI;08l8{Z05flxj2j<*gO%)}!P2 zxzLyl7AGbn>twJ*!)CnLzG;kg-TE)s`J}k?*$Z#&luM7a3hE7VN73u=q?pYa?;Vc6 zYGTqyB(jVdp2q1m#;b@7%PO^cKkEt|I*rT%4?KrJb(UnLJ7xY1Z-+cqf#MvWO@~&I z{pRVCNNn_|M(Q}PUBhZZIA4X#*Rj_av@oS@EKLkgbDJ{ZVqnVEIOJY6a23T=eWm{> zB5LkYP-hYH#cxu`E`>k%&-q=B>EfG)gZ;~6yiw{fEEsLm ze8LEY#QckgNBdn~mUFG3{Z9$3SdyA_<4}%wA!yIP5n8-afn}h5--^f`x%56neOl`?-hx+Og*xT#sU}Q!idNCNY!mT8lLJS9RceaLkfT z=x06oTdWK}ja0`!*3_zG9v`PKI8Jot?rys#dZ-ya^G>ETLpW;6?>UrzheyIOA9iE{Pu>t^vx&W3K$!DpaGOw<)t8IR za7l!{mpQoI(p1<;yU@tK4<&k!ke(@lkS6u-WxPDw>+{Q7%jcmF<|E+Vc?Oj1DW8~%a% zo@qaBM)ik=;Frol6n2ASQs?ILP>T~XCq>TYnO(Ni`W7SaYHT>sVrb2WSGYABrEs4o zk-o$*qVBX*iuBzCN0EPod%1Jl+M3s;U0<8-h7^Dg)M&ThZiyGD$@KyK{S z25xK(33t6hpIBqtl`__S~!1|=iOcHNKxdOvBO8EHOheJU?ZOwnB$zNLSW%8 zF0Oz%uFvt)Vk4({R*FA=K>B}1Pp?9tlH=VQ=2zUk&FXe`5r?Gr(M3MPt`#@f&Ccw2 zlRL1|tmoj&9c-wjW6TD?k86KNuRGdcy%8Yuz3t|99LW8)-63?2=UHA>ny<9Q>f@xc z-)Oh|k2iGvUQgjZTO~C{_V>!pxo!+jo%PONlRTW0?id`1&DQw|@i7mVpP3YJoYw?O{ zU51#LxZdN3ZfE3TE`aeH5_>BN%?fUWbusU25wXUXAMn&X2WoPUjh>0#g~zXCSovft z8+G*9Xw3L0r2sK}%FM+T4&Y`3z$Ov&A?*L2-5{B3wPEbrQ2qAR(ac4cSWs@?#1B7{ zaPZ_E3b3L{x$+;(IZ|wQdKx0D`N&w9DLU6MVq%bl*wL*R9k|*&WUu9ld?9sVlXB!j zq42YT)ehdF-@%S)g`SKtpg{_jNNO|;azTLxb*p(`Q2x0 zav<8ilF5P>G>(%V=!v?lCI}>jsOUnhY4uUt(E>!qFRECzd?!pv?_(2jItw}RF^>&CRB#1+TPR{>WPwcG;GOaGj)(f}8 z8aLO+Oxyfilg5reCEh1HZq`p0i^iNM{){adX!hSUjxu`onDqcplaGUIR)cq03$AOm zICGUx!s}!eWNM{KMh~@nSormD?*q5pVEJPm66V3M@t-Z&s1d$**!ug{+35DMcn4@t zG3Pu)J$9r5JEjVb+(g`C;gO%Vq4I!LR=aQfTCMi|$_82<-hG9Q-tz?ixZ+go+^Cv6 znU=`x{lVg-avea@xu=neB}YpLvod)=FC){OHB)7#D3E{b_g7ZzM~JlT`HS_xU{-g2 z>#TMQ`S@H1U(c6i>OLlDtAI`RR4Ii^H7L7;FrH2BU4Su-0na02jYsV)>=eUKQbN@n zRk{XfEMI5fJQtT}bw1gDSe0Ad2)!cm4rcQB@7vpshpVEWF0rJWHRI{o9eKx8npbr% z^ag3ASfXvnNk@ff7EkYJoU?bF%Z1lq8U4ih{~wsq0!d{JrP1X{xmn8 z$Pl1C9bFERso3@m=@l@m)bdeYT)h zW#K>1B_)+OGhKodrQ`H*Kd`*i&`b@Dk>pI)DlKQ@Z2jauV;}RWlxM0S^%?Nv>i1*d zTjATy8Pl%oGn)LOqMbfsHe7;=2S-tig4zQ8fdBrSyYh&&r;FQ@V&NWs+Rkp!Y;S9O zBla}qiuljl&+*RP88xJ40=mtMUac6>cKRSd=uw<5YAX6lQeKMHAnvDBBF+bh;XjX2 z(9NmcNkw3er{8mY1n+nM$>Y2GRe#jV;CCYI>$T0d8!OO>>udZ-X)BuQ1OJTH9zs?X z?-P7h{HJsLdg=43U~@Mq<^qQVR!#D4NiLl^y2x>z&nx~LU=M!qu7UG#dmMSKYHa2R z>!YufD4Q%Bi7t!8DER6zr+VZ`Xm2~JdcG66A1#A{8&AO^Wd3FONXXk z@xMQ}=}^~AW<7IE>qg$++}RTY!GO=IX93O#X0La=}FwB>m z`AUqDBAM|)eO{vb)m2rp4}a;3( z-01!duK@2j{7{DV83sQY6)q=HrVsVFhx#Z16@%W_zpZ$y8pGJWUQ%bxP21;;DP4gX zv9mQ_Z4>qnpY9$Q$%D@mLL-IjS|b_VFx^gHq|EZFJ=n;53=0n6jn~q;htzjF4#ZwcYM%b_%jvjDsZJ=*YLG_9-<7N^pos%BxQ$W z+2?0Dvn<~EL_^W7gJLO-U)F>J&p^ocE91<)7psDy7vmwl&1O%UW{enOP)soeC;h5Z z0v81ggm)wW?^|$yhT>JUQQoOx8!tsDUwxiV;aur}e3>_@#VCl?#QS*T$!N@9qUE!l3Nra21?lb}^`^@rZ$_)}e?+9cf2k46UCt%>9BAISt zNY}Y2_`JaL3=^6WF1n8Km6=oq<5IfjD?|@ z`Z6`y>t~{7T%zcm7q=|@ar^7_xq|-l z&A8I$#ryE+Rp0V5T@m;}%2wgX2cD58@UbZkm-&!OIHc(6v$egA!aQ#*V7jZbtDT6l zFr@4wWSP38AkBU>OUa65;nowDd5S1P=L7u+4lk9KTfP7YHljZ43zX<%b*+9lg{h6&O^&y~J- zyjw3V2Tq;@1wugk>WR@4=d*s@mAO(?x;^pddJ&u8YGlvRb#8{!0?)9|(EGEZ z^FK2*vW#+eVborJk}Q;&c$m%tnv~C(h)jG^PW4~x7t_n$Kd@HC7n&cXOvB{}=dn^Ixva>> zlWxEB<#JuhRWE+^9KU%FgU$1VuD8R zCY~Aftdaj98lz*b*DUfmuf1-<3AF^lVWHmPEL>+Q6hfQDf%Q!}m4kM3y_@~v4ua0b zfkUU7aNwuABNW&}fuxEj;l)&gw52?w_QGxjmZG`{Hh~?3W5LN5V%#Xlu$18Yu-m$UJ$SpOwGInc5X*;e zJFT_1wnEiHg`Lo=s<7ab&~FVBmSZ`pguVb*n9w@M*0Lw#vx`@yY|YKFl0c>R258{y?>?ka zCyd;(#E9mQ4zGt@IrFARE1KG!E`@{gye7BKQKozCWa)-LxMrr3q~xYIA@~}xbhCWu z>BYnug?em=rGzh=mVLa!mluv%o~>J`idm*(w*-UL9YXrQM~#@4*k0+x)*qY)u06oc z9*jw@8uh!r>93N^!xiV?L?1%Xdan)^#l&gTc!?&bVrU&SD4tVfsuh!dXnzP>`BN6Y z3O4C=-%a{vBZqANSjXH&jwq)0sbcP$@k1-AD$#zdvRH_rbHU+Lz9e;-DIGZO?GbHd zGU89RZUwH!y@o#m)+<`4PfPBE7OV$hBFVw|?w)vubPF6K+rIo2|HfGiej+2;2!!uP zJ?Q3kweZbVe4r#Cd)kuO*jfOdY|(YL}kr*rB*y5ihKuK&<@v@ivE=-{YDFVE@(bluNbzQp=~hCG3&TfPeLUVC9T&{Ww?G zm-~*!7wyUSto6gH?qrMZ+H*+w-AjwWus~~c$5a-{%v;Qs!}=NVcH+8tYl?84ox=^N zbfOJ~jVW4wPg`U#o%r_w95aG)F3Nb&%*sRDKA|^z@2bHX3j00;-iWQUZiNP;n+L-8 z5F?fzZ)*`qE7qtp->cvY)c4qvmL>J*lygn%cw6H~?^W$FcG7?-&n=lpswM7p zG0OBs9{gcW8(H#VYJ-!YgY7%xZ)fWx>1K6`?|QaRq6$2yw|_iU`k|(r53nkevJ$25 z_loYH6@l)_Y(bZ_oE)gm)Op(G*KeLf-lYBf`RV{tN2*cMpqX26#%DTf9^23A6mZ2o zgT?t$LudQP=%bLBeDe{ct^C$aFZ@#5o>1Xn%Loio)t%ZGjCz)aStVJ9Wt-;yT<40W)SN5xSZl|p7KbTv9} zmN1Lld3Y_FT^hi@TDu_wVa*QyGSh{f6Q_i4mv8JuXj#&-dE$ZqR_5(}B+2cXgw5U* z`hMvCMrH%HAj6%n5I)ZH)ce;VML0{rt*gSjr0UOM4Nua*IuIy1#gifw$>|3-xg!qX>ZS%;Sr)5*C7TysU4 z=s)(erj10E6>9^%qBFj#%V2Q}Y^u^r%5UWaxri9l;!QV{glXB>le2Dq4pi6!Sd8NR zTgkdrX;Z8z{1Z(+i^eXkunqg8Q1rXduvXN49g)dZ3z(WN*WCvlVzaXoooM4KBChg0 zdKwy5r^`i=Fw%v)^RE@$erHvo)5)}9z4N_wW2&~X^zDioR_hbQXG#tfC`)9zO2tkb|U45JVhc?*|PhCHnTrp$I6Rw81kNzviJZ@>0%`V>0^;@XJ zY^di1Et<^|!llrM_1^~qJywK$EcDvU56KSXD9_)@x*jvqDalNNvRLvlVIn++tQfJ1 zo6?V8ZA!{8pU0@vbSd0_BC(FyD6n|=D{~!uSwSP&ag9&YZ)7F9|L4ymCjlB~y@MxC zafFxNTM(?see!bQCNC%mFhJ~ZR;wS4kRh$FhjdHk@g_wWf)7}mQploWiuBTTB8 zWz(8ONOi`6ZD22-mW`!eDZP>nwxrkB6`$9_F7JB^a`eFI%#shilehv3ODf$-pLzD?G zuLhiR7{5t%>VFUM1e^12!Y^afV$#~`8KyvEC%k=7>(nQvg7wFfLxD?e6UWzaeCV1Y zH&=@*H5YGVf%D-REuU2aX1~V`Hh_nOWx7f<(Ep{hN?nS8*tgJaJdtapZ?QzUHE1?V zVx3yh;z-y;>eqKW%~^Z78u}1dcSX+~t6%VGpC!i6FtmT`#RXw58qPV=m5nl54azB@ zQrg8x3ga~zv#F&V8XCF?wSGm30H`Uaf3~<~!<~Pi|8Ahf(c41`liLG&LfNml{Gw{s z2%fK;eSLCU*9jT81Z2f;q?c+Y$m#PWxd=P|4PWjzaTGQmAnV(;B=TI{ZJV1n*}A{@ zSDWX=1he%$Sr77eHa9m@iyaG3)jzoshSA8B@@yZ>Rmpt zYAfi0i!9U}0$!{nsdMqSPJrhgJ4YfM=rIqC@2>eSJsa=2=H-Md@}-nt)M}Wuf^%84 z&*hnuKu=3lC`&ZE?SB;2?wm;y*zH!@C5lFzzWxe*MZd^cWDQT6@(pW^uxkCyVat6Lp6d%2A5TSa%uP{6wGK7{ek&5_) zC59Q>*hs1$RY1IRmfbMX*FEgD5lv{R%L^3fkJ0*V8R3 zog=#@PKr%q9o-LZIK6UowKG`x?a*pQlJj>=I(c$eUJTPPQUsHKYx7hd(sNF}5qe4A zbv6mV`D;IZx{c|mQB1XHmg<+V_>?i=d4xK7+927QhlG*H@Yh!H_kJuj%CwPw#9tY7 zrSj)BYBeIUC;}xJ2g2?bcp+UuitzPkE)hnUtSlA&-5c0fu@C2(Kf=EVz!>akQ!U1T zgL~Tvz9WJnF9=d~lQuVL%fw8uhF_*7e2lui5<+k=_L*~RlPh$)Ri7RvhQo{8li>1v zWLIAw+!dhi58k1u9V%9qsE%@)G((44PR;RGLQ!WyuTnWA8Tb9QqDD*8B!5T(krm}N zpIG>r{*S1)jEeI8+J==M=n&E+4U*EKG{_LrjWkH3bT>#N-5pAIca3yP3P=v!T>}im zyqEuHz3cukYw?9O1Ls`(-22!^w9tu5dWd#+4BFX2_)#x%eT;N>#24x~Z(q%ca2T18 zqCO87y>ZOo$s|HYto6}M(W^PjMWu6>c1XL?8D`e%GYVlUh|^jogWT)@ByzytWbxe+ z@L>o#noC!jK7wcAtJn8So=-Jj)LM^teRusLq3Pt@rLD%}PvY<_I9&wWbbHJ3MXJTx z(#s#S2UACA`~CmSbX~k}i7xJ6BTtQyf>7TJv7fKFolpgn1amC!)5yin^hBt~^`T;7 z_UjbHtuA}m;t$htcPG?h8)**RV*pB03XJDNq3;TD^FMobN-vx9j1XdZZNln#dZ2q% zJeW1dzFiSCG)ixP=CeNyhV4~HJ(H5*){g)5gxG!V?&n_})J}okVV~F1e-rS$Fg`n1 zY=<9m|4JNrKPf0I3_PPW3ccBkKM3VDd)FVP+`!|$4nk0}NeFrD;8oVmgO%OG=K=0k zzHXalh#s<=h49k}RO<-pdau+Z$%-TCcw0WvdQcRDU^& z$(%Uwg8uzTef;oP)7O4-o>3yTyBhV&5*jMGSk}4rJ$qx!MZ@dXA-{c{P+g#LOwu8K zV8eaF#7vTz@8_oo)z1-fiKI!GQfAyAphs5%LR)A4_hcnow8$*T(}M5O4*au*5IFxC zD_i*>;z!Xpy~_WX>Ve4Qk&qg%h&LPcA%ng2ii3OCKH-o1;o|GYzSn{fpF6=kF@G>& z9QW?C^qJlHB2opDdjTpO^gb>PV&>5J1{A7S%(S(jY_$&uUHGGVQEsWg5~8YRo7J`d70D3-;2$MKX!yt(%N|8*8HV4QQfaoD<-jzkUc)A%cc{4-M5iN6*A zz{-*Nbe4X)8=n;faq6ATl^fc@5_yKUQ_Kc+h%8_K|6NxwI9H0;g95ABDwZ$G^=1dI zb(O#|4646-F9VEos3n0D1l7s@oP5$g0`VQ{bd5>Cyq)#k-OgBrF9+?Ubxp+JBOTnU zclIq91ZY>)2=NB+CWJzo1?~7Pf|}+-ILxn)qm7>~)96*GFQAAU$S&v8HT>_zK(%qn zz$=-QY7QinH)YyU7UDBJ#+iK%Xx;(8hi~_rY6;iVd+*Mv`T)CC^Ka^r^l}^w*A+aS z@@3<}LyD{2p|~KH1Z5toI6-l7E1rz?7oy3ZWUZ_!1@%`H@9sAxDI^%JeXjTM9J=or zuOV_R%k0ToU_}DyQNi8T#m6j_w92m*tER;8HSuLCC{UG7p1PC~4Z}%(`aA_nw{ha+ zT}94|Nt5ARmlobNpO8j_>0bm2BJnM}p}SCr<;gR$mMVnBmaX_pKO?%cjHS)P(lN|1 zTx*8cuEJRtvUdd^9>a~JKO)1Kes%@Sr-&%A1%Ke>N|eZ-a>Ams$Y=jfOiC*^bv?6^ zsBBEN??ue;=l}F)0{YG`X`T{Ne50?elCfXbK2_xns#apIzVD1@0SknLu&oph zm^gYm@MQQ=6rIru{Ace6TQ=;7wHJ2ntG_xb*AaJ}afd<297vIGqr+iImP2?Yd{2|~#y@-DmFcKAitM8uA6YB)9x%&Eg^QWkN_-Yyu6 z<4A5~(KwnDn|+UtIx5Tf_TnV31p_oCsEZ#KNgs*Vu5k9m51jKJwV3DN-mTr57Y6bP z^1zQJC2uWLI)WCM;Yfo;n=z-FoNbO)CNgbT{X^DJhMeUD&Qy|Tpv<{TMLh3Tz2Z^p zS6uPs4wkd0?-8)pod4;sNp}#|3r7wWT)KDiUpQp&yr*6samk!>BJbdjaL6O3n9ttx z)e%(TNG{6X>-)GriLAD0pCP(w2qQnBwlbR}XG@3|xwuB0x{*d5A4A>{3Iryi2jjNS z;|~RCzQuKX`%u_bbFr-U0ojla5yHMZ{SikYE)$i^r^OqTRDW)51RbBDi-MQLre#tR zcpR)L>0O`c;X&*kj6bsI*(ClLL+zn=!F;0`Yh-VS0f7rQF0_i>&x%jjDcBqdq z7!^LQri^mFZ}3Vja$8_^Gw?3n@LtSstA6~WY-XiBW@u?Y-&FKyF#GV;Ab^!EPVYXH zndObm8l=o$O_HRt{;5UDnBS1U2)pu#TJ7@C=^b=i5ynoH*M50|e{H<_m~|P~{rolU zdkwc-kIyE6$(9%&yyXE!OlWvKVmozNgZ7y3Sd}=oibp&<8{Gli5ixnvmYS0Ik0&0UwVd^p~v-5k~;_g^HC_w0_!id@DLp>ZO z+5Q0G0BJRTCpNxYk2v9;_WMt!a>ulN<@stQsDcG^mesQ8LpueAP~ zz0X7#69v6-u#TrkCm|s*FffS62Dks)eqB%mx82%yQ!&q~>$(bRt7EkV;ZWt}@d|WK zGVO)sJzbah0&g;H<=M1+SzNUhKxmp|6d$&9&?A~b>?vb*WNjNY`AjTih z?|2jWA2N%(!Hy_`PBSYx@oFQUPf0GZ@GiOQ61eQ`jOPm`^tz81>)}N14eRhv@^Uo< zVn(-ZMc2>5gV!Vl#SnFlFW7}c6B(2=dPP+jU;HNP1}2}zZv)k(@YvK=n`u+GN=fSD z%pM00h#1@W%qXgrBhNC921PjmzRuX9`S^Jsj-Y73;KA%rI^@x%8_`SoXWB3S;&p0r zH8xFs+gwVaE%iZXNk~@Ho%33`<@fY9cKiPh_X5XDs);`*fzqTx+K1FsF1ExUIL;pT z;g8#SMtgkR!yn9E#bf$+acgE4>!i?KU5UlAAAr=YRD(J6Y}D!T!^f30*io3+z~2bT z7|=dR;t%=WTt{;Pxa|?s%aB#v682t37xr}hWASWvQUJXOA+S!pj@J*>)i3*#lNDpf``L2Z#>a zdo7hz#L|&;wa9q_kJL}8Z^vw`kZ|rWKBw$FAd-O`S^sv)@J=<-%@H5X|=o8-cg1>PC{I&>rLevBGtut@`yQ@rk(dj<6z4jZe53+ ztX{}?#RxKw`|)2*_XEcNy5b$clDoo0ejS{wuItIp8w1TQW|6T%F=c6hCeioE2V(m& z(=|Efpi0CWs+dhoPI^7waqn?bIdL9aar;Uyd4o=IvoKau&|gS^GQ!akm>J?{@`Jzi zDaV!cr7su<g?~|{bbz})i!?W-L$Dw8MM~3qU&}pJ#p^n+zU*69`7}Ozw%Pf_IoyS z?v4CpnTKQp_vjP((lK$z8nor)pn+p_Fd^5Hl{~odFB@QfLy@EWYoq6LnbcTqA>D>@ z3p~u3STPdg6=_s5S>PBU7;GA;V^18?wS?U%-6*94uqAeXvc*G5=p1$b==KtxP1(D# z>+x+C&%V^Yl%a_#Vo5>S;QA8TgiVB6YDE1L1$^N7aLj_dK7Co(KGrtli_9_(FQB?T z&L*(96cKs^4sSwiV$ekwRs}{%|k(Ig&8Ahzo^I#E@-ulSkLzqQPi%xWw{X59f|4LAX^O!Hd zR@t>j%caAqu#BD@p-GS@#&D*sKj%_Q^rGl@GN4yiPDK6b6MFfBt+UHsj-$#)SaEjj#V+me?#+TI2WVOr`gSv&k-$zQ2I{rDc{gePa znqruZL3|CRvPoZ7ns&|Ufmu?m8M7JaeS?)MH_AU(Rcf|!`1BWTYfaXzNw;z!T3CTc zH!~MP90Ot)7=%frGhDe|m3ELcnj1*+e7BXb zj^=f>)G&TS998!fY2W_nHd;|2{)s3;TqQ1K>4ASg!LjI4*UpzC4N`ljP)g=}(uaQo zPlM49ccRz(vBqv0c;S+a{s-X?HIcO~=ANZJ0yIc<^Tbp*S5w~fY%;S?b!SvZ%e$O= zUT;7m)HB|Uw)pdw@}c%j+drT_t;a43EcmB4!ZnnriBm%OEZ;SPRcVsxHE`S5cJb-r z{5tafTfsL0t`6pcb{tJnf?L15bgS3SvuOS7dbVWRKXICWGuwf2-GO6x#)MV|s2bF~ zD({))o`I4#SLm;MscxT5Osd?^!Hwfxq1(_1G4Z?87B5#AT)D9zoAXhyy^9KmObKUWc=`n*7@JDgKgWI2>io|R%L7pgq zO$@|Hnw%P>&OzifG(5$Hsm z&$%2xIB#jfGRtSdM`n==QsXI*niBee5sJIGriE?iYUsIj6lPch^$SriAC3VmLMAX8 z=LMK#X9=~qKz0G_AzbFqL!9FrIBU{SvK$OCf_Yw?m_7uqb7^L2(O-M74w>NQmh*`z zyTs5RJ}BQFEu8}Qye&@01b;1hBS#6lUS)WeEVaR0I|~RUksk9^(oGZ_=_nVd?o*-^ z_bSc$69S$MpdXX|x4ikx`4tSDUAT1FU79er;hMQk?_a!GPsa+0A%OSZKZ!|8_YJ#P zfcxP70YSD4ssu5n5D>Q51Ss0+lcxNa5TGQJDI@Ed0_m$d#>Goz_U68qIc=-zbNJ&lOqAC6sMniF}XUy5nLd}n2vSr#(AYUlC8 zXeTU2KwS#y$%z0_XFQ4M;rC*i?%H3`;7xQTWBXZ??Ny6~o@&V?+m0tcFUVzjT8&-( zQ~Qm{UVlW^())-dXoW>}ke0#Sf*+F3lIjW;et2dP8b|{6tn%>c9Gy2?{tEa6bSFU- zc6lnER@0&>TTh?b&JZme&3@gLz)JC9u1RMVXUt|IFJQ-|c0%4NcSo7P&ynHb=dNLH z$&RXqdY#t1wxRxBsOuHi1YHvf6ZgFlYceY8)=D|M=JPuBLhPAf;VHrGo;?+>Yvhw~ z>=PWa3x__w=@yJxD=%w%rxqr(27TEmufxbVE1O!| z%ijZ@hl6Jpkso1H5*0HQ07ncCqNhT1ZT-Bco#3%ymHDHuo*o;Hnc~lD^q_BiO1#ev zacLNUL}W>T6C~Pww;4s37tI|;FZVTcMJe3_Y9|zMi?`5))PJz-D7^yzmCAc)Pz0$> zDb0zn{~B+jFQNyb{LiD6mn=p=RCH$~i3y-4@MI|Bf~Q7OR$R};~XA`J4cxmtu_ld|g%s#Bpq`-qtE`RR&$_g>;V%`7&0%o~NyJs0}B z?XgduCU>_k497Dl5)ow`f9d1G53&np56q)_CR!qH6=ifA^tH$gn2sU=x-NO@#beuP zsSkgkO24}cv}52@O$<()W7i?2k#$@5I}4n_SOynsIxj2PYSg5sB5Uqu*jJwxe#{+r~!&&L6OH2Ifq*p^Gs>1RuJa#|;_B~>=qG*nU`kbVLmE*Pj} zXTM<)4-QHeu)!55)C6*e$~lq*b}BYP0M5jyao67ryhl$xB;zdk@&~OCu+9gSD2`r? zhgC&%3%vag3DyHv+>hHi(5r_%l{>mr3JMtd%dX>Wg|LjocZMgvUmlQ3z(4%IY9A!j z^1*VMnKk^VvSVSjxIA~qf~<;+=Qrl(u@_}~dj-A2?_$le2?liOiv}}SSV!;Owb}n> z8UM%;Um)+G5LY3X`|U!Dsz#PjOl)Jdkcpe2eJ!FA;x|6sL2yUG z<{9k^Td+1r`9)Vz7v5(y>E4YWNTVO`-q)4-Hq5AlN8Id5tnu5$alB{s6f!OCpX72Q zru5g)UlX3NaH0mBdsd{B)0rfYD|hI&Sl7MQ%y`gRnD53!E&h};3td8(Mfy=gvc3uR z40n(B$P{(y_?|UGx4f=r4H$YA5p(Y2WYWo14VX4`ripUBM>UXG$5eo|`}7KC)H>!V z(o2v25+*MD%fJ#t%hI-L43&LQ;*e&9fUf`xtT#iSf#H-sb1IkU=;YL6&G)uawnFhL zWepNkj4)Z=>ZrKPTe#m~5A3?BcEJsyEg`|H>ADd9XR|L;fCmVAfL;5}%IB}Nl~P^W z;G4(v5)o^myxSd$t}>m4Qip}qwTi|7^0Ss^rhcFjZkv2v5hpSFebz?kZS9TCXBYPy zu_bx;+k4pSuJc7Vg&7vG?Vq+zX2D7Pa@WX(WkralyH+s(*U$j1%$B7NSH#y?frXo6?2Wsx=iS;{3$`j*f!A16*C?T~SbDPAbu{nh z%?ET$9D9fK3Z_CtIDb!Z@YmJrXXHJGHVYgRDZ0O-GS2YgMBYFvQu$B7U#CqQ(yb^x zljfI9<3fObX~nXl%j*otM$lyQGp|eWL?_P@QYCe*dn-ld>bZAd#zFNM zxRyhL*FJ<;qot%YO+pQnY$H4yIh2~{SgGW&cal~V#dp?Q9CEWbWZ4Rl5^w~Ygwoc9 z{VlWxzj*$*=+QlbV~h}j_#WAD)Vll*NMzQ$Z-%wS@p6LP~_I+cV3&dwd*iRHMDER1p@o>LER0_faUY7W$lUkktH# z9NHsb6n~%hv_b88g1`}Y#kX9fqEKel`L|xw^e~jBXyT2jd03?r1#gC8B<}Jj>*T~xp5>NBQitKU zQO!ck&h(12rUxV?I626POUmrd@oZQU*EJ|JA5eQtka2 z=uhelD@6{z-Qfg|kMx?_U6|ICZvsD=k(g;^;=ao(mEsA0^<&mA%%_HnnUz4+FyUF# z;{|MfNAej5rDBy8IEpyyqZguQR}|m9OGaN}z_fB%9N=*HeOwf(00bNEF^msC<<~W9 zpr~=EaYBF3O0(onUz&y>P;C*~_3EI2* z%1^x9tOLCvt7>-mN_%h>yAxfM<(35F6D0fRZ{UB|M}4{87cSy;iS-JwdR}!XMnP0k ze7t4Cp$r^*+JX28K}Sg0@inJj@*ibviQB|2caCsg`NYEEU|i{G#kDe^ zJphxOWGkJD6;1CpS$+ChYXH|aq-LM*V-&?NM?ypBY*P>wzPb0zoLAuPmaDG~va`vt z$;?&zZo(9lSj}4rj(=ZKV+TDOz^$UMdsiz!d*?D#-S}0kQ0<*&LKATsHJ_NSzM#?9 z#h8+Esq=s_FT!$g`uu8%bkxoI!h(|V$2pf4fJR!UaJ=Q+5%bAMYe3?rV~9Z|q*tAN zvT?JX^hO@kIDX1A7+?Af`*dp)o!b8b^~>7&K!=CGV-hu;>$i7isP&ruQN$YNPbi$hdn$Oe<;wtUqlFti1~!ohRv2t3W#;5 zU2xM?j0govepcAauSW-erGJ0rU5lLrDvSVR$mPKr&%t3JS_wI>pudIDgDfQ_CA=d! z`VwPvs%uHPduu*ZqJ<>asxv>#KbTUU`JM~=->)lm3qXERQP8!&BrW2S$D^4RNLCWq z_wZD&*U)wK=R-ga?unO&{ykcRd+q;&lJ#RCTE$!cNG$G99MPiB~ijvyiZ{k=^wwD*Z>He4r zN+&A3Qbz|C&D&UPk2Y1-|%H}{lHzai!fPy*ZoAW!uS`UR&R!?c87MBlPElpu> zivW9B5bYfhp6GQ{)dDnHoRO_tz&si3Y>$VT^IxT5mz}n9&IUh1lZf zh9`l4q~y<{Q@etdwOP!*#D$zu9!&G&JRq-39v6W=jb$~-2W!aeK^>1&AeIvRp^&mH ztikAZWx9}$1@mOj6`zf6_jzZ!+WikcSi)}2`rfSHgePSAp#qY zsGoZTpW}y&C80-_Jx*}{Rud%~8j#>7c#?f-OMiR=l2F)Bb-hB{h5ocj2q(pt*>N}i+QgN>K0xfd<>i{7* z@iLp8X{)>j^5q44clQ};Pdj|J`N*NS88-RVx^^s{*Tz0m!CEh1^^yHnQB6oZWZ29! zb@_O&gc)Jf&Y=MHqkQMHJ8s5nNJnn31DH#$wT<2{^9iZjJNp|HzivGLZ|CfHjO?X< z+9-s;Is>tr^fycof0$W8sKUqf4AMW~IgEVlA;CK9oB%?A5#-%hqv#hTc?9jKRqwXG zOCAvHuk37Y1|_ZgR>Ab&51xs%Dsby)`}sp8XZge-M#y)IZ{Kz0(OS{J)!@xaCAMLc z#|WuiPh{%|Y%FACq>8X?tz_k|AO3Kai)~LY;?AC&vnhj$WXL{#rc}p3 z#Ro{T-&}?Zg9(D<-eO8pvoMrRMYw`FaU)z6g{blkNnVEuu**ho>sH>q;-uRo$Zqd5 z`RsJd+UqI%5#>ve8%j1EKp$5*Ll+_F61daODe~7vueW*dOuB-7eN<>B5tKL`K@rID zX=QGlzxQY0Eedoi{31^pMnOU0_#uQ6oBQKXbmO*Fp6>t>kq6z;HpYJ4dF~ce8}*); zpKQhjyB35;7u(&FBt;|tXlDqwf(CeZE5?YWp5{JWlFu7wh;?BEtV#v&H#wwuk4|zL zhPByp8~J~Fe*#fxv{Acn4n$TrSm*IWYWR=~{cmp;x{dp|-n}xLW#;dK*a>uJC8F!6 zjlV6e8a~kBf8#Tx12ysol~9)mAw&MO;1YMZX>Y}bvmYUS>KrR?vqk1=KLBHOK3jLB}}w3gJ1 z$wgcx5ixKTttU-9YeA-~sZtHy;$*UTDYYQ2*N{Dm!h=6L|CLrk1YN&=c{19yPyMyD zd<0mBt`s#l2av=$+~e&eF51XCMryvuV3Wm2{zOk8N1-Bsg@1}AgwyRYY;DrVs`Dj{ z^x6lfPZ`Aa=0mGjD`8EOX^aPv=SHN*-bJPW@}d-9Wd|O^owlUb6|jH>$cH*UAY^>5 zx^VvyV+B_jS*w(Ij3?T9C1+<9)Ce!`0mH^+=u;}NR%ux-T0WVW;%-m`x{r!J@+Cl5 zE=2izj1w{rybN?K0ORaW2SL(TlhC~bSCtmH;Bj7DzCpr!vW;xkN(qNI$i}#HBUG_~ zP#l$`F8NMXC7Y4{UvNN&0u)cR=#6^5?dn(d_QJPa0l?1p*ykP|d3e8GciawZoD?y8 z9nkeit|+<;XsQ6LdD^-ksHEW6b2(~Jgtq){zPD&c)p17?#s*DKLf#d&j`OA+=Lm=B z=T?Fuq>g8&ISZfItr%Rcw$|3WBwG4(ZR_MB$Eyq|+w#k7A3geZKe*MWz5Gn2Q9Hg_ z9`?3=eu6^8gp1uKcdmFLJ?(7yW^e`&$$ehSEDK`;WCqevLX{QqP^(b?jNCH#X_oMr zH$k@CwEAaFWf}}6I;=c@uR+ck53idYlDiF77$}%yT3`S@_}7maTE96AeSNmLw;G4p zTc#qL01l-5Yr)9>`&bI1(b6aenVBvTa*|o{VpX#x@A@W-f5qbKV zF?ugu4l0%oD0w^uj4l8YrtJL?q#$P=@k&Svd(HpM%>N>b|NeMd!{D!kY>d-uf=+9G z+a)CI-nSJUps23C_p3YGF~)2i>wU5~)m{?cvXB)U`oou2jEhnfWa{8DVKIur`Z{Kl z?xj^Cy)>w+K23_ie&FsH_y3(pr3O+Ho406DgmTU_Ygi;6b(_{%JzG{#Ok^XpgK1fd z9!NVM%Hir?;+`j%;#V}`!qM7ovrX9U3mpGit!=Ej(?1%|iss1MMo=C#&&oY2AMsk^ zTj$Etr*BJ}&A)2Gz4Gj~+HK})eBcWM)lj5Ydv!}|w3pOn{odZvWR2>RR$atDFTg&b7iFJynfHu6Hm|Il-*XCZ>Ialsc2EM zA|nAd4o}NnhsW9FZwLP*dziLCbUlTIMbWeEAj*TU_nGwK(q+R@lSotb%f%qM7?n*dHlqXRic=*_}j z=C!fLcK$oqLV2M3Vnf5gRiL(fCVkPuiK8o*4$Cx8WvT2w+F^raQ9@bIXh`jBk8Tvv zYY3CnZUzkn^UI^b1?bD<(3>Y@{6KX%V`CWy6>WctDO+kr3O%>%f$C_-$h{=Jk0sd~ z!8fKQO28n^u+ZsDIRGn8>IUpd8e3m@u3`Ld%%m{zsQ4+JzK~mt%Q<#jfDw%UIlJeF zQ+x0X<)-Ypxw+>_Fz5Yz%SVb8ukZF}5mSs2awsDav4^f?kWB9M2p0lQ;Y=@TP<>UiHyKPRDTkk&EkzCv5iK`%zb0A`QM@bP6p|6pcd6%CiZ`}15*s~(nh1| zGCNTpmMRZ6Dh5FRTr85<5!69}S&uCrm z=!MAMm!h$g9JjJ8c4$ij%c5Hp@xtq?PTW+6U+>kBbjQMK9?Q4)Z{0=xk8Y7X#2U+N z$ab^o`_6G)=(VpIg070uOn^F%nKn>6-|BEnI@O@ZCV$7}!=-3-iUV$eIvps;37?dxxP547){HP`t) zY~IgsrtQIcH_3-SuW~P;B97o?Y%02`_8gbznuo4!U=4XWiXlZtZUD6rh{f#FWMP6LAkxGqV>1Vo9IaNaOaX?5Yw|7af4di^@19LHumra@o2 z_jUtru*>%a;PxEHouaZb=!Fpxp^FQAD)Hz*@W&=UU1*r8mi2uf$Ls-FV!yIzQ!|Mx z$EtN{R;4#b-I+s8x~hD_05>N8?4;-(=KSTH-6=E>)YO2URdEA&vlH{bjv_?=2T<3s zRd>v(QXUfi$NLlS%5tKk8>?V1TT&=06*r1)guNUS!BKJ$VeEe=nA2zW@N%fr`42<9 zS-Vir5~v{dJz|vIp7{`!^*dK~%p|(cbNW;goEMMhHpW{g{QgmREMHt>u^x0%ych^~ zba06&QWeXdfn_^G1^;Fbr7ju+8#_K@oW&u*sJ@>B0}X2Z+E!NC(1Y27mk~dLxj9&8 zN6Hv%rXN!|YVvJWccvTTma+$K7MZh$o#9?_I81DeO1Sc~C$8wiWVDonMY2SfJE%|L zc~3zBzHq;l9#KVziupS_P{b<`Yt*ImfpH=)#Nyq4bCtTjfy`n-3EN-2PjXixA5E68 z2fEWBak%*u&DE7s=d^`a5Kd?-ZWz8U9p0)IC34%}Xw zUXQ8x)41wW4-g9p#JWgK-{8Q#HP*eDtKLcA5^gaSZ6C}g=RIySJ#OFxtZ#3lvM>}(gQ{+d z1RL0z?Lt>gx&NG&ndoEcdAb-rqg48+~6-no8Xf)$UQE z%JcixezetoMWU@`pW+hu!DjnWWZfY3@2U=P`)ZHIJ!AEzf7a>hcz4xJ;9B)YjzEej zYQwUy#V84cx`d+BpE=Th$hh;Cm?i6*dO7aq8?Cx&xVfD?3x$z&UR(W!?`HFWMcT5l zhpeEQzqa62v`akw!MMau((T=Uvhsdqib%E(6q91c9_MqS5SA6!1$aH(FcRtzKSrOt zcmsFncyb%7c{?^rC8#c+FXxwhl2t5Q@fLrKn3MNPQ8oRwaD5l6lE#BP5iHbXSl64I zAk|#kI+J>ts?Qx!70&ZUGn-YNxXr)Z2<+C|YL`C|xm&(xw0f1rSK1~IuLl2_Om!eO z;w*^uS8Goa4Ib2qisufT(IF%_ibt3wYjwhR;(>26Ens$!kLW?4J^;-f;SJp46PzyB z9yNJU)}B5s{u%gvv~@q_G3V^t;mWxVpkQhJ{Ru@Lz{I$@4Bd!>JYn=%o$=J6C+%kk z3x_{bWJJ$VerfgLtMs8_Gl?98Go!Qm%dxEuyRtd)fsUb0ik=O6AJya_9ztM;PWk>T z-=;le?8mGG6U)T6_@J_rh7W%eFM(#ow)4CNe(lSA-G?-r?OW5Ih zHkg!70|NPox|YOEXUZk&)<>ycB>^#D)5Bb!L^<$3mP-byntvL6d)1jXzhhAIYl90V ze(VOpIGHE(=VJ6~SNg<__ABhh0tPLH*_1P{v18LzA-J-5yE~GZWckddJQ-ZCKLYV($=-ts zFD!S^=4uz`JnZ$L72`EZDdH+(+6vSQ+th}k-3AsM)xyZ?8F3}Ma=2g0lTBjW`=)@T zQX7coT)QPQj~?BG)RbLHt(g%}7lIPP{SDai*P0(4SFb$m9(>HioQhne%&9h?=~>j9 zZlc$8p3`w=WBGSm9*q4YI224nM0q$S}FHT_z>HvxTHP(Z572pp9*#SZ{ zx26j|qDlb1*Q_BFVyP}f%R-Zxxls3ec4D&yM9b;pUpKf%%%Q(XT+KD}RhpJpJdAC) zbDihSAK+aYtR{iYAwcIKT6;0~khKJOqMjVyXBj;;*B#wDR6OzcL1p9@UjYn>z+&hT z<0_Y@Zwk++TUh~6aQKkKH|6jjXe`)oTrjZ{268pA&8dVh+ru9!g;mS-4o}|ySP9I( zBq`Kn==CJadw2B$Z}{~1g{mlFge*MILizA~WMe{mlLSSCBeUJ`30OS+C>;#753jnO) zX%71{7}6fD$`h66@T&;B1VJ$-HUUte(|u!osAyo(gkda1r=;Yy^1Si{RHDLr(+&U0 z)R4v|4@UIHkQ+1`(F?v(?hea!@K_Zf98s3GU$&wQJJ6jybC=Dg*{9@I#*(x_rxzhB zd4xQTiC;$XLw6SMf_g6S^2tpLKuPy`1qQd%ASp3R4wd%fQfNa>z41Fy$jN05ufe?= zN5f=8Xs7186a3oA}{YNMju6e9GT54qS62uP18;>@A%b6V55Jd44p zvxcQT41JC}qkVhM=M7&9H)rw(-8+qv0S711+Ot#)C1%!^QIptW;>rbsB(E_i@`?1U zXfI+$3l%{m(yw2H&RgTezEMg)pM812`9_ln^yD)=-n+@kI*Vx~N=Xz(%gFPu|NGzT ztmrvPq|SCmmWy8wyWaT!4F39}cw@17!?eN^9sG{;DJUr|>~FkIQL2P9@-eNZ*C z;VoM}As#g8GQz?9hw46Fi6eRYegg4fK)Oqm0ZHyWR?xEz)Yf~9wc@J+bfrm$jz{-! z!)QAg^lj>46I45$`e-6gh_4ITeV(V~J%M~TIB`re=dYxp!HfntF>GNBNF>r5M2GP< zR>Q2{l3PwR_WW)xdGub^fiC;|FYnaM#2R95AJyJItnqvj3^<&o&|{TLq(i+D3Em}M z4un-6Q@XdhIJ*`}jX9#REW=a;L=RxpuFn-CX`=qKwYa@dZL{ii`{>nkcP8dLCB}?j zE>*V>4G;cJ+HnquuEo|4%OCX@S4$57;~)-IEoU#rr#4Tle=Q8h*Nj@hPfT+S=6RqI zLtfgBY6$w(63G~L-S{QFY#RPj#8k}wU+$#=8be~^?&X13M%&Z<7g^zPUVGCaPM#ld zQA0^k8b^bPD`?%(QBl&!49I8`)9tZf-p@U7;47j6A22==#>vf+(o!gYp~sLT_Rb$) zv7`dcauH+y*PG}fA>FkWPmA|Cncg|EL9T!H%4OoCS@eHpeQdd689R-RvC#}kY1Wy< z+QGHe=ZUa$Fh&vKcY+XvBuAwM9axI_4ncw!0Gq723NIlDA-=}(wr2mHg#I`EgJ814 zG-+}JvsJ=3e1LWO2^2jpCN11-OVoMxX^5Y);}qhyH&ne0Q5fgNEo(>~ltV55o7cxR z?mSbJIwG(Mptu0zYhq$TKv?)qB>oH^ueHWo=0p~&HdYH_Cpu2vC^6cR%Sidr%{IfD zGrP&SqyN8v`qLJhpp40k0oK60!;ilhl*cjPMPp)&-<=qDe-JprY6C2!dq)8VhKF)2 zRftJM7g|tzd1y|8mV`NeEpy@E@rGCfT7_22wJ{K|qc=PfUbg-JTkD>>8JFY-Tx(yYf{ zZ}Af6Q7c&s1!PW^+>Clusq}&YrtGIWo$3mRkf62}bEQgvLz=(CuDCX930aH@p3FXu7 zQ58phb)daxU4<6QBaFN);6$+`}d%BE~vO7ulULNEA5a^RWYRhI9T4W|p&e$rBi zKun#NE4-|Cbi+V2M;}s>krC%c2dCju=F06C5r(Y$ipYSzyNcy@k2^CGimkD~54BYp z70{d{kgGx$q733Pw`K!}lL8vu{nyC5BmTSdX_m6ne3b90C`ania`C+u7ooGLF_Mdw z2DHw7JR85{47&FW?T2>GD!PUq_gV~}+(L+s{66(m!yQ)df$rgqOv?zr7>}xODr4c< zHV@6mOg&)SAjJ*`)?@$(>_kE0rQ6B0!^Y0&R6Vh|Y_umW{M zxV3)G8r*VX{5#gi?cQM+&HYcD4#b%FGAf$Q>3yMw{~YiK|1&XcLwU>l$M2vh?Vmz- z)!rkF*oc8|la8Sb*>xY44+KEo z&Ws@@Ak}dk@wgzGbp3^TJ3UyAyPAL0z+X3Hm9RMQC;J7u*oWPo`xc9n10TfeG6XQU z0kYCSYNVofK1_fkS>m(tW5G524s3XLcZ;Zawa@+XAW*wT9>(fF8sAn!&)!R51ZpPw z^ZWii*=HTQt|467|Hyf{*mb%{ZX8w+fTZUs%#n;1k;3@y8uq8iHR9?wA4@K){xm!0 z+-Kq`9Zg+y4UGT|eS9`%K)E1ey~$@G63G0VMN2Nq7ITb*7IpZsYju;Oy1o0;23cj& zX!!J7gnkJH9++^+6{pJ0DPV49npei+42zTSJWtcW^5G}~-sV`o@vu3Tc>`9h>MHxr z=VDBVT|~+8jx-C8QvJ7Ho}q4sgDItR{ic0f%{I|eulKo ztuWt2J24jPKbKZ8!`^HZKQH^qw$B4~#;XN*ail*=SuN znUILa^0SuCpd8^=0|C+xz9RxUbOL{MqcpER{a6OJ3qKdm@=bg0u9IO0kbNzh77)WxfET z@_(8wL&C;#*y2=9jw=NfuY}rv74=n;mT`mezH=3r*s8t|Lm}cBHA)Mzo!bLG9+O0wsLSNUX zr=(3yhbv33Ze^uee$0?7i~dpEN;q>kZx_~KTO@+a$b8l6>kHo-olM(*qy3me+3>ZC z^}?aPA2~l~%ux`5|9*#eY(WgymXN9z>#`yNDOA6#$>4;0+=|eiO0-S-k8F@AA zaCWbuYV(SZLgz)PD(ZtTp-LZyF%bGw4Z4&->&u0O-e=FTq9Tj$Kw0&T1N@CZ*Lr|? z6raThttXnNZsqjRhNj_YB9I$9eblBf+5Fz^*>UzwT`T7ySR)NSnfkHHGQiH;h@J7Q z_SIuT)dpnuH?raw2`odjI`wMm#TK-elE+|(248rl?ZDB4_wN0>5neO=6HfFXRbAIF0sRwXM4_V(Dq|^^TCnZp4IHtyz)+(c18e#9w;dE!iomph;jh* zKZ9ly^V)nEQ=)gw@G41MaJL~el>Jugy%sej^)J6e$X=k={3oM34aWR2 zh)-ZbEBZy1-Z7!S^4!lGslOcaCkxAU3a8i|#39YrbsUdR_R$h7(xhR4_iCE4|Hu|e zN2m9S^o)eO94@MC7E5%~ybZ4qyFCt%(A+HMw{LxYlGr#n2_;r(m0LjUdaYQV0_EW; zOZf1I*4{TJd}Q2!dV2qhX1VO_qtPC&I$NQa9$Q?m0EWU3!qr+8(lAs8&fwTjzL%cE z|0wuI0SGsMhR-ix@HW6e3%7IJPrI%AOs5Dj=cb-}wERB*t6H3)exQTT%HBy)a1W50 zqDDwWOE4DpRsHRzfFV3EAL^sa?;JRh(jw5$(QYvj1w1VIYh~a{ozMw;zSDWB7(Y$-HMKRNZ5N7Ih zJ>%&5u$4%fMV38c8DC;7N<2+E2dywlHsT^GK_@Ao{r^}x3$G}@uZs%;0xBR~N;iUZ zNQVN_-H5bwHz*;}A)OL}(%mpf3rGq>4?V&FLk}>_%=`HLz5f7*cXsDbuSU9K)&;eHaBhbGwX zhhNUXckPz%b9xC9Fx9{E0tA#pL%2{V6mWjNc$Tc1X1lkf(cEy1Yy`JigvSrHAEVmV zuC%p`9;U z)27}&K2e0&fXq88`aB^2palSA_40eeWlDdb40>z3le%B{tuHS}8BNwA{nvsDE7*dL z5RXmA+!f!ht20<+N~8^ex7G*fxg-;SzTkm0Zk-1ymZS89(=kA5fo8>Ql{#!zLk^w1;-89k`I#+HX zJ~CTP92HU;a-1KJpD_;*2~L;Q4%!A}MNRk@e`7Gc$5@Tc@bOPAA1y^ z?XiSs@O8YaVwnv#X|ornQ-e4uIp1Fe(6|X924sbf!<;o)dC`6Y_KH{)T?y|L(_a=D zW#Aip92Z>p($y-tE}FXx8l~F|>_+;+A+9!HL%3NLNa2BPv7Xu)0S5`Q9;2}{O)~SO zCV#-yMM6`PgEAjZ-34L9y_(D6?kD9(?|VpVg#Zn=YZb~@4Z+*_Mu8Oi>Vv0GxmlGBWG|A+NURJ?ZCQ4ht2YQYHbP{sh8qA?KzK zce9ID0Cri9`v1D}^ocD5&o_I83PPq@%uUAwXk;6sp;~eCE6(UYq*ziR7ZjKaEzDpS zyf^;%*(?kZTOF;?5h#)4)pFPgKM$+YQ{e6Fg_FDLAzhhX_=`xmf~BC-Eer$S=B`XA^q)Mr!k#|Eaea3^bOj}V{h zHk2h|EH=~naWc+_VAQemM=OHV}9@aB8>FRA`D_XonPuC`2daNPc z>5iyuEi;F#QUe)`Spl_-0GuS?DqCxA-YvYie+Dfm)v zS=Ge4p!O01^JTCa!S$xl|AG_DbnP0GOkw;x=0yu{_uYgPa}!aUZBUEx2jyV(`I43) z`v$+FR>H!XlBE);ga|Q6Zw9eM0Mnl*O9Ndc0Y|A|1)#`y^bQUEvL+$OdDXWh6NMW1*GC zG^@+o-qKoBeD`dT*wweE$T+C$P|xq%s$j$)A>I||FRV;)%z&c+xHFrh7jiZob9c2z zcc?2*(s;*Tiay=K_XEi`!)&C@5$ND&M+m&H=XbFc*0XKv>2%3}u1EpDv*3d-;MUMk z?&m?k(MRJWucgp;TxXiZxJsVtb>P=!qTUuW@fK73U4<5*%wp2v889__*M#kMk3cq7`)yt$~gRBytXKc@F@1oN`H z%Mp-Pwl42Ef5dUh?iJwT^Cc*-AQO3^(Qk4r3#S!>qcV@cd0W4<**uu2-ch?td+&dA z(TwB$qhJM)rnjou9x3w8TC=M(fM1%N-o~Z;Znkkdb?)pH?KG@gEtx;4>vCYPZLjv9 zuho+oa9RK2rO;K9G=|}~sB3l7L_(zz-8v4qJ_Wpa3$8_4ZhuEsIK+=Gg8;uHz_V%{ z$YTf@1YI}DZX)@KfZFzA`ho~gLL+mdnvXiv=27Mk#(=y#ae&1)Q2Y3BW`?tQX&huKLjFFS z>4V_IJVaj|JX7N$b@sF#9c2X&3l4XuU))c&3f$#61`}=4$I`-R^Z35uuJ7FOK^4s| zb2Q#%Naz_{r1#+7+v4n(cn#kn5i^2!OZ-{!VXq=@ilhoYyftG3YWKxZizlSNOdkfCj2^E zJV{{q2~I(YCRENTmN!-sdL%O53g_PT&p_F%UyICJwP9exmpvgjD}8+F+(t`!d&Pla z)g0j+V`w3mPRDhK6StK!V8AlYV-xn*6nvH#TY|$S(qC5>0UC$##4WntOmsqn=gz$} zZur&gZ+6rpgwlXv6DxtLaLE@XALSw=tH4cnN~+m}mhUN=B>A5{hSj-bgc%$P4H!@c zq&G~tuD{lYsz?a`mf|JXH879QlkwecSqu+&H6Y}MO9n}@`aF7|#F=9`&QffJLWVN<(8@L{M?^Am9zVp6###@@gsz7nU4hRQ`2N<8C&Kg` zF6RCu`PPbUmdjXC(7KNg1TZ`*@r$*4dWSD1a}9{bBllE@-4W#mrr%M_I;3! zPfMER@E=Uf-akSwD42fqBIW7Zc+vmv+kI;RcKPM>uBSi6;A^`X+bjU8Ps3B2HLix6 zY>(^F0h<4wLsO^vdr$moLnWd~4gssjuk)1!QYplBbXlq6S36`O=u)+ntdZAhsue4x zU$rn3|M$+0!SH8h#c!5W6&m=dp%J zw#Wj(7ZC`E9Wuew_D03_SurbXMNAo(nIFIyRm|mu?sATy>-VU;vvFD`my#`3j zb(O-9fN2~0>2+W&uMqLU!Fyfyzj1<96ny5g0pB2reD%%5pD`2CU{~zDJ9`71w91#9{gwa(e%H93;?2V2r{}QQ zhh0REeO7e7Em^Di-`Yqr}GOSw0N@?0QUHbu82oja|~EOpm8ShThKW-ssGz6w~W>*g}z zPn(jB&=gg)@O6_#nRkba9mAcEF|a}gB>Ikx=hrMeZxLzegyGvEUTGDka&f!Mt#xk< zHzJ5_#veBBTywKeCmG2vDDVsm(jcAdwXM*z$zquu zkE>_HtI}KeeO79BtJb@w=JfQGBNWvdpdaI}7!r}TLo8Tl9=G_C)}y~>W+FA3ZCo>^ zP^FPzypONwVg|RK4^(^e95Ex?@jv#@cW4H5XdSIueSX6LHQp3r6OR#}KKa7W+7um76sqcccO;B_Ta%&-tfcDyU>wd z5Qc9hOZiJm*$+0=N5kUfqK6XC7vAyIPg+}KvgoPA3@~b_F+N9W_N|rvq|5v65Skn{ zFz}$q?Ln&2y*Zp%qd%NR9Cx+R7VBPIb0xbE)UBgfGedvV#T%q0>WkQT*K`>lp6Z}` zezE+_j59WT2zdtr>do%r&m(HSm?c#Dk8f_U)ajC;g$CE#@<4`FxUyy9=Duv$6e2T9 zjSHCWUjt2*YVSE=G0Bi`jRVr!jLAOM`ZB7`8qrd@e*MD?5~EVYJ!rRN=D;1YdEU9)jAH(5aqD>Q!|6F zbH-?q@ZJM9{oSJl4fdY*NFcw!b?v-#rX+Xw7BjZ%{v%v$H+6d72UzoM1J*=V)jn0p zf=Tts+(2J~29xBd1B_U)wy}SRVS%hhyE$4dnV;94&bS3*$mPzklhu`3muVMj7wLjA zdjqMCG1#p`qvf25@a}6S5g`UxHvfJ_Sn@xb&dy2P=cXJ$exK(tQ#6XsM$QhyK2`EK z0}A$Y_VgaYF=NB*L&eQM8S_aHwBinS=^4{b&WQ!XESSJoujdFv`Mi+fDz$g%f&O-G zFdmR_p;Yl^r>~Nz)N_!-N@}d14$vOTI~No@P~dg#p53~V6OUzmXuX*~-fs!re4ik| z>F|Vo_bc7m845{HbZh*DuGv8 zxdKyEE)1(F8Px>vsbFV_r${uq%dx1UsQXbxzGL7idVNo25vQ`b%9}E(ln#&nap$Up z)Z*vY{mU%#1QL&%!?XxH$Y**UUAaEVYym$nB+ewz*nzH;OflOj#iL@VxHGmLvS^Yh z<2_Y37x+E`YLhrWcy0-ONxh5lM)((9dqP|$fd2rHZ~zWRgu3zHjIn=eJxQAiH>#wh zBml}Ttnu*SC3mjl=)q;>*RF{-_)I`F0MH<8i5C{TFH7{$9|YWo#HewR0F$0%2CI_= zGxt-N6($$>lQTztSaA)M3gp(acjCXtbsB0ZV4X;eMo_QY;XxRL6?ozzlVJ9{Jw%04 zfePfx%HM_l%|xwh*d7f)7m@^Pk?4m1|4pWvLJO0AJXBp9+xEN9g!9qR=cTpaU)&w2}wdX|odaJ8vTg z)-aS!qdo=hLRxS4~nXu`Sh#O(;s%*&_!poV@ zf@;O!E3Xg`2oVvOJKqV@v>S~06)wgHKWCQ8;4S0|zjKex;pGLLqSQ_PKG)G@8nr>? z#ldQc!Nv!qOck|neI4J&zo+hXW#BIV$ly2m+qgKW?tYQW`JqobBZT0?5r*-xX;p9z(J9M|CjBPJULle&mk5rkw$f&IF{ypTG#U< z_BxRaN)FsHzGr>ImtAK_!-hR{ll}eG&dw`enAMj>(=JS2QkInYh)cm-xIX#MxhbC` zU{>U1XWik#)ju1rK2^c&^*MVX=o^(WnFci3V)L#xymvFiIRqpEh37)UZD8CNE6rVv z9K=Aq;TjTpY5j-pM4RFKwqs}V>91H=f54~!<&u^}JVydqq&E|)IX*p2WiWmPJlZVQ zEq6cn@0r+0XVp)HN@Bo3t1>rChE0S(Mp*7a$SrRKGYeIZW6aJYsi6)W% z?=yPRX9&+?`|ppe@TVVOfzTI1=m88=_Ize3CD;lnO4ab~jU25BHo38idfZ@%!3X6R z>ZIzEvbG^uH;A;pu0IQBzQiU$;Zv}Tf#``|j2+rJ<5KUXEbTQY=e(jkba%Smmw$1v zXsS>)3ueTf-BGCAm7+}H^!`mq4n)gAapQSqxJBrydTs&j)#9ewQJzKCc!GrJchEBl;~ab}rg-VYGc`MO-eGE`p5rjvuiS zt_GD8q>1J;TwZ8!T@+cY0;ygg-*NtP7NbX;wFs*y_SQ=v!btB-=gtX6wNjb0t*hQqt=>8dC_U{NR$wj-rG zevHGvMt8Rp9Fvgy#%cJ~gk|U2slKL_5ltTnN{wKm_6leu8TQ=@$_teMD^ z=cEc4Qs<;_7Rp}0^H>SgxNcE0{{Z4d$*=zH7-(IUUbT|9_Jq|T(ecEgESynfxRwvhG>17;YP!bH4?GNGvh#o8PhyAMi*e8 zQzO?^(fVECL1Vp|Fc(mf5mn5bpCk2V2j7lm6fr8KL zJ$j!@eOBHpGJ$z)%9-K&%8`z|#eINM#9PCfRjtQn>Qw6E54)rUUC*0I(Ik0P#_Q42 z_|@xfM&bPMV7B=L8*aW`DZyCTVVr`()?mmagY~Ix$=?{)0$y)Jv~1GPUamrhitoZ$LFh!Nv3^&_P?lO+Z}5srDphd4yMq zP{Kd~K6B@k^9`jGs2RvEeuxJ=kf5106*>LIJ8ataQK2*jolSRC?H74G(c>pmNv~J{ zRTcmk`xa!(B`|5h4Kla91g6iraf9m9@^Te(T*K=7_pn0zXit}&>rRnCvT2h!kt7g? zGildhIH>=tS!HptOda^=$!Kp@D6S!$Fk~;1cN~%huEJn^voR}~R)A>8VgSm;1ud9b z2xxWp|ECX8<}BUxP)TD|NsW$#cXEHbq&bX6<{96v^Z zz(mK&|F&K;({OJ)ByCq%!*i12*>H{gmD}4IWk%|Yu6%lU&g*{p(E;RxP0Zpvw)NKG zhb-DbL4k>^0a4;#okJV>JfvTrH@di=hSZPJR&nv_%$=W)eP<8mgNW7TQyMAyKBl!< zo_+<;KRo_CDXI}Hj(#mbl|HEYlT{=?aX8_NFfoWv-l>d8TmFN#7d+YlXdx>v@+g}6 z4T|)a-fClat`YUfv1mlqm$zHCc1Mom@fhURzewt1u2*q*@`}+SQ*3CDW=8*O>}*v0 zOtudBeNrwF1sw4Tz6>i=*qk+>IV9mja%Syf#?bF2I~5s&#H*&?%YA*x+6Mz+(t$*r z^pOE_u*5L#eP(P@*5R=UvmuR|d|XE8cUh`}H!H2CYoAEmiagd;Jw}5s$KK|kCAagWdH~Gd{=NevU$I)f*8Y0G`&3y%V-dY5zJt_Vb zqED4o4{-b}vBd^^rx+*YTn;r>k z31QgAE(DEEHDQ78kOAH62gO0xE-Ws3N0$pM*7hNkPF^rx!#jjsAwT9A&ePQhmWJfJ zR49{;Es$A8O7rup0>c0|_V-hZE1`Eai7ifLB1KmI*HQzUJ&$LFfowfZb~&-}N#63} zM8P&E$i)c@`bp}d_vlXwa4 zhPEcd3RWc;wF$FE(EeTmsNfZ7vR1&_{!SsDvE);EY#^S^<{#vyP&(K!!Q#Dcx*-13 zuPwdJGSS)ZbN2}7Vb!5k;7YsSiY(z>%owwtUO4N8!3`27h{;=bw|M5TvJ0o(rO%j` zQduyaoYVx=ed0+^6sGs1go-`C6}nG!#&$Fv+*w=(U1rV~S-FP^k5w2R4*au7)r8L@ ztlC1wTtg@0r?x-SvE9^`j- zZjLkdX$1FE%jonu`>xXQ=M%Q&o|q1~5AP~gTi{PojR&v@hZZ41OjL!nto5%nIY&M^ zLx0+DfU^)vCvj1s4y3@v*FcjVEp*iBzG*EWZvBSxGZ%C_8}KTz;+5h3Xplt0ls-_T zsGcmJ-?S=<$9ylIQ|}!rb4nl~a*4aANrVKJ^HJMwpT`qv--_y3%#RM1ss&3z`y``S zkZ*F(>1Fu3IH?Wh3GDd=#5qa?3b>9Gz}z@sCS*aEGE?l>xBe;yMJkTk()5z&gimA;5fgh@l!JE5P5YR6 zNUL>ArxVj^ueA=c&3X{g-Eef;alCCsj1^54!IzHnMRj6mh?Cfxdb3*Y*H`>#$LG{S zJR7`onO%P|p`czs#2vb_UIYXM$&|P_nrTG2)vy8l{=uHCh9DZ#_#+lkqGlx<#>Btv z=~Q@0Sws;2Cv?8DYn_ugD5No>K4?e`-iwnJZ9tjtqzMvWAD$t}#+w6xPH2YNXHcKM5*neBy z&;XLQ>wrYlG*)%?FTAh13JtjX><5<8MZC|~LAOY5fmx_Boz$7-6xQw2+$&{n^4-~E;jUOP2V`yJqOEjYe?05$>~*Wv=-^jk&e zS}H-8C&9VtjJ%9z_hmuH(QFI$hG8%0bnPv`;7rH%bz}RxgUJ`5JuZTw1cB(GYyqdu zXyJm$t63QV{wVo5%K*K-HSUWU(VC;Z;)YrgM6$33u;4nqrm?1GRw{C!qDt6G*EtlY z=452U(kfws43i76`x_hF$)27;Mx+Y^0DU&c%2Q^omuU@36$f5bOqgvPbQxQ@yHgH??0L{unb=^E!Z>Z8oSx2rT#9-GH5W|(GgA? zzsQxl%)h%ObMg#N=10$z^M>?XDQEf05dgy+rsm^&1&mzDl%Fh^Vz2$;$&#ZS#nF5I$vn3sbn=gID3`zyJ!dwnz*q@^3pk~fCkD~?uNLt!woBBbFY%Cj`_#mWyq}I zp_mG zIQ*q+Ai8R+FS0NXnxEFm%GvqN<^oF0=B~af;&S?jJP;h4h>@l1e%q$mAuMgQ^1F7( z>&5Wb0>#hjDf35u`#zF6B%kM{i48xJ=<(;B229ur{`C9f^GuAoZq-qVY0U|0z#W-y8 zO?I9|?6C!9JLL$0^37kAVps+xC1Yi=c=2&wG`=`-X*3Obt>&kQj2a3z?md$U0}4Eu zvQ(>>=nShWAR-j_k<4NzO8zjn4BN4F&4bI7yOTEQfwX3)bb1pjTk;P{*!FNxywU?gScnwb{3B!EJ@KC} z;sX2xY=x6lh;CJiDQC;ulyko7YahgrKNn;Ja#J{KR6Q>wnTTGOY|K!jufXnSZSFnM zkMVFiBXvn*?>qOI;N%3x$uZ`0rQ>UUAdfKj?eL)kw*Ulze}<8G3lK)C3Szg?c!Y+C zT-~6$5gpK*ZfMq2EI>H~_=>M=J`HUCv60qdJXo!kFO)MRkI>_9G>}prTO7RWW;HV2 zLYCLIExI2fulXuL)!FC6#Fm9$cC(hhf9@EHtC!ScCHa<;)Io+9f-1wb$#zq@@y-ak z1f(Yu-NK&|;nj7-Z(51h#wdfR4ui(2@;Hp0DG1u``?@9D3A?TsJdCN-{n^CkOXqRZ zn-?dEU3pNvNnF_2hPP9!Z5n-L${Eb6-#}1O=7g@51^M^L_yMt#i*A^TrnR=yPk4Ui0u9E}lhH_zO5lbQQ$NCSz>~S&VEOmV z1w>{DP#AH4eLyd5#8j|&dU)wFFbbzOM_tqH}($$UOVvf@TVVh8K&MF z5AJQddZOON1|w(y)q5*sF8K?C7^oaY^K8WPI5y=d5xu-B+O-74G$nB}bbb%jfKXXj zDaGio)F0nh)Xzn?i1R%`@w9M_O5s)v^?; za^2kKHSpP$uQccgtQGZy+?}*T0=2{+C~Vf|n8h2hvZ@MxAuAp_>SLaY2t4VJj}Z7l zzp*>a)qk{mDMKe^7zw>+e zkqo<-e0X_6=qEvmIGdU-FSgQWUp;i`r17q3pTx(OjfChlX!{An)3+b=`yHqsN$;ak(8bPT^uVXr{m{2bk^)ur;Bk}(QwX}RaQm(( zoP+|a+`90UMKIzV+6l1@u5 zy3;NJZ``Cwub$StR*1iGqzCyvA703RRw(gALi$HWKNj#_Z=7?Kkg_XZw9=gJg0~-2 z?t+U^cJY$1#%v@i45KR;VC-Vu`90+I-swio!MGX$7aKJp%#5FLd|8iS($S>uGi(|Y zuYI*M+Wn+aic*F?PM;R~R{YbyKwcN?RtfBsb680|V^ira)(|Yt2FxNy{x??B^IAS6n^k^4H zGpnWbOtt8=s+{GX3jf}Maep&a?tlDRh^afEw6;mTDi|<|phfY=d+ZzyVmD-EJPmW4 z_!%_8mPuVU>J&m9uOq&`{SM?;&b%wq$$x0ez$KLHBCM%WJwzCLsUUB!NC%kQ20w^9 zcxdkRhsJnJ6JQfPxF58}S4ybSSP3ojuoYI{UA?p

I&Z;wyXs=;ACBVoRbdslTT8 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%0D;v;GGEAO~&<|u9TF+eSS`LiOm>Ld(im(eL_Gj z{@Kp1nnRKrLuOyPV&YlUw8e!2Q7ynBshn`pncx;@&K~t0(vJrHb`)yw>KPltJ%;Li zLBz$nCMKf&{Zl$W4K;Ln?4>!y(+PKxi=zEak?p%C-}2KLU)O6JM)~rpOo0k6?V2z& zBc5N+RTY(TX8Ue=7qBU9R7_s9X-q(v*6lRQY_U+0ZIJWPxJRFQ*TWl2RrXQ$8%mj@ z!Z9>y4Cv{W&GwJneM3QV6%X+2dREe<>YC$~scEJ+Jd?6=^!|Um;Ke^B%7{vWgyoLw#l-WO^-P)nx z%cL;!FXCM_hwh5a^7P_G=}Uy5|4d%w()&vES&_1N+wX`Qx?J_w7G{RFKROn6F6LGI zcCw+e&!5bS4U{oO(R6^L+!Oo; zJPsK;u6)A!%-}goZPTS&&MVEhV!AhP-juKoo+pU#i7+QZ~EilZT-BzsRn1?Yyg zpeNFB1LI(ZIg59!LZv?51U?VQ%Ag6vE$ZsFgrgHuoytV4zaHGjsDw)oC*XWRn@!Vd z;80{8sG_ZtQfm5zOEByH;uQCBt|^_{k?S9ZIu?w{eE;X77~HV)>tU&SXXI#g*`ivI z_~jqT2o0XZPlMa0%ec1ju))pzXaAis4szB#y>Aw^f-<0#MDHoGm0bK?gSB;!zE4h0 z7yrQxfLb@55c2VG0=4fGZj=#bs&~eX*R)~_xKr8-wFCLI=h<4}>S@|>B>i23^B;|$ z)AAD3)B2y&8l?$csKT}~Oj~*W$Xf2AMl}Kk_V+DqmbmYJ(_+P4imUsk^%t$Sogk#f zID*-d$)67WFuFhX=rsF=pPdclc>f~831}_=9o{0A>d?&`cKGTjUI?>9y@iRZhJ-v* zO-hnwQ{>YmaM7ymSHw{%zlnMK=9)Pe&F^4%4~m+3LlAJhwHoijB^}XF6T@>mai@5* z`Dc{)bS85Z=0DF7QhcPu%+Dg8=c>Zxc9j40|6e0nmV`lV?kn$ty^sn_`ba?Lx4Elt z#6b(W$W1)dC$t^{e=Z&ac!cAMy!zbCr1DuwOT^rCFrVJlEyKHX;fWTpMHo897m<($ zuJi@2^XTafSmts1AzS$J`atQ^pg#H%@GBDj#HqH5+uHv=K6*c%RRtNjajvWW3ydeT zOxAdGQDwv-xtJLAbHV8(j8yN$z?i9G)c5yPAGLL40n(#P$ zb0?0j)mIM*784fF^VYjU2^uGx-wDNAX-)XXPjaeh@)PFk8WhG^l%M&CGiS=m)<+!J zwHTB#&?V<3Bq(BIq6b{;T;Ck&_KtPJd!iSzc<{b!n+Otf< z=bz|J%~d<=YBfq<%dmCsu)v+k>O+_Dq>`q=`DXvqkUwkoYlX{ad@)}*b~B9?Nh6J6 zA{lqcCmX)McesOsbHoz$YNoqWTJuOOIl~m{W5pJgVFMiH{q#jGemX(0u0~jZ=T!al ze?@ZBhpMo0TOrv)ZdLSlbEz_yI7Wy5sFXenXdA73QJ-FO%4ho7T(u4v z;Ldf2As*+M9UrIoR{hs<*cH+HF4@zKJG{31H@uM&+ahIz)RWTg8=3o*6+QUH%>(-I z{QK^k39V+k6=;AAOkY4zf9XJZ=~%8$<+XQQ?4A{PqVo|!#d~tjk)%p3{o7gqsIEdx zu{14NSxOr)(Vt2Adxq;8dxxH$I>`B2XqZD-^}k6+aqxeRw`6_JEv9$!$u2gsX(Dod z{$pOioz2-=``f1F!4(cOz=gBh(mgZoyw?`~t+eMnupKfKMgN-a?N@y6shpVciXWBHr8eqeJ7Xk&^|A91 zQRzY#|E0>xMG5$}Ee6f24nedPa%e&B=;-~v@eB_K(I(qY#{N`An5 za)6%{{2#Di3Act%>3^u!_9vm(@$%k@nAe@3<;Vb4&X>{wB^7#39X)NlVXz3^JKW|5 zrDM?4HlDp?z{K>1U$i2Dq;&KxCy)E`vnJzfee99mM|m2^3Ji&o1a5Wmy)JLjd|8yqi|E71!H(K0cYsOMFF4N;K!JFIy~p2c{ID_|24zzLeuKvM^#h{J)JLg=~`AnG}YC@!saR0z#3qhYg-G5a*}b zRPrH3DM>9Yf?S3_q&wFYSml$zrIfNs;LNi&ZI;rmr~N>-ZNr3I8LbH!mGo=`tkqY6 zG5M?j0F8MSxM%{&6^8mHE9@Nnp~s)QUhKXGixE~)dXfyf@Waom^C9;)ya1b(Ef?sn z)4+hf$Ly(xi?@H-kw1GWhg~4CYy8pi$HQXpDU0RB<@fR0Y`8uyY4eWRDx^9lJ)Yll z|BHc>?a6=_u2Z{Q^L28upS7;=xsieJ1L8nI4&LW|$lNr( z?thoTZ({0|RPQmEXUXA}lmntQ&tMp`svbqYj8RqOxbiO9qo`M8!WUyWnebvI0vH-@ zv+esRc=<(9E%H97w^yEkWQbN*V!;JpQ&IGQ`>8&29G_KfUk9Q|PzyVAp+YW7w&fR{ zQQZ>DGn*BLIGrcaczxhc`YXJ48DxNi9_{?w5VCEI%1R!Nk zASjaDEOGeh8wk?&jQbPm1e6_w7p-fm4IB~=5=uu#35mpgfv z-i`v3BNpjmDIdT>ze=Kr)H>&jp&D4hFSuHSu)}zbSZ6R*iRen0hKuC;baH6lsFk?l zA+tB}UY`c?tnA0?K4jre`{SSq^2R6ZUMO>=w|!sMFdaz+#Z2vltNZpA`r^z^4Ox}0TJ~?gK2&_xqU-M)adH*q)>=9eF1sVhIrI<8o z>0R4rvid>F(~7?vfOc?k?%>4(U$mmS&`zAp``Zk)aU~h8(`j`}_W3E!Ki{ z;mo<`?EUN~SfkKZ^PNDoxh4e;wgWy7=VyNr(lsfN66u6_IHag8-<0FeEunmJ;5`rz z%rso513gZS!bVFSo^7{32>~3QPu-WA$0*n^l&|m|T(R<~alAJ_)q)e_6dXIk+;9TA zpAtJA5L!mvi5Uvg^e@dS^B2y(8Sp`#9)ZGrhk*+@JsD9lnfAgk&T}P{Xlu32p2v_? zx$_&C;K{(=3-fV$)BnHQ4xkcTa%WS@n;B)yZDonl*Us=p;P}OZW(3C|=?2FRWXaaD zWwx>MT1&b@FUFYN-skgnZ7)c=pm&J%3!-mhRd-#J^EX?P_dz((JkMR^%imzt$`1_- zfOkbsMVT$SA1T~Q2j%dWq8*LSxp(>HF7uFW`l^6MUnKokH6)Yh3|t7|IAyA-6^uZ1 z&$f$R;+jlCn1bAFS^=bl?7ra7b{@%VvHCtN92s2uni~Jx6+?E|HLDL3?#6fU*E|z;=aw;5v*ivu~0)G3^5 zsJnonbQG8m=Uuap=TF-!cB$@X8cvgkY9gYqc`;N7ru%2H@ewI4V+K(;5xWY125ThH z(W>6%JI(tV=#fItyBQKyFA7P8gsjdVqJH8RTY$mEPqix^C=dM}k0Vd@WohHBXoSzWsG@Yz9V2noN^c z?uoLcDa&KycS^T|R(E904o0 z&jO@YT(WZ=KR>1nbLmf-uY$wW{Q|IN#Z{K{8CHEY&)~quv4UoVHYGHsb<5imBdfXq zrO(o}o(xTGz3aZyUfk!LT*N;}f*5V!6%|REP{iE27ARU6OE%(SM0n1Y%+s^`rLrdg zcPtdm+KO~gpOtYpME)z`{iY^#&5L&fsWl-_0tOvC>2ytKSv(6Y-wDFY79D_1o}xIn znShpyS(|(!%UI`?rpI?X!rXB22Xs$&E*hx(>v-6We>wtO#*ZV(%Qh|u^rkMoktM+8%t$Z z@EBUR#+keumbs<_Jirl=!42!DNaKhliy1$wlxl9Y`&MXK=!;kI?_Qf5FR_}npmY!w zPIWh2qG&R;WrhyXR%(#8mIo8c#%pprhIBFGX4ow<(?-3W>EsEz$XssdxeXf?f1c)1 zlwWB5=feE;t;t{w$?4=+x9|qq`_`gKNvc@rq^w?RYs{!S0ihoj)dLxVf?%;;>R zSBYLdtDg-{fA2FXi8clFq%!)Os2##E&pvzPm*#WwBx~`X8Ej5MX4k|g4-8J|#2xc)2PFma6 z_}a&G^dA4Fq9j9>&M1BS-N*8{Pzsh&$jg>J|%^^GD7$wL>*T) zpM5I7M82*xZxeT4GUNQ+>yux3{`>wnFoseFRvK>W(B8iAVIyf1Hl4pt)|x_d2S0F- zY-)j)vHs)Dj7_TgCYreI=s^pvNCCaMm249wT=kNUW+oxPes0wUsLVZus0QInf5m-1j+cbq-yTs4)VlHA@T9+D&h+3^~!=j zrYQmz85iLnQZ4h5m+)4_jwJ`^&o=JXpC4CV0|S+U&gQ0@%X`Jj2J-8*Vf%=Ug0}DV zg~Cu}FW)qMv;~pxQFZPd_9np4&A;U!zN|&8O8Afn4*2$;Sv(^(8fC5_KXHQQl@P{< z+Tis-#nN&#B>!{3AaixOZ{*<|q-O3J0YLShi99N3p~$v5sTF9ZglB>qK#By};*<{K zRmr4gNoxraU#IJ?EM2)Nt1UjR46Z6ujtY>2F~qjwezN1e$?q#ta5bgvCqYYXn$ue0 zj%Cih{)O_b0l%b0;=%OvG>c(vie+2XZyhax_tm3cH4}MG2|QHQngf7KC3n}MaH&hA zpe+NKf`B%yy}cz!NA*5r8vz>Bh;Vt_KhB?oGUi@U2lzog!Lm#LDAXspJE?73i$@6v zYM&5>ho*NxM%@{g^F0kKY;pzAuV}zWVDz>y^ zX#{P8)sA@*ueJ;Kkwj}{*Ju`RlmyQ>Sv4DC6Mea=SF+~Dj80Ll1+n8f{{+^o#Ra@> z({rq{tQ=vxzfB8Ev(8&R?%s2KWWe~Nf&T}Yj3Z^-zm$tvM?XM}I{@Mjx{K+yGzk{e z|5paOZ93jYX*vNmKpZCCb3k^Y;Wi7I^r>Qzrs*ZX458!y@ zkg0eC;MEP8m;9`vKlo$f6(x%fLte5^9b%lvEGmx*`9~eVmV71arL%wxIIcE za2Tr86^kQe6>~p|xu7ZJas7%MRZNxTY(Lwe!bMN`&{1^K5PKo@TGXk#aV5(#o~T7o z+cLHqM81EPyA-4gf_1^%=boNhcXi1G)#gEJ_Hx(Wg9pA=4U?Dj>ICB7BQ@%%Wczz! zTxk^O40%YgV%*R!Ply#f%<+{!hiDFoft)1&+<$Da-`4(;>Mo*O2!cH1-X6FJ3<*Xp z`HFDUd*`Vb1k6_2J#pj92pW!Ii~U=ggZM%OF4;<`uaZqXE*58YsVqR zABIFB_L+QrZch`m0~8doyUjX4pMOn$Gc{~6G+@js0~CkYR~7$!UuJCF<7ImmrW~PD zpG(u3JY)QN-vd(U%!4SO#=*+v+5*6(@rl62FdQU7B3;U%kME` zi*&oUX7R;ys0X!Pwr#lpnZq-(XoUh!lZ=9<=fY{|-SbYv-AK{~&7$KcZVAekS^>)D z;n*>c79@B^3!*LEDg3&r>!d48l{6(2{56@Tz3~JssagDt$QWE#=~1lCp7~ws<)yo! z1Wb!dzIozWPWfFX+>T@c7aLL^BSeUo?!J~vr$VNXx4(kI2|%-=zlqjB6gAlt6F#z?o+qQWrt@&S=hJBsjcBId{pd~bx?H+uX79PV8Qcu?gPI!3D-Z(Dr!)#4+hD9T zXtgq~P@$?`>tXKS^>G_1l^!vHCJMdGRYVvgE{cxiUrijaGO{GdhN)J{l+FcnrBNiQ zr^o6bh#d^__g!H2L3_`ey1SLS+apoor&?JS(e6sRZWf=|%7?NLGig5Q8SbuB7VeBB zkm%DP?V4NSs+;Ez3JRwpTKud?nHy@c$zToOU=PIFzfk5cApnmQ#3M3uE+uDW0T`V+ zrZ(a1X?;cxbi}eyOYs~nltln7V6b^jonP#|&WMwa`oVkK(%;)`H=qdv_0u58L6j{RZduLYsGgat6Vo{sfxaQye>EW4)gA!6;F zv5^4f;$j}u8411Z2kv2Idc;=G8{{crL_ z99OzQiCtz`X#@JAQbUol(nK#>5xU!WhqY)ir~`#SsWFt6%% zo-}$g(+{dyozJQ1uwB+NoM`RF=I@F%>!yT2e4F&}SsqC#w3_)#qAY+yUrBzW0BcV5 zq1uyGahBPJDj*GRV=3e*d>nR-Z(D)Zdm_}~XMEXtAhwjSYU8I{J)*P6%X1+4c>Sr! zK=?BM;5~fQYr@q(Fo&VBUtvFioDP7v}Mw1Q=wlNkLh<;;OVdu`M+n_Ahdaa zO$c=+05?XT_jTd~h5lELYOjhve1&OS7gGrhz*pdZDYbB$(ZM&IiHFP4sgdbkub8t* zZyQb5>|_a%L^u~cy1JZXzp8T%i2H@)!OzDb1c0Yr58dT(-$Z68BkP6o9m;8J@wfBL z0g>QZyR-Yljib&g>wEv%Q9{GM_H>Qv1Mx~3WGTzFFS4Qhs4S^11t~7`Yv&hJgHy`k zc0t%a$a(}l-)MaDNh6x{`&ai;WQyiYC0>Zr9}~I7sJFL93rWeLX|dHWJp)Jt^G_QG zy*(#4`S?B5#RI34_UykqdoFfJus0s3)i{|$m-pqdv6V9Q_BF%x5xr;n#_%{KM8AJt)uz``Q>KzT|)eyNP>oE zrCOFheD~8^|EwoKgVQ0xEP)z=zhM1G);))8Pqej|6{uIPFAgoRy^kjVQrh`Y%vbND*g5Qw}rbq@Uy6c zF8hH2o1(dcpK`}9d@kDnk;2&-8}JwaOc5!NiL)%MQT!bfQI_DE%#J zrW)el?-em?3Ay!k4XFQ$7VMGLcfR}N%H**uudk!LA)gh)}^e|K)UpGi; z$75w*=)Ax1t?oGJ7{}}Rs^KXR^7B_+wy)2o)D@L+) zqOkGS?Fc+XxBDCH)q=(o6NyZXAkF+)IJ6M-y3lX?qp@H6czuWLhnoYw?q3$sDtw)@ zw%e(-=}q{6F%s%WW;xk7vq1WA2KyW|!}Wp$=M?TTDv9=P0RD8Hl36SJXVD7LD&u0ke`*VHn#$ubx23D+FKmbBL<5*wj2`5SNLgaE7GI+P=U@X>I8tu6nF|l5{fRT4j7PRkC!{GQpgY46%e*+;=6Xr|T20 zQaD8j8lqordZ`!)a=(AsH{#29hgon_n{e;U?FzdSv#W5vN-S*KZ6{sy_@>CGZ-{7w zDp5QU9yjMshttMC23xkc_<0lL)px8rY6@8fgtAQYq8nh$C9#1p0V`Uc9|reX)~8s{ z!;8$%*A2!C>|(aLV5*H2j{XG_$!CCa$8O~RyzMLwoY?sC+n4`XW*G)Jq~#H)jJ({F z5_UpFj-vMm{t9MuL8$wH>&jGf!^U{GZ`9rRFF16RJC{dgG9CeNTV`BZTGBH#oGz2} zOxxb4n|6}G;rX?pY8#akNDljpZL;&Q`78$T%;`|!0c#Kgd+8iO>Ky?(oL!~#LAH}p zhLVND*?G#a-wHrE1rM;{<+aYlp%`FMC@G+55!kRGgi^{+##{V%h!u=SUyn~U`!FW7 z-oenb_ka@wu&X<)kFr@TTD04)H6wf{6ToV4%*h`+Mte0OG4kOXb)JXeaP7@>b&5J+ z&zsCeY&WlTqLTC(E+pw-oE#e0e-8nXVLUauDKzE9J!iL&6a_(Q@HlNORqIml2j>1o zB@*!-w~K)n+%hfFn?`v%do42vDu=!Cd^%kSi`Q>pad<8KyjLg!kixke*%cc@ao9S5a5A{M%sp6ra5e z{OmbORdWZt1>2jBj*ZeaCo>~-M22-LPI!`F<2eVz+c;fgNCbQD5C9(uR?YKtIflwc zyCeT$2}zbemYC-ABHcTWe)WeZrR_6oaYECKSsLnF`rqBIaVGZ%3nHEmLTu}_u_$^7 zs*?_IK7nQtKrIiEuTtC~-MjW-AO$TM0QA)8UBar|+S=L$n^riLbPNTR_%<}nBd%So z6iahqLEPG@l`$F+7eHK~l>g@`AS~rJF_`0iXy{{m4Pem%dD& zE*M|PTQ=)WP(WhX_(QMy^f3#bQ007FYj}AUddre0Y0+A@H3 z=LZHS7jZc#GlDtObiiJ-YC*H;8nq3|m2HsYX&q{!wNdQ5IBmZT6Td|On3tlhOFY6x zp;px3`{^)P zPz|={B{EgZ06L2OmvRyY#V?yL)@ z!>g*u!an{jljn=VzvZAiWFB809lviyGEB`pZrd0tZ;LGHGSd^s8PCaw0p2{C?<*b| z1XfnBS-Ep3H^?P&;oUDS|I4b$Pd0>+YuFrfYzd8+nkg0NWIWm3^2tEKn5R_@R9%wm zW@|l>#*CKV&mRdFIVDj0Z)WHuXMrPP{+MY%V$O~yIyHQoLk5ZZO%@J(rV|#6h18=qEQ}T@M0*3`zS>E`SC&B z*F*W&!-LP~oP`l<8d7XtTH-A2#B6`RI598!l6L@k>S_mIrg<+;5~~0`f|bkN!2Kln zclX1N_ji-$X&RN7G(y_J=8mfLP}x#RJD{vP8p!sb!6!nKYddF(T6cCFT7>(An>G{P zf)fL@kD9;dKiZa#V<2*FD+?SBhpOGXcO58P0oZ%3HO)`g4eCJANy`nhrmNJwlzf12 z1`vC4>InGw32o~RZ+sm@H!6CU%$I+VKh2R}EH(u4E{xS%pk_&#NmVIpj%C-vq)MBh z=|de&=AhH=Cov$Ai2|ePFd0xvXH|Ua@`!;H2EDKI-2Z_Ss#=NA`C%|NrO94g_5Lbg zbxoZ8WljspwcLD8>yKI-Xo-_njL`&qqJC{`&|!RVi7m>0i_At7a5L#JNs8WLd4;v3 zp5=Y-n@)t57W6tr@VJJTnJ!^{kfDZALkJsB%b34>V9IAp`j7!n>g$7+;NzaT9fD5+yQU7AMobHzwZ34l{0%zD`%H_6H5vC!D(c+R=+nt?L*9*5~u za`|Tx(qarwK3PF^^QYqe{fI0zKYmV?dy6^X>6#znh9-%8X1H3;jxSh{O!j{7X3MU( zY>i@q^+$B98YkeWWb`L~BBqVhdaVLehRLr7FjlO$x z4SG#_xvCZ;B68KlsSDx0N?C?yA{|e2EVy})Y-f*}yA`bqkkPQj(L3g#qgByLrRgX9 zAnx{OQ^Cwtm7-kguogL#cPno^i8|Q9FQqs+#{w{Z&`ne%{;ehF8l(nrHM#8Rxg1}| zHprAA@P#^x`JW!uwDWfXYm9I%|0@doyZ8PpJIv-dA!-n%{ULWv-ZACwv!$}ZVK`W9 zGWk`ttUNoq33b2wQg&?`$7xKp;)^ICX;do;CluI{zQ@N~q_(7)SKkB@523WDPHE>) z2iA`lC0eyr}syw<>S&an90na&otKBlbzfWgcbaS%s!b-Zv#|qPb-Y-v%VkASk zv;P$eYNgZ>*DoP*`Egunoz>3jKbw5n^a7XCgOi=D{ zCI9A*(@{cSKy~CA6WZr3yXQWAVQopCPIiiKJ{H-43!x1~)_JKR@o8|*3M zZEZX6iU$Q9{9N}rZ|Euo`voa0fg|QbbGlfXY0`>bmA_(i<@2jh6OwZcP~`%y!pZ$s zXp(yn=;{oldS})Dbl&3)Rd|L~PRn4u@z4kgn&R&hQGC;wOZpoQdsuFT?e~Mp*P_Jc>WTnYTcMQf6|sVp?m&JUTVa=9*jnb& zfw=EGKruzz$R&d_d)UgMx3f;E^44wMo@Pq;S#ZK^eSwQ~F|S`Iu3$5t&Njhzxjit@ z!y>A1LLqrZpN2jlKr;vy7XYI_A9tmfv=Ro!nf^flvCPyLkdH;0c79(nC~cDkoVv6q z)8@vxu`Zv|Jqa$&h3pkl%QQ&^7LKr`VsMHOw=lZb46{7q8W$^;jm&F6aX6+vCBuQ` z6Y(cbGiM-T2Lpcbtna;v0*OjQ#el-8LX$eg%$Fr#dP+A-)T)V0v!iJw5A{k-z{)c#5gH0-INSe#y6J8Wb;=KXv_ zRuN=4^mtVU1|2ubfV6MIWI!oTKcxU2sZHd|RFx*CSqz1Ovo@NwpwDHyU+bM=p)hQz z@I8RGME)lv^u5@waqfd|b@p?Fsxp&onPqyW+iHT+xQBeW{TDH{0ivVTrzb-08WH$)|vvtU`%&RfZn*6}K&?#w>{1Kokcx z2qU$~R-~eK4u^)rH+?PVH86f zMX=)Kc}I*GYYz%l1n0Rd63pd8oW*NFKV}izM}y_FF9=2>e}+iB;gQNq%ZeQo6*gWX za2*(~BKb-zwNT%LPEsCL>~e(9i#^Yi#>qs=7lBahvU+=Qeoz%C4!bYFi1jhgsaSa` z6sB}dY+HO!?t8Rh{k-&~)Hil1_C-z#lf0W^Q->labsNlBe@Ss0?LTJZ=|2Bvt1^N1MPZ)UaUb7>dIPT_Se&f1DW(YCZX0-~mW6UsQs3!+!0~eUE3y z&Ovmkc$K_m*%tDRCnIFkfR&8?oVj((6Bk~rLNer0GuPKg`83PNpEH$?c|ZH()2!t# znH$i!v~ty8i!whMc-E(NvG{`4ofb~L(AG{bMTJo1Q-)$Bky3y5lQ=)-Z9epF?k4bW zFo<)vQh!M1L}ukWEE(^#$d9+a@WVm;(>KpUiyAtg0+{LoY~zGB-v1{;4^B*=dp+RB za1!QHg(;xSZt&$<6R_s*>9bfHb(ziGK0s}TX*1`0jPCQCk z{}?bRnkh2@UP3mD(#S&mJ!<&&#$29Yh($v5`0)}DVYHAAv`P3ffP!Yiy84;!wK@6F zY_EfDTiVQCufXYhC=0f|qYm@16_KC;Q>}XzPx+eq?+)L)a!7rhsGgUwnh-GEekJCs z(0kEx{4Nj@1=Kp(g(o6Ec-e5OUv0C%M-5Ts$)W;rABr3caS??EGv<6!U-h%mfHz(i zHDvr+wzoCqYHI>?KvvA30|Ef@KoobzkRDZ zXfpsT<{JWdfImlXze3L4+RC>t%v*VXQGDi*PcaQnQAaekLoDV+yz5zK+057ju4?O0 zg}eOm&pqRgif2zECu9h})1j~Qa`#n_5GCp6=;2Js_*4LQdd~bCru?GJBzIfE4E*Lm z`fMtah9ZWXPx1tg*DafAG>mO`aSll(vzHb|5j(5aTynga3`wGs@7?-PW~;+$vueJq z&AFyppWsL8X;@HM1knLHKg%{ptvHWR9t91(`cHb0!FKki8MoDduD^-l2yUnIBf4xx zdVYUbNzRRxPm>$hr-V#^IqNNki*aw2%n;(2!5V9JK*CBY*Cb#+Ql3z~mNBiso&f>= zrVZjyx(kPTo+9GHoAw9N1RNlcLsH7B9z;37?G{RtSywy*#$ z?8oHN8tIE4TqJ#fDHHmzC;!Mv6|?qwV6weNVanF|v;O6l@#=v^vSkCos#UfJasDEdLU=S-&GsRzz=7-jPdQCX;57rByhczaUuzW(c20Z(OIPUdB8U?g)StON#A<9bu(i%iMU4AaS;12PksK`VE-K^D0|&JCDI#H3LJcGAeeS>>%%na-U*V z6B>Y?{$<}Z<4rM#4MJ%bss)_?2w@qq;Ja`f4qQ=orib5Zyr0#cULCseq5*<&3@DMIjfYD`H0Sd?iqd1M)X6Ie!+HwOPGI1L5j)1XOT4KWZ z%-TuLVfo2qRz2;e0!6bMQtl-s?w?o8Ml{0V|Z4X!|{Eyem#7$SI!D@;KJ<;d*kx z0e>NOUFR8V5Xat8Ke(e>!e!nv;T14c*M_bA{>@@f#qeT2Y|a~wF86`607Wu*N$53d z^86ZqV#<}p2jOvi_a6gI`+4QXZzbQ+1n3TP{>-u(MySA8hYjV+Y#Jll)wU{KX zpxv8HNvEQqsg#3GN=(`EWMIfEJ99wjnBP$SH}zd5EkzO!4t)IjF(r8+=?TbNKQqS( zx>;{YOT`-05X@qrf?C_+Co;V#*~!=T<#}n_Zo_2*<-rFG;^S@Ezo~kH?WfBMjNP3= zKgrD$k&xY|6fYvS5+0g&kOY=xGyUJCekeB9*(Q)dFR_@;Wd2gxqYv$ofkUjB^ zz}<5*u$O1lO{*P}AzO3!!>%x~lf3Y0^m+9da>LH`@!@IlwC@bj-issfZg@xy#}o5g z|I8gyM~<+(y%Dhk*CEPBMPwrLFpr>r_$8VWzt3fcG zpeKm%bJv{-ndhmv1i}%PdP~3z%p1_=`pXbc-kb|2iMTV9vsbs-jpV@#4d8~zYjnkF zhVmfcFqEfAWp=@`F@OAtbeuIXQ}JT4W(DSc_LQ_t4K-Wyh~W|tHyN(XA?EjfGQkqm zgUIuiyx16=I{K~O332wU3!{o1DAm= zhcm5sP`m^2Eh7x^+n&4J)cHl;7m@u@=!O`uN7Dj8cp;v z?ea8-CD_lQZEMDSi-z+69eQz4!Zbz4`4c486)Z@ApS>O&-X33vc^@4obmIEmGAKuNOryWPItbJ~i zx604uPgMaSTi+S~%`^VQ>HM#~@&#)1oA=P(t%*KrAP(IT*az4TpAK4s(`mp|Haxi$ zw61t>5LJxtU?e?%gB}?H_bWRciL}G3qCq<*HNPN&ww&qCwkeN#cCXdwUrkpBaO8eB zSV55UN3x~m<)-noUw1Ev0mLSYZjB4QTKG$lA)&|XD6f5<Sm;Cj8yP^lF};??zvLP{83CC8e?aC$_sgUhAr2-zzszMSNjmfr6h+h*YYK@zDxT zT0`3kUzxb5mv!HQ>vZE^9x0Hxz(Gh6QMBkVi-80^|LuEm*v&8A4$K$nUe@Jtr?<^H z=t0h&{c-OJ1+?DII5I**HFmAtPwA?sS!LgwUm4Q!?ZGcyo1O=0(S9H03%EI(H|7G| z`m#s;imG0k)OI7C+w6;o64$&V^2J(@w;7P(RrPFx(CSv55aeX;xIr@ zjgh~ogrhjX@nfZ9Nw9Hq)3yNDu6zhR=1oz!Bzj0Pd;%Pa`8_8Uv5RBfWTp6xtC;Wk zd$+~}qMYm*)R$gPL~xkcj0V$9Ku$_yvm$zmoM^4Z7i|$EN}+O~?4oxT#%{dUU?mm8 zS>b{83P|^<`;$LNB-y<}>xpHK2_GU|6kas;lWFy9{g85$98f7gzRoWa#nvaN5VS2`;|yg)EU>YFuJwe96-B z&+cgzjULid!-+ek-VLx_YqrB_%kK}Z+W-&zhnBZGjP|6C#5Z$04N=o2Z;1$HQFqE&nFMH`*AIA$H(EuHHtx=!C>>*w$T4*p$ zLBWhz_P&_=LpnqaHDn5tb6&D$VS8KH*|m6mZ#fX~#P}N}p0{WwZ$6+nWOrSOeF+5Q zh{1?VSmaVtD5UACv&0 zpG1pdp7S~`gw+8-oCKD;Dev7C1yJ+{f@M(U2ni6B>o3`x3-wP4QpP(Ka~C;WO8E$a zqL^ytJ|{4e{fsD^|I875$_fk<0a9Q&J{=%=D*s?>l(Cg%IpkeGCXuW)GnYbxwqy{` zN#k=`ERZ<4T-RiIBe~e5IsIzoWnsCpQ#6Oc;sk12codWJ8~_d4l%|Y|JAnQPZoN^` zjEc`7QSEoZ#b8erY@{1`HfQY(X&e|Op@QKhr*V<<#_@mEqy$R;zwLpf!0I6=ZWJ&aw6AvMv zcyC?$wT`%A2bXFZ6m92iEB_^ke!BtmAOwQ?fkuIFLFD7(7^wC z)5=ar)?(*;VDks5=%%ctou?T~+UB|z=|M`b#>ocQ{ODc6<}D^r+&DP_vZlrh7rT)# zFv0bg85BqWtkb4KX82veKT|Q29#D>HG7Xw!qi)4FyEulj!0JnhmXWV^xfRQrIHed! z_M9Wl-MNdu<_yk>l$ycule%ie|GsLQpEB;{#&Zfl0O|)58Jdia)U^T6z>;19Qkt;H z(a6mBrs$-pfov#b56GHSMQP2&Ea-B#y@KWE7McK%C^f(_4u8Dw-G9CLJa-Qv7x9Ij z3zAmx=qJLpYH>*S|FT?h~AZfT@@B4dxyR?>6)E%PN{o{vX9#->#63Lv?SktcZ zdniTFC>6UjBk3wyI5$tNj*8goE4vY37(FLpk0hVh^7fCC;QlRv)b^{80ev|;4B+>l zT9&v->E0Z33wp6dkePBJm@Yv%PQAgG-vA!a=7L#@rEKUxkwUtJfRR{bT_e&Oc87Q8 zq;)~>)${$>@K*kxwwr%$_cd_rDTd2zAVRx{3H#H$VYYs2>Jzo=du@7cPus`$U{}q6 zK>E_)7ckx(#t_e8VE@0_r)p)|xBwx-hy*Ehn^pPp2>fQ?wYC4DlF3eu$&(#p*w1t5 z%Em^;x>IS}j2*uAzr5m&4%g(J$CV`rdmWkn$>c2_JhV|(=>sT z@IPapXm_kSPahx|Q!`Hv;Om~9HMg~Wgsp9CY@~&#lQqQFVwhuSz63mB3~~wYP>e$J zL>{5;ZZ>TO(qUpG_M&GST{jVy?U2?TZoK_1(Bs&M^(O4@>G@w0>|Qtsw9+A8hDq*l z?sl=mS|YGLw>w(v8G27fmK??wSsiAb!qlOX5FZt*nQZw;6d8fm?% z#;RCo0GlP0FCGgEHd?Pn+u2F?hiFMal&6huirNl#bsK`(5=ULhKxg+#K7Y^8zr~X+ z+Ee}M7|KZBVtRAkWUfQySz$Cu-!II3W4*F$y)tUT6DJ0+-$D1g;N?C`XrX6R!&A?1 z;Y)5+s1eubP!Xp|d)HJ6gqMS%EF9xSX<9&nbybW==>2O(xhdc#d&OmV*<#*6v z(6tH7q{G`Z;-h8bMY4r^rfTW9LHpom4vBC-2&g4d^c40jSA3Zhdg~MYR48q&kng`E zxkUfaWOE4QiTtq@4_qhvGXDU!OnScBD2#(W_Gr_FRJ-*p8Mx@rnbq;y=8QuT4PKSD z$=L?sl$Hz*cj+@C;S-@J(kM($g{RDk3OnHs6Q;dYt*h^}EcjEDKSuh7&K=K&QUevf zyk9bhX2lg3m6PirN(zS_O@VZw9nHX?%pEKDMPn03ty%BcXlZGfsi{Q{L>h?{Fo zTSdMSAO1Nz6&n!lp5T@1y%|U{7BBMruMnoycRS49+}EdyFZ0J0t7}WR)>P7d8lc@1 zeyCiKMC}J|fOV%#ljmy_2w+QHTUYmWE_bo$U0pz4`b(|(79FMk8{yU1fpZzP zLrJSekae$4ot%1|0)TOLcXtCXl36^_Bo?3-1R{H0SnQ>8Nx+oWii7ZE{M$Dxt*PU( z8`3;W!R5+z^Mc(Es2Wz6_%ky{-hd zHRtC5T7;a__esdY2eMHd7?d%Y>qDIaXkAVyvA@NOwR^V~6CDg9qek8H1RyhhKLCfl zi##8?w({3}e0;!b3-C@}rH^FqKviC!U3&Jx7UcY4*f277|38-BwI*dtV+haPANaLTE7@-@OaR|_J z208#?3m7A7vyu@L6f8X7%?6U4pr{I6A%qJI{89P&xoPEZj8Rl0qQ64(ck|XOhgt z-L5k6?i763>X%28VI(}T=9eL7N2UVwox3~umZb1FY~|M8opY^^mrvc#f1TI$?PBbgxkeH_r1%{u#C4nIVwXg?eWP%LZ+pE)UW3YdFTghUD)uK?YXY6cv{!p z@e!WK9|{82-z3ows-1xOCo>}Tcp{eEaW(Yi75~?1^nAfBVmZ>2R^!W60XiID&cF5A z>t`kSpIA zYJS`JAA8t%(4zY#OCsRVvrF9mB;?nL9}wcX@~ERzAi7Pu%xr|;ruv*&KBlV`Q03SU!Uheq&P_m+l`j2>lUVQ)SECo>DdiRWt5d$0zF zv2$7UQI)ETDvbMokeF6J_ghU&z#!uITF=Oc78M>jOwyJkM0sFrRoVGID)%oKwj4D2 zI_RGF=Wy<~HqY-`CM?OcPRTA{PN#1)NuY*lfdEF?G-7z7aeKXsxlA- zyfFNM+dg6*S4>PB!#C~CX6cGW=|9jF>@a2JJ#d1vT{&JVn>?Xv`y(C|I7PueGe1h_ zvT{U3Kn5+LLyg5?&w!e;nD|DDBJNtfpo#)VAT1R?Rnb|Yn3EuQSB7d5%JLAt-pIVq<Xq`$Gi+K&iN)ob$ z`-j$JU0wW+F40*yVQl`C0hec3fY^0a(hJ*tK>b5%Mg+f1K}_yjRKA?1GU zCizQolk+W+S!Q3d4b>gDEVF`f(fxeZ4P=M>w9AA(aGKUgwiGL1DireL#v4s0RVJG;qCb80Cn6;qYIL6P^?V7iPP^k-bhs9Ev8!@fc~O(1D25%<%&mjc^<|A=G3|>WHC_ z88>Ojdkdet1?*XrR&5Ai@AX6&;p3%IBhuk>F>nWYo3RU9AQAkZU2eKm5RhdRWW+J3mQGe_; zt%eKe?Uf1Ol4X!1Ah&`}-IEH*DB=w?3S2kJR&G`(e<2fJd>L@GmHa5P37e7L z(qFfCm4n7P%0X9N+&WgHX0Py!<=A@dvB}~YwQ`#P4A_~3D}TbMg*=l4i0u_{thAiY zk`CLElv!1!OakL1%cph1CtFr;-n;f3wR!|R3q-EnD_&3<&phzEX zUncY%&cwrDnbUEfmo+-Ds}zM5L)~sjS5#`ORr;tWL73I`v?~bd6(8}^P$q&jkhEzo zKNePb{yRkgL_ldftUG zUwYU4yaq1d^}?(VH^OJ&w^h2Vzjw+RPl#vp{rjrqi&`b99PR zgZS>rLl7c8MOebDl7Tf&Rs+Wp{ymNfHY>n)!xr9>=^V!YvcTREa5vG=glTOK$097e zmT#?cs~=yDYba|w?)e)9uiXNV$EX~@2TZ}N2?flxohB>4>M|YrJfHu>U%lmsYvyHm{Ht%5@p67f7fwiy zE@{fRjMBZu+v|9VabxZy zT!HTJ=-*PP3{Mox%k(#_k|Lq%?3{E0W|jfPId~By)*(WWEw|QIG2`bKv!hGayPI#; z=x@`p8z_LObnVr$NCO0-n4rg4q?eLy?+w34!Ptiu8py`fqdt+%HtGf*CNF#o$g-_7 z!8f((%iw?Tv(%6^caohLh#%7t?EjKhIhiB)j~=j1j$w;iAMQ*jDdrrvsrUUtE2qvX zb&<>dGT$wTDCb^NJ`*}>6iA}2`(8xqY&uqM5z0zFJ;z@-O=w{KV%N)Wdvh*STA~Vl zCuO-0w3;I?_H)Y7N8L@!*blCNp7E$2(x>i5xx)$8W+$$8s7j5Oe{6ETK_L*oM%!PQ zgSN0i`vAOCBW}eLi+q!R2mkt$?d2{FpZ@=57vs!M`R4A*R|{4D%b5`7`ygLW#IerZ zAvY}j2lMj}4+ScH{)(CY66@`u&~d0p>3JaE9JF^b_Pzl0Z|o4<5khH@TeHO z0>OhUO;rurgVs5zHz9kuR7GOkZ zXBkyL#*@$?6+uam@_ZO!ID=7y8YaYOFdCihN_|M#*^5ekJLj{@e9<3jK$L9_aN#%! z?{d1_u&1%3f~~LYfR6GD5bM`3r_ypaCi^cDN0SkwYQc&vk8~ts#-I!~%+bTrNs7d< zXb>kYH&a6|X+AX1fbTr$=v3HO5@#^4(amjc7Y=~3w zX?$-c_0tfbr$dut8$H!P2GEno?k8x*JXO!>;)!)^P!}f&o?*Qwd**s8jy;vT<~^Qv zucV!Cm4-UdtIqQWFw;Q)qazD29;KsNgFEnhUslhTwCy_F!BmNI6-*`b6s@ z&IQnJ4Z*Xsy&4}q9wk3v&q{x=TC&4U7x6G$QZ5Ya{|MNDQt!#w`NYa?hxGNfr~y$* z4ij2c#IF!tzB@wZ*0C;nJNuf{wLligN>IsYP#~%RgiO2=4 zULy2O&EzGkG~BfD6SzrYDy1)-JgIdp(C1&{Ei5ipYv;YD0h$Bee&SH9&$kcjmvrB- zBi&m$LmWf8<81*>V7I8b0LDxv!n|R(7Os9=1v= zh3F7eT3N1skn@j6++HBMSrHebv&?;F-vX0&dAQ=NP1{|{xSwc<59PUBXL|b>%CYuS z{7_Yw5zAOjD0Nv{HxAq|Zbo3pq@`aX9ipZgD~-}JEw#Q$`UFx0f^4N=r^#X`K+zX! z@apOCp!$FBihA9S#1HEmYCYn9W_&q0wo#Q&;+(u6OE$nCq2x|N)&E916fUosgGanc z=3aJ9@BOK4NjLdSN1P*Hpn0^8KDz;+u{2Q}9_Q>Vpgo4{IQT)pZiKO-=dRS^UCjM~ z0D-{MmmlA^%pCcT-1ztgQ(EXam%4$=_wM<@2nb)tUy)J(})%kdcE%j4n%@PVY?U~11n*LUK0=AiNG@B?zj>6SR z6{5w)j)MhnPIQ4`+=U2s6MHV&axZ<1?^8dZ2zm7PZL9}x&U1OWx#e+@od%I!3!5W4 zHkt%>vxFgS$rLXr`#v!)ik6v-DW zf4=tFaR4i*q9-0XlH_I*o-#U6^KxM2yTM$;TZH=vc-C8=!7)rSe zxRrY8Wd6)feitm8gM~~#7T-nE<`)Kt4;kq^Lt{P6{SQV3&VTj=n7S-+qSblIp)xYXPYHC&15qLoxJrx&#Qh z7G4JGUlm&d?XNOf+VKuE#xuWqy^9UMZpvyg1Ey);>xc0jA8I5`o%0s_yt%ynr+>3l zIz^mWp|suqyVrn1*xK4Tbsp$>*Ys>=I{DKID&Xt~nos(bfz_W@ zwpi7OMTN$iNgX(BR+r6@E?%%!!inb3K;$?Z+s=K!jDG#rHBhg)Xf(5p2gK(`G3U5k<#rI%)MXf zL(`Ikeg-MUsW|AM-Q5#+2!~lY3)>pbNur#}?dczj4geIs1y(F1o7U#6CLnwO>}n#xs>b9?Cl@C1hlGCS(S8W zPcpVX9te!%9Syh7qguT;C|jlHNy34=&SC)z7=&PH)LrMrNQ?Wnn26NZ0~Y7I3es0c z!mA7e*aC5yjIRli0F)7H5}^GGj9IH*we}5OJ_fyf`Lf47<}Sv^_t-w!y!xX@oZMw0 zc0lgR4jY5<-;xF>P)+j<&i~Du+j;Vmh^we7cy*ou#^Y6HU%N_WPk3cdzr^G0-&sP# zfZk~gO&8!P3&7$v$(%IqM2A^Q6}`O7|CaUW^NH8Xre#OY#MYce`y+(8i0kz~`!`1I zpx!WP0CeGqR*7na)vWWAq4V6go!48s)rh?tAHmzT53bkytjA&Z?Y(FB)bgnDL-A9F zZV5Z!?uwR22WqwG(+hoJhrCnf)$e(X5A}cQ{O6sv<^JwY4h9tN!VWN#<7@kPL$IGJ zJN{}dJVl6Pw%M0~=8*!FatdxA0j>NPl=JhoaaLOk9^!VY`bhBh2YTaPwLk0P?)ZGO z@>)ma>%H`Qf=DIPj|0{*fbHMpX11@mMdv&=@p$^Q;%(~AAsTMn|*fr=mcEN&Iw#e4Uh&u`_L0nk^cyK9t+G9`5pKIWgq6S{nEGwjakHZ};d(v+!Zo(Ng?OE;gwZZL%x< zInWP%Lyb>gDGq-6I8uEr(tB*BtM6_s{GV#HjU=ZCuZR;xI1YXdS&01MlIW#}wpANNi(eHT zla?tF1*_9&K0qcwd4;F5uN=MSGJpUZO}!7a(G86ig>PaM9Al|NBsJWo-K-k=pEbD# z2F~uv>;MyW;r-0{AJuK|&n7S~?YGmea@%sslkyUb|2TyyW8L66%5WiY43g6#5ARvb zWpu{1kvK_!ns05!&sW(EzGuJ=1HQ-i88H*t{9{0WPcjq){4eE;G|y+I^eI_`9BOIvpVpkyzO$6qlItA-mGoFHYw>74seNDQKt9nkKj;#1eNy9 zN$j4jVSqsN%qN*SG3;a7MdFV&WU1Q_SQ5$Nx>;aWbh4Fo~WKI zQFF@#%8^-k5JL4&uk>K z25$H2E}C5dsaQTNK=ZMG;D=+nMcaOz4|Y$9<1aZrPcam=!uR5*V&k7{e{SEy45pf> zNV)$%W-_JmCf2^fOZTjS`N+mZ@l($(u0Ag1o51HzU#Gx0-4JAm6~yB95b+y@t;R-S zuq)!vpFg4(dk$c0h$*E?07+W7;p~Da3Hels!+g0%-`gncKqed@K^Mw zbyrj&ImgL@4Uj*$G?FZn=qo>oF|vIu6#IOxM|k(G+{@k)-?8zwc%-xG#d|aispJeM zgKb>3J=`o3{UP<+*}h*b5ohP{G2uv&Q-!zh=KDXy{H#>K$%*klo(@~SIOu+g!0=Vy z9M4p|g*y@ag>a>+CqID&54Qcvj|RfawC(C~o3_&Df@cT5lR01COgH;0@O}(e!vA<* zWfjROPFA-0H1^5hPpk>vP1Fo`v@$Up%vwX@_1ad?6ptrKKbeQ*-?G9@?C25-GL)2a zma~E-kyY+tUXt0oCt@+ekpNGC6GpLXzcvzo3h1*_=d|h{HJCglc3=~TB6iR>gGO%_ zG}{XhMJt-z8#WZ%3HQ2JF_=fG|5lOn8K(kRBj_WWFsI1T#{TBn9yNt*c0OHyd_;sr zyrg^evMdkzugLY|ON%mEc z8uQ8ef9O{~n&KQ=j}GgIwHXD`|ETb_^TY{o2&_RyK`CH^H+fq3q8Y$2cB^n)qDoMu zR*ciGFZLCz|4I~dnPvAU(PU(~1>yEWtmK(n}E@FI6KCDBm9w@#O>gyQF#!;2mu}bQ3c)PYu zRGC+Faqp9o@Utp9fmdow{ZK_0)bJ}kIR8ZvljZtNP#NRESc-P&{>Xtp)cC~?pMKxOl;$D2N z$4wJTj_L5?X?Mfv+TzshVcfx_#>;X~<12Tj-Ddy!GxWy(tM@|y%N-cWLlgigN^eb1 z77hZ9aOe%f?*@JNz2ms!gu3#=%Di5^{@6lS@h>) z%nz&Ee+>1!qWU1V4L=XlAL2G>sGc^C&B`Y*44xFUO`;WMsSqRy?V#^2S+mXu?>=#K z=+?bQu~g*sZvG;^{K~yO*SV?H+bwK)>FJe2;J4H3M@xnD(g>J{dZton=maPTIY3yn zk|&1jJHPcJ1OD>p)#~e|!^)Pn&w<*#>>&9(D&zx#$r9Q7glwG&<4_IT&Fn;coymt4 zebVRBc1eQR8`1MYGhz(yL4GU?hpu<`bs1ke`u%HXQol6zArT?litc~%`ct+deN1*v zqnzm#>rPT`88vM2pPvVvNT!@L1KyW==My~iz(k*AG?*&fDs%Kd*}b=w+PAohfb}I$ zaq<1z?d=BwuUe2(R6Ap)g#a%J%-9igg@pCQtbD+Fx6HRUXzbbfpTc-~-d@1Q zXe3+enR)5bjIPLFMo-bMI}-;K3}pitay-R=`x=Jp!osQG0MuJ?!IM;8pVk!!9M zZ{-GVZET@#LRHdtC0CzNvWN<1OWhQsa-@!QA7Px^69-6wK#~zWwcF|iI4ZFJR=$u@ zm*65tA0eP++)@=fs@qqo2XuVr-xm&wvX9UE0n;oQk6;6;CL;%&0x_OvP&;_R|a6 z+V?!5_~*mOyUtvt>Uhazt$Ev9cyqI>l6KX+N<$c*S^D~u+|}=fYXACi#Cqs_fQ=u%4xw+p-*Y|d zu2sMI=0>WN+DO4i{Y4?Uq5Y;@&uIuXGiwMn%W6-4S~K9PtzV2Ri?{5aq?g92B}%nz zAd7d8OiH$P4wxRrU0x+``B~+$b$+A(=_w8+0MRJ$Q4eV4*k8|@z-_VT#yTNkI7Jf! zNf5sBCvHR}RD{&|fiBCl9pp;^bl6GbTjr&!-?D%o%1G{$=<^<4n-Hsv4dA5-j@^Iu zj9u#!?$5I_7p~LDum9$p8|b-VbODBEZJg(Ty=}&*XWQ^ zopd%g*`NtAYM6c8bc;V($F> z_(;0x(e2c3Q9P$P4k6BnHSD`Ws%i?Zp#d~$w1J;PrHiNU*2TGLtHzRss8|GNor>nl z?uqn-K{sj<9N!W-Vul|gkYuJX$V5?S8N-&& zLHxDF$lgP1<=`Oi*s%y=DylwqaMJ*u0nd(bDd)bwnyW|-{;tE? z?HL53)~613kaxhL)dLZ|qo%y~h!f5HB^!vB2li%Ny_TutrT8DoDVVBvY}F(r1!BDQg{+DMtFo=l~O7>9pP|v8zP<{$AwEBezddiLK zzxnm4h5x2u&DZ}9S&ZA*trW~!eQzC0Wt-2cSr$G-GJ#S;o`0t2kGbCfga$K6=zey; zXiKUx@10Rhb1IytIM^I@D2hcv|pczs|Y%>+Wy5yE$**MHP7YuKw3 zEc5d95xPh1Ok(_{TyS#}5o5S|I0F&}4FP4>P4GZ|RjShyiv~Ne#SPmnQgsHBhk!Vf zf6dM+{C7VWv5FsflP(*-V_Xe*Q3~ZKX#&z@SRF`{m(u|}C|azwnaHmlTLb4xZ{5Y;V8 z$x|+z*r04)rP(1Zve9Ye8sWr`sQ$tz45hI$h#E9dw#b4z8t?Wf$YH8PUZ+{kEhB*FIJSM zX8;n?$mkYQrd9#Ktja<(P8VD`&J2VUO%Up8#1Bte+3VK!KLb`w4p0lM|3Kdg?45{0 zxCJ>dmGT~B@(LcJdmgHJMjuB-7d3<1)oW*D7UxQ_KMl*fs`hj z;{$F-26C@8DXkdF8^fcwh7f`lDZ^B9iw$78SVpfC3_g9yNSx3M^@!6cy(3)%Ri6@X z82=FHA&x3VIGfm%9w-I;=uzXrCL)juTU~wg;d)nhS*_liacdOSujdYX4*lH#;Vy!D zS@vB6Jp7{GWEsj&eb{#2**7NmRpM3V?NJst#iOg4j$4VR62j_@V>{l$zYN~&l>l6* zg7IDN{03F@vTF{Ztb``W3G z9yvW$ll!3XD1~L<{rihW{xhwa6MwVemlQKCH-f$fI}euIl%l`7y|UP~y3Xi7*>ctu z!i*7CqN=Sw%-^2C=TN&A&S;_-N{p~hr)2O?Mnyhk4w+8Q*G*CWgV> z95Y|EVh?J(3r9=Reg16QA&1HrekeB8#tl?3p= zWUq6SNJWpklE+MlaNtFdDA;cYuy&Bp@3Eqb3w`aO%Sw-gfV~2xh~W>nBAA`l3?HmG zW-P>c2&2T&SnPZ=e0DL4z2Mit*6+yn_s5RESHOt4)NNEesNO|uY@iy<%h#vbWp*o* z7OIMO8-^l5qS@Bh=KXJk*l<92>ZFx4MflLI-pg2aIxr|A94r=E#f1OYwwXc(_#<}L*c}7+;SABexw8PJg1rR46KagX4)mZ)gg&DY@p|CO4 zmHAz7;g0L0@Sg-XH$2obLmG=OJ0H+|;sWAoH5y0_`vWRZy6^xq&VG*k%GsIJK-0;^2_C8F`Irxme9cV-PYLme@>#}0v1qvq(d*eJbTlf^ z_a2bz3fir@=Nbm|PJTS|QB*Jd=P+@;R3!f&dvOndVR^`FzJC2EGdfOeU5I2Mx=u%6 zG3yuH0xLZqsX$tBl|dfJ=ayp21KD>yjst$AM##^@GhB1y`G#zbZAT8uUk5o%#~U(a zpTjw|RdaGr>BC}vM94?^Xe#l2Om&G#N1?AbCuan(s|7=T*$2Sgd^DGNo}(*ZalY2A zyLU^@>P$*e<(;@gB5j&accQ0ZDof{-wDI{7^M0C;T3AcJ0>g(duT}m^vHUY&ziZ*y zE%Ou)A_t9zl;_bzYS0jJcZxh4213Rs#~(UI3o9JCFSty!6_kWj6_7H_$yW* zuyih?O2{-3}jEw&Ou_z>!v8ri!(~;*{fu>Te~WnOLst0KrUp3#>C-tk!z3>{%%gtKqiRL+Cb=xXFNj!)D(x z{?|*GTD6l;-0jRN>Mnnyn-$OwBYl>yq#E%F@2GXJOw{a(2~==x4CEgWl8U<4<);iL zKzSgi-b|=GWqZc6UCb0hzh_LhF)@-v<`H3mZbjuvsh=LO7K4wl%Nit7F zZ*Q4^i}{9NUA|66_h4@~vzoom*u+e_gS@`HKjeq?4`gaQ=Pv>kQ@;Y+KTt^J>0;1_ z?JH)&KyQ#7>l8xY`SSO^*ei+5j>^zTw%3N(G~*upkb_QS0{;cY z2*X}?{dVZXVN^^e^W@Ao1n2QYpD4roTnotf`bsoSg`jA~yXUajc7m~XFV<4(?W*V2 z8~^?&Ca+JRF(x8giqZy%Wf!#)A58H^(*@_ng~lTNjE9g7CDa~N0MLo^l!I-Rj(>r4 zQM)U35+gTz1w(&;(_FlIBxvq?^Z~PYxycQ7w@^L07wQ-5p(W-VDQzN1Uv`HU`n8y~I!ET2JQtlwi$*vUQS z*uOpD(POEB`O|VgX^5tSdeX*6h=UTF-l9=K@~a=Yb33*ISH*#xq@fqY42_t@&bRc` zS6N~8ur4i=Obw_M=Azv0>%n^ZmQWqA`NlWyjiO6@ZkFnu4Omd!17hTX>xn`r$G0HU ztb^&8YsM74pbM|7^^z*}yfC#83u{)A;_SiG`Vg+(iG3#>v zM{?^|a(;B2<^&ef#Q92`712v`8qngz4XHeFa9^hee!)BWVyIY0S!S0bXbci{$ZlJk zGZ$T3p>0n1+)vMl-Ea#je19co?XsBoJaxvRx75X~lace+rcyRB=rg5#C7XN#A2^7E zn+eQBLc$l;qn^kf=;0oqQV|{;=Le^bBZbcqDPO<1LxvH6pU6UCc1mMQoUA$zz5Fpx z6HGV?DKn}-h{M5zjH_OLa#YIL+dXsBS;!E-&ozn40>e7ST}w|srEGA&2_l?T~&L@qKfw(n=PK5l6|+!vM9K}338Cp#DO68~Yd z(A^uV3{=lKIs}f6j*@0Pl zihJvvkGW{7G$I@yZj*J^{pzi76j>EO3{hxIK}Z?7p1Zr-s%pJc4qHP_jF~DtebZRi zky5}O!{V{wN$sl3`2IuH7XadV`Ha(o8Q*Pt8(%bgFIaS+ZM#a5=5=X8=qIpC;qR-8gBq3%q=;x?0x)v;%D`)s@FIw^>jasCXn}+UST#E2_w0W zyTyc441W+hEGloCHwK0FZVb`oHS`Udk^||ZtYjcJK;Ll4@(2eCi{$C6R3nnRUA;Qb zYC;5IkLeJxXum7F7bY)Nnr#nxYvA%Aa3nLF>W@P#(xbvHNHG+KS4jgEwGxbAga8<3%qH*a)7JHdD5U_sL*_p0jN2fIiOy-GQlq z<~fV`3*-6Q-V^VCL>IvaA12}?I*i&*F^JZSr}ImQrTmv>TQl#Q)J7FXc;|KE=Nhqo zla2m8!dTDcrQ@^t_P~t5)9IV;1tszZX*od`-6Rs=nvJ8PkrU4XDL z@KEF_hmH?0mGP!Lw{@yQt_kOQdXK#A?ujAcy?3RiSnAUM>jq=a7VGzy25r1GTy>F7 zA^ z{aQ)&L_MXzySL-Eg~cInm(~l9&I_zkkDffam0;E$-W5y@m3lNYy)QK6_GtPKmyi47 z#jfQKyJgk4m*rcCasXZvL;>|KL$z7t^3C4VkVR`<`^9Jyzlsh6@^!)({1eW?i+F`B zmEvd(=8r=+F5}=|ervDBRDaSyQYM52!&;11Imrn|--$X>irvke1fXo1<^GmuwW%It zy!Q_|aYE%gcmR}85XA8sh?EWSh^v{w?EqORG9SP}pVAM@v<%a@OCCoTMm z$xh{t6`ZM4o2oYqNoNi!i@WC8{+Y3_RpGnjmKgGm^?pN0^=j2Fs&z zEBXt|96nf!7F;t9T%~h+_y@>&pfSy|88y&^C?opZirpSi!tYz&_^z1nv9Xh7snjWbKeBPNh59c_ntf5@ksBc0V6e<~wz2RHo= z=E4LQ5uRHonB}&cmPn-_#@$*&B2xm@c@m;TZcC(s38^?p9tRncM%$abxL48f%QKw7 z)w#~ekibw7BJo0{GsB2WwaVsXH@CZY4`LbJWN@dn>+j@@ZV>^a(^TzUAFh1VPO`tX zW{;o+CrJ6i@@8UdYHLGu=!1pB;cFHsY-*RdW&gQx@4XCX$aXYQxB8bKcX%;=v(DpInCs4_<-_aG7(`L zCBrn4uso8Lyp>ORRC+@9;RMo>40TD7M9jx~sIiWB)?O80N$&oA%p z@c6BBJ(|}u$^4^=&-Q>wu5M!~S(?>-qK2Ah*38q?eebgRWIW_v zEk`$GDo3!9xZ$CUBqPHr@4BYU#2we*csl5p*l0)D}p|ty7IF zLr-;X+^zVj`bRi(E0R%Msr&L&2s-rpySJJFQk3LHkdq{61CmXd{p16_plkpx>ivdF zwu~Po;HmKkF8(E>m}#gOUd+Flu~vI_W1?-6C|C0aC3yQ4 zr38N|U3~7#pXS4{^6(2le-QdfV>dM65)W+C`@n>ccaQgS-<^}1Uh`_3FsXO-dUe*OgY0tmn7)pgQe<%HB z%F4XSzx0Ag9fB1O;s=Crl?wQ@-V}QB;9ry-1gx?hKFhZ++fJI~I#9R0J~dOiaHF8T zzoL=PTVO~fN+KNwWeOtT5}ejOhxadI`IgVGMlB8j^w9%UR4M5KsP>D4=}C*r z*}e$Zh3}BVd~gW8C6^ydK4^;s_Ilfo%a4<%STi2d;pw}M`@?^)d}MuJ9q>v3`C9ot zTYS-}DsH8h9MR=o-D>ip&&HRaOkEO)fyiC|G4X+u|KbYR83dK7rLH|lnjEIrm14KyTO zszd*)1NTA=2n*E#KjBYl)(^#9DDs|B(m!vfk0Q06-&x*WuGr_&6H$B21ZEF|cZ7*@ zA9S5K`kwUK?f>kJhAKtzYv-i^1vwA^HdLDOz(dn*grZ-#mOrcC+RusU^z_58gA>dF zlgk_rMK+5MvF*}^<4)qrV>@wz6z2ZjN3QDAEUqa&`zbn&kOW0wxJp-*-FGBWh49PA zJJPya%8X^-)l1_*f5-FD!+4f})xADi`}B~r*E}$FdwCBYC=|RevYi3WlNWl`spl11 z7X?|dClgw_XC-3vG;ABvbK6JH{Os{;z`vs3|23qpD_-#5lmqEOaXg>@EZYlfIe_)V zqZS_&i>=dtAwqWWkgeTmQX1xQ*>J?B20GymAPss>4!vHDrS`fo4E8v{ADe?(nP0wP zS!%ryrc4a=)M1Y?mbZ_@39@2W0F#YKr9A&b9-bFN7wr$`c_yn3daDG>*YgYtfd_FB zjZuH1koQOsX{@gVU}0^$trNs;{;yW>Ky3%?LV@{j>NlrcUM-sj}1ah4@1o8Wp9>is1&{pOicXIwedGjWCJe`1YUubmr zTtg$%0|bhJzLA+0D5j=t4Lhmw(|RI?6sOf61bpPUbymXe&FoK1O6<>hNaTg%E}#*t z%tW5juV9HlwTM&*;*`kGt)L4z(Mm92*PwLUONZTkJ}LS%;d=elH)$M(sZj3s$8kpN=;%x(#@ys*sLf8i`=t3+)=cRTSqw@m*J zyf{DQmMO9lo19Y^AfLBYx=vIp!Od z;`X>29ed^y7?ah6VK;{8R}(kR;l#3!H4`NAINi_Gr?LkR;;L8Xr$C^24Uoy8aPWNy z&@Q0hajt02H~|HPPg63Iz^Nf5Df++t$ol9d?V!-Ga8N1{kyHkkd>Z>EPJK$kUr>1t zR8Y>35Ri7UoBM8SkUZMscn&6^%!k2YmMxLaYxYhaSQB~{Q&48zwSxPLlIq`mR`=dmTwN?Thvubzzk zh-dq6v-kZ{xPU;~SH^l7WB0JK8J`B!Yz&L7HOuJo?6+fkQfJZ!^wuy%cJ0Y`IySQp z1v6Z+Ye~BGsfc=Jw3Chq5jaSZQvSJ2d>6b6aI5Hw%%=iMcIF-#d6>J6^t>b$*Lm!y z|7p|h(oreaZBy|Bi?n&78`O8NuR(Bm>DNVMkJ&8Cck2zlNELX^kU=9Nd0W2-tG== ztbVaSHI+rd2LYWqp3`3L=YrNb0wRYb9LGw9RD3*KVl5V=(7zD(xV%YRQbkTv4qVU( zOemZw2;zoG1Q5?sPki8|N88Ei*+G+>KLP9V*LXvo8XgGY`#%*`md?A>&|*Lp3$!{7 z^dKd0?FerwgGUdE)3{sfc+q+o1S2vnpVBA?%xpMt-^q4e>sdJ+57#Fx^?O%;4^t}p%Y zJ=r{psK=;@xZ;fuM2iMt?nDngAj)u?py5kPk!~QGZOQkt3)AN9b(4d)6l{kNtbBso z$zg9b>H}sPah3c*+U{KvM^r(kc;9*sn8jUf1VLKDLdiO)d z+fjpW+l7bU)96O^1ASz2{j5pZw^zOY`HE{r6idH{K_Wxw-I)sKciBl=;VFuBpgc&- zGtXvy79LRi1c}_utlIhBa$Bq``h>X+JN{5+VM#$w{HU6$bf%*K7KNW@1?r=(m5G3X zHOu>$o)>E(S>N|ir|)1%P;8-^cBc>Xed;nqf;!Hma+wUk3s~n`4(86bu>OW zp444Go+E-AIJr8ru|xEka2127v3}n>T{f9N^?5WOte<((vR=AYrOO>N{X8m*c$WD) zQSZ$1EZ**0Os=c`R`EhLic!x$F(*8za)_#>r<0t#nkf7=T1b5)U{%rmzs3d z?Z*q1j=E;omq2^jeVv9d0y!h-xqSQkd$dJc0LB%|N*+N{-tO^>k<$_2Pl;KcNdpNwy1(iDerjM`S9 zfLb2Rb6>tgA%lh3tEj<(9-OS?b8-5F?+2T#bF2s$mKsz>l3$|t{gM44R9DsuAALPB zg}C@#21oe6Ir&FdtuCp&(0tlsEV$fuwCu95XYu2R$s{eGN(+HBO6S*f$jqq8<=m`U zduXt!`!~w8&a7q{WweuAQnVP6dHLig-f3kr1#_O7;*GzT3c2NG!cxI&zkS+jmeJd? z_k+B}-eHd)yRSh);PTv26!^@L?9ikd^#PKeFBAo(AQopFIe(1Z`N;D1!`o9e*Y)Z4 zi1Xj8TuE9$y|3egml6T{1RnO4`h{1VLWzVyve_-EgWmc#?XVE83rA@%ytbSXF517x zLrvK6A7A}5_Xr}T-fvQ*EBDZos;Oo9>iLB#eh8W`NseT6=aefocEqk80;?Q?C zn(J_WDx9Ojoh7?Dg|RVr1WB{RPls=weU?~sM@X;`XgmJ=oF4L=C?)0{cT6J%Mpy*r zrLKA67)u|$XReZCtQqu=O!vnIBbl?`Q?BMxbO`J5jicdkV@@V^b4jYjO8})=w55N$ zl3Vhx|0oox5cQ&!S|tiO*Ouo1|AO1rFG{RE82rUIsv-E~KVB++wNAdywPgg*wEk7L zwYi!dY7hl5W*|7zx+egWYk)(KGRU5&n5Rf2+U^0NY>QmSkC#6COS{s(S2?Wf^R5V1 z)}>1*Zdn3^xhF>)=}ywCXk)6thd&}^2!qq{@(_10;7w98Q8F=_5*7N}CGutoyfbhR zUXq}CBLmaZzkW+E@o_ugc?uzrp(9$EXvgq)>`$eq``@3BbKCsMM$Otop3;r3|9p$Q zKIM*7BI_f3m#JjSAP)uW$b-T1ij?a(Y=rQ#kJfy|Piw38S%73%AP7@?lCk>je_~1E zG4Ycr6Z(0cqYLn!pY7si2?;f?<&I(?ptrx(J}DTblF;BK*qwcvtIoH}7cv}Q$LD(v zM9{ly2tgD4BVCmDGq|Di0>TjQ`Tf_s_{w4}=A3z+JNCZzCeY$DZ68$a zKmLveq-Vo3XWgjVm0OiJ0X{Y5nq=GG`IcA)*k;lBOO?yn&!oScI8&v8_3d~zwL^en zeg7ALwf18C7OG8FuzHe(_(JzlBz&PCd|cwO%Kq8UKKLw9W~8n6`o+U-S7;p3nN0uv z6wliF8azy)xi!(XEl%_lj)m4-%7{SAk_U&^)bKzmiFF8J!pJuTP^4v~j{Ip+T+29N z_CqaoR7QIvLDf2?A#d&w5a-knw0u8~5Ahn`#V94wZw0mCFh74|jQ!uOt^mQ*G68BZ zPwxL&R`wYy0$KF{eobD4ee=_|S9!}O@;1I1rVO_};vpwN{Lm7$JVMn1ulKsn&VC2q zX)FS^VSo1uC-ySwfUoo$$@SqMXEGhPNf)RAhWp+>_uQ4q zLh7^ujBr$Je;tyTZbO|VwA^R@khIK)wz%EL5l^PB-oSn2t+Oe8Ytoa*3ER<2nzNkT z`JtsM@2n4{GujPW(y>)mVif^X$%|I8L3rmg>9Ub4G z-h!etVOmjwa(Q*s1=Prk*?us|zYJd`3S;O+NpE!d<80neo3`JKyR3Cz;sSzBQTv$f z3nL3*+)M^6GHThpS6a_xg=O`llrf}Wva;dU-55~TCrsLZQPjw8j2dCq*x6Tz><%2^ z>*O-rPOC7{9VFhYKQ{AoOiW<;r_m1Qo`5)6^059;X7p_(J|wHM3S*zn>ra?qKfimv z{QGmHZp=4`lMTLJaSYnd)uk=1r7Sk%$I|K_0;w(x)RtP7I%t%;nUrq%KJ>yZ}=;HR>t&hpc zX6&D&^#G`=nb-s0i`zncdH>Utcv8_*YWkXFO>1(rSDDoDZ2IBY-Wd9CJETKNrqq;h0aBoP{ zJ@NCuH2b>HONJiLb6->QuNU8d<+%J9*D_xZYC5;3E=1_=pT#B>LH{>AKe9|w8~;Q? z;oR4G*^r}4<((Q0rSwQnPAQw*oD~n@{jqM>zE(HfjC5IKt=>7XWg!AuV zW@88#J>vF0F8F#JowCutb+uw2Pj-9{D2ZOr_z7YboI}g^#2J?o3VbXU90XtUKTd9P zad9EPu)dGdLaH(|lBIrtF_C0l>~H{_PSD(_N&orh-HCP}S{Ud@IW;ajMO#|&ra2Vy z%~h8eXxY|LqZ+#eowDhM~$Vj{)h{^{>Ldv|5Ej(AVp1;v?(EKtwpxIOQKe!#10cwJ!I;nui zQyNY?un`3e%qkfD22D^^pxSsy@A(u;WA-@_o8$eFD)#1so&9&O=YCJ44O#u3qGeh- zjyOHtkwBxNA$3qpnIual#LBqjXQb_>q$w91t&j{~3Y)d_n1Dk7weKk1EPwyuEj3t_ z%$8CxN{Ii3M+JJ6e0a1k!`8swiw)Ed`Jl6t{2zfbemF9ZKVH1JmEXyNzoeT@W^(iEyaKCOA4O^SGH*k@Vdb&+ECx)TpTolY`64 zJ>&QziKUAdPwcLmQgQIKg)Y5kmc4=5UTZHgA7d99cXZ+&|E?3BDIn=@-S> z@BYfGs~Y!P(C(bK1fE(HS+e{ha7E|(Mg6x{Lk9P3ZiBt|5`WXG?)h4SK3?VCw~Ixe zdPw)R7FeyMZEF78n^=>Vr~7jeI8tHa?f3-DB+J2dK?|~L_!LL0%Av4k^xV@GCh#)1 z7We1319%jgA0?yZB!W~&mMxrB#r^2YWv$bjXcIL@1dM)H|D9`Y4o@YW7UbjAyOXnP z=3&NlBDF{TMBH_;ITBVoA(joB0ziQVW| z-4nWMKVB6khzESX)?(TsU~eV;siBT0&3{9H3kyl#(+OZvcSF=fbb7Z}G{y5y!wf;d zvg4nqK0HuJkBqMOxH#VW+x`SQ?`FPOtz1*(qzyl z6_{w|x07e&fXG06)!$;~8MELHmbNAMoN;|6@DJ2#AFLZ**3Tylh~Xr$VCIs~ief&o z84H6!EalO4&{i`CBc@!|R)Y{puA4&=G7lUZ!Pn+NzaLQliN!|}*`5~_fUpF)@;k}Ep+Twxd<;B9}9toD;i4xwjSwu#^f&Zn;$WBgs8Tsc?`s#tx} ztrSg95LU|&c(9D88F*#zc>_ycS?skDZbR?NKpH#mc1Ky=_U$hIuVJR*F-BB2m{GPE zebK2nzJfa8^MIU`(|_L{Kh?>VnWzD6HXJl2hzS$97y=S0u>JSj?ZxZOf0rM#Jy?=p z9K~L;UXWjcv@FfMUPWmaJ@fKbK~kQ2v=m^b5|RPnk+AF7N#{23vND57vV2Me-|59_ zw7#b)6AjrNZwY-k@Y*@SqF8Ry{BKflvGrUt_+Y#DUrT}}y|>Gs6+kIX$pw0*WYX{C zz>>6&tl%Q9{KT<9hL=>NhFX`Ff6;Dm?5)#vjeB0mlhv&>C~4fRxW2{nX`gmwoKKu6 zzOlCDML~G8idnQ74EG5$xhVeZ6Bb~a#ZNGRkpPW_Ty`RJ3Hw1RVVJUv2dFv{GRlSTM0hZXm!pE2D#$ z2{T@R-^u)+(k?q9EG#vDxNi8-`L#d!4CYa|r4&hJ*%Ne@Uo-!;kaBOtME8x%jRyki zqDAt8(d;#9ey(+RiFV9mv5*Y?gv^qlmDo1gKU0b`b-o{`bk5{-J3rg>2)$42QoPw( z-7MspUQKhGyKXz?4tUtHo;&Gl+|T<`kP6Ex9lHoRrd~W#t(eDe;AqxfjIitz^2es% zxuH;B$O@?Ic#_48m+I_eZTI5xf{vY~KcL4?%)~U-pA$`^_VV{3{&KI!_Tg?FZ@X6B z)BjqDeZ$)P+uM5yuDp=Rql6l4%rD~wW zUQ6FRzba}?x=ljK3k8Z#*Oxiq=CMdEi`a#g5GhB+@5Q3Elo+X03?IVBnfh^+AUHAN z=I;y)>Q_t^$rLGNnYW2qF^aKY_5=$iA8yPJj zq5KRm!JOp`IE_MCfxQa45-(;dD>8@a2klprS0tcFKyOd@gmlY6NRB>9n7hWCUI>{f z_WHt81ZBWBz$prrZ8;xfBvEhziDh7Cd;t|eoWg}+a}wk~C&xdE`d)Es)YNQWXj=3; zvBPMU*na+T#}}U<#$p?Im&In==;R=q42o|Qd^cZ^p87ux0n=BWFD{9gD6ftY7EFXT z)T#Fsj{q6q2`L#w(u@SNBxi>5ek#EbQsy z-0<^;6gbqNQ3%mQVnC~@O#vvuJl2Hsz^OoQExM!pZ1#-3{n3H+Ecg%cM)0G2x9^3` z+Q!;oAjA4#&k5aIq9_p2+yTH{4d(~Ako6==pyR+nS*nOsSvE}U2sBXmJ>V z{P6J}t33^n*{>tSbe#%*wQR^egOnJ5;%SgYhV5;*sIuIQ+j{5$gahremgaqR_@we` zp+}8#vpFzp_YM_4>oe0=5ftbjvhCdv*p*5WOR_y^B9XpC{pxEF%{ghO54WaZ-+Ok^ z4EQnX&q7_F;Y3|eUf)UKl&zF4c@GOlgf>h822M@glMG0GmjppqSMQtRkjpBaHOXe} zOU-T{(*onlm*tZ^eYBfqiowQZ{=7~IpT;v-HcWQL!+k>cd29=?hsg;l%xk)bLbjLK zeLXIUh}^GF<=5_hk#=8SWdGYam3osocx4$D<_mdeF!$cDf16M=NiKGuS#}Ti5cf57m{&+jr6LZ zLMd7E7=-hEn8RlTBT`mDNK{{R4%hwQj@s3%H>}E#cWd%J{h%cd>pHwxEQYs{i$AQ$ zk6sG|_T)r!a6ngfSLQ?;MB-1#Wlos8IDR_!Sh`8^df3a5nGU>jd4>AJBQ7+4yzG|8 zaN4`{I&a*HsAv07X8ocrf_ut!rI*3wY-Xx(bMq!IbVICiZ~d`7`RYy~f~riU{tJgN zS}{cV4}s*VH9J+|>XZ8Clv^R8_yAbO$k_NlRycq*9i0L?vZ$Y9g}tq_qUG1UuVuQN zY=|yp#w}g*etqe7*6Apvm#{%)7RQV=zDcFc7SQ?<*OAuD4!tTH4l1ujWCTCV>h%E? zPYrv*{d7j=87|XQ(DFdxJ|FKMorz!?^|~ugmiyQn94kneHhe)YmWEyaZk|i?!KaJM z?-Lp@w_rAt^xey*m~jc--cX|H6ZncZORe%DYzfh%$^mg8E%h6h5Sy7Rpw?}u6)JCH zsESt96nz?e?-)<^eEVbf5E2Tgv{CkT9-cfeEM)aNX5TcF@~;@EmzOugKRZyVa414B ze<`5BHHZKaj^rs*j3{idfFt}XSp@g+f2Q4^qYT>v5jg)A8189(&m{ZTQNFWhWxt4Y zkKYods75mW`tkQ*!BPkv7v}y{jsjms-w5XPqLz_~GC{FvGW6xOIYs-SXMqM-4njGM z#`A}F$1w^pV-}>wY*TuaVeop!6ep?S{Z?j4v$C!}V?#B5WBE1YJMs3ON{ z!(7ep{@NdZKbDWDce4*}ye}N{W7B>QK-E)Ueqw8P-(}tS_qByj+Bf9#0T{14CIK@_ z;@91Nf0pi1?2kXDBb54>P^O?=Wd%Zj!2Dag)&B{f++S|EN&{sTy!^JeDbI@!$VrOp zeGnSyk-SqF0}yGD!5w~wKX?l!EY{6`W$XL6N*L2_^6dPHsbj+S&`B^=(c&W^a$&Ey z_SJsn0*eZkdVX|=uv8V+SnI&R7`Yey27>)XCupaV?Md1BK?ox0f1tKAna@eCZr09C zNpCa4yj%zAbB%`Iw@0|zPwlwQ66j%oMBYcIaZm8c%F4+h2U@5s+L;*@&{V_88-ml+ zIkf!fp%NP5*+O8SKy9~HnkN{pFrsG|?i{kBN>H+Lp@srSS-DG)q(1mfA}QL?_vcmZ zL07EPb-w3+Tf9UUPk!u}ATk_c-r_J*$vWezf^`sD?~0SZyJ#Ex(L=I7XMz;cLjMQ+ zXks{S7je1o(nX4?gCHuswBT`pVM zPl_sVfY1^A4lYuH`sa6gHK%d@JKKDJ*6PJxCI$MH^(23wZ!ybvJ4BG0D97op3rZ} z)UX)yrvxb6HldS18p1;Ei_hM4BO^TFpwuO~JtIShSfACTB|XoZ-?0V5^WuNM=b+vj z!=m-%sTRp`WgEhDSe%8bL}yJ{V$}%Ivs0@cE5&-VMs44l-U zzI~(LiZEr^ei(V`y77R?u-+RTm_%>g)Rz#_mt@5&0A7*>%K>urwpB&iQA=)g7P1_y zu_jED%nW>!SF#CRUy`DoIY*dWRL!o(m=(Vjo^PL=wai#|d3!I%X7GEchO6oVvuiRN zwrg}Oz-^zv&SyTNYdF04@91&6naxx=<$Mrwg0kotGv*F_)Rzk?; z{c7DL^2E%QK0B!X%We55~hd&@*DMri}y_WsTIlHCM@nGxDeT+Pos^BgJ+ z+Qu}AgNZSMtVhU95N0}APnVKjEHw!R7Z`xv9lU4cz|+J;8Sk8?SpDo%k;TO-h_r@3 zEy!0$jDh@S1f@|kYZg35qt|-ph)BEzJ9A0p$b{01)V?0MuamPql4 z>1T*kEhHoN%a>HmrL$nQ8{~ix@;yi&6f?)qZ!9TMHOf)?x9D|n>i_#W?_rkY=UA$8 zBv^`|FH}Nh$|e0*?qLbJE&$OR1SQASCmOq5sil{0=&dr8=`^;E{`6BB&l%an@0NtQNzr06_cU`f*S0Ryu+dC{uiPX@e;i&81@3n{jqD9wAx>>l33j7vd@oUBf$a$R*&<5a(LUD@~4k@k3i>c?qjBIP0&9^mI zGm8!50iH{tZsP1rm^$D$j_3kvOo~y2L>^l^j%K34*vovc2QojFxu0(-0)?v57&tX~ z)}K&SP0;xXu4+PkBpJR}$+LMO3_ttB3kfJ&%eHM>%q6Yc)Ah%IB*gAs{k6r!>kw6r zH%x{=ErbvNp3K{~Z!NvNNMXtl*yxh~Qj7{%AS+)8@uD(u=+dR=B#~b^dd~+&S-#1wjl7bH&F!=IuizpT-M1-dBivfMJWGmGwCHCuNdw?wJBIxv$1(L^eRbt?^YJ5*fCatOJ8a zTCV=X0B4BBH^ySToU~3PzgC$#i#5Ry^4c`Xo_%HOW|pD*0XAr9Bg-Xz%ZfQ056WU% z8ex$ocG02Xl1TqxNe!mNn8V9Kb3T&#JE$w_^@l9aZ;K>P)QhmrVnu;3c0e901~ukG zveWSr5)}g{Y{dxPMkYGh5(D;!FyrxjVP|KvT#$#*-7wJjbbsg(R zKC{&5Rs#68K(aGEOqs*%2^^HE1Hc7=DZs{XPeSx;K+WH!}w}qCKx7Ww{ z+QEr=*(nSMuma20G}1tHDncu?~s_u~OHHv)cbvo`&v%H95E|NsX zIt!_rD^0ij`w^U^sJe19c?$TDcC{s5$sPK_^H8>3<@!)k7^ertY9K_&eBYz#*O6fb z7fG=~MYFbQLZe@RWFCvs$3kS{NuZd>%@a5yRGwG?GIHCe#R{!S0Vi-zq^KrDx1Cv6 z<^Nb(@A~)eD){YNmqZSd5M;Qd;n)S44kb~u=&3a@p3PB0=0wcTnnhrOp4ID;)(8Vb zjeS}~igiA7G)BtqRw4w>yz05#qfgNbMJG>N<>#F&$7gvPZ<(zt=Xf;0giMVhL9bc| zr%#&?Ub5Hz*vf1Y?PyI*OXFP{q-^k`F>wU+aHY6VTd+J{30ag1Tr@FZ3ju<0>@Y{O z5~PyyKLvSBr~DW){ZBt`FOwnZ+eknRMf3y3H@$RF%+!>6Sl!8=*ta^Ypr*QPyYs;- zS_1tfOx?Popum^m$k8i|mq+(SFWM-d;a#6NKLv+D@lx!?H1dsx%3k;WPOu0)`CiBS z-{%f^9TTCC`!iCP5jT$5Ys^>aIR||pZNc5= ziO<40=?)92fIy!8X5WeBS!bvTHPqo(l;4ypIa8u28U`2E8Vn4r=rwqi-;O-K-!ed@ho9V%D75wVy%u~7_N1PE}w@-T&Y=3^l%e@U;3H4$ENyBcdU<* zA7s8Z`1C33i?;7C_Vc5va;HfG><%x>T(N|<6H)mgl5Phyy!*$draGjW+n zwe$AT2gb5qzqxZBDAK(9uf8gxTswIE=mOv7WVJSwCGp&_;$YV+0mwKj>$;+mD0Oit zG*C)fIV=7nCO;uMttqe$TNdk;*kD*jv2$Gvm7+XrH#xB#7Vqt)ULU2fHFpF{h-XCY zHED{dkkY8KkstK>dO84F5+0?70SAM@1@qhlSbWtj2W;3siV^T+#WUFV( z#A1e~QmLS9()-dujTMt~X7VgPTnkUNB{P~B9U^-e@TfYv*AZ`^ki7Di!Bj9=8|Bg+ zy8KVzMQ>v0skk8q99t_(RvGwl#G8&4Yt+%|s+HNuPhlQiEOelu<|!E|N@oEi9NoWW zgrP_(Ond=ayB~7EY^$INQ*Rec*}n@ZyOe0Z9FXukxX2&g4BkC>JPKb+wLbuif-I9j z?lvmz^6zxt`nTkqG7-N-_#H^Vozj7_~Bl7@Wo#Hq8%&m3&r zASPNQwFxo*w45@?97$*Ps@zA66?c2tnfy{tUXp9`2 z`~GS0n^?wlbmrw`Or#LE6!q33p;1cMcTUJ#DB=)x)OeM(dmUgpYeF-AM^>E5m<2MC zcaHBCiL-A4dIo6hY=RB2`2Flu7omGpCFBpCzUDXGmvO?8ow9HUI&&#LytL&pldLrHddPNc)?jw#=I^r@-Pr>@1rhw1qu?!8 zvsi>NITbG(?)$-d;}l27DzFDvXPIl>&l{mLH<{}{cUMENlk&@dXN0|ioK{*a-;I?h zyD#Pk_hlh+nkLl`;k(A0*@xbhqw2S7_=_HcQZk+#^LhIM~%bRD$5^*~G)1z~un`c9G;v!38ZED;ZO=4iHki z^`#`v4?y#T{@d#Ky;L}Hlt~1va}oXryZdgvf1r;mjQ+og+8A6Tq6z%L#V}y@N$w6N zfs>$BNh~X5X7q_0yC0+{b^aLAbX{3!cBj#0Enkmlt@BNV2f+?61@hE-7{Jg{Mq7CP znkI6PY$i`8e9?jK%_RxCFld4tslX(Q4@rS^|NcVUwfD-$N+(+@Z6+r1jD5veFR`}G z6jIxQ?OomMqJB&wXfm<=3I1o?@pX1x*Ye3p0qNPgS?KNk*>F+ix!>qjMDsVNHR&Q` zQS-c=IT zw>cUS{uw9=PNjmvfTDolBY`T(c14L8rV#W={}3eiH32>54@qpE4@~k&m_PL=f>3oT z$!6rggm`3+P)qsWGeAAHD|0LFI6g~GBx55dQ+1)ZDQqR=d^p2=Inqgs8WhgXRiZtu zi7lj3Ic6tYJBOSG;!In~OvTjk=-er@scAaVeX?==UFDaLku5vPBvXE)F&s*$YvISFzf;|`sh{}N^|$)>sBUZ zb9x31+FjqvI+MkXbt<0k6WgnaNzW7eP~>mB$W<1O*r%S4l9w_tU@q{yp7^s!UK`k9 z@qB#EJJ0x=_rr?cE84Ti3@zHJ>*tsM<|3VG@UZHJ-QC zqNeS9JG+hlD}i&5H={4t{)+20cjDnc^Qj>*V}nA=mD8UB);0TXk{XQ+I`J|uWYSMW zCg1<2!?aG)`{0_wmm<#}kg+P|80H1vUdwD) z^<53*qK-Orkcdac4^doj^W9$f-WcDzb zpS;1^%1L^rS!=2vsT~8%EF}H@fg}#tqKMGTmF&;&(wh7L6r#8`qk`<-o}YTWbH!8@ zWaMKM7)59#7h?`d;1YaWUZT=Yu~oEv?cB3u7ihX-GTBy2vQmy)rdTw=IzP}IIMzBd zgV%UM>9F}M@U^MTuD4TxY$J?V*82i(Xkb0^!q{ge(&(dX_df%AB`_M#2A>8lQmjye zzyX^dZ(5AdhYZQ%Yf{?m^G6}FJME0t#ADd^dj3Y(lNa42^*KEl5a3S?ECMAxTw3A4AoGZoU530-}d zs8DurtT4F-uT;t5R{p(?2UO_MI5!Sl@|wr3_sVoS3waM_jeDlwjJ> znq=k)CfaDFv8X@iFLD2QN7a2b=+*a#ubJcLJZF13Nd(N>w}Kvm_NM~VHG|GiQFEc8 z7XwfKNQc{Tfqo`4&ay_mAtB(%K$j&0ZRcTvRs@K}dHviFqe}YUtoLt1ez-=FU_X&n zwJ}yGSNY{gHBVsLm_(Nw;ha!Y!}P*+V;KABM~QR#T#*2J7P=6Cg+sUgB(1uuWnvw; zEMC(}seg(4_zxc6aDZ>S4AVMT$Nzq4J?ej#BhTKfuh%ZgY0~E3fx5Gar8oRl@QEIm zcVz<@ls_R}#A?@%Pe9bJCmMs7XRM_ljoe%mFRua+$(~)ch#(ge+A>EIa8}%#!N}R~ zfcc3qEd7hV`lOF}_cn*^%UM2Q1)JVmGZ$h;I9lD1veys)%eEk16mb%q|)* zQCP;wj^+vquWxAqZL-un+jpa;uHQ z-Y(0x^9!3mfIWt?UpO2>m5L3Bdlo>*0XbPJG(dckU2z%aRCG6osh99UEvvP3Ku>>8 zDB#o}EL8)~MIqk1ttyn}lc)0fw+A!$^yK+%*9M4~&DE*{2+q)Wb%6TMx^E$|dH zS6X19O?<;*8H4%xGy~Z2%c!Cmha~c=>oZu3S?$kkp|w1Y1?9|R>nzZB{a}Qe2%;cs znQX1K=g>OGS>(}*P`&!%KGzayNgSy(;J5kWwm1ETn5k8UE`glm2~t?3h~^n`mN8bA zBf(6U-~$=32#9wJK12Om=({174iV}ql}{I0mbYV&WSHTiJtODC z?AQ4H*TEpTI9t{JTVpgeh|;*7ba~kBc}b!`pi?4ip8g%jneOF zLuJg46v~h)Nl#VPAI$_}kMJ*VFFc2T<%t9~WUNt;B5IrP7FVK1-19a$lryJ8c$kkM zFx9wor$jh6UFzy+B*)$Y-Ys;@D7VqN%c&k(^XUd4dD*NU7Y_IKeaKV$LanxxwUg7mtykB%Vc{ylcdvQKTz=u|WKYjphcxxJ z{-umIA zjlYHwte1?dUmhUN- zw+XNMsuyuYJvR3peO*=Sxo@wP=?LW>aifkm)-_dx-|y>PwBNFiQkm^i7)xK?SG=Ss zzdCBVadJNiAF; zD#%dKHr2K&#I0++$tY{j(dMN5SSHgV%L8mmh+6@`rij5hI@^ zh|#JZceQ%0Q^PewTE$&&Fq37=?NrOkWuo51{rJ$ypB`curLEj2rU^l1j)pX7EKnU!yN7Y7jrGg*zj{_gY!EFwi-wEqV0p^- z<7M)6M@kTW4PdPPimBQBJ3d)4-c5hUr~$Qts$+|*!N+Ffz`v?ga1al@aYU)3deiZ+ zE;iUzu$jn^Wa4yD$v8i_v5RP91-tKm6@1U9E}&xHE?6z(=U2_wv9#y4Op{Allk(A@ za5(zXT6HJ`<3RtCH5C%))sFezG#vY{pI>zkILCmNX>Ik&!e!H9|2(LT*@|xvx>Y~s z%c)AYZt*c}S&+n4W90HqKDw~ta@c~iv$MUAq13-0py^u@x#Ox@~C4iy<~nZ)N?9S@ddO`(}Y2t3uoZ()xyEMk&&z0KGZnNg}L&7v}z2X8ng7Wrx~(J zWVrhs4Jg1cBGd}I0!Y@UIemm8^vEO=(Zv3gXWQPnHmx^NvT=|$FNL{mEOsT&lSTk$E7L zyx)-H8GL(Qjd%^1t(PMsQ=jyGrYgq#Gq@l-2=49z0C6$0vydD`o2Qo}0b@b-1=qn7O7%MP?$&pCa=?5ZE`ZW>d}<861d@2n0XyaMUC34jDy&RgS47;`N8g*uh%wH zd-88vq`$Nd`33_A0)iA0Ko_;eWF~l1t!Whx1Ec91RSUcvx&7S!DFRPX%CHAgO5Faz zL;Ty0Q?>M=w@}4n)2_Kog|fTA87;29+(QUiC9fj<`8!~;4!8Z#@BIkZ!N}K6Y1lkz zO6*(o66PRfpKA^E-K%#nmfpWH?n2oJ<#ev!-x-Pd0E8Rc7D#EI7qzFFmgK4TgT9m< z-%N8BOX0!&`ou+z3mS+ZddOOBHJ^EaPJDrwdP19`TktWj_^;EU#7n%#p0@mk8!P+8 zNhQGryXF@cB)CsX;w>!7y5KFkT(d$7wPeMD^uWJVAGP{r&_pVhIiJY^PaQ%iA zpj>^)NFQ+tD@`4|V~4m$Ij2wW*GY!%5S9ic{IX zDl^r89OU+a?%KdKIfQTTnXrRNkIcYmFIlSX*^Z-F2{>braw%Ns37}u^yP>7SZN_v~*dUa;%en)z*+2Hp zC0G3SZ>a55F_LfXg*8s=LY-Hx&oXg|N5Yt!)88*np{dGIhI3;+q((C`$w3e?P(>M) zhMpdm+k_Y!p3?+;%9svK=L){(EKuzyGvjyD6DTGGdOX}yuu+fm%uKGxdO+`o4y#7M z(iQ4858M~`uoEWNReez&T^rPrQ*S4H;$VYm-$xLQlXnN`^WEySfnDTc6+!NE4S$4tj!e^ zChml6VO|ROrv@#0j(wLC8JpTh(_cPOG*nPAmyx{vnf?sgN4C(06V%BBhu~?yAshG4 zv$3(kFdcuIiZ|JnFSS>R;D9d3cKp*D+ zdc?a70jpq6ad-p2TaJ8RQV_;PX`EU zIP!GQnNQ{s#o$`{xSizc!j#B-Oa|vQHmY&wQP04j&EIKV9QYha-)^i&r%x`af3#9W zU{lRzNn3~WpM`czFkDFemDQuNtblm|3@k^c$fiP~YdJ>DG|De9IJUT`yK6lfW!mu5 zVv^ab7yi(}MMB#w)#uE#;luoGsc<>c=cP)%#yU$uNMFvyNTiFSwusFygi3Q>OqJEe z*|1fKcSvyHc?I=T&bP3&t5QL%pdHn>Y`-J7W_iClYKKk+;U&y(eO)?fzV+6|`|Iq| zrsv*r9CFQtl!8{COa|!d9hH+N9oF9xxP+=v%a=LiUAFcFVZYqDT1nl%`^}MfzF-n8tuf!<(;&h=D!GFk? zC$5E1&Y|zWnRCp0Xah-_TZ<2Jwl`O)Kd2kB0y7VdGK>_8j%d%Ke+A9_W`#Gk0$v}G z?YK2g+jcIYhA4uYzq5lHigt=A4Sb5|bonxRXPFSVv980Esg>WFSp22U%Hr09d0khh z{fu_HKr_>fAi(pGwWlORwFm5xNnan>_xWtE+{l={`!1REU*B$bM^R_??@vvV%b$v1^0Bm1q|??L5ToK-&wg;zpYE7^>1L0`sh#+zpFW547pSDZurgp>NRE{wCcR=> zrk0z<*rprPh_7#hm$yZo;P}>G{vf6_Rn$Vbji<V4)S$|tV2m(%94T*WS@!&peP(!Wi$?e`vxkE8qqs{t`Z^9MDC}6c7YFnOiHl{6rab%{0g7qzuqCK~ z(xmEG+M*l?3tCBACInz~m5A{Tk3Fy9n_G>#v#;bd_QzRWo0s=clEY1VsZ!kCUk|zH z++w^6RiVD?`A4@+P*qb7lAKC1iYE4|x{yywZPkyh_t$a=?6+RQOJu7haMQ3AjT9t# z+k;yU&9hOZawfckYm>{W= zd>IYEQNidy4xw7sH`kAQ&zcZXSy$_}r77i*-fo%_JvL9m}BU5LyRU zby_`|x*aoCql7Nywl)YM!_VFH{H~iwin_ZAdriv=0gA;Y+5b+DKX=bHLvBXf7#UxU+q@C_tnn>#D6i|$mh znRkjXXJv^bgn!#y&yLZzB*rg`($!e&JKOf$YYHn;%K;AUo%Pl_H};px?mRo@Go!|j zT_1vz-0ITnUaxdsT3<4ReF+o_4)nJ(`C3*AQX}yuU9bQm35qKYaH`o6o_>FiJ2$b9 zs!LxOwaxNfm*YoWC9~MjpN(?Ezf^isQ!aMs|1enpu2S>1=;{^CM4icqvM-fjd*XjL z*X6c&Z%CfXQZPy?WNDl2XL8e2weq*Kd&g0X9Phi8zWQ==hXUj8ZZ~^1%0@l~Nk@=|C#{tvj?O`fVN^(U`oc7RDVNSjqI+}Q5G#ME zndp%{OiDO`E9s+cN}XCDUqZu}YZAg1dR^EcY&k?vTH}5*DAo-;(Z0vQ$V4K?cax$! z*48s2|LzhN+)j@r?@fJAH&FR9^wJ90cqDZZBzQGqf+`?7*{1C|$sh+7k+|P4GZgg0 zgg?o?8>dJ>$vNY~Ku7OoEj>x!7{i5x4SEhXdz zy0Z_sV=>bO?Qa_v+PYvebFF6z6HH-8xA%#fYb|Ro4KCcoC%)0cWkn$l>ygMPU5Kf3 z=u+c)-lrwJ`XkRL;|9Vn^ISXIWuCZXb<(@BbY6udH%bd5g)^2IW5dC?xf~EQ1S?bu zX9shle=hJ<)`aG{45cjBOWR?HX8w4Yp9+U=7HA7z1f$k+7M=0Fvb%q(S(#z zOn+WR1#As5+1N|PlDAE*Tu-d}GHm{Ctgw2k^_%r@F*!{(^**fEjM*?Ul1GM1O;ZYf zyNSuQUujAiB%M!WKxs1{+oC+|`7W>hmd}d(OC6bgUOGsUf-}GN?!U<}uz9NJAdHJT zkF@^lQw19VAqcd_*`}{3AEwJ(gD(3*F5#N>K?Gv-AFOA1A2ysd?|*J~hd%ZN{vOJn zxxS#yqzA&xwM>j?WGTj7D9q=5jujz460z6?i~~SFJEG6LXqy-OQ;=|#qNbuJ3SL75VdPu`n~h$ow#V=7559AU;whj z0Z^1VJwD^hSxlhv+nA9q5-wa&hm|wN)sp8_E)(p1I|Cjn7j5*#^!4?Q8#$W|K7N1!(=lWlJkinnd4(&xv7P#Du%3*8 zoSwv{G|sFskLWdTOm$ns_OUzu1{$8%fqDL#`(MCFv!cxU*5ATnPAC_#XLXzoi)Hm1Re~f1~ zC3Uhp8aYQB`3d5r7yY)Jj$i1kOxzBZKz(yrCIt6|ONpZfK3}eKFPD9dLVgb>v=r)H zcJ8=)w-!ogcu(70Fkm%m+((*s#=JZ>aW{F~<@%^^i??{yK6(9Hl!{Fr(?67o-E>NV9_O`IQZu!IsBQ{N{{8G(`J@tZ@j%d$yEPu&n~ z6hlr%d8N3IR-sXg0e};1oL}(+>sVuTOn9vv{xfurPA`_7GGr=}A#0XKfy*5Nd1Lv- z=!=f+(?S?7A~tLeY(i2V&$uKYZiT~TPj3ZO?b+GE4k>Vi9kCNn;up$eQW&jvx=QKA z0|iaz59F$5u+@eS(_SDCT8>HQYNPmM;`F;Ss-Aa^sn6ppHtf|ojl+BR7+mo{1r^`G4ykQvb$=OvYic1V6^1xFk-v6(^E1(&6{yLaz*?6-NxgoO z#N6?FxSKq@g5j$V#|j}9UDd;Ks4LCf&$f1BgZx>) zjn770S)j^`ECGFdGg@{J|;F4JAy17!O^m% z-#wp%4B2)!`F_`!Wj(XUz=YB()e4_|pdXX?a7Le{M?--1yTxrvI9gANEGsKxF__Nz z_+en<6UH~D;E|E(@H7AN{*_aASu*3vpfH2ag5#_<1qScIaL6(2d*+&uSJdv%_2X2C zRCn@{P{$#nmH|J8#7RYgJ93$Wmx>+ezv;Y~{E(rCSEE(h+{>R7ZVu`osWJ64oOHAs zWLyMy65zRjsoZ7JQ1&a~4WM|n=cmC9u;WQEe*Z)8Ge53M{MEw% zr8m0KiUHK!4F;amBTyaBUk??fr1oXSj%Of`oc?eszBkn^fR5H=Vo;3>b$Qw7Vs~N1 zvmZEv&ZV+o0PQlpR{wjjCVlRH6CH6o_&BCL@U%w^vc8sydyi@M0wd)uAo9f_wt-=i zDQReZv0(h$%+yv#!kc`hAJqVurg!N*d|J z@V@~pT-nNpyRri7y;+i3dS!}lEd1Z#XD{FIr5^WU>cR|0#bOPgc|uQZ2|5Y2hQWAf zL^>qmX?x%o;9{6S2Bm%Vt#)O)5?~*l)y7kS{OMYP2O(=uA^wjtqw>&uvs5d7v{WCN z=5oavsNlrn=5k4u-pG#bw$kBYIUkX*>V3Eu{=cuiuOuJ>uUlNGlc-GF|W{> zKzugbyk^4Q=vCK@{Q2yAGDT;cmi~T1W`Lu_HL@(mT`)FDKYIupYbj;z?Wb;AP7iU4 zNI7O)YCu-DSs<0sQirVpu)Sglw5r0AM=vf>SoOn!d4ROF@}IY|0MmEHR@wLY5JAs- z`MpMt1t?>~4fy7+KWi{3j9PQ^tS7wv7GiY&{1|=Zvf=ctGS`XW7cHr8VG%V?>i*aL zjrTmNB`tPiD+leSnLh4X+*dchcEr;KE0K4Pm@1^mc~$ac+X6RuLZk_nN%~pGO3*c+kNMY ze|oYCIM_T(>tSB2cu29gU8k8dlnl|)>~R1i8u@CBvB$g#G@PBw-iemAj%b^eR3hG< zVj~%XZ$60$1yg@;C(d9~{I-DVNdMyw;o3`>e#fMgU7VY#mmKc#@LciLVXD8UI(Rp}ViSA?Ewywd;KsF^XD!Qy) z#q$^@{dP8^BdQ|^h-}x$gT05-vRWj=TlsnS)mxVi>$>U|);k7+N+Z@q9Te4J$30PTbrg$%M~yD&TE5Gvf-idgD}hsiWAuNLBPQ|thaX2#Dzj;v$I?g9sUN6F9D ztkbTh-dKbw^o|&O&*cp_A z4mYn!V&{I{kf_BRL#36$wq3+ZpzJlnT=f$my3WiH0Ttg!^$tUKUxV7!Xp&dj(b%JQ zw&@2r+&>b@Ifq1tN27cHdU{mS(Y>*laMJCt-KjCK^O=|OrS@x=8`yt#;6{2x_Ok~# z@T?eW-(*%d4^UA8?-8Hfo0fy_uItjBY{^s{;a=tuMw*A?P^a~So+(~vUN~Z{6f%H8 zw$zmRo}#Csr0`q#)XB;2JnlbN>v3fXh9ei5sVZCXE8Uut829zO30lxu%xW2&S%)x;b;`V%_KWSz{ zO7FP>77q%Ft@L_@XQ$#DH!E#-!w^uIfgxCyK2WZj#0&I?~oi^ zvd%=j9sOa%v=}ee*PbZc0NeEo8F7bZEP03mIAp#wQlljEug-HQ^_HKiDH0J{sN>) zG&&0qe{?`Q4s()dGD%~20Nmkp?q%tFSx;~ZtI>I+(D#Vt8Ml3yK$*cJ9VlisrknNI zyogG{SC!`zLi=OYC1FT>Ua!X+8LArL&rfotDl-N(47fvG)GOW`y7U?TBzlCh^if0% zJEj6-(8l7siAK4#`}K-Rs0mRY%dq~x5q;{xtIEO^#2R*?e9%@vc_zkRY`o$^tJ!C48ZCYabf9Jcsx16CjImN{(n#XE~- zRai0yuq|9-1YTaCVFe`MGHPkW$kestlAi@jhm3SG;M!6SugDddm8R74$lmX!l!O$AezGQZ7&;(lW(6U2vQmKE!H zjiwlgP?W{&;WZ?#+tw=`@TtkEHD&}EyYor4DTBdIJZkP{Y1rAyinU5#wEwQsyvLxm z{g8@5eVC_SB>VhC!^reUSe|c=0wtX_-IIGew?4-P~k&np!Z2K{Jf9w0r;8M)W(i5?5o#css zx2D~x&6jqTh0m3{)$yKAU^#FI1>eBa3Yh!P)jvg20mqjM)gb^Z>_j!rCvR9Q&7TpqwP4l>j5NfOpvo zyP-4X#pYw3?W?X91Iy*v2h#bT=R$KHy&;c+IVBv4-B@<2fqXHq3e?``A3`MXPbrg_ z13M>!7U1or&DEv{E^wF7i1DjS(DU`fZSXmpqA6?g$U{AMeSqle83`0T4T&KxwemmN zrphmH53X>WIR6%Rs+{doK7(n0HHCZ-I9*VI-++%Uy74EdA#&?N=K#07JS9u7N+^+} zqAjO$ODCu#E%rxUqn-I)^c&Kp_p;`)X|9MpTKP7=6vp03;k4V%qsuWG^tO8ooJhcX zz;(o=P6qTazc>SFEPxmH`Kx+RX!}fUoZ{q^%+{c6${>-O({N&&`QVxT6L=NjFrWuN z24#L7K+k&&PuZd#du(cnSO}oYaG$?+WRyP|JCU22@J|j^$ol|GI7XE&CIZ5fC<`mN z%o>=^Ire3TL^K~8)<+#ngD$6$lL8iSXcAwu<1@*FaOo0t8UOuxBgoyAYazYLBg__! zJqG2!)4D7r(=@1{PVtbw6rQXuW%|;dO)s!-7db?kfUT=fdP&4A(*lqZ0%af@)Y=*i z?C*eQk?~PW&f(uijOBl9*_l%LG~ky7^3hlDFkpEyYTVsauPsL$vWf!Qbv7+J--pbCCod?{V*tqyXFp zV6#K3b~N+F>sAd*(FJ!jMJdoH2bemR7YHuDB3tkl%Cac%RX!hj{{VROwnIXw~<1P>hF zeKOvs>qRw}HLcsDy!VzBZuw$z5&E@25{-s(>_825FFl4Ofwf4AT!AY^rZ+_s?++Oc z4yHAxV?c%~-eiOIiml6Sl+D062Xq=RgD*Psl*y^3H9pawdoV7ezcqMZ)jLo{p(vBA zdCFP?nd(ib)^;4-f6E2w_N_}6o_#yLiLH3ffIe@$NlJ5UL1-}(*|uzdy*!2uKfID) zTKM)CW_8gK%JBX^)_!3f(g&^tv)cDGzXc=4d0@oinI%ZBna=4&(~M}|x$AIMw7`KlPMp4sKbCINKu5tr+iQ1?@v3M#dwvZuR5PM{HzSPbv>P8? z2y0q|McXOKZp`Z9UAy_RlL<3O<&m`f-M`)VtjB_*`3}pK#_hqF5G_h#?dPw+1go&K zf4SlNrqE-2{su?&%TE}fS8~YtC2{1*-ea-+(+qJ*L|bb#Lz*H@bljoa7mDpEfmbr| z=sXFvrdaCE8DCOZd{fNR9f#u%znclI4)*r*XX*VG&crSseEBNJo+$hP#Hq>nB&F z+CJ|+;!|D8H_(6$P}?ZUOghiiS88~a3aS3MgF#;4L*D z3U$en5gs+Zj&MDgyA{7_X~Y%?iUMCzX&bzU&Ptq=r3VR1VvKB5s6ed@`ZCpJ3vAF5|IKHWa{vDbvJlCqKhPcT`}x=(Y;Ht_K0)^K<^5 zx{`gM1}vk0UzJ<>cq(1G@lZJ!29;Bq!_HIX05lrgKiP^~^1NnfU+FWxoNWEV1rYdF zQ?BW;-{RNNX3hKTqFPVInz$0yqkU12DlW!|R{SKB%M?S$V`$q?f}-Tk<^hXnVHst3bN*u|LL-Nn;)=d8Qs^Hpr3eWo{ z9wQ0)+e>KRMqbBgf3j*#$!SBQ#1qS=K8q`9*|qqianSF+vqWCyOrWc}gdH#l1Anmn zH&=A$02n=&!NU`o^csw-$6YR3_64KrgBK(< z6NxD)guv?_;1}ws)|vm!|Kg^&7ep=T48{jy?Lg=pFy7J8cqRz~jc9+$hsPi{dHS5B zwO|B}_3hJAy*ZWp=Y3hS958D+-{gDJ%~$&JI+SEfjR4_5liYHOMbk(8{1Dn$x?M(z zH+k_`a5NNb5WmYV#*iX2NwO?@~+*7An~R`QjZsxL=68tS2hnc?>C(4~ZSwt8)2n zMSXytbSzIiL1()dp9eF@ZoH!5B6IVxN5P3ku_5^{#B7qYyL%}5I6(&rz0}t(4s#s- zb;T=b`FY#>-$Se8U|0XsRf=cW?bx8Vrz6Tl&umPTm+1>KjUW3XG1~V+Tdf$HRPPEC zbxE3R|LL@uiI(Ww7}hBHaI*uWx&*qqMFq6^H3*exaH^Y4F;Qtbm497NuFg+?ic_)U z^T#DF%OW)vq*YL4nSQCG;r*XM*B?(>S{k^aN>@UyYii)Y;^}k

    z1qZ9Xl8`eN{bLJro54XPraz<6U>dO9sM zFBMep3EXBd1f4A0tqAQ#O4i5R>?XoZMlZ{yQVq$u^fgla8x4OwTAc~J|HS$lM8NJA zbocL1m&qtJf?i_cp7bMt?YDkk{o`(~draN<$Lo-98r*81_ofm>`w;WK(GgeqNpfF4 zk0qul?0Ns&mGY4Nuy>TZV%Vdjmm^7*I&ZxzxxNUaSv@zv9133-u_Gvg3Cq2(&ZsBE zLU(g_PvN_$!6%%N+?9|Uk~Sv*;IkZwSJo)Uw76wg3dUw;Jm(AiUx+GQ`=MTXVU2|d zKKOm@O7rSKEw}DHZ_=p>&+F6-uT~FK^V9RwRofq%2K~(r{bOTG12U`(j{Q9)o?z%X z7<5_TT;%j=IwH^HYk=A5N^QyX@=NAVEaV@GV9ieeEGoYQ>AhFovDst3UCsT5!^W3| zt3G`n*kYry4_!|}FV}MW$%bFjZLto&Bp(dtdw3Cky@0%nc({ciA_n1J31^3*e@s&O zb7yU_QInJ2RiG14{7P?RB2a#{=1_ZFlT$8~V7Ki{m`oe2dEw0Wo5)3P>m8!m_h=K| zv+*=azTWX-YvlX#)BAHYW#6ZZ-OhtkrDUjBQ$vc_TicEDstdZRn=Llu9JJpp1Vv*w zXyh#1T0R61XwqObbr#Zq6xUWbfuJ(yDSAamn*U~#)ulo+m2E4N-QH95JnQUo)1J*b4W?Jr))ps!(haon$eTA z7tnNqPjbb?BzA*X)c6E{Q^a-0IG~CMJr!~+&+Af^a*RvXP@NKDRT`v~eSOFdX>xKq zi&$Gcjmfas%OQ+c!C6}XFN7jwi^@<>>llv}#R9UPb&6Uu4*Hj@_+@n}x$bp$A0v2H zoMpp%9|W)))>5R~)Or!%Y@XkgQd-h7E~5__z%s&X>~76;bz5zuoSrZ+w4t*%%z7^b%LGJobT2b zgw^}N2z~I@L+Z)I`#iE;e>b%88ha+Ohl0+=7Q?^WsE;)&86&vo=U-s^5axi)1I*_W zbMjrY4Tw&6WG8WDlzQX4y+<$Nr#G<6Q?KGdJ{Z5e6FaBnJ|?688%k|1vs4!o!R4kg z`C}0`BbL%0MCZAcft>!P)p$iT>xAay#C^`85rv4c^+>w9y5N+E-f+1HCVG4=vh;&f zR|k~(*B$i{#XJ0_iUA*5C6*`x!^<-HS8Bb+Ns&%as)jnjN5<0A#~Jyqj}T9TKv45= z2wR}T!O^cwtBAvUM~{a38$lWZMV!drFbiC>I{Sbe`y}25D2+EsW-DMJGo>{k$1EI= z(-n5ApA7KGCUGvX1#WQZ=;+e*D!`{5{0lamlfoE^AKTkS|3mIjCvoe`j3VXCXy zB?EQuGj+!LWJX>WMs2 z=Aw+oX7-y^CbC8Ww5}qABo%5{L07P)K&mNA3>W?y22N8~9A-saOlAsG9;d4Eq&q}1 zW>t#~P+SOcO*lQ3i%G{pYvuar;y4$&I<5y4%1IjohMh3D*&p&_X2~>Bll65>f6^Gy zn(}Z}4d;EglZC$Lc_VM*H~QPZhmHQ7I@PG+03<%8Cu2JJWxhFXTT={MmHo@|<)}}o z#g+eIj~uz}3Sr=ZfWiH|4{#@6#6$D-MR3-9b4=WlU9yS=cpj9ycO%Cj;$ait8x92{ zz$KmoW4%5J)d575_4$KQ3tj$XXgao|7*#0Tq6!7EwhM?YPo%7SFP!1)b4UQ9HL#93 zgU~nE{#nM)KRT`D3LnhO7*DPX2N)?2HsxeJa@f;G!n2<_c+`*iByVd z=w(^}$+Nn#@hazq*9@@V1z@omY-Kw>9B;zSjfbD@5o~%;D>X#FuogT~-X|ld^s>ov zQv05S;jh9Un^P`%AWQD2odY&K0=k~AZ-zU{_t$eGMh059jNtzS(yHtYK3juMPmtT| zTjtASRXWvpvxPU1H{1n{5nc^YxNAfvNFP+X(58KS{W1+ZYlZ;eQq1d2)zrLSZD;Ao!CjR|B@0CwKRJ)S26N1-oc;gE%|H=H zaD2*^Ibk?@C`LZRGI7)dTMq@Ddq{F@{fIk81Z%A;et22ThZzM;(2}73lj=Owo8W)6*dlQ2A$E{hN`Bjk3^jLVN3HIdcb(Q-go^FLc$T0dL zs2zz(cNM~6E9;0#f{BKw*T&Aw_C;qFXjl8|f%D?YYy{{Hm>Vgp4GBMMuD*r!L(b6! zyQylz6b-(6>Fhf_guerxp{p(vKjX4d9gmj`uGzt_r&)*j@kJzF+1HeRqUS}`EsK5~ zXq&RVV%c+3k35Rav@%r?l8vVqsJc8!0!mzGxAKAMj|ZHd{l4B3^ieFYD8{xGlV!A- zs>X|ly3^eMWXC<23Ig`%+g{yrlCw!28Ly`e?AM^>TO}XMoLumCFyZ>g@Y%r zZ*56?OJUOa+s?CpBAZG#sQHO{ffXpS!#c@<`V4lC4AnYES~_nAADGMYEAsdUigY|5 zgg%99(IIQ3R~_rycK6R)Pl%rIsKJ=t?m?-;b1mn0WrH- z?=Gk|U}R*8`RE%LPkgp>4U$c>LTtDK>rh9l|3E2NSr7YMJuS|X(*9!0GO`=bWQZ)nHMY$St2H4uS)iH(i4V;xuWCZbZC>?PUMTI zAg36VFvmGbGO92nYigxI{#>jc3Ws=-9>?h?LxLD1>Jc&eLM_{Y-c8<0vhp4r_X*Ob z+-33eo90s3aUwrvWrzsKIE^oulbb##r4kY`L+$u-hFZ z@Xyb|XN8{{6C6+gE)`v^DYt5(GA9=y12C}r`V>@RmM*|Cd*A~S=A^R-H%573tfp>n z8asgCqMDFDInT158jmd-_x$>Pp${rv;*i5Guk^GY0w^J94_Eu7lS+H(QGRtXPlm5n zt0pWbWGPGu%LIuHLBbB_&qHtM2ilu_f{8@sZjv1#eV2=e;#Ogo-HjF!A+#E}U!2hl zjIH%GCSU0>fcDbt$YlihapIl=cW3C8ECT)(I^8j?-sYZO-^+m zFL8gh&w9Wu(sF4%=O_*E?WTc&|DyF8hj}62+iPHfNA#U4)|FM%94kL6>IH!VjgA$o zuP|_^%uVaVW_+B?!#n76Egn>W9&ff_9TcA8N)#LdK4uiFn=dQ) zF(Oy^KdxmI6U}7r^1;&w@5Q6enF=W5SiU{Uz<6G=wM{kJTQ1IW48jkj>{-}-npzts1Fuf)%ozT==5n!A9B zWMOQFL={@(#Wh6-ASvnT#s4m&quYC7pGE8u>zk z5Gm*4?CGY8xO-KkI#@~)Uouw5h3gs`qcKs3xBz`ex&y8cA88yjfWa09y?H|l*F3^+ zFqvqxB3iiAx`t2z7dvAW(?MO66;1OwE~TyJgYJx*QX(10kEuVn_wC`@3w;E!3JI5Q zn@V(8@eK@r>gVzGbk~Nj^H1C^M7&E|A_U+1Om~d0TkOTd0uP)bezpmcZ;kLfyvAQ& zKJDD^315R!H|*6GTAY6Ke$+e7T5EuN7P6N6!@XonbH*6IUi!+9fsl{OtP34lUC@=@FECu^YjeH@6?rg zjF|WkcXY7#o9puaH|x%}%nPdiaK~g|(Z=+t7bxpTBdDrp6VPLI+;+2Tb1y$w_FaKW z&3-*~Q~mV)a>)TejQYGjZ3ORke?x3v8(EELbVdUwFi!Pz$JgohCVN6jB}Kt9IY{}C z2r52xpREs35ifmj6MFxc=C_}lm}Ixx8yGGRR5l5q>AuIOh_w`y9hq{LX_|SqqbT7U zOAneTWELxZHrO%qJG}ZXZlI9FA`KuaX0G zae$LErE=E>Ks5qt?u#dpk9F>!tzG@{V=0#|nUdN9nGfQF8iIgbF*=#}rrdIvvMq%Q z;Z=nJnh;|(f1<&!lFoIzS8I|6u`u<%Io}PL?DxPh-b(p|ICi?=C>ZV9YHr^+6+6Oo2WqX` z|Mn*(B>pOJV+j&{ZPjw;sgE3T`3=OmJUxV;^IoqtM81Qge-{(QMmc4UM7ssAQZNjm zaZUe+d*{K#O%>BWgf)x3JDq;_ZS>E)HqmAaLYFoUrtmUewPCWX%=TKEkA=RvhDx`` zhVi&SnFli;SVfj)snQY;qeDZPR7bY`zXsMU-|UQ3J(;qn*egh{zee7hgqbu*=6)4i zyMDzjMc%dF%(#~K!af!f-&-mBOrby(7Tb=tVmS zH=Zy?|ldFhkZHaAb!sh_v0~ef0|2# z93Ki;bRjohBhIEL&)1G))78;HFcRv}8A8k-0BOA$T$Zo7T5t}q^o<%Vf1RCqyfD7# zdo%~ZG&q^iONn6)IV93VzYY#K+H$Ou0lOMdG*`Q-Cp&TF5M6NZLDV+9p@n$W*BtI^ zZncxXGstY2-*4{~E5IOs`O}H3AaoMO?=~tS_K(;s({o)+s%ct886F_s=n#SvQdzwr zI<&1i*A@=q@!S)0Q`ft{msm&knF}m_2tC=sJ^FS8H)}_F8j=rOUfOw_4$g`jkNeD& ze+*3)48yZ?D?>OQ%X1D6_=SGYi`f6SRF^0h0zbc%KTL}v88Nl`;z+sKK$J?jlzn-$ zyeL0)JPC%}?KK=b$J@3G8JatI^t&jrLv8_CY$)V)VMxLVLm%7ln)KOU8Q4$sQn#Ma zpDqef7`FUHo1;X%=U0=xo?BPcR&W?&X?G~e&hO8xA2l}VK8vC?C*)z~=IhXiODVjV z9=uuxuYzSiYKoZFQ^|lPsa$DEWJ;Y~xLhDrtF))Q2Gw@FE949R`O{p8lS5WF@P_U< zhHhpL{mS+xtCG0k-K1X(+H3N{$DKG`ehuaQ?Tmo2NNUPc&Ar%ZS}?|ni^U6jBT093 z`_;~3ow(VSCaKFdQ}nq!`JrX^GI~_ZqEgC_sX^LyjXY%pf6n!jm?5TV)l)YKno`2z zQv!5nd)s>Z(FEP8QR;t>?ys&nt(CleSiL# zuYjMinKqp%GLP;<@%mqxU<3m6__zL|bKo8pMo;gB;V!U($K9%0rda5dVH+Z{j00H6 zBO(}$8qX9o^5FvQ;9Bq2m&@yM>$k@L0x6{0t?^o<#7zCi5i`H7Cl#J(yA34WQbxN4 z5^7u)r82F&Qs(3M$gV<49Q~#ZA`qBvTYIVS9Iqq+8Bw2zsoR&U4Uh9dIhQ-f$L1(c{Qr zD(|!UzK-~|na(GNbcTJ{;e`~9Hkve+{$ye1Fxa1VD;UDs51<%@SbAKBnPS!_jiQ%DpO{4#qM4!0+=c`m{jOQ4ZLIof}wy8{Zp-pJAg zY@+`bZHysVU0od-9mNWTFye@e)u~Vm5%5JB#t#th+qlMB_uUoV)ZCdIs|ZJUaE zpM5rnTa8FC_`%h-YWJ(lxAwpQdRfB@hP(5UBwq{#*wbJP57A=$O+)u!FSvd`2j*-x zrg_5zKQ~b1#!P$JCKK7~IfzNk*mc?pNc+Ss_-)&nk}zz~WcbvNMo&G0TI%JAaCy9!HmH_3ip-|1(z zXz0$~s7;YqeufTjhK63l&3Uox`0J5zoT9BV5pYY%)-7Up%*H=R(`IkdwEwjz)g2o{IsJMAyFSGQtUpw zrto~MaI+4mFe8S$qr2T#DvTtzB37>H_u$$_$UjAci)W_FYY_xc=N0YoE57E3G?NEL z&|0|p`O4jovtvtAEQ^!hQNxWiqRCH&3Hp^I?ZJMImNp;l zjaWDvty8W+$4Z@QIUWd1tp)`^P-gd!_P@4fmgWBlI;C?e7JNaAs@{e)e-|WV>{j;;b_S z_cM$LPGJy|0hV4Az{WNCa2(z*F=6B#z84-rbpFs6W4nTOCog&-mNBOq6)v3K3L*SkgrXhdxBFLgc$%jH2v z!|OgPe8hHFaNVE@Wh`byl2D)Z5+hGr9ZNzV*#>mK4`Jw{CAKA+cI~Bt_c%*K|LJ#H zM)19-XGvuNmeZ#Ja~_@EC#yo{{lV>5>-M=g0wMP+xOS1&p_8Kkcl%qkMCwk^(te%F z;8!s%eCHh0QJN^G|DJEtdczm=zePIQmb=@d`f=aXF&y7D&}e;EU%#qwT@x*qS9}+_ z?kQT0IEbHADVlVDvn1mvX(_G+wW3z~5{23-cPT@xNb<)u(4;?l&#=#f?@plF z*rcy+0V;N!n$q2i(YW&+rsQ<5)EMl9d<6`mX^Aew?H6&giPD*vQRbVx=x*DuaTp1{ z3j(2nlk@Y+g~LCnIkmRhhM&&VoqUesgs>pD&CTtJ)2H6XB8i%TOV~OH9AFNi8R%1kJF!`-Rc)ZxAUQd}N1mQpDP7g$-fXxTusLiV4$Zx5T zSo|7i`-u-df7)HREe)$W3}H5;_Hlo;I8jNw1SlS-LersIXLoeC?5f@=zslcGj!acu~2C^;U3GrTb`PQm%2BZ;hnp8RU! zHVoMBL@}d6>1`GxKe01W<~b-hq^>vG?XfsC+wWhy;u&g$f1!&`Y;3F>m)J_~^Qe(8 zebm3i`4|qzG9EA)l8nzH1Jso28IdWG74XUyIs0u`f>hz6)})N6u48a`>Vk_W@{RmQ zBVTu&>!-#Cl!6ANu6w||Pxlch|Ls1aclVm`7BcNRzXC>ZgdtD-R1W^^;*8ku4)}p-dq!ZxKjuRLKTmTHuo$b( zZUwIffuh9+=`DgzZwIfRNuSZcQvvqVNhKD?FGc5!@pEtcx$C|Kv`BYy<42}mGrds`W(xULN zv=2cEwYBH#%1poXpSWyxB<9LEbGIh7>{&i4TueE!29`go!W6BltO9ycC7;#S}-hSw@y8xfAaVxWsGKkqg7BKD?-7PSAkmZ@`pV~9H$t@na>)Xh}~ zpIJERkgL;Nv!1$;|I${;5cha8o%5q+x^=IJ*w`t|y=wWZ({~a6miP1-xM~N=!_gBH zl$8>bD&6M_TGRH1=@S$5FmtXA~#RBnv(gJJviU5Ye{h#9evX9%} z5QzEVM&y%Xl=Y9-1jVjq>+AWyW{{XmE*z^#;RR*SKAO+L6 zj?P=?mw{pbmrvKmGUSlI|ve%q9p=hngXC41Kf78dV z1}m?mn3~hUGejXT85SSO)SmE4ex9z%WV`N}RLu=?0gr-cfu&po`3cj>bdMq5Co*Uz zPNb|uf#eE`dpHXH8>I4l->l=f_D254DUiHON)A#*AHi@PbXL=iCp3NJmrAZuT(+Nw zcuRVZYY;Tyx!F&V z%@s{12i&4|*54nf+UdFD=%ITaEV`?gJ zq)4-#dFaI!Xd?)AEuYx?{I`S#=kK*!0fM*q|XB)K>X{51B*E_g02!)IRKwvR3F(BV70Y(1`Np9|zk+;1xZdWm%`!sEh z?II4HR!-_Xd~lVDh^j_whq&lGX@MjZTjt7&{Rrp#vS0U$6eDHSH>t0)@uosoLmlhB zrF^u>KI`W%=%`>K%GLG8n><*Vj5DF*sb`{5p1k$i{Y&LBc-bQW2}wbkF6^@|qqnFr z5vBO9+~oof%*iC&bMR@}6R` z|3fmVVjK-`uM!P}q>;{xr3asGQg5LegsM9O)ea@6xIwAa!V0GqBmb_GJ~ z^Ccx$%UK;&n6*K&O;TMgZuqq-^G)j!M;;Lk@DDrukc)2E$zZLp)_vh`#%@>Ek{;Jr zF8(NA>|*s4=;ISA7LCHKf^3^oa@>WrYaid;Jer@zOY%*OrD>bKIfi*5`0YQpG|#_< z^vl&6t&Lq1>`JsxiQ5b3;40K`k*kn?T+CR9$*_65XgyaUt>8kl1Gej^JJI>ddEH|# z^!*XQ2lkr=eSHRTG)00L9rKU|{m7n$51@$8W7McEd91wtjvL3Z*2(rGJ?}`hoJDoM z2KA~IQ4%T$DYRUD7XD(WMu$2!yf5x`N;M`#wUbA1Nn8^8pwAe-I|G_#w~NX{`EMX( zCw(x7ACXgoA|B49J$@jz_}A&&f9l2n2lg|Pz(`%Tjne0Q|9ozY>WW6ozjEJB?D$KT zGFll&d&u8=t<)?sC7l21VO|nuxXZuZvs!j?UmJGAt#JNSC|oI`c}%@Z0;Gc{W9oJB zb>!uFCe1w^>TM6YmA-t^8#sqTDWE?-@?|mAv`n2kZssjVxqeREqXC1>taVmhIxkjZ z0ix%{R%@wekNMBw=GCLEpBn%0sXgKCUsl%o9uGi>`|SRe?GP}Er*bU~u87QzvXhCV z&T@}pGi{u%h6A}HR+R|G?Kb>7ydwIEU#gfP!#FB3+TIjbD_?3JMwg;XFwJWD*H0+R z2^WG-l7JG`Im86mx>4(y*->)%+VD&{IA~h&6~jn$S)T^J3T*3X>^Bg&CCTJ+m|nuZ zjNwLA$4>~6IX#;AJ_wP`512VZgcL&3^F_@N&y$ssDHZ%MM5w;hjodj+@V$}(i8lYr z!tXC(p~NHDFqcymriO4AT)TEbq ziGGk2thlcCpHPVRCl$^er{?p%9A(NJIDZ7p;r;!xep1hWe`#E*FK z4o(@>j)%z6P6MRHV~Im#0S^lQ0~L3xalYW#TkXAu_@Wh~H;``P<&UnFhYcUTSa!M= zlYQX2fvDhfkwXFE%e!%zs;A~KVdO`^yCqg~!z^zo@2bNq4#UgwR1=!; zs3ePoUTrd*4eX1QgkO#Dd?;OCb?(vp`Jf1_4@hTTsW7YR+H_|ACH}B?;)x!x_XS$ zH4**u@0IM|6m3DQ?GNM(0Hf%y{hYISYU8 z0yD~ss(-P_YF`d@$Mro7#VkR=tt@x`o-KA-`2?3Q%h+q9jk*aRQObNGeZxx>=~VLG z3qC)Fm2=TL=idHl`7r*F`h12y)MRYTb^`|sETvesbkzGs#22s9m_3HczE!fh?$lB5 zMD$R2)5@FA-HeqtRwe59My3#^f}#^{69&T@l4=q~vfT&w6l#Vpm@jBE=#eLdD#zGN zEnPum6kXg6`KK5p`}92mJ{EB=kK81-99zCzkO;owA|fK1J-(TBX?GzO>pV$b|9Iv~ zCSuqYJLI&rN)EMb%@DHRRCtQKCCdFI|jtaZ;0Oe{`3 z4}uRhBK6JPf2nYj20p7&;cB_k8};-_8N%MH!iOuk)S56cI@m`PXaU8>ILol8oZ;l4 zOH)X$ijsG~4*mZzb(T?4e&5?4QVSkH8lYLf{^<8 zId9g>>s*`>lXGqd%Ah;8hd^`nKmB|cZ|}Gnb#B@1eAb5)Uva976bQ$}{ZQz4({}*A zzH>NP5_;}K+cv8-9V2apjl%^ZUt&;3w{A!%aqO?;b2Z9a!PgMdQ$X*Try-$oa*fNh z`bC?Nn+wfe>+R)_2oF~e3?2*NLUt$QtT~7~|I(AT&f)Ciz1EBY<1=f$ z+79krNO{{%&z+Jrm4MTzpoRNyL&XpIxf2?uB4(e$V#<=4JE{{iCMexv}Z%_}CR4vME_GMa`LrQXt^T;?e6EM5JRKb>%HmXn^cA|-I^NZI&KA^YJ_jGyo{^`O` z6LhEJ!g(9C)7p-fn3igN8KGD@J&r+LD$F5o3;#Si0d-q))xf$<5%OXzQM~HiY@HzJ z6MgPf<#5HdykDZaE?Kf7U+1g0qIl*jL4iDs?31{lB5F+;R(;nsj>WaLq4`Q}A|{I5 zkxg%!qR%)3m{n=eru_GQ_99&Hqwl8LqmFN)h7DYV8!Lf&-)_T&`Q7Rakh3E zC#v1{3fpgXn+|?rmObt}B4XjeU!P_1SPf09ki6%S{_%w{m)uIMcsn9B0K$dgAAF){ zvS)bc>oOEIgMo4#y)>(#F-WVwP^$3|e;jn~G=z&OCcwQY*#n|{qr(l(%d&)ID!@i$ z@#I)j$K$!Zb$tj>#(=4sh~PmhIYPW~t|{Brk2>J-_>MMUb&_BFZ-jGdLdPG(rWsKDQ>5w42=f&=%Y|%k6{LfR8#Cbzj ziBL!=B#{?2T;ouDMlb}W?(^uPbHke> zQL>CzB5Mfsuff}<9RD+}sFjKT6NDp-aV}i&iC$r={~iRIZ3@?Q{W&-jpm|KEe-0kG z>!>*BkDh}C)st*#f5W`rXGgFwYV+CFrN*_U=To%dN=A6}9D@OM&q zFFu^OFnG;?r87)BB7_^eu008~=1!=Kq9EEh|rtsv$B$_E8v z=z*3o=m?#kj|K@V89HN06fnI+XCnH^|Jb7~=k#|F*R7^Ae$t9S$dPZ44Lp?dX8A@A zCU*T7&r;QYNewf&j2bB7NP~TAR=kdKVBqu7?CKuUCr^;&j&kFe9PwtMCOE82p@e1_ zG91}OnPmiK%XrW9UO&skp_j$2EuofHs;Gws$@S;+ff&_Ey zMDX%X-$6ZI=572$Pt^O(z#Whq4Q2jbPiuuzbi3J`#PMgQ^Q<=U8X|9YBr}tKvcy?r zi|UlUgJuf8XV)p~c%&U+;droK&o3ECFFA)kY5v{0>rI$h;@v{I!$Ta{9hP8iWZ|ze zG4&RB_L2A)UOdg+?IS~1 zWRiCi#K{0vC=+DVFJpu*a1J<`&hsSi3M)7{IRygI^;H@%Y38m(ifMv#Wf zn|}6vdsV*USo~RBEB1YWUXU9H%5$`>p;d$Wy6xl6y9cewp0P_A6}xS94jlAB=kG1W z&h{mW4-GUm$KJI|x2|(X>3e2B?CkoM3i>8g7er_MpN64O)Hm%R9VcxVT%xF(5tsp@ z{nyubxc$JfJSgStK$$Ln@pCD?7I}9PfLZ~!)BnYw!T~oa6H-KB7o~xOTWRTnCGtRJ zcGBUj5@`L(c~+fzqXW{7<`3me9K!gu$Qt z^@MeG0E|&qh)g3Gepi&TA)2$dr_58M?(LNErMMStWsFebl` zj^m~rPDwrIXO^OHqx{4>#hm;*3*J`lsTs#!FJG1xFh^14+91CdVD?xq078=DqR6R- zE=mm&Kl-9h&-VYc*xZJzmU*Fqzc7BDkG0h+>~P3h*rU$)qNi;0tyd1SQk4DY>wMjq zP+fMd=>E{n^QAx;DWgbkmO#OUjKaU!5fb@hHwGg&0*?B(+D-B{{RN{s7q(SIn3CP3 z(c9$ee}c$e+6(3dfmX0B_=CXVoxpK>tW19aSK%x2eilqT>F?t1__;oZTj}fG$5~tg z2Ashx^^4E@qnds%WefG(#i*`dkAA6Mk%}4lG{c!k>;-9WOWMQ4Rb^_WH7ns9!D96YI5RoM8k%2K)3e0Xr${cEZO;iPekR{3k&Yj;Os-X*ZTFn2N&E~69H8y$noIB$JL`t95SR$7MuH~q z|2zx#g10eKjgox))0IsB1(~`c_b~7!oGgeE?7$V8q)wZtYN3k4Rrbk*jMXT{$IVa)jG-aM?krb2hHE0PWR| zyL0f`Evx97>@HpKN8x5cU||fW=5BDl7YFd66`LvjoK8>GoC$vwrZ9fRVf|*KaHT{Hlz zwTM83eSQ(ND~%KMPbehfcl6L`aae@~++R-pWL7Qu8P?%zUDjQ=q#0b|K?Rl!w@tl=1;0V#otK^OJ zq^^12Lz%F0IqPM>>v;|FI=QwxpF6XDKYk*t@2;`lv;-rs_oji}FX3IZ)Aw@&{_NLy zS(Q~6vbgkPPGXN0vA$Y`V^&b@9SXaw%OF?(tzHj%of2aJVsf4DVH-y9pImRW0b4re z7s023xx4hy1s6!+SM{dc)^R?$=ZDZV|63D{1<2v9hE{+FveFFlTmMm{+B42b6MoIP zy3gJne8%k2x{U16X9 zaN5@#+GpgJ2W(ZG)lF61ic@d~xZzSxgpA~L_>~H=(RmY1s4LcgYz2+})O<(a)TA5G0@1AW{R*tEv{cO?He5i%3(olV= zLGmKQ{oAhhsXzD{1bWsHUZ)GcV<4q%;LLSf6`MHIRg40(VZ%k~7WmK%gWM*Prl2;$ zR+VPJRTX?$J~Fi~D+N5mzX#d$hELur9d51dbzLqyqTC)iSf*;3gulL~2Nk)PhchDa zhw1qquM0+li6g?raIt66^jO0}LO7Fz=l4vNB@TYkzB8lx?)#~t>@2(d88=_1&J?ao zwZf9qyDSTd!WcB=Qt^Gwt1jbbl9j2tb#Bx9hYaxrjU2cy7zrKl*+%A<9Os~?LEu-I zMame|C4D_}5M1&FIw(iL^`(2MDu0Z9u|;9LttCw08ID~dGPkgWk8OiaN+!(Y8 zZf^i;uuzE_g{)|px=gmUAY*Tz)Qb+$ z3-(<1JWsD4=E_9|JRHLxZdEyrhR+ThBx|0qn3H-95KGP8>v2u|r^WhDkssj!w6U+I z)N`4&xRnC?0>r>v%(!X{JzF5+DVQ$Xsw9|cTd<;{1Uk;YAoKg4%{B`V6?|?f7894KW+7%Hi;!@ z>VXP?ADtZ-nV0NXo?^uGhgSR&d-y!nvvu~Tx~an8#Lgh%^11m*UCRFIf=BUtowQ(N zJ&}2i_Ty?J(~2lGV1F0ONNUP3AOxk?1O4;G#CZyB@-GmGuw;){H#WxGb0x5}HjxWy z7>T;8g5SF=GjQRi{9g9y0i2(S9nHY@5Gt z^sR}{LK9>xczRj!86X;fr6PlFTs6aRFrCR`T}REK8dq&^IbIeNOX1{zK#b>vXQWci zL6P=!o7sDkz1NtZubIYJhKs-oOky4_My2vf)Vn!T|&VrJ)#A@ZA}l;Sv?_ z2z@ZsxFu?YV?UR4QD$eBi36_FK$sg4I43Op6UH+#tH2B6Ak&KCJ(Ba`88&0i3B~O}IIN9}iF@K{hsl4lHaQV6A zoI$`MdYF5Qywz)+s)G(|tM}xtYp|ZfhhbgT6a(-SMZQCv9Uwp1#e_z!5SUF@ICiD! zF?yk{KC9CVheIDak(RsXl^NYJ-r&dlJ6)%IBh8plwWo5;5`BZp#<9OSO=C zvnSObN_L?tu%4(tBv`m@)gLXsakm;C(_(DUfGh?X*@{CEe|w2R3b7&%T{I_NJLL(` zp3DCT{)}eQ?GTjfzfcMiY@L4MCpX$ptdFeKZz@CQ3zdB#q;Yrd#lmS6DyzxCpuDFNVxh+fc=8De9Q2c#rP!e^MqoFy7pnRHoSQ*0TKUQ4^)8~Zr9@x4vx z8GyPGeH-a@m)wi7i;ia5irhIk>n`Q;`x~|L5#nDRMi-ey4-~_0qP`*5^Pb?xU!@6- zO&hq+lgNH>$s9@WS#$HeP~PBnrIHZGH534LV;|w&+mb|Uq5oHAWpmQh1x~nrv+F3A z=OE-(UvV_Ng*y&OVer;b#Kv%`HD?OizsKAxXl?uA?w9xAEqd@7+-&?S7mxB#Ao*zP zr?^%cvn2b|=GVQ9)p5`9hC%e?e$T%zJ8aiIf%*T&*gd)F&nF9|dn;8P7g_utnZxfM z=G^Ym^C1K(;jzN^ki;;CiF~EEoLDH|m2RfPFK}*Uq&ImSl&H%BO0t#j%Zt_Wx%$F_ zosX6;+=~98M26zl#ZS@&uk`}_wa(A|3YxJ^sU=AM(QH}dqevY))O$nM_mY`SWV{dd z%s7mfM5V-kF5n@id!JP4-NxK6tLCL;*=;->jsSz1roi#WRrjvi8ljT}&9`ZSWf0MqA|lw| zTdypD<^ur2Fetph`DTCf=kwl%x3%x49)71$$>%Za74So?#Wpm-WnNVVPE$}}i=%C{ zb!e-f?fxA8H2yBfe9k;;U9FzQe?;dk-3GfsaSd$>;&+bJwG zLPFtts9LqAVuHxn?!sqUE<5U^xNGt(nlp1f-1H^{W&m8zq_%s`y5mu3ph7{R_Z^q@`>E}ULCvu z7A_H3Jq*L#)cMhD^j^W*oSGH_z9F|Q+XC97NCG*e^8~cj_P%B3P5Y^D!2$Jlgze3y zeyrH>aezKXqCwi`ZI>2RtnUWE2fvO&V?`^G@v*-0%e*Wxe;sjwsK0BN^_+Y>6m~5} z)f5J}w0pSi|BW<0H2Lk-y~+c5mIC`jc7CDDd*uT^CyT#xZEtpIhK`QF`VJ@b3e@x0d$+@KCOhV<35eQ7C9FSTZ& z){Pi})r`kGK8>r?u90%U+W11bcwh|@vwK3dceu4vMH4(;vnj2*{#g8Y*498@B?b)NRGoYJXL9M`d?+?*nD4*5UR1m4WIu z2M@=vp4$eWCCKuV9>cd6>Xn~e)6OT7SViDEe9p421O=qZ*^Nkk#Pt)u>6NGY`?o47 zZcREDx2ki$DbstXHA+4Tkm_keoen>k+oqD3ts9!QQD;8LgfhsQ^NRb|erTK7vd-tuo! z=4WOI;GYd>63$c@8{Ql0ufzVB3JUL@qJP8sJB9f~kw9l4w!m8D=+6k-4*0?4jpq2t z+rW-{&6B)Up~@7OUQ-9Hh7+}zGKD#3Be1u3#g38c9q}6@V!rlVZf&6e3^U#P2m9RO zSHlxLv9i@mpZTC<_h;{{m(|Pn4=PK*)(_I?p@$8x0%qGHCRVf%>Hc-9R2~U}34bSj z{O7l0#Le6nj0S{0wV}wyjFh>6=0vj&WRzY{40eF3WP9{3L0p9UzfwturS|Oe#hm{b zSVnT6$QJSQBP0kLrw`ow@}1TMMo!~PX^?|+p1C)AM_BZc6#ovR3sGnLQ}@fCZRz)G zYlz26Ax;wn7=0f%bi+7UdhZv!b-J7>xb)S1@QKdQUDhD($>R}6*GIdt*{6iD$*x-B z47;lsAri06IX_J6Nq-F*U|u>jcoI!qUhMsVpX~U|`8n5VU64KZCjFrY;Tzn}iHLgB z{Svi5$;-{(%WeL4?I~HCQVm^C+>mI$kWZR<&~6%Nxo!0WN;Lo|DTpb&1tvj3dYM+) zM7n*_nkwbX1%llt?Brivlglt=Za#e5!T*2)28uQHDp*^0v)|p9?*EM&>#_P~>`HFW zf0Yn|L_@Cv06d%;W3y}CkZ^C z6?_xdaxJnb?k{$AE!7yTH78@60-#!&nR~c^O;V}`E?om3N8fsi!>P4Hvx_z)n?cQ> zyzw1q!W3Ux2G71LVAZZUi0+FYeVwm&=UOjcdk&DcikZ3}@o5gOVadhf>}44alDpjy zancvbJK)EQQpIj;ie~vTZyYxp5^buGgX5lxv>Ni(h5M=$y(s5q>zKfjnwqQ!#@mE? zSrE7JH=wLtsP4R9h1?BPH@1?GH9sn&AKO?p{Qa%YHJLv&Z+w_Ic6&b=_N4}E= zY$)blC;o81vm>Ds-&4=WEl0@Z$PCc134HNP-ItJJ!6%||7Ag?1LkBo)#MDEh0{h+A+x#s z!hj#o#r5IhsKmMwyCYj=hMV4)8 zNG1Cz*-7_p6WNr(^%-CG9+gcHP62bpodI2B*p{}T==B(eC*rItB&X7BId~tTb8E$7G`BEk+#51e|_Dd)orle6sbce#`v_3$V=FBx5{htECTHO5Pn4azb`8L^L3EUJILnf6R2HF^1q<<)lu*@le^-1G;@yJ9}E0+2lQUDJn38%H&0Q$+uUGDea+|77e9#4L=`N#Cqdk2$>~j zO*Ot|#k=aeOxe1HBJ)z#P-t;x+q0j78=-^%$Ek>+U48h^CqdX5=HZLMYZAHb^`9w( zLI^ys5>nX&_5N-21CO{9W~Ca>iSVKwuk5xiQ;ChAfHzK*M2c3X{}ZPGHy9GxA^$bF z_k0tVfPxuhAfPL@9m8?z+-wwS^QzXz-%kVqi>|K3yiR1q<>wD2OjO_A$O~~0!p!S^ zhru5rYco^OG`6mZHVg_sL!I-ZR*F!_jY~7ts+kpYPBRy$R3 z-=xm_bOA+P+4Ggw;d9hk^%sNNj-5vjWG)k`LRm;FH8z3Cn%V;CF%OMtN5XW62}D#@ z!m^2&fw&SnoV=#tsVRqb+BEyqr#ujdPSZn{$E2pmF+U2%~>kiL5WQrHlm(eQ+YClZBC#Gmz0TeMSEXnTU zm~HaX>Nf0juC6GvFO*&*a|!+rIlI-5>Qz{P@|KtL+?2_Cmt&;o*T>^dw@b_PfD<`z z05SXe;MIaN)rHS=(3ACbDeW+0(fPg6mk9!@W^cG%Vj6JBX}4}e1NZ$*s#E&c*9~p_ zL1@DhUtbz42fCsecgoVuSTdPfPrPDFVGisL|6-KD6-0Kk_(HDNn{4e^vcmiadFuv- zWiwXr|n(Mnq4&Pr^qu`q5d`Q3U3ByO6UQzO&w#otBzqNq!eZw#I-PvS9qMo9Hm zM4OLoI5>5RaeKEO?zr~b=<2RKSxqacTB|+DuFHGVZc)v;h$HpiWOcA35n{j*lEQKN_PlsFHH@e5l5&CMheNvoD{>6?bDR@j9AJs6_AIHv zt}2|R8+UQ@!;A|$IYN47)xmm2p^xl%TkZ=*2E~)>y3XqXn(z+-9nakiU~NAUms=&e znKH9wXPyh&%WflERs5lQxerJU}?J}0MVM%d~rV$T;c2;d$)RVZZ>&0tAHaq}+OWk>NI~z{$HmNzMeb_h(_`9=C zX_eEBW>Qc~8z$^wO1XyOoP`I5umws>S_N8GG>+C+4syQJJ5Y8qX2wGY$t4Z$x%mKB z+dbvVbRO&~a?sN&0glRwNu8W-3t^CwtEdbgTKOw-Ih)Kt2Eu+hpx#JgJca-C>-b(l zy;rZ~<82f|Qm%T>sBqUEmie*jMJy9~c$4C!r#X}?Ooq!Sd2#2ecQa#^I3}oyY4jcK zse&V)&%FR*iPC-GB;(+wzF`cdl$kApq?wdWU7%QfKm0Bt31xeDP#TBdaCiwEhm&e{ zH6CD#I}x+YAsrh92SFeB5Q-g_=uf_mV>4afMdr}?u5M4278|h+3l8VqaeL#36*8~G z9kVkoacB4tvIZZ*+oFtX3Ji}xulpNqRctXi z+hwFQV}h4CUQ81-+6spLRmorVZ2!Gn*2?{M^|35$?&m!l0CE3v1Z>T?s~V06r!0&Q|JOp+!liIQ`r;? zeHyMTlpus*D*Fi#eIvae!RSMu3909% z&XN5mp{wD9nIy#|%s_NYh?b^AF~$7S+MB1&l>npz~faG^;en{$-vIvpslqFG|P*)4L#}Z}VR%8;~IL z3i3YV@Hkc1DeI8QM{);D+_&!uRyuy83;*Mu>z>W1KvBqZs^K}Vh64raCkSzFhtr9p zc)*tfHrMf3I?|Mq-6c$C7Ev#0$=-dc}ux#Qm=ep_@7xv(15YPBpQ`g6(?GOsQ98(?LgY)7l9k6auA2A&IT2l z+xO4YRL~ePrIiQN?N*zE3v;tM{F+x1{ZFcGD^t8Pt@Xxp_RQ`?z68>R%KMKZAp^y> z;pR{T$BUt6b76LR%|BU681I|du7sVo1?0{KF+BZm!;oK~WnCc5I#8{9R^W?4p#UI? z;_;;BVMeG2wcSD&Z;+t0M)>CATC8CbfQ%S7bfM*=y^{N9s*h7Z9}h0$eRt|f`y89L zobS1Ba0=G^e?G>&d@n@55kPc%H-ZDcj3Pr!mIB{R78M=(ka3cwRbPbB7(vLEl|mMt z(i37*CPods&kT?#FnH1SJ^zag@!ph*E6- zd1nxQqgwW`#O0YM(a1>!sqOg3OsC$9jzUb>P)}t%0e=r&R{u3>^{%A)7Q5->G7sVS zr;YU$@5}ykQI_Y2Y-oFeAL!^hN%{Fdo)Q)`#F)JvRJvY!_!C2rgSye@WsYPD1_~%W zm&Y|vzsqVS?M>$FT}x(M&J)_jxdWLA7rhj^LafDTswg&h8a=aL=-UH6=ore4@v0u2msxT}Sug{=fm6 zy9;>7t#yZ%;ab!I25`8+WA(*>hrf2yqvs{<@ty0gW3KCrdBhs$;fdUD195TT23lVf zKm3<-r_F;V^05S2Dq~3lOK^P-Q`-ID0Txzx{M9HWJ9mVTnY)Fn^qd?9yeW2TkNr-9 zxb7pDPWk}Mus`(!44ziG?QHhQXHOh^;+}A>hj@zno|)}_+?@UYR_%nS)8m9eD4-L0 zbpRyas6PG)0e9WKFFM_f5iB|-tOHR{bfj2Zuk_FWh$`$`taiKQikf;=yUl#hxmS$Vq$PwU zYUb}8IqqA$onGLK3=V3nAkChE$w?~4F{;VGz^y`?!Xy`Eu}As})EO$jPA&n1qrKVt zWv}ZsR;d_qC|At;Tb`kPiK&~5nln>EmVFgH1hF=0wm@8qHnTajR8$b;u zILAVn+C_Xm5wI%KlAFiNdF&ALQ*B*c2ACsy z|Beq5puy~y(72vGcms>w{%0iwkVi$dSZ5qgmXA`CvCF*~pUu42c(TGI+N}ZX*=CF* zIf}U>*@`;8YrPJLNo)ErNAV@X`deZyxbu}G>Bx?Ex-LkE^_j(?*TZ?OJV1-hPL2&j zPYS*;#(H&W4ZY6)BgQWV;a?Y@2}l^f=Pum3S-H4bySb^`AjRETO4p5F{O3Dt?N*xe zAb~lf_;=y|-lyuPI-YPn&2l}kA}fG~SGt~4{`^7A>=jUAvV3LGF_cp2A20T&WdHtP zxLKYX8b@eDLoQi;`sMTsW#B0gJFzu|7XK3%RRVxR@w?)8zt%>21k<14n&SS`F&9Lg zNWf8?tCwoj*N|P+hrc71SA`fXGwA$Jo`md#WcyQ4>6cOrO7-cz`HDfN1RC!BOO(O> zqM|pGfJvZ$Te5}n_0yLiG#D|6fxh2FVgaY2u$N;6{W+8mxOXoMGiRIqxbJjT( zo!jz4sdl~;vlV)FW4Q?_6ub&#LLP*Y!~BgFEW^VYf++9Q?B%)5IvjLNQ=VE5B4xxU zH~*&SI-+MWpVOFGG)TB9O^3*F&3EHn+&^gH4%UCN8(^*`*`-nw?GZ2}K3Wl&ol`c3 zWLVlO{pQ=Cn;_*uHz?2+P00tZPhc7pS`u zb(x!S1fTtshPEFKALKWEAdvyyF`VF%7+Ja;E5PIq>-o!OH_NdFzy=w zFPxmroMRwOFA$+@D67N5Jy#6KotB-wf92>e^+V*U)uz#Td|6@s%u{W|(btY0srx4S zTEvz;b)dF@KGOSB_igr5;y-!;8c0KqXr8ZjY^N1ox#?9aBuT=uHSn+`+>cPv_$RO& z|4SgZodNn?NfxtiFi{3w66AH(T*c+fC4Ogk|M+lo-Hp6i#%l_uFo{aS3%#YKdXo`&%j;H%Ut?;e4@E=Sm@GZwN=%o^EaEXJUQ9^a0Tl9e92Q9g_? z6OSzpNMH@aC0FWEdVy6HLuo!-gz$qlli23~mCx}XqcL>KDL#~SHCN%WN}YEzqW{=*}>EKr~KUzW7z!xm`n6 zf~wN{+?o+)N2vL4Px~^;g9KgY`5F{tQV^2S7~S)v#*95K0U*bKkO-uP_5pi4F?&h* zHcj&iS^;ySM+bJ~L zIosF5Sz{-+pv?J;`@pQs+k zxg{Qmm)38hpKA_Nr$+$(ImH@%k$CuHX#`7jK4Wjj&p%ocwt4zX{eB8B1ISaX`I2i( z6NF2`jfG$Brv(3-=Ci7>N$Z(fJ<-B6ZxXk{JYqz}Kr+~ZU5=0|&7n`T$ zE%QXr#Gl?l51yTyp#yR=3@mm7?$lPntg=<6AtTu!smm*O;cB5VOq|%dvA>5hw1})@ zqgDO`pP^JpW^r-XtKqIjv88Ow9bf|L5}agLBl&5Atbx&C!h%W$cZF*9P4^qWNBf}0 zlo#q_hfB|gCs`a4+sA>%PIY^^UUz#bR0XcO#=i!p2r41^k=2%R^kDxvYc9>d`Bt;( z3hoBjJqKV#orpO-28FNd;>=wqTV6KTP1aes@l@}EkAa&2w3GD2cNY%|**|7r{6L3; z2lSyn;6845(A+J`dhO3X-oZP1eB68RUb@~;%F*4E3R}vjV9(LG3Dzn&adTUh)Z-Vp zasQRi|H^K`FwY)+gyjOjG42e5&J{D`neqp%pIsxY&>J#8S?Eepv`H8-@Sl4_QRaFM zDMjcCFyhm;%-;G3Z2r-=WLc&nEdolZ>X8h%#r2S>g{0YMvCexx47g9(oj&#z;1>!} zlydC09+0U;)+&==;rzNLO6ImPTeJf_ov!reYIOU}vKdtH%L8T!7Ip1MEejLVA4Ide zYeog>_PO&0;=xuFz8^L3A*+bF9i9ZYXe({?`3t&*aA(-aM7aukob^a4T3^@8xz{fl zy%z2GR$b3oJ0Ht^!IzsI34YaE|N99BV+ND=)%cy})Z8nas0Lg*LjE#WA07i6wH*$v z1VR9-Twi-6mnBP5OyPwakc+ypdKzp^P1X=2zr>fP(m1-GZB?2r*L?!}kHMQn#a6UU zVCv6&#*dZPXymchCbJDfA+dpOr+x;@5%?S#`XkgNs=9(fQfn0D=PcXuwwRxxH0*ce zaJR=Ti#m=M`pXS6aO+|8zQzVM%KNJ`g>fAZF>Y~`j3ZRj`3m+Ni0Ftx->Y{Xn40rI z@KpP0B6~`pj%(*J6~YIWqow_E*9qiyFn=^#@WW@Kj+5*K+un=wN}Ed!Po(u7s!Flv zzL2AK7NYUHuhpK+KY2&3@dLO0&ud}ygw6dCF38zH0zy#=Gngglf*RNK*$L!tKU>20 z4q~`nOW)ULtY#9-x6VT#EVLXHi`S=9I^8?z);hD-ApdkapfFUlwi*H*nUB0X9I|iM zY+X$*Hn;f2XqVQjT^VV*ue$7Tv?++nwsh7~_Qyp?Pdnr{&B)pouE}Rcjk0FRuAnlO zp1pPTE@}*2C;@L{jKo04yBR7&hfEAkvdiK#k>q2I4l&@J&Vo<*hj$8221WuX&HVW5 zP8Pyiju+8pO2oezB4zp~>i)HjdT5nOrq?ai2J^2i>zu`)-7n$)!D@b>tg7-;u_K1# z;07_4oQC&TbJuHkibGq(gJV+vUW0)Mhri;FKgB#DS7`^TW`(~)tOfXI-c+dRvrzIq zutbMXap2X;@Q;*P8auiX7M_VZN_0g3OSze`X#(W9EKZuuya~s)DqTG{FpvFdk8V7d z&t2uu_v?IWIch-FdOT}KZ+`Z@!c`4^$qzr$80j!9iRGC}9dG6RWc1+&Z)~yig)+OC zFW(}>)8eRM52b52_M`Uj_KF|Yr7RC4$FP(D)Xhz3JO7=9)4Q7c6W@SGIdCi0ZO1*!)h+3-9c&Nj%#U^%ACwes+9OD%8VN&OtENqv>9h{qo$B;MPp@e&F(Huv+9#Pj7ump)0BRHH)ZAHpD~)D6t!yESnR(*a zmspFbj*;~W&PmhmLeOD=g)lQNf5R%DqZ@n*i5@7aG(AKqE3H*)>wDK%)EjC!BAs#Z zu(SFjRg%x(+H7D~oyu0IWAP#V#m!xmS=2@Gb$&15@cVI%KwtDKj<|oVO`^ty)6R)# z$>N|PKLjxAR7%`GWWz?fbIv_bBup_P=uFZAuywyI7|!%R{%>Kh`<0tq3K(OOaEL;R z`(_=R-$!_FFw%6c2e0gh>#kw5NvKzCP$mq6Qg#5fRQ83_w}(W-EWtMR1fiK99DO;| z;Ml6k+~Mc(ustSvce6M!wXH8Qj3I}S3nV=+^ehQ=_ULfDrBmMWkUT&8?U|a;V6z>u zGUD3wFmLc=e%NTA0!*C%*A&-2*m$n{e!G+QtlW!@A~Km#WVlxtcF2R4$@od}H|nvB zSK+tUa^yT&=&EsWcn|0^MwB06%2|9s}a~?>6jc zy)S>G@}|b-VMeUDlW5qq-xQ~n0wZzh7P03C{`45dZLbK6j0>)qQHl%g^ zq)iy66tCAP4qFSpWPUJjLtLr|&*b{;u*)rXb-L@<$XX|y`$yW8!8 zCcS!KaGKUPgiO!YxFs0{if}f(Y4~^Li$Y-qhvM(@uozWq_!`j(>dE@9$pys-)~3X_ zrZ}s`-0^AJc1iES;$FLH4T+d_JO9dc9 z6Tr@0_}r)FK;CN(E&HZiqQiH+8D2`PK#Hwm6;b4TU?b(5k^k8%vYja>DGO6&sGe63 zCGYnf_MUk-{VJ&f{h5N&Mf%hU8Bd5dlm&^vRBEmBo&5#%({SdB)S8}Q)+uK|rgc~{ zZs9CsCW60=I0&}yN}W+ViQ@(RH?6>6Hx0Nx#+0y!ho{rwPonSQ&Qz9;9j~~09>2w$ zci{!=r~oP(9rJ%V1gj6lUAdi?h=;zGhu;UlL*6&>#B5+{3}ahQ|u|MyZ16X z2BY^DwCZizwA&vU8}dwL#tEJ?scd}ZI%z2S99d`*P-Sl4UE#Q1v9CP|JnTTO)EXsG2vt~aCX(i1UtTfvDE6widB4vhfH1R$1 z{<`I^66hGZ(aN$vseTxJ-frO6orNr~FTmy}PTcG0``bHhgSCk8rj&B8EB7@<8UXEA z%llk18lT%42Cqv(hXlGb8ldJFB=P%ihOeiY(i@oI7!h!%`kDhR?bdptaeof?S;Pia z?(RDS+aDrB3Wii8K=L=x1(w2WWN7~{1uKimL<*{QjWF6PN_!%i*d7`AI`zvbOL4DE zL)M|@Tn+N>&we_W>0iOvZb6b=e=Wr! ztYX8rZL@?0RZX~8_2&O#8pc}`Z+DM_pQ5d0$5Lvh)x3f?(YOpJ&t14?rVOxKs>Qsg zRvk9tQ+X60zpO?rSP#Q=t7+GQnL8lw^mJVT7HHxU(_SdZ;@BL*R!sONgmR+9s6HTJ z(tn6UEWO+>wys+=jR)jEp3JBao@?1&nut={T8QQg_wdDA%c;cCiDclQwRCs~yzY?u zZ5U$VL9xqImaq~7_XUor;sdhO5&6N->GvX#^7rMjHiVQU9#o|=cqC}LCPjc=hfSir zXow7K7`wAq(c?wb#5S;7r3I=>kT69SU@E%YNOEt`gz6Z|2Xa#?Bo!qas`gq+R`im~ zBsybOk)Y?^{nXNBe^&j3gE;awu|?ayak(C!|GCvrA9*ib-b?AEBE0Nhv(W^G34ezu zb(sh;d2pL8s*aAU6@t(|aek(Y{!iq~67)T_5Xfqht~gv-J!T;P-FfTh(YHZ5(nTq4 zn&@Wi1if~5(&bz9#nB33ID=c<)d5NBS8EKG3#@HeLYVygjF!5hin%r;-1zumt#bos z_}EP?3BHcvaYhh$;feoFbyW?`avag%Qy}juI3oyHrJL=yi>CqCfQa{P9O*0X!?Qf% zcT)x8o%ytc838Dr5!ir;12|&D-xb|`fym+#TFud$roKT*$W*7KSNIreB*RJs{?L zR97CK8J%$UY{vo~it(QPhkzO91lsxGnm@`G-;8^>JicQhXfN^|p+X8v*#M%|5n$)z z=eBtWohD;UF=78aOPh;rAiG>KE3RG8&=V7J+>UV)Fk%Mv+o{$7s`^M)K$()9=*{GC zo9c9ejd!&KJjfyL9$-+^=5IKC8|H2)ojWD2Qbs4=#^5C4|~j$>U~G~?m6{pV`i z_M@uS8%Ant5?YewdW+=9CbiR;#J6`YUAJjgIWT$smUhQ?$XV7w(r zaJ}_8O}-A=L0;#g6tP=W$ka(ygr7zccAggR%3buc?Lt2u^a~1LsC9o)rY1VqL!JoxXMlYw*NO> zoXu+75t^1+qVLm-9>gkq(-qWungDvyNY5PgD2#^!zW~cFF*^4KWg9UX}PfSY<*0Oq@E)6#<$AoxCnk7bvi?%p9{6ue1uV54%}VVnW@8w%WM?Jc?#8gUS-wpCIC^hPD*>$P2$ z?3(Wh%N3|$8QuAhA%Yvsq8yZ0Ix<_1~*U6@35E$oiFgq22E%}x~;L# z`y*KKtuXHI;3_8_s2j%@q;hBbf&0i=@a?LW%bqfeNFo5hFkVm&_Mj4BqXJr`A3)#5 z;=7CrQih%Lj|j{e2BNk+8Ct^d_-@%VzQ1`i=3H>fX7WsqRKk{8wPLk}hp;V4@36PW z)q{%m>my7BGMjnhBP2;mcT#WDg4cYKf1g6kEQgo;rDi3YEuU>iu<(z&&BZwr0o`o72&y(?q+!xX6 zB&&o9JTkznT9oA3A7{?)!5JB*8Ov*Lb7VFo?|`8*`l^n;Zb-9TQdTnW*LL!Y zMr{$F9Ai*g03Q%QJzogs<4UvSi-x_U3-uR}{S`e^^!<_EpByJ?WBWeC_7IF)y5^Ey zvd~_l01SDCp(LS~2bP&3?wFO@OuD3l>6iH&WxiO(4H{u7N*r|BDa;AFL=hsbCa^lv zr~%7XFk94zdF$`H#ncXJUsDK0NHiOJ>kZYoPe1hcD_XEwJf|{ zWD9_+S>H}R@}K;y!@b%!`X&8D3cgge zx^mj}?i5u4z1z^5K$^KRNm!qST3CFc0g!XuOiTIzZ#LJ_g5)-lxbHqm)SaP^l2>2{ zTk10YR|Z~Hp)H{%1EEb;GzJ0rEv>eE2__&}trl>ptr+-(D%5&P%w=6h5d2;F&T;!_ zL=sO#_3QW1=gJRrH32LUFcC3bV5Yw<)%{W_sw!XbL&Io}_xwr3a3%SXQ0B)f(m)!9 zGG+xOfX8k#4r8KYit_6JC$X4V%B9?RTw*)zdtRlEx+=%(L75rItC8-M^gRMha;xcdO zRQqrxIEvcPND(!q%=Zyq~u>CR)kHKL?9$y(*fnnPF)tzq5L+kaZlDd0!-wR)#xe3O{Se)n_g0_GvO$odVOaNH8O zDCs(LUU*{B6I(q6J=(6xF5mK4fp^sG79;bj7F<@LQp~a82lEqS%{+CyCr;eechUkF zgexw1rQ(Y|Hz6<1fP-5ua6;7izlVQc;QZ;)yz<&&}+KC>q}Y7pV{p5eb0cC?O=(grr@g6>7dOL}KZl34^N^HV1Fon#HYvsZAv9 zCBt`Dww;j2oSJX9my2_4QY{ec;&T{Wm*nPlk7FUn^_6!WNkgx>B=vk`%Tz+O1+vy2 zaK@ANw_6h74=+Li^8?ug{-aTM9a|IA(Jaou?oQW`BqO#AkAP~oX;Ia){&yH&{n#x9p1l1)s8gc$JJApQQoiMZ(RA@SIGd61tyKp@-bcF zigb#{=A^{wTca~D4bCXN5h9$|ruuGuQo?_T*JtMo9>{lRC%%U9mV^x8)B=qSZ8r2A ztT*yR#{_*N*WCp(S@RFX(_vCY>^U3-Z#9|IWUD3sQ7;0;b-x}P3n`Kf%u~?;L5x0Z zWn!6@ql{7UFS7!d&Gl-3oE`{}7cXKHVECMcQA-fj0)yr=-2N8!*o)ZKKdVTKVlcSe zv{#x`rdv4*z1G$W=GMOdi?7$?3fe6PZMVwomQ;R{fu8S&8B~C)KO>K^17)ry?x87j z4=~sXGbsu&D6!06%q$D?d52qA}) zp(lWpHCPX(1~50pikvZ1YOL&v!3c&Jn|G|`asxsxS@ZHawCQhq>g~BY*bqh+#~oFU z;a)yBa1#5Y)Re^i^B>Y%Qe~Z~Sfju7pN*_7$VG45K4zR6Om&q`MHr|)%-byv!AuSR z6O4o1ib0z_>X1~3c5iY$Zk5|U>d6`Z!Vp>E9QRQah06Yv`}YI1dT5tXb`WC8Lmo%A zK<)HW8)t_=0ArLAm`8PIP;$iW#SLFiTAYH;pSr4{Ep$Jb+92_)oz{I;Y0gmoZ)fG) zh#jd&FPO%6ca1mO2f;%#33rtJVY>&TqLIH0+``QwxTq}(a5+S*s(N~u14tM8eTl2D zt>;-?vcx8yXW?}0fZkM|yQiHib?mGq992ws4JJayFGDH<-${=@nK00ILi_z4?P2gP zI+f_t2P60U^0T#cok$1-NCrhEexFP05C2M0443om;LZd)4Bc_o-Q9Kk%iKqLjq;ma z8rTj9uDlTJMt1y$sx+}!N9R(j{&ul;)s^Sy38H2BOJ`E$?77+*XH8E(zwBh~?M>>` zfQ$aiv1yLSBzeBmvWA@OVhY@Qci#1k5YS1f01OE8hn-x~wcFxX71p`vf4Ly^$;7IB zQNa41VB^xUDH{l*jXIN5{;3QD0|Q1CnHJKtt037wol?(@OZEd zlrOe12-CpW@oe~&;p#zK1;6}_kt?op%w@vXdem7C|AX75eyMHBQmGKfMi#C z?zh>WPd@V@`J`dm*TU*RJBxWI_Sj@?5a0NavBh9z*mL$@q7JjL!^z3X`c<~e%Vo)) z@tG%13@gh0BJFtot;o-ZXVtrmH+xFnkf$ub?uZWv2AgC)=!hjK*)uPmv<+YmLyJE| zExM4iMn%=w_`MF>4#Vg*W)->0)Ng41Ypfh$x04VB`De_8075H+kb)xvl;k>hS==h9 z-aSwnMua&bv@7-lXHaEFX~|wWQ);X-?E#vdI1BsdXsIFH(o?ms%b*JK00-wycD+-e zq(*-SJ3pX!P8Nx4&6AjE@%A-u3L?S1jw&tF9qB0e^I!S0umTVL%OndTs`otVRam3D zzHw{S@VWYliSiWmF*Bu~M~}Klf;TNILG91JpiPD5fKF;q#LK9vWCmyQzNN0vSn<`* z=$!>3rofw%`*T5gj0Yk6RDp*C>UKU3QtzDI8E5Lgod93VKHLn$#xWV{i3rwls2w+a zji1;%5rE=-(LCYyAi=Q29cV0Tn1OE`EVeB}e$;+LvcCCFUCdB1{9UaR?!O?u`LORY zg$zqtoipZEVVnBf3AKzlFw9IEcgVHH@w0kKJ8-thb~7w5_H#|mEwS0Q(%9u;XZMF& zeHest+>bHPM)PTw2-?;N^>6GHnR9&GeYSGqaU1gd&_)kF5&+6R#k+0(%mltXFFvb2 z>^+PlGfuacb*zH9`(NE1=7L(ymj0+uBbBC+*9Fs!Pj`yuvQc%k4G~Yn0*js`+cIhh z^Jmx~ml})vj$nByn^MKJ8A1Mz^sb$74+gpV=&E>4&l=Ogg>2V;yjA!eH-GNR&9UUl z0|hc`LsahTP(#-L=m>p&T{ooNmn-1&IWU^Tha#jUK^_mYM}o?FPvGGWQ7v`fO9oN1 zzpsH+B8WLIBTvNc9x4#$0XgnV;dcSrbn<@^Gh5T0r2*^GO+g_QGfw20M2}EngFA5* z#j7f2A*QzH{--{@LLqK&fpHQ34LeGIw4Y`3A@9`8JeX>n3?4tAzg8F%G(;iztCoDRr0P5!|@^G@u!7{*& zo%5d9@mqSJON;!=G>hxF08l;7#K;>vQ+VUG;iVuV=i^OP=ieA zI;;u0z4k_Dr$XFx2$%@a^qHFgAm=>Da%zIqrE5YHc8xUerdzKP*+^9JoATzGb|cSN zoMc3>&G#A90V6g?-78v$cnp#1Nf|A``3)Zw>NjMc-wK)S+nx9dJ-qx5+Ui(9eRKKA zYAFp+L)Yo#fLx}g^}{{xTv(0Zu9lAY3?k8QH$8cj6c(gSW8L-a==fyg!b_Fx)0Nvu zS@O+K^@+d}Gt$-jHlKv@eVs{ircUE>H~R8x=hdYva=Qk-{+sctU9k03!PN`k=g1?yL_b+<000@$}eKu_>0^N16>a53qNI+7o z^Nn$rq5CvUFwHrrl+Hi{D7!Ln1=vQysVM0&7hIi9b&L4+i~d-chPkudiSAyrRD@rK z9elB;XfU!)OmDXN!HS=3utL{sA=dYALjJ_6d~cC!?Y+rZIdfET&vhVIYCAUW!7)Ej zpwWVafu8kv62>c^&?L@Ro;Z2R5(6S)*EO3vx+XWrlxt5PmQxluXnOt+;a$3k0NG7c(&MMGUBz3 zxoth(e+gCLW6gmDu%yh+Sxkc=2YwI-dIJJ933eHYMt}k9|SUgmAOJ!p&A}vMz55gq`7!)guVv z1i73;r@7@F8RYz^<`}S7kw=9fRI#cH8?fDrU;x{Ffdc9rW(QjMcecnBfN(`^ubl#c za!W7pn-eTydxFYc*npW`Svy7ReToiH1^kDxW+v{d+fUC-O8iaC<<+*HAtK4CFGWK4 zWQYO}VRqq1F3pdz%OEuMvW~`&3#~A=SN5;*yZ`T*M#pGv%T%yi4lEVG!yy76zUj12J**ySA6*1V3^f5WTUk^I0B=AO$>ltDd!!er7eTINBPq zm8YWgz0%w?J?ktnQg6S83G=_;`{*iNh(pj|WwNDV97JPt`NGg{>%WASwn0w)bGW{j z*vSzS!?yS?t;gNwxr3>7iVT>>>ssq%%bIj1@=6&arbC{taR%4*h)<{UPRgq$rqiJ9H>+AuqkV@a40ieldbj3wzUM-eR){ z#N(IV1TZIb@+gR74BCl)0_i@4H+!=IaUP1zk`E`9RKs6|(rR~-lAHJDa#r_&VHehb z$zanN!jw&>K-L6+nnUd~Kt8ueHC{e$eJ0?$Dv(TbTeSJ);P#3cKpxLuI^KyT8i)6U zm&_gVjw<@fH`m(xe-*#3@qn_w&iBXhQ5GVMmO!!a$w>TLSI&17GUwXn#n|1AMB8qMw zS@T5d*({7`Rf?C?h@)`Ow*`f_9~580*!qhSD#B5{OvG6pQuBY~X&ka<4Be8*{A zg;aPr2iF>=&H$b?1|oOlOwjf7)dcA)zpFl=TMl4< zY@kppwDs)>fUBmezHSMc3r%JM&}-aiX*e=9@Wd1Fe91gK@*?fYci(9?IlHq?yu0Ez z%kLS+slykM(`CnJ-9`UPK$xQ@mAr#a+V?12X7K<-*)_H+4xVkHD>)9qXKhNXOnYU^ zIDt5p;y0oJmg(8wJljU~0GObzg$V~wd+g`F5RyClG^1zs5A73_v18ovC&HL;@I%Fb z9jhl7Wi}TfWErYMuqknwT9Jy;)6gBy7LQ#T34nG23`MHEW<77c8jiL(XDO#!GUxFJ zr7WiwYgZs?@rTu0nwH^$Hq<~q%3pBDE$IOWfAg#^HN{Chtz=E4ZoxEgrvM7ooFG*- z1J4-Xi{pI#i-9_^k@oS#Mz0Lu$zFoH-40bt$HSR{45e6{P(y(rI2;D~9k(Hegs-7= zAFCv(h33yFR?G}z(F`T&@P#vflW^dAgI~a|p;Tww;Bedi2ML-=jfThu4k#hwn zPIWD>D4hVW_A-$A_vN2lmwrIGmIUdkVUZYnoO6ItT!qh6s>kF-?z3&N? zw9U!CEhcRf0>3f z!vV=z(J}-Szgq}so&D^og>_2k)#6HL3Ft72a6E-JhcA0plYpGB7|b}OXL*Da>=;Fu zeE*JD{GYt9(Rc!(dT=``^`P!D=KK4YXUg6mISc>0YZ*>uU0|(yR~`?cbIS*QY}anKVp9=`C|$ zrWv)bS_l8BJULXI*=mKWO&j0gC=_K#<{r2I%sYH+;I?D;TZAUFWH<6<6p&TTa8=7f zJH8SGt4Ngfc`*R=2yw%C4{+j`qf%-D4{J~xbEv=B=-bHjKFv=TQhSBs>*WvKnmBvI zsK2s@46!;9M5M`L#6GMIA**^vlsfhhGcui(}W`?QX=t&*m#@nasZ zmVOzZJiKR5{km}E0+GY>{vO+)CUE(ZNaF{T7ii7%wpxP5YZrn?!gnLc+wh)?AJlZ` zt8z#;NIG%Rc7!}UI-#O|ow<{$mnknSlStzfTYrLCzjHm&mNf)+tB~6JB-o08K`&NU{0%gL`xOfkq;rjr^pkxXtU@fppqdR z{VlgRIt!ga1U;9f#ry1#Z0BcIF{8*ZG?{f-wXsPH&~TKt0uB*AyOdg8|9Ux@5CO%Z z6gb-Se;1>esdKzdTd!M+@dMyhP~i7=LEm!=<0FF3?F5+I2OdeH`%TowGtwli=kEZX znf#$om5uf24Ji}Qs}gF;XO7}{X8de^Et#x~VM#`r3UWz}OGZ`Ga6 zkoM88O&*+|wQ#tlr6m#=|M$s*3>6JxOQW5ON(p@s#@U?T>TQ2c`J3P?R#>`b zKF+2g>(LkH5c{;vqLsX#{I`D*wa;LpKNsWF>ZeEqvL4OofZjCDxC4tau_q?gS))Mhg@)fPb*M zj(ut0BY8Na)N4ObQVvfGG{=d<4ISqpqtfE7jVo63_rP93J`@WGaZGTs0LBx?m(txw zc*QsNBTtdP{h2y1V>MHAnWKK)UpIINPW^8Z_y1EO`$d-L_HG9ZhFTN=9V;B55RKgh(DCLn+Ctlj6iOEc{pk(BU| z7{@QR?M9F))@NWR9C|^iZ5Ze`L)EDKR2$Vhk&Xlvj3){cgWb zjtxSe{L|+K^l12?;X$aC07snT-S>_wQ@A6L!3cwi!mMA=XAVem6Iu_;@n7Av?QLnT z%o%J8EP|5Z;+ivvY|p!vxkt^vDSBW*)1#%wZGWX9T2HVdhPSy>%4juY@v*)$V@4{{ zUSXuJ4<5eR+E*P1??c-)Po@F`o=f>Fq>k>r2!e7JE0A76&6&$u3Ovcb#-woC=jv&19B0GABbc z4H1#BPZjNZFwQ~Rd>Q++!LsDHWOVb;_E>r?7dFZHfm8^J*3Lybgj5E-$0_HA`phq4 zW*f@P5r#v6Q}@2}`py}oS49Fsr$cWpnY!D;!n$P641c&XsgmJDu|+5kFJep59gT_o z7xF}q&d*| zaD1FPWrjQ{K#B6$LINtfAGTTG7vOw#bA#yYshka82am9=9u&nMg1smo@C3BumV}ET4sJN?c3aYI|ANvf9C1o^O1rJCJoqK zq%g_1N8#_zzHJ=h4=u^gpFCX-2;ZW~3*1Xa??pF2KD3VlI~?Bq4yWe(??@BKq^paC zNPF)jKpIVCfumM~Lfz!bjh7;^@S1^IJf{4l#YcDl>WxLq1Nb5nt_mE-9i6%XR zT=&=kwQc#NUueYWwf%bTsLf^kk?I=?@Y_Xd&*CG4NBRPH zzaJhvpJ44Z`cOJZ8y3g5?6cw^eKm;!7o_g2# zDinb_?8sipi#(=Q{V6%Q5_yJGz!f?xH5Uaa2yucp-Etl8nokfBf29GPz`bbdxF6r2 z0BGP(DCt=ZSO|Zh5IecC)VaoLbeKMCpLV75-!vztBDfIci=`%NdqFR{N4bb{E|ugy zxvgqJwuQ$Nv+{?|2HP@N1Pgd!HrT&j5fvCC^fDSdDBQoQX&k=Q45^({DxFrK`nAkE z`xY5LCB!?@P+60`lXuV^^hIp_phw>zr!C?)(O)P=(JpplBu_GjTxU=S*kQ{i&mRzJB@Jg_zQ1<8wp4slGp%#BH`*2 z&{9#8aP>`3DhPu?oA&?N@EA_v_3?~%D?N7}XPKjNNQZ=u?~8J+-Hi5D-qU z4)c%Kpv&idV|}953o`Q_7B9ZnuV}psk65B|9)poM58~FVLg-Yn!S-)&r9UM&gL53b@L1S~6b&8c2jq=C2n(1dR%> z#|Nm(a5(>G{qJ&1zlWW^&yZ_0o{+?<*a4Sf9^syp^HbfRZD<%sZ^Q;2< zH|7Ry$9F?*qO7x|eyECH5*0Jf(!Ex=*F1 zzneyIJu3qpcH6=`%MO-4kq2(Q>3g06TJtwT&k5k^%NCz;9H^r7U1yRZ-Ds zpprc%Ws5v9VXeiCRWYd$LyYcFsyaxBDf(s?U9|;G!a!y(jkxF2@IT#A!ORwNtjM1= z=+us!G%dbjC4f9*Af;{Z;`8w)1?G{SFt(kJPXyhdbRmxAM>qJl03>8$8?H$g^K2eg!1(E-Ytzj8V2!I9~nmI*?Otm$Mbg|?Uc#5G1|mf zqaJP6(RaGudw{jNeRk_=T+DA7MMNajw^#s$(kJt+nV0xu3T4(Lh@;`}Zf_y zS^Yh*TKwY9Ai3VoVFwQw{X$H9A$(3W+6ve5c4aySe2x^J{Al8q+_Up9G<=;JfLd<& z5dkU8v0UT6HnBLAJ~h+(_o2K5z%7w- ztC2GL;}Ho!ptZgAmcus@ttc9%Gtd`ZGy-M+al&zMzHNaUvr|n#ikWghDHXWHqszBl zrRJNtk?p)0ghHVDo^Nr=au6tUUzpTe>< ztoYQa@}p?@L9zXoaE{ zs;98#t_pST=(>Jf(J^UkZSCRl22*Jomu#1z%N!5*NzzfoXNq$#f)#Afz2cZn>{Yuv z;NKav?2jv4{TpOvV<&(+D48MIyiTM*V~aiZu-Vkk+y+8=cw1sL_%HiPdxyiu=)}^@ zaPVqIr1?SD3e93h@JJ2}v!Y6`HegTXla8&8cKW~I+-ma1I0`adgsJNuyoPbW5Pv{2 z)E(Qd*36DCR>jl3yU^-^*@;2_yf-2U&5&!HRwd&e z_0N+<{6b8uKE4OvJ;%*t|1T3_?CHD^hO&0J05MF3Gk8&a1wYh2ui)jUDbk~QYsXD$ znozHmHA@pr9=dyZweH)MsAOT|O)O>_Af4d%IDs0783s+gbR6St%Ehfvz&7*bB|)Uq zwVO?Ke9SICrEl3|C5DJr#Hh2+`7c#jmHTD(-zdSmjB7{_%}Eyl)OTz9%o}yrq<#ul zW5_>rW+6!E*`l|1VB#I9eXRcKkzyeppNN$l$tcfL)g@Rjt$NcKJHV9)$Dj>hIEsk! zBWT<_>!N1g+Ebyhz*3le;PJhvZPrzPi$@ONsYU){=J*OvE2U(H*8?x`AU6#?oD z{^_3$5r)~67p=!^aNlJNj37?6mb^N;-pThW$oBKXJ|^F7Df<9PiXPiEPfp74D*roF zPU9BJY)P&f6=^~bvZ32HW>9JANJN@Pz4A|zj!*9qUH1);$jG}Qj8%tp!&W05ASig{HeFq1Iuzj%BoKIO6L__E$n7HVVkvRjTcc?!0k!6Z?v~s8 zp&HeD^*%)vV6Fx-<#+&@JlqvNtb48r+teh1-;ON&D$o4CH!2O~A``dZYA>q3qBy}p zvlUsW6IYysF;EN8@^UA($HCZoYcXkznL{E*`k+YtyxHfC-?yLYv=b7t_nW)Zn~iH9)M z6ilL#F|M@0>+2JmbzhT70q(+1WW0}7?#!wDdw5u>O$u?6bZ)w1)zk-P0PZ8N9#NQW zg5OEK33%LS3&tda&KJd@H~q*K@NM3UJN22@ie&u-_w#Iq?k>>7!Eu;sv#dKj5q+eE zy21m4fuNCZD<8fsMfZv_i$u=8Y8vho>tUzT3Jj$Y{W#4$%p*MWX7XN~)Ar+|V*X8{ zSg*qTE<}j8VDq}){_~+jz}pd(e)DwLnh0vDeD+oVKB(f)G{z9Q$Ik_JZWkpb?`-DIX8;dx`L4L%`TTqKf zav(p3<5kS`b=;v2CyqkvqtqjKgCwVn*qR|g`nHSLUoD`!CjL&DbFE=AL3&JLW2->&w)C-kDd4*OQ3OA+?fsc!sh+A$7eQ7ky=+Qub0{E2%hUpm)=F zs-Z)ZIUv|LPAeSy`LPlP@mR7dV5o#}cS9bTh3OZgP<3MP`ssj#l zr|{W%_z?TY&p*1$NuWlG@-fiApls4{52M*cf`>oZ`%%4^?9&qN7x*V_+b45*zDIZ5 zS}Vad@tQfzQK>+XH%{HlWpF6^FX}oMdefoWg8F3uy`+JjzqF%q^~bd04?bnWq-1#A zyk3EUNjhoiKRJ0{N<91}^NM#;Gq}qfi-742h(E|!-|tU-x^5iiAeNfw6ly3ELqBFi zzu9k}@r8Y-4hsi^q{_yUP1b~6)FSh3qf{NuM}UrW-;Jug*;A`%q|*cA)OF4WmQEFD z@>1$me}PtS6_c~a>B{Ban;;Me<^NqP4NWA#0gp&{HD=a>m_ zVkya!Z@o@wjz7@;8P*lls>VG>*a~5`z1mr`e} z{MSL1OMH-lxi(cXl9>lwXS^F4?p{Z+^UbT{4K=|4a9O9s39Bq|ZvoOqyeo zfg`V#9CNA|MMGFF{9KwJqE2m%TN&mkKS&FV^{9k82GCM-={3Fj-h%!(<%vG9TH&S0 zsz&SEE#7ihi^r*i!mDpOm($c|@@g2OMkZU7Cmr%}>@i*#)U0Rmk|xS{ZqQFi2b^-A zc8D_)J2|X8oA+*#$ND4FBwN zNL$-lel_O!n}$zonfX@OR{K5w@1qD^+N+Oq&R1~bYh0pF#wtL<(%+FUk0lg%ux(&k!c03k+k`>3C||DE{?d;a&z6fh z^HZ_(aQLI^o>4GJZf;HayPyv`n4s5%c3KZ!TvA5?gLVJOK!cs=4gc=^mYUufIrMl9 z`s@-LV}FOsI*3jfv(Bb^{2%VOl#k3&4A#;JX@=kw=Cnskx$(#qDVM0xA4w0M$6#fC zCKO|_rL467AnSr1dD{(ysFU}9oTRBta~vjQ`OTbblz;10#8dLS$Rz(@7Q$2|s%LBYvWwG7F+TE`P`u`pXOPrW8e(22!skbZA z8+d>M|#)_$ZW|t>M+rVVeNe>1F8TW%FA3MZ{5i zBhqsV$hcfV^Rze?mcwIXdaWv$m_Whhr>ZNLBTu%ycP6+KYGQh?1Myh^j7|FrAAliQ zOIGl9x1nq6^KBDbKi<+mT?<0l>@Tf7It}qi=t2USVJrz-%b`<1PS`MJ?4Z%DsvZ0Z z(r){LrW5@=3!IrcCJjkUjyZ*J|4D)Qnb$Zh%t;qL>1{A1+7aB}G zQ?4&ZWi zCrl~~2n*@KtEs}b46S}POxp7i08=&jA<4r5S_!M*x~xks0swm?{w+3})i%_%R=jA= zAfpFUfICgzm~>xOmrmGHzVILkhhSjB7UsD8a#Dh1rXKe42`BJ%Q2E{6wU+2--u^dk zt96~O!IbTjQC-Aj&yBm~(an0?qei;Rrk|5Hnmkw~#|!UF2Mc-`WRaS>)rfxqMDzqImOuLU<17|vnr&Hh zoAWdAk_`#xi3AGwi<`!`*y1Scsl>Z=C}CFJ+u3Bvvf}UD3%@%|qs#X@PQVMi3R!%h z>C4?9)J%0vcFEyTVBo;T?j$%PDAyxzVC^+j_ym}T{FojgR6*GA%Z^BU80Tr>V0is` zVO%+~G}g=8S>$?==-1sVAC;JbX zmbDlfCjYZk(p+d7AnYn&+@D)yxQt!0K9_$75Y657;LB_D=2yR~_!HS5X1F^|`GpU~ zl%>w2^oh@yp>G5+vXnwX3Q_WJaq8@eaWxydLF$g-nDMV|C6C8&k_JD7J*IKM+IP9z zz-i=b7kwRD1Z%|~kRRE(DWX?QX8i9lI&IXFvu8-Ka^N?tkn&SreKvOwtFd>tK%=yduomq>i-}z=26Zqt08kBjuLWWZ} zdf%6bVmax&GQ8{d?%q=Bl0%{(QFAqU{;*>p&cz$3{!MWvGx#Ps6hwM0?Jp9uMzQzP zZX_H5(Y(UtOVS+nsiV#U$C7^7*c)T$z%FO;=!$EGkH7$oV_G2h&ANbIP~=O8nX4&J zgz=}?@bYYkCg3cX0|7$3m+KpGGr5yP?h?7kTi%4kxVq(mFS&1~9=)AD9TcHz3K=4x zAa00bvT=x$0nY8FZE>|lO`@T!6Q<}7DFn<7(2paSRiY^jd3|pdWu3o;cgap+w69<{ zO1e#CzSvC9>%OV8b0O%Ks__SE4AJ~t`B3K9lK%Bwu)7F^Ebztjfco}D^X`2o;_#OT z>{C)_1GNk~4Hv35ayWH-aUaKo4}>i{f;TP5uuEnlo4)8R_t)bRY~kSD=Q`qS46d4r zrxD!ikDV-#wGpwG2_DWO@fJk^0qc*zQN9XW;!{*t3^UC>^;P&sFejE0ZnK^PNaN?P z6xs}IN0+rT58XCah11Rb?tlgtekfN2Aa;h*{-T`wSJRT1)9wjBrf2d!j&ET)@?upM z0ssSxCQHHWG%s;1t?^{TM0-mIb_G)yKBikIORl}JMA@@w8W##swI4r@LM4aOLZcjT|No4>Tnj{scmIQ+?;xi7OZX`?PPGT<=fV8C7!^wK9M1cdim<$s{*lHa{&~xI;P<+0R{bl<_Q0Zy)@*WGyYUK7Iy;1oc!w)ny^)k(tn1_qKsOw z$M^0qJ32mAzz1*M0iQF~$$4RxV|K~z1m7tzi49uO8-ten8(kwn&PW|mbore4iLv_i z1a~(&P7uIzUF0H7m~kduhhAr2dR{FztPy4o(A)%jIa9zLlKi#$?C9du-BN>Dung$T z*A-qmJeGbsNu*@|%Wb7>x)qU-4MIS{XQT0t$|HfYGWdQiWkjJ*lqQ0Hyl@ZPMZ=iT z7Y1vc0gvXE-KhPeKc6Dxo7exw^$}sQ*T({3undouNYb;Isl)2?yOkTLXhK!QRSU;W zL;$?+Ax_sEa9-}13DTbdt_+_R;#2KR=B81KkXyS@L%HE90v!#o9op=UrzRzN@?Z6}$X0D#kkVd!uGWJRC7?uMG~o4@f)HRjmB;*z>Q zJ*=#Pwlh1-$@Avm*J$_>`ltqctK{Uu7(v+lZKIgZ29VS+`4%lgUS{m;*~L)3{aH!+ zr{ADjY?#ejz(!dWe zo+4%wF!CRV%?1zi%!KdSVPQQWiN64o{L-=fp}iWBLhRGs|8B$1(T4_qbm#;39fSu4<9%kkT<-??!rYd7V_VEyTqwL=F}#W8Mldkx4ltt%)8&hLW;HKAezDM#0IhV?RD zlzyC5IbRXCjv`l{lL^u*c9=7BIXH$M-bV{Xe;6$U3-70Np>>AqU=QLI25_8_&C`|w ziX%seqt+CHqLif9N=owFxKBkXo_%2_z`|5kBW8?f-MA5yzMMxw;YShvvc9|I{i!a% zCAKL9xWp=Gj8S?sATBPUH%D`55c*0EHJ)e=4b9EPIo_Hp@cK(D^(}J6oW`Ak1wSs) z9rMfM$M__*1!}g`!U~vg874DTu-Jg$wgIlC_dr_2t3N8#*|@|~P03in-OMag7L{w) zJnirH3({Tn9~;a85e;O?02g7`7rqlv?y%%pHfWumS|_rj4YV3_41kcisF|lgfC&NH zD*-vWObq?FmKz{+OwKVkhL8$7--}U6AbPs3VwU)|1J{Kay+ajwr2qb9C+;s=3O9BF z)eHc=a3-nb3JpWJ%>TfHNTK&Zt!_&-Gx{|5JLP|i`NN4s%uPa}YWFf?5+QdUxpsHr zdROWih-a`GL{Cq6W~>TulX60y6Ntw$@+4&BxC>GMwst`PmqSgU7&SG48%F)K@O$~x zzTchx$Zo+0fsytylR|%;SRB~Goh%P#|2_0oCX&?)MOf7v_qz68=B zxi4okGOu$T0?*$c=DE5S0i+3y|>-&ER7Y?_C{*PvIRyp=$hmnnE8_vZY>#J;6v1DCONC-^l| zR;UQ|zR8^^VRD@aMgx5H zZp@G_&geD41ikr>H`eFC*rEYCQEr zw4@>;0xr_Mgn+b!G%Ou1OZT$7zr*MIUf26Cab4#;XXc)JX6|Rki=dK#o%tNXgS}Wj zEwm))^($KjPIstdDYVJRR*W21c?;BCc~DM%<7Yhi@J`Vd(IO! znac{(-Npr%o}Lhn$sEcb^6u?}mB&oz|m=Wnh@Pv3b~n_jNz)&eB8I;c}u zo*DN{imx`3AH6w%(5s_e^2s5X&c4bOH?bdYGGBM{9mS*0P_={&=avJu{oQ&*Ty!0{ zy;II?IX;b?(jcg3yehO>x#4vF#;N2&xzs!~zADopp4MZPbvVQKRi`DiX+BXLvaxda zbtp=_r3e4DMb`+RXS>H8KYNOQe%tK)Q+MMVM`632k8%B+p00j^Yx!bOI8yv6r97Zb zI}RlR65;@;hbid!mEc*O)?9T+ktUJQ=AOsA@@6S>{|ubqs{a< zpR)(t$Y>}O2Ig-xxSfChf@&`MwaUroKbJqNFy%XTd1!?>dX5V|-FMq+%KQ?Vw?SJ^ zldZ{rCULRx!u^I4&TRhr4HJTO9lG(~@mv{Hg*9&T!hNoxOF`f4;v}?cVA=Mg^5Ai; zEK+6ou1FkCiKd5|*ph`zERHne*^?~qExbx%oIb0o zjFt*-eliJ8xs$!QM(Yqh5Mz)*t5K9s#LL%7`eKmHH0P;zh8n1$`#D5&p7$fLk`n$% zSc+DL?sf0H6UZUWDD4>%62<$q$K7d0%;3WeTk(v6Br2?*#jidzk7vd9z z?73NJ#oE>PLpfDDWQM;)DKp(K(9@O}+Y$jZB_9q-CXEs%V?^hZL)B zP&~ZaI#mzQNJY7x5i`U`OR1@ANW5jjqS{vi=l5r-3{kjV)?q8c+FNP^;6?ea0`q6t z1)udzFEo8Kwooh412>T$eoBEKhT)}1Ed)nA>i|#5oQ%r4TSQ(+6JOpcAgq3!otfV* zCyn?q?d;9=`a#=xi;vDbXf2%8`jc1b2MM~c8T3Yi2+mdJPH{QpYUOVN{`)Xu%XSyg z-v(C90K*0T=+J|KAxuHG_Dm5$ACJ(R`T7zr_9G?_g}kS5N@lm7+K*suCN&$CGV8g5 zwYHH~EJR%^UDbU%!>T=wk`nqksb)e|+7*O=2F(}NEo&r|{=|mZhs=VT0gASIFQA1n ztocFz{<88YpYCgUs+?nHsDUn+`BfK;*KMt677%C$V{afltK|rrgtNolIq!nTKXdmp zy}@~|ASk&|+Y>GgB5T=4t5C0C$&; zyr>Bd4`3hNY!RcqyY0%Knzv@@Ces_=*GT%J?;6@C8$Aac*wviDp1S`XQ8eaAi;U?# zzl=Q3T}uc?$z_9*H{Y4IHVp0MO!Io5`hhbIsn#*o2B;au8@n^$%|xEV3YIVUM2V+0F8>0W&VvfWw^zE@ZsoZo_{*(Ux=8e3rif2e*yS8k z7Q7gr^DI{W_O{wp+-W3C2Y>4wF~9$al9sMp!MrumUhw_WmKJyD@wwIy?1RB+CSXn3 zGa1Y+;OJfxFq|k{KB2R&6>CU94~yUDYG9fFt<^yq`ja-1OpOMd^|4B1+v&ORD_h&f zxg0BBIv4s6L=nGb8i<*sfo&{+jtP6K5~} z@?GR2DB{LvXj0{6yMT>On)PnMH!|~P>&^CKxcj9#-61TpFe@gD4G+N)WgCdph}WzOxXGV{A0XmW703j)Q|jiMvPJ z267Ht_uAk2OX(8IgYLb`U5}ytJ3eU4b-M^Zb7QdQt#321JfVD(B5TMMPI8HQK-j9|2_W4bx6 zI)jk~M13D_ZDMS?2YY6xQn7EuaBP8=O>a+CaDN0*gl#69Z!hgh)ft#HfDsSsTz8O{ zzi|0fKN0`{tx2-*)9UEs)`Yn{3u?5Warj z&UYJ>wc^sK+S_N>z)N-`3Q%imT4y<$F-;L`zL2inD=KU4J}(x}liT`Q6_!UyuB>Bk ztz&kFR08r)JtAR3kyUyMB9Q(%jNr&Z3`)A?R#sp)YP(XHdD~RM=M|U_SYedNKs1xB zRWYqfb)~9>f4C+$=dB`!!=YY?O!r99&v7C*whqN1uwhyo*Ty*@YoWga$K^jk=Rd~s zRZ6%CCpSdTa*>x!lY3+NEioxQ21MBwQ?#evZEUsgz4*4kUvy$h(ujti%9(x@&d5$D z0X+eBwcILjUDg$aJmjf!L~*|JOmf+mqa$nUuQq$4|HLIivasD;tjzth0eT3zg|%?% z_Fx;;ys17O2TTbGxo$r%wMgu3jVM@WI|>{kqG^iiJ-jXOVtmS8l~wK_ZiAV`lR%ip zrtm%*Iy5-DM8<`PHh4YDs@df z`ek+HHxviF+^X>juUxoEIkC3(33-V9W9i1*-?~2h`tbW&@6Ct~W1;aV^D5uOu6dLr z-46E_BRgYWR$ek=*7@bYci*>rcSk$MIR1Wf1jxf=Iua0Mc+c6B^nd}}Mh32S!Z)8zc|WeClMK2oPNuEvNN;$`^4$kNp5)AD2dF$SI3FKm2%yMo#R}ju%boJT~4HH*J$B=|yzeZHgSqVK5 ztBdX$EKdjf4GJnT7M2YOq3%zSGuW~-52=;M9^)=L6k1_lqu#hxSv3Ai_V_Zt?cAs7 z5-W%Mp88sHDSo26r)*Xo{&&0I#EcM-HlVGoN^pzTJ2JX9Dwz-ocbH}?;FGMG&a|32 z^m{0vp;Fk{zP#pf@Jpus^C8BhuGUF~;lt$9p`cmN{Yov3DkA)<{-Hhki2KoW@U35)xb}3$LJ8sCQdsrttWZC6iYYr;df%s&gem_Ss{eqfKAym*ayzd83>>#$2h1)4MF|qRka4G8=Yh0EvF`p|0Vy_|(YC$*GCR6eZ*OL^ zgTI_oKv_?7^4t*eN1TusH{5z9VN;0xjDjaU}bfm^76#lkT62+ ze0u3HMh6G1qTtFZhR+VBNgyWY?aMZVLkOV@a`}(H03m(}A6XrgZOOW=^!PIJ12K47 zMkJ#vx7)ADo%)F|Wr-#;lCplpjhBO#i8@8ZwhHzIX6FTGUeltp zyk;{(CHuI?q1M%X0xl+bV34WwgHh4`Pd*`o_gFsE$zeaH_l}ARO^81Elx8sSyZDqM zTZ@dS-Xh}pafA+;p{g&9c-Yd|Ff2I#(4_7(fk6Wl;jdJa#-PE`;^z_kZv%O`H;k{d zft}UF>XLh^QmkKJWT*ShRkqS`N&{yaWUI8(BzESQ69RLFZ|*((i3w07d^PodiOpSr zjYZPmgpQ!mhBm6@?AF+|+2?H@dF1(*)-TV_jJ-Cd$=9mzVO%V<#F^f<>hfYhNxB7; zrb9-*u}%b+>g@1%Xj3R`Z|R_4j>_cd>h&mhbh0(4T^sMoa8!axL69F)eYAf_Va|*v z^MS=Msn>v>HOoZngn8#-^NgOEy_71R-7)-9sTnuk1G_Q%-NJd|P|lG;F&vMu+yB~= zpRAqrIRE%!v`kO8)bZoIXFSnH^9eB8yxhOsA@|;~%svY z>G(SIYTat6%F)n$DFKd?kupo?xKZgr@`h)9QWD%Qo(e_@-Ry^h6r-FnA!W;mL8ntW zk-Maz@5?pwu%bpRUfv%V;Tz(2f#pGBFk1*4jF+KJYd->Y!y5MQSa5bW`l%~6f6ND= z+U8B!3F^GekND0E>7ah zHz-qp7hj%_KcdUG5vg34 zr^<*m4>g<`tjSk#keGJDT)yN9A9xyXZiT#)MsjwWok!r$HkBNtM@O);m2ZIIl3tFLj$A`nTbK_H zhNPO(v7||E>5Zvq1Z$N>{+%fURwav0KZ^dD(8AwA^kMCQRfN36eHp7?k&cn(G@AVf z>mSeheRpRz4wj$$hMVWZ!_ti-a}uhygBsN#ZQFQtO?FaqbYuJeYOpzNrc}4v?p>ns z3yEK+fn0(=X%P7dJb&TwOjPDF1bta1&y&A$7>dehUYCZlnp%^Y(q{#{p0aapHxkTR zFi~KA-QALMYjZ)UYv<4otTHwVl{=a5NcTqO?XfP|CQY#D+?^D+R?uc1 zPTfwhT{Xy0L;gRbSBIMrMa)3>IuIis6KucAlUHCh2aw0YybnmiY1D@Np;G6apqMfd zk1uW{Yqb+`6u<@(s+aR^VO6i&F|FjnOv@{34?+pu{@PhN`#ju|)bt8{m9{mr9V^h> z5=I1{@N^+xC>WaPX7#qjWVDL2(i&YwMl~8-7GWKy&3Q+az#bbDY3Cy@Mq(FH&4JHIAXolnWIbOAKz2@MEoI_x*6W+c02 zem7-cv{c0PI&I(c(!Y)CTOb4($(7joSzTUz>VmJP?V*~6eadP#?(J48H>GhObB|FS z?zQNz?v;2F#zE`nZ1(;t*Gxh%`cALDs1TY|3Sp%P2>QSbF`SxQ(TMXp$Bz=vu!)L^ z@jBDK=blS+=21HAvoEG6>}?DE_z{StHzo7+yYt3Ax8?gVv6B@;c_emb5W?6-~s^DxcA-D93ade^~V%Me^bF?Dppk&c6y10tA zu$LtQz1a-xy{6Qi*~osF5dE(g1-;Vs0)Px>@XpygssEC^B46XHnt*L*E0t0DAySuG z-}0g3lOJkg97MVFu^TzeeE0FY-}AHNp#9I zEY$KLtET65z^afQWY{f&Tit0QgT_SENST$!ZK<2FV=a%;QNxE zU6J_ToGUcM_V;(Au1;gx1+NWroW zggTW}s(RzwK=XP{^P}y4_{T;>P80hHcZtkrB^wU4nwFZCS;HK{Adpj4`JsV9`#Jkr zjUnhTyyk7abc%_N{50clPw)IOkCtMUEs}opv8+hAa#F|(hW}CyDXp>Ov7k-w=IC!J zbHbG%yad)RhhE`Q*bzKtKT|iHIo`VWb0%YUhtCgCJ?7ML7w&N564FWG*IDGR@9R(s z9|&diXXe{cyeolsi@JIT5km>MpXM9Ze^l2x{?6G>hvC7muhMMomg zyYdEY@0DTC4=*#QdVR=QWR(y+8ie5n_BMyve>PU_S0@GiUi1BCa=p6Nn~NgH?`fZP zxwyt$S&+&!IXr1$a_6F*G2*u=vFpe#*lupuwdxLo)&M^8_qeAsP6$R!|g zlSu4Fm7D-iq$Kf=q)mGTZ+kluYDSQTjyG+DaD*#}%A8cfQoXB%cH2~rJ~m1J=Zz}H zhztA2I{e@$=0O=szFX9NI-5WKD&ylNC2qz2u=v&%;YZ2WA)2Psb-(0kq%rw>emf8J z@ne{}Ms2LgB>np{Kiky5ed%6AAaceS#aB~oDy`O25~PsyDkI%MhE&}trOcjvZ|WWXGW**+%w9p=y-DMG9KJ)ri1u$d3Gv+Ipz6H^b~#N3$GzR`Yg-&g-xe^OIZE5^@9cgskVc)CxB-_D<%Qbfl@+InN62T}PDtQ{U5o7jU11wYoMZbvuTRB~8ps7(C z{{f@A(mE@35rW&_sblgFko%G$Zemx4p*E+cI@J)yPK? zPqIw7f$i-SqDfvSH+M7?Vt<7Hn_EEz;eTyHv%T5i43#DSJ$Ef0tqB_sX_(FttB?Qg?hQdn6uLS@WEeHhfhL_-Rpm_qaN zn_yxI7Fp8?^XS7hr|HdwB-K^}v8DGO)GiL#ghEwioP@s(yWc$z$Y5~xMS1wS`(*w= z5%aYTLa-D3Fm=Q0qQI^eQ#S|Wq?71&tc>tplmrtC6?F`-^0z&}HYm=A;{z`)AB|zw zs@_q2w2%~@BskHArS#k~9^O6aFMibIWxmxjzLsF^gQ~Ga#=8(MQUuK2Yxh;KMoE5U zF%r8@wfCJvN=hm-FE3_Sc-8lzH;b$_OC`SMj&-e>nxY4xa$!O50tGupAk3r!6n*fH z)_MM?7k|-L=rJ~#kHOi^94i3J64JV*9}8O+qN@V^j5{33jU`-=R9>z`K}1{%)jWwe z6o56;nDb6#_7(^LkDkYGy)}N<2Kw&)IYOT2iihrW!HzEt-vzNA`c<*9v8k!%#{!EC zbyj^9yoaE)X4Eknb%EJQc`5#Tuqr`uBLN_7${6u4ky;*oxF2D6;2+^fXHOG~0@Na) z4jM9BKtfal%P6--x6bx6jm9m%B?88|2`@E@arLN+W!(Q{1S07`$L`+ueUERwNw<^T z;hYzKz)W?MK_h_pj>iM=G$Y+9zkDculZSRax)c_8-U7jP4O(RG)4n5lviO;2&6oKm z!=`wA+sHLtYR5ONp1U%9EqqY%7|){@Z=An$w=e=PnPKD=Gi1kLcdX;|Iim6hwHRrn zW`m`AkujNQY^vy;Fb6kST=!&IH|YKhN*s+T>8bC^5d897vM17!Mll%eQXVN05u?dX zuJcTCMvw?b`E6h&xiI!C^5FasmQ#9m4_ z_D{riw^TRWjC>?S5vu=mS!g@K=+50wmSUZU%HHdMPOzNFUKGwyGkPasuu+LoV)G;- zTrPb#)V0tvV|@#A92kP#LJwD83}81JJ@1OxDO3q>|9nx_{%4WbiD$0E6d4EHb)ZJ% z!nVijxNmeNxQFP2`79`|pjc^$Rp7#!(6Jl#z9nEk7ec_=APJZ{1S-;B%T83HsUF-( z#g@euX;U5$@|<$3u{<*Y1n0SxW(Qr~p|x}{pCRm;jGFgY*o(? z5-|oLlFPV)`1`_?4ir#kkSQh}U%jTJve~8(JHeq-k{+!F!1aLB@R^k)ukK`t9tYxZ zzwCuQ&G)}|bc(LUOZux^XIrrqy;KM>Gie4R%8 z??Z)#NuF?1iFyBfD+Od$hKU_W-J4%C_e3oh8-5@|14zOq7fdD^dA1aCKM|H7N{WJ+<{Mf4) z*R)b~6cQSw5ga2)PGgti=p;k+<5x27$yrC$M)*+(GVH+b`UBvzy^J@$1aiu0Y~T(( zt`mYA1Jrbo%WZm?%E4_m2{ouhX;KOenO1}u?XzQOzbUzdw#$%RCJAS8M`!80)`JZ5 zWVW&D5ofVZdFflCB+~ai&U5G#gUeibF7({iUtyK@QZq8jW(`x0?|aPP1B0=mXgVNm zK(C~*c|S^reVfno!MfI2aLRR+(X(B#vj`sVfx*ETDZ@hYY;^|JV#`Sn#X{+Z!Rk}3 zT%PNrZ+D;Xpk^l0JkA5q?qRWOar42o`9VfM>|w|=(+--9`cRWa@r;od@sV$b1aK$8 zTk+i-hftevXvU6q9wB!M@Ae}x;nb>M(*NS3C3!N@sgAR7QQiP^9O*|1m3MM>-dk+f zlQ!CnkfiRuWt)*WWlmjj(W}f0~0r9Rm6v)ew!A^e`WtHz3D@`}0lW^A`>HxF#v; zh#Izk;!*eQU0sPjknoe-7fRDv(x8bbnl^>I2b_O4nT?|eQZ*ypbFp&Ji9eyqxS_qR}(f!{Wha(Ok9%CIE`b71Cq0i0L@Xpwi zW!?Osi$wfi`w&=VGWH6UZd{?#m-hW$tHU0_K-_OXL?U7N-Njg->Lr-Eism=Hh9o6D z@o6csH*jH)2L3EbHiCqH4(?@C+H7P|oUr3;mXf8Ie!opE`o4MF%U1%5e4OQ+Eessc zXM(WWiJRc3Ks)O)@!mbaB(YS8eXbnpvpkKGYPfF$m!r_$W&*pGJku>IF;niA^zq?W z2H8aOaU>`Iz01hXT{gDk#Aq!|p-|y}gE~fKMe8y^PFXG}*1~GDyRrbz z+aO}_uj@jQsNHLw+pa16>mky*+disUYUWupT9@x}UN$@27+R;xL# zD!rA1U}3@AQ|-<8cGTs?Oul8d)q}Ux+JOw*)Z(88IKbVD_sHx>ynnUOUSvFXAW{R# zGJ3sH{VA65fz}yVvP7#}o8;-hf2)pmoc`d~?Su~Vy4o#U21kAdjo&A?Ux_sjSgTw>7rWI z*%Owe;YX?KEQ=B`kx_96m-jdOZgMO5bJ+x+yxqk$N!>@y|LO#e|86XhBQjJ{5&91e z!=bjrKRIDIaUOh^xN2)+Ru@@)G{1x_%`I;ySMLwoLgmEZnvHgWfz7ynw%a76J}}bq zPN%T_f$`NtKN*=yO5kYp_tD7{9C;f+tiBJW9V#4sNQ*G+jfdA)KQ0yM8myc#p>a7e z($pBk^}o4yZAKTXT=Dl5IXgPEyXu$mQ-X;PPX$WzWq+S)6wW+Gzb-MlvE17Oi5XVL zP1SL$MDTblBm-wN@gNeI{cKjmY6uKabz3~Mz+UY0z)lv9{l?O+efR#91!tsrE%`Ky zbYqD|?(5y<>%pBMPomt-WFu%y+h?NTS3lxuk#61U+Tv&@S&dR0s6#DM@~bPur=Pc& z0BgeBrU84CMkW>&UDGL|DsxQgAR>u=co?Bp{#=8p{N7A(*aQr*%fn|Tt%O|R_Fvi% zN}g%fC5tW@lk$M=IwO zVNIvFMF{RVhBfR)QD4AM0cF1V@j;Nr%1MeDWdc#O0}}4JD+N5zkYqQIWfWZp%4o{N z(G0{nhvRB(!8Sa>IGLjVzP?HJS|{6mAX(nMySUiu6S`J49J=vyB^sjKY?+bHprK7Q zfi8gpLBAA_pHH+o>#>3DMaS);l$#2yQggzADL>E5ezmoMH1(Jd4-btZ)ooC`Us8dJ z1gOABNKKfh%~yc9v?Z1nW}QNWO>1Ek@rDMe&ZP6qfEG|xk|7U2+7y)FJ9c1 z52gfsZJ&A=;(tNU%`R?q-x07_{=O^B^S{{My6^RVSLx{T4;~6Tx51y}TQ@4GB((SP zZ}PBpUUm>W=~e*&f{jZ^1I((K6G5qZ zm@~HmRFap7f;*nI?KzE!yinsq()3TpC2hS8pyf-Fae-g{K{tUQ<0eCbMPq7`+^cEe zM2)Y~?_4>S@HC0wxu0^uH{xjDhIej%DeQ?gz-;!QDVC}hiwq?<(frA>%g2J`mnC&X ze1o?I9lOjP^$y%ZS`v>@DG0skqw#Hgx0I8pmAIXy8u)^6Y8~pH%5jHDL;HWhgm!PO z=Y;TTvkfnDo^O4=g|fnfnTKO*IKme@qoUjOQvQgopaJlA8U>N;mx*Gh%Q8JEe}WP*K1Gpq{T0aL1nJ zOBsQUlV0pjk&&>)S>AhdS_z46#`m5*gcpN0A|FW7dQrEft}UZ(d!bxX)6{|^`t zV<{QP7(W**%isA;@$9-UOAlQ_8YFOMiU+ne5{3u}ssk9pYyr?Jgu7QDl>L{}_Isl< z4xX#xOKn>HFq<`rh{C6oeq+C9fC2%_P1GOsP z|6%+7s_aH4I)K>}SjzgZz5jqclzDjfze+`^j$ z{{6#-39t$nP<^Bl|BbnKqDQk-B52TjzMW-{3ic(=kaI%;5$LK@qoKH*)zT0bv!60- zn2>;iz*6y+ups^XKYY|9=`E}sIDD-A9;)0K#*yat}OOt{^;tOw6Q+X7T4 zad&jhFjw&`7ZrBGcB}!oIo*GU_40S2!rX6&{2AeAf3qQZex4IY%(ej$NiAY!Y z9SS)*$(Pm-sObLqx15+9O3Pb4qj~99o_Z~z4hVI%)pLH|Tix>{$$`75r?i%nxB;MwR}&q}-c3ejT7T^EM87F19Uk+udIb))xT54e?|x6a~C_i(vvY zt_t9VF#h5o)&@5WBMifiPjcCx9(I~W!PiK<=WcRM(|=-%cP=1_&awNQ1&VhSqGPiw zfJeQcBBJkLekb9q&PHeV;OJRY_BZS16#v9$UyG`~ie=NmoD61FclY}3dnj%whJwsE zU(1O|CSNYtC1jBu&#qVkRWWaYMR_{q;m*rT1&0#H(II_j>OD3##_bG3@;>k}r4(P;#5C!D zG*veE^BBjkl<|P_MVg-y8=JhS>1Xbu z3{G0qBpJB|=)Hq?%e8nO)&;cyEMzg`j#RaE(x^l~1BUp2SCPJR! zk2}agCi*7OwN%rXb5Qt^rcWXQPqKbES?s=i?S*8~^}e-xp{T?@E*Tz&VRLeq!oC5I z)dMu8ko)PVq62g#haXJrQr;f)^yIgxDU`RN>(?HyDq&!{PW5o=r&k^)g(Dx}%L0X0 z==rjDgHGNnbf>M5!UmZ{I3b*MtwCT|y#8ttwS3q&HXa=v34wN6EdwP6%?M5+PY_hW zG{>h+M)Z29T|w6CYpNjL-8uxLp|)HN)q`K{WE0;teXBDiSy*T$I85ys*{EsB`^jkf z&G`VzseM|FeC;RZhG6byJ8RWoaA6~nfB)e6^RH#38jZZpcR-;2<$*1s6zM+2ir!Nf z(d{ou%CP=OvW%eXzBKQTZTqAa@z=VkxUfBzm!-qG1p4CB_xQ6tun;wXvW*c}xx=WV zxJuwQHaaEcxfUvj0I|MYTv^7P-+oHMW8ed_rKwojhI(e8UX4*`j(TuTrxch45PSK* z*P2bxWjAZO$Io|OGcQZY_l0xwB2_=f->DoJit){)^ltxJ*Qu9fK>2KcWoXl}$FBn@ zt&lq*o-`Qm?%2)d-ECX_dgD0=`L2aO`qjz)3hQvb;$FG)sUmA*OCn$jDOZgljo`M! zo(r37uAtS9o$$-QMS%;1<=or!^f>mmRS;kM;|RN;vnY~Lva+(G9jP-A$(Mb;yGc?< zMDLDTod(lVqMi5SjiUefMQ8yipuL7hUgh&4IE zVkV+v7||#LG~jDra?iFM9+_lZLD@sb!z7Ks4X*8NOfL0tYK9?*|GXozo?1p1d!3UVvl z-}H2yaYj&MmffRRr^p4oQJ%SZgmXxk;SZ!w5=>@x_yXU-HoupBf$S5fG*_&6)~o#-gI4)ylf*=j-H$JC%h7;fw6z_rmv@y^4eQ1It* zW4`&lhLXEcyb;+c6|GT=EMyrZCikC*2{G{w-|hZh=ZzoO7s*$J?O5b1sqS}^a{=Xr zB-*QH7Q<*EK0`bYH?f1G5U0Dm%zy=*U*vvLdd5TK%y7;HUs2a zzN0q<6p|vXk|6ufD@8nVpO^0O%`&r|OQ55qA|zcrY~x?oa9pFgxi`{7D}UPFLIvNK zkh%9p%K+1G`FpA4d8=>mcA6*8mF{5Tzu=&!(C|9y_nd&05RR{aw$Yav$ieYpD{o#MkTaW*sM6*p2d1yU9V7^Lb z0%UX-3*@N4s6K!$rbpEP3bL1q9~daEZJtkL2e%xJ1^^w1v!GjjndG0p_F1;A5i5ch zDO5?7_yJ@mS7cT~x3`S0;oBwUHPnaz7!J&7=M7XQk)UKUW#0AKZdezP2U<*6Ry z-j=km23nn;4Ts}K$~P8TgE^_=PXEYBM_Kw@Hy$m@b-yei0Ls7Yd2mLu~OAdm_xF;mof|R!GDQZlDs24R^6SSI0ZY7Us0uW|2P~a^eS*l07+q9MJ-`F3-8_Ml(w9Npb#7bo5w8&yROZTr zm^w7v4)S=po7d08V@O!^LN%N$BSY^c7?;3vj6p!pEYV#`+Q<;71dn~ll9`w>{~CFf z5df31bn}N{ICm>g1ixDQl6Mw) zDg_&2BJ+>G6{+RtWvQp_Z4Nx~G}&L)Bp8s{7g3wW=N1I#PT%0Pi0{=)`mCPtt(A9q51=G>6K-g*)$SFMR`i?F|!a zFg85|RTX4-nr}!gruZlOu+7g%lEK_pc<1@>f5%cj*x(aXMF9(&M7NqZ#f0y`(9mK# zj=laz++J8LQS^gQoM9Q?*vZP|Ta#tnJDcbaMco|O+h0_|2R*$`aOT{E?l2F_@S6Uz z)047FPt?s>Y=)-|Pt`rq=J4(eNfs6EntW(6z1JC48yQvX^}fPT^Er z9b+t!Yv5Ph-c&}F5p6oA(2AZ=no05Ye;|?{T}$)#UoHRo#G?}a@Av8O_6~AvBpSF6 zGwPFim4?p#suDc4%ABg%KpE;|@ZHGf)BQSem^|cHj9NP_gjcA@Hk9XmMUrvHp|Vg> z0T~HzXC)}-{zEDJ!FXwwyIuK58v)&RhDvK`#@M8xw^)9li)}^@9N#IMIq%6F6h^ysbtE#8`Rq$h*^k1WY@n~U>=X=b52QZ2A2p;|+x~WPlZj3t z4}DZD4L#8ZPqP6^d_Xq62#xV=ARRvBs3dzO-!jupn?CD&?WM-0V#;<_#mC896Lv6X zgH5g_WXno~>3hedCyGvx`NB^OA@bU54^R(O;UhrArD zgVcv}R#`JR-Ik#2XXg^`{Mb1%04Zlq{ka$w<47{&{Msudmpj710=8c6bx3q{p+4u> ztDb9;C`rbuZBjl2(a;V^nDqLuunTYmhCxAvmz}|!xy5Oc=KTlgX_GpH#r)8(f;OFy z8s85U$C9r%eWbc09@?bssgQtSuPn&!zvRy2 zpB`iCenf@bxIQb{BFjU-;e7js^L7BNY8@+$m;aY#W=PVMeLMR60od z?p_RMFdwOKOXxv21&A##mRPIJS3;DY>8{|b2%;ZJQXC33@S7IDe(tL(`-Wbo*@qNc zs}QF0sB`7T0P}14k0@6T-k4P}SFH^>Qo7$nZ^<4+7@`N5N$x&$O!pfbH6PhQ5bJvp z-Xc;tyA^YfrsMtQKnIWRY=2y8@*nHc>BZ7P?E-b?4`hzF7)H(ZW#&%9o|gVKABJ03 z-wodx-;t9IbG~YaDE=2A>GnH*M&@&|i?;^&-aIXaz;@T`5DU5Oot3Yjlf%W^ zbN6nyw?)#E^LKjo`)F!dTGX8EzuVg6WX7}2^KR22-ae3hR%)x!gnhyg>5xWq(yD=S|NobZYg4js#)nAOm33vS@R3R? z*{*ELEPK0XT&rv{lgcK0U1V>?%^ug@^Vu>>{m9e&wkr_1B!tb4DqPb{l&9ZxmrW+9{v%B)r-HL znhLHz%Lbz1S_8U}{K*6$ED22NRn~xMZ+@*bE#Hrg9MT!>Djq()9Tyw;_;yzuy=Z2{7*+iI2YM0m7O@&QwPRuV@FXMFAHEWh`(-+9& z2joPdPS$zcn(+bHbgtY0G?CiDbkjoZ>CwOv-JqU{$^DM?tUQxf9wD#h2Oe5qYA>FK zeAvhdVPA&Dei(IFjp{q_aZVVd)ym7JC5*({aJF~qSEc{zzOL7@aIU&;Qql_c;SDbn zz7Bt;WygXZAx{!woRki?=O0yCu#}=Qa%lQ9nCnto-kM;)Vp3Q8`?T{`$tO4W^INAU z-JU+;Yn+M#*8rhY%5=ezq(y%}?Yav{3LzmOl)XKzz8$E;5PVY}rheH~YokZ2{+5#k z^)tr>M;TS8O!|4xgP~R2#`#h~{zS83DX|@|Za!U$u75D+ zQ80B9e`}CcJKeUJov={G2ToR)Hu=)$7S^oxmacIQ5`c@Y33+_FZ~XovbgOOy=q*P! znw+11SCqI)7my6Ff3P_!n(f`;yy2(7@~HD9M8T_dFc=$_u4BroA?9PNNXn5;S9quQun6FMXt)F3TXn3|n#^FH97Pz@uy)Xnt+ zQV#FZMZEA{n=<~rWHv?-VJaIIbW*gZAd*Msc^wJ_{yH`|%qO3{2h1jJ2Ba=NlWL{< z0AsmO8t>>Ia&h1J^`f|HLwbo$%cKVrnHTIr+rWz%>B@?ue3kHk5Jv zEN#RlDdwWCvy1VSA6_r;XXl~)=O=Vi-|nC;LgVgWF&*SL+0wIENqxOo5qR6ii7!7C z0sy754A)qaD9V={h*(3Lj)9M!r%je)A@Y#d&`Jf4d`RmCsuw?vd859B@(u9yb}2%_Rq{J{w@^%wb}O8%$@M|*QAWpQr(d?k@R1jQN@!Jlnwy4`{<@v zDZST_=Vfv_EIN7GptjG9FcO?TgGiU=kG;A6->MAT!hGa@hL)dSz zjIEJ4nN_`Ws&F&t!L`IoU3me8ka#j_2t9Z?u0={R^l3H*-WDff?}>@rC+|4sudnH)3Qop=AIX=YBp|X_i`CC zyDF|QYQ+ooaAJOObg1jn*{t9kY!yTN++IR@cc#8A-ZJ$tI%MphW-T925leRU+CCZ% z!-PuM^iG;b#O_)9oS|ou3|?MaJ6SrwtVd%4f3I*lOg8cL2$e|L9^3$4G}y5*`276* z6cQ>(cr7e`^sBd*AWyAR;*Ga^JjTzxj*qlB|Mg0NC%;^rw%C%_eB3wNL#}Jl0zt2% zX2OURs`z&|>^UR|Jxx61d_5B-(KOH}a*?-47K2nKbhvWvT~EB+Vo1B*jo&hZi74*< zY2Waj{)R7b+tRwIwUqz9{O0!`Y>fLX>`sg;%DHa$KNGFn>8Cqe$SSWtYFLwrj{RP^ zPM#d_=*s)MU#|swD?}L9`C}2$fe_2(g)y+tU}Nz}|10iV-;^{cK(Z|j z_)a!;OUXnm^zF0)@OkJx-hjKUUlDz zd!}$iaL6B5chc_b#T^E20S>N~NTlR9+Q4wg@*n`Xy}ma|Vw2o}Ba9ZsI? z$Y(ww8aV36$A7PdDbahKnXGS2iLLDUJpZt}`4ElXo084(`k@<7m78 zkQV;uwB>Emdz0h6K?A?-br@%aN$n1O3YB&DR3LZjj$;-&leZ#2^*$r*ACUrw9O^&$ z^?HJOzf|kEb{oYgH_jip}6OY};y8$;+8e)o6?e!zjuk_6JWUJLw@W&r36a$Amn_sSc za~ij;oWllN%W~b3zpP#MQ2sLDGgtf+m!l$WP7P|+i0>VG$5(mhEYyc_y6LP)n&mam zJf|orDFF%WwGm6n$~SHVWX8*k`lHvE7=98D3cCe0I3+;I7t^MPSAHQ(I=4#ks?_8fE|l&%H; z4W%!>PI?i#=;+{b+p3fNROfTj8zzcJ6EM!_PL`K~Rfv3wIhm#*aE5-^+RxCj&C$F| zQ$2}MeQR{z4epz%st^KtVjA8Y?F~r}7_NB&$w1D^?rRa&I{+jFKdEMc{E)fu{uLqqzgj3Yg#-)(PJ(u=-BtwZr>U1K{)c)U)3}BDAk2x z0{x=mVlp))zJv4FARz9nKk4-SKBp#Ud=bZdWhg1)3AVw-2j$3>cc%yG7=1^XqC)wg z!CQ>8Andlde}j@ZR#iMuPohMuM{A14MfSDXOUvT9Yn||yzft!~SiiOJxjjz;SCi*Y z3vT+L%9abQL~s4%2FLe7+q@_5`)h1OKR+0LlS=~R`BK_gX9(m%g-gxsA5(fLpskDS zfc>%{f7)B;-I@pE*Pf?T59>CMO#Gf4 zEl<{a&54Q_R^D8X5p+BXP0I_ud#bt7LROBJ7->^ZL?ZiMxZ37)Ybk-3wV0~&-1-18 z5?6pm6R4d!(%9qv2q}|Lazu91r@pRRXkZH_E@$CbY}%5~bYGqg;7m~{-iT>!aV*V| z{TGz-qnR8RwTx7^-`Uhr`FU%W$>|{|8LqOhC|CX@ntjwp$K$Zm$4J|%4muE_L>qE$ zEd3A%EQ4-UF7eQ6MVx*n6@M6!SlX+u?ssZ8naO2js2(_i{QF2?Mi`}J{0 zJQB3?ZW$p`3-)=Ux5s`K4&R#bA&EUk{=9Zer`oT3zp@0}0lS|CW(Kco`TBg%tBrzW z!>q3xPv)wrfRL0OxG9I)lN|rWF`kd3H)$;!D(iV6Z+z=?|9-Wvxx8NqLA}lM%zT|2 ztb9Qe1$;H}2g11bRRgb@pDThigiurj^asSiWS~vuciqEkU$+bx*4Ey^Tlk$9FK7zy z9G^OrXe*#?km1GuJ_FXDq@QEeH#5xToO`{-#@oDB2qh04|q;v@*7Jzreefm zOa91eW0y|N9DJ8oi#FtZUTtejM}&d^(xd#hK9uUNm+{>^zHNqo#^Lv6ckuk|y-B_I z3gNQl{P(XTlyCuVcMet7Cpk~sGN=`;^~y5ri%VU_1vw){tfeChWBsw7Fy0TfmlE?b z2h$$Lz63+MuJk4hcz=s+{SKK>?e9$1*52|DEz$j@(J$0A1c2=%`s?ZYRH_yh#3j-Q zh;tr_G-%MwLf`CEo->@?_L$YM@E6l0&w5y2$ssO9 zOsk6by%2tEN~QTPPtK4~5U+4r;lv28eXThwB2m)I{zV_$@8NI?&_j3W`@3B7Nv*M@ zbnF46zyRm!_m>nB3rgk@nffqyG*0s*B`O!B&eDyK8_YAgOs2v|pQ&0HHM6Ln8ez4< zP0xQL!ZlZ`ju!jn6>s^Vwqtnkm1*q901G#_`b(%s<{#`Pw3jRRSZ?Pvai+Q-Znx5% z%?=E*FHF|UzPF{1rEG^5wqTuUTUaaT`)-`1HM87%*`gj)X<*>2#5cT&tjpV~>#j3d zTkGZxB5hYvDeltQuFEUKiyM<5E&UI8o;L4NP5 z4H6~iP4TPWir}u2X$l|XyUExV8z&_G`zsKPwp$E6<4*zS`{ii(5RM7{`ni@Nn#U{>NRWtl#gZ62-{)D67IoY_2>ZZBBlVKjxcH_1&Fv z^V?s_R9xP+2XquSAm_Yv8P5tU^%xV0`W4f z5-MVdw5P4JouvL~Y3T5Bt@zRq1H!sSe(l715Q7{p$b9e<3^k~2VM z*Zu;1;MpTn(D^{U^VSMsue6BOd3$7%>R8Rw0Ip<)X<&mYZi4sb#{fO`AH~=v2DNZa zMc3s&bP*52YK|5wD*D%aKtZqa95b;9UhAd1=e_T7=bfdp;-bFJ`wH{1->=(IJ=9a0 zow{=Th~f(B+6%lpzc@YF)c4b)UoefwI*~W*aur4iUOrsz!q-B64BhWElQ6*922n2s zkhnFUeh9j&9~zL`G5`lldZCG0yes@s(3RXIPju0Pk?FZi`kZvD05 zxor{^C-ck3ZJ`v(dqqxVC*D?=ELZEL-7SY%d`aDlWCE_Bd+hwjp4-ex42`Jfm+AGb zZb7PJba9GeLh5-!EG+{iy!D$=eXt`})}5?XQ=nU|+fXYh)-$32tM3T$Kj&oDj%w>x zR$AnJ+ozNb@xH>xxZRVLbo@%ob^>k^FI;T9P$Z_M-(Vf)-P8PMlZ!9pcx%)v=vj)K z@1mC#fp&6fJ0En5|5GPLrtJDD`fa-T-SXRP?%bF>Zt>!r^qt0g{rcJ?f~ERSE(CRR zNz*zY4BG2h<%~*sI(~gBbqAmOD=+?{m;Ll%RgeMZkIxO_BG(r0($6c2>)%VwC4-_e z&d5is5q4rX|3qZM_NQ0dd6>i3ObdK1;03R|E^4nxoeNVLmA2STT>a5hPMl)JS(ux{ zn2etlx4$Umb?ykP0CA>=>XeXx zzKHIKTrJ|t*!Wlyjc5JB1Wyc3xRgl5r|+grnh;*@M7E+&fgIL}l;O#&-BtF>7GX~x z>^h&VTDHo!OzKaS;;DB^%PoqyJ%U+~s8ztr?bYQD8m>GQNd?0)^4i*Q(tCo|UFzh~ z0Sg|RPv|Avqf1@DuwPMwavm6mjQz5Ff|=>D{Qb&X^>tjY$>@x$@v*+2tON4ufU)Ah zz9N3%_NB8^yI$Bj7diF(yrr0QH979}r5-DBe@5%B0F=N(6!)Fc(Q2Qw3-o!Dm(@M| z{I%zKwa-aHdFuB5!)|ihiW4Dza!GT_(zaSLIq&nI>5cn7nrgjbq^3jyKqtK!7F&tey5}hVGv%MnS8; zp)Y~6NKyNnzsk^)z9$Dc3?Gk09*kF=@8#?>8P^>o?bCI|F>0J$M#nfFg*O7eq67<8vr;xJu|Dt&7oR8b$B6UbG_bFLP|; zZ2DIc7foxkeSdTzBaIYZSX-LHiYgu~j^ft4YIe`^svqw&ec#N5+_^MG z9b5fXmn&tfjjL%hAg1)K{Xa(`4UoPm1mqV=D*3HGW90~;F~ORwQKa`o(~=kB|Bg&; z#v?bsT`Dv6=4CjG*|P0}@*AQ3VHk9aFO8GW>Vchp%N@23^|msf4)sL>#vJ@ve4^8< zj=EW6PqmJ9f*;g10)=C2Y%EIReSXB-!xyCjc)5}KyiZY69>zwjHJ=aIqAV_$2j4@a z*Q>dmv}uQ;=k1#tGx~}(wbNAvne$W{?4Z~(kC*xOBh1qqeZSdbPhoo?V1+zhsUb&* zt2IELfd^UPMV?K&cDfbytq7;!Wxm*51_QSly~}kWE~hV^le@V-=5Bs6>vxbHdeA<> zzF)sZP`l`V^JLwTCc#8lUKm3$fjdf!tcL|9lS>Qp5)ex-mn3k$dHEaSIkfjP0PSwH zwXbiN=mcPC-5y@5zzYv84FUBiyAM~}mh0^I?pd4l73fVRy)bH5otgH!Ld#8pjGOkl z-;n+UGMR%lr8WbMbCn+*hpf}VV5XO<@wjYYc{r2SI>8CVXzrE&ilwp|xAmAW`F_s( zS#%0@hl6&UCVuOLAek|Cg}2z75T=lOx&qiKrBTN(ybJKg5Qa%KDf;OY8T}*G#t#gZ zyu6CrR3A?&&-Q+)itFN89mmR2`x7m*t$1|>ZA*^v31@k+Mi0TX0_(?ivWzVsywA(k z1%TqM=qlg|0zB!X;vWQfxI4EE6nK<3M_d~8-#0g31JtmJAp4%0uEGaL7rRdN#a+yq zgiYsh-Q@0BPVJEEF+rj>B`Wf11KR8)*2$XOnlC-U|M_Kq5;Gynf2`H5k%7wpcso$6 znJOj)WeQ%Oy$Td#WxqIYnqZ*KT=Ox$ck4lpHS#!U!8) z_|saiv(1iDu<&C8R|~Bx0AdjdhN*C9t3V({9gnSq!?W5CQGL1QcTZ${4&R}`HCVmU z&ZUy24JLZO9baA8V+C{SJlw3Sc3mhQ1Cs-3vRtvvQdJZ&;B=oo-Mv5SwA`02m>te} zxYZzEJ>l*hS2M773X}jUQj~v@tl?N=kDX`dYx7OP%=VLh{$B5|3E4u0;nvfQ&J@VI zSV{<7g$mKhjX}RLW|C*^xo$3%$jzE3opPv`gkbKivDl(MbA$~4V^A1)^YR@dDHSt6 zv?VL0UAuZ4o2D&JlK~RQWnJx;qvsbpiUa>7aqIyr1uO0$D}`R{BtRfz#Q-nQMUIe_ zeV^6re8oHlkoM%+P63i@CI!81z$j!(l6zRxRC07;xpi_4Lo&`X>)=#7Ykejc*Vpga zs7ca|1de(VjG9f7Y??6*r`M3=2<<7BtE@j$&c;rLgR1>r9c@lL>sjT@qy{=0?orzR zJ$Bt$Bi`if80J3RQEFh~wSZ?A^*ce4(cNPdA|=y+IeyB$eeLr{PoIq2awTPAY04${ zL3b;oyK<}$tqrmhy~>^YHs$3lD7WqXJbNAk=xvtkmkS+Pr*0AR1j8R(O{C_Kf4!>4 zzmGXTcq^twb`ii{zW?tX@Y;}zPd(aG!=25>aT=a~jNt4s%YR-tMphI283q&>+yt<_G`hQCGxD?Lwi@g zGXqfx3EygYBbTk8S&xUU!oY)G^+i|J`y=?)=H;?s0X^}{LcLXfYn-XGLdORSvm4vN z%3y-@qEgYgW^&Jc?M$qN1!Vv;t&ZxC+1tn|&95f77@KH|tq@8GZ`6OSt*C7i*QM0^ z;j80XFeGZ|4es1W{T}Rla>f0XMsQ`29R7+~EKQ-L@eq$M*w+-d8&SLtj_%Lh&)z;h zu0MB3@mW32nNSADXHJ!g`Fo5L32)P7t@u(7h5~r_C)_s(rv*mU(#He6lV@L%wX=NOIAIM z*!8Ro%O9@Idm6_`nl zv6W`W3#rJWjpI=M5EHK#aW18uq2R-!U;MB45>pU=%!5IW)MW{LZ~l->vk;S}G) zj=kf@24pWoDN180lKgZ(!z9Tr z&oq>*Dfp`b=ewB!`+wW*j7pb*-|COD!q{{@hPkQ+SK8ke%760wd_JR8mg$h-g5m1Q0CA6Tb@jn^HRt5vNKAyoLmy{9B8$n!o8cK4V$yJEkBin+ z-@ArCg?Ad9m);x=sOG9A3O}~VT#uD{2OF8$W^#HR*^tn_5_ud^#Z=)|*XB?61J}gT$s3FJr9!Q}+gQ0Y4`SG{ z*hW$=)}TUvDY6lLT}!MCmdOE?!6has6OwtXIwAMkak;fu(RHd+1WtKzE-rtoY4W#* zc^U3I6G6=RIbJ#@0eN1$#} zPDZx%%XO&HJ*YVg4q_-c$FcFM79kTNC8p~)>ORBg}?I#Z#|Yzm4Wkqq%MYl=G`{5I`(eh|4P&MGQv*dEui<|=2Pmj^aEp{M}}Y(X7d z^FIAdVRcv@gAb*xahlnjdPoSH>BbZ9{HJvMZ1u>7=OQpN=F7*wRydkH>#X-U$2)jC zuAChnU!$XXN?|h3y=}G`{5}h!HKweP+8X%`hzaZ7l0|1h%&6ZDTdP(P$CH(lePD%9 z60^zOh?2l#ewPVn{G04FK8e5wD6_nE46%|B#lD-n8XJRA8>{>AXh``(#T8X&th@+m zdTEH*TGFNLIM=?n8>4Zm)~;SR%}_>JQSP2LAr;hb#J=d9LEmVY6u!v%=2`pW?lM7K zigg&Q1qoXz9BND~%#B?jea*@TDL9th_gzW{9#JJ(VFMaT7V--32Tc@*O3rczB1G{= z&kWC33d)Cm5(UofOzisr1Hb2BzA>5k*{WSmeXowN(T~K@j|DbLPY6Ocs0Q69AH+-; z^sec>Wy&fQf&$}RD1_CwlsFMuc+);Bz*L?Fg1`)pi;9TxlZ28$QP>{G&Ei)4hNH9$<~t zz-T5tgD+b7$%yis7S9Ey7Pi9N=JE10%b>C%``+c%-vqoFlgjVG9^<%688`qsQggF>i%kPY>C3wgg zZeO}ivvy^Amk!z(%m`O?IZ$n2qZPSe-U}{UQD1kYa$GEQEeNv`DSNkwNc)?vH&c!0yXiTeFbq3YwBagGe%lojU=Wh@9mNd%yOBH8~7g7B&~| zUrJN>B6`&VIYP(FA4H~voVvm(yO5k{4-^$Tcu8Om(Yuot9f(Ils=Q9u%aDD8tM27Z zymh-uhEjPGP~LhCfrbjw$7C(mB>Kv%Gy#z2n!Ei`EUfEI4Mt`=t#q1avx~of+AZ)O z24kv$LmFVX{(Bo=MABK-qziHypN_ydC(o9fJzVU+!P5)@PCzE&j2Kf!vHo}-X;0f( zOVe1eWp}e2tE5Hg$Lte3w1q2FR++Jr5KIhKY%N$0*UNuYs{qc@I=Qr)#qKM=@Us_I zFU6%wEO;f@$@PEvv)C!(CDz~5bGj7^sk5l7cUAxwiSkb>tQ4U21=aSeTRiE_n61Ss zUUaU-%iydNjrgRbAZ^P06=KI{s|))1_1}(hdpojoCpH7e*@UBs$gpxo@ykH@A;&yX z;L4Hkwe@3wKN$*}M;1!q1&BCt@tz7HnN#&TSf7y4p%uRC-b>(=&%=@{iRgf00(e-D z3}F$B8&lYPBL@zJ9~-4SUi)>f&!3%pe}P^=hw3zciKR#y!bC3X`BMr%=bfIe_sA>|i{0)S$bp zgzU2ZIRBZ#ijuka*jAc$aZOZdtOoldF4I%ldZLwVC1TRciQi+SC<`6}A%4zNA>o*5 z595D+-M~5fC6Pw4Z+xusGg7R_F{!^fmo#t{B)dGIL3KmNWaRoiE+WXQ6Atc6>i(r# z9YK$XC~2E!e_p5ENNsEw$H(<-eD}55@0$uXGb6Q4(*#HV0&(FY1%4NP%V=~dN!@Xf0~w>xv=ZoAjI|6*bdhTXToeMF)2ZJBK$Y89(3uL;rwdo1h_bLh%kO zPz9=}hyI=UC0~kE3mFbmOFzrJRq$SXtX|s!eZ5y#QWz#pyG{dte%H0>D>amC}djaz=3* z#ziAI*~^stEV@{IFytpQMH%A5kO^Rp?T&sQ5Hv>RcjvQPoQg(|0c?U^CHZS8Lq2@R zVKPP55#P}Geq*BMu#|m&p~tA!i?hUnbZr*9eOI?x^U<{phzXiy7lv$m#9U zeYlkQWB*}|k447s0eWLe>nhHzdUvjZman4U5rPirUC{kwvwLi zgLvJ^(MQ6;?sJ>WFrnHQ@39#rr|qNq6kMu(oV`YMtqFP|yqKxO*}5|=0TSCa5N#@Qr0I zJ5&i>x|?}~-9n*f;VMXa6unN60F*tZW9fCynp&iVyg>r}9@Gt-wBCoXfRBo;K1MUf zQl0WfTGc+)#vgHZlJbwsl59)aQe;(toTGt6f&md5AV$$@MEgX~&QwpX^1{QXP#Mz6 zf)sE2H()%I0a@uV(~`jBWh_(dHCuYYwvM){U%UuU{tLjbh9@TzJ*LMa3jEfZk^s-9 zDEr={cZ!e^VCmr~f=!0UUx#S^qeaYTd(e?U73!qkiOu*D92gparqt=Nez@$as`7H) zR-!E<`a8`HbZ2?*SL-oVJfX}}Rb}kAw9KCm$y+I<2@Z+*q5w;|YLs&GGT6ItHN~1E zh58=^6IrQzZxir*)wma<@2XeBYetP)vl?>%ne(%`RO17H&MaxaQX^`*CWP-JFS#@` z7sLfIW4hZ)nj1*yENn^Rl0l!-e+(jBO=M|GDLU&6bq%ZYHSayJTcD*j>3M|$Cq>@= zzoQa4UajkwR;+f|?N04YQE*#1J7u<)H*}viQK;H)UJ8cLEie~85okitsLc}@L(G81 z9+nb8Wt~NoL)2+|jkpglANLWO4}zyN)>g7J+h_9MC8+T5kZ4wJ($>8MU}_rnLErO1 zXm>QLS?P+_cA`<94p@Nl>#`lDC>qhyQ~J1Aat3qjWg`lSgm93hBNrZJu0u3PwJ<@q ziS*M&Q=8VKeC1qc{|xec%q+MXpXhGp4T%e9e6&sw1Cx{7ynhGqfZ+LPxOB94+#7K| z6N=0C+gs+Rqm|R$el$c()XOvFp)_w=K{AtY%;za@WvWVCzGhY9Cd^oL%ejd;edq0-pVq<@q8lgmT|#tK_rJyH4Wgv}on*OsjVJ=UvNz}o)LFe`;k zZdoZCK|?^7T?!3rT-jUgk^>uy=t=sg3Uf)>kqf19nX`54p8+Dx<&pe0vP;CSX2Z2Z z9mPiu)p$g9Z;d6FOq%FjKDr)Blm4AWm=d$QfS6by^CDpCUz^+R+tu&vzU8#K1-XDC zUQz#-^f(BFSBKcVge+z-wz0n*nkwf#y}V{KmLQmU84@B(f0M4&DbmHzksEc1_SU{9 z7q?8`Wx9AAFzZnKfYW8Op5wZA!KAOM($3~ua22yQe5!J02^*%c$%?AtAWu_L;WOeS z|E#2D~8c3NmP3*5ti3u)U|Lb)ORI}eLc+uVQ*ED~p0#72r2uapE z)^gHiW?T(7M5(#RVbs9QB`1yYI-QKYnDG^)gv`5Np?s6KydpPR{+TGL&&g>Lb`(k4rmncsY;{^wSEdO3$o#c_;iiu|VjmroZsYulHM zzw(PVrmeB4Y3coSc3(SXeD%g8?b+sXZDpL_&Q@3^ZbQ?oKd12*rRJS$e32_lw+1n# z_AKy;vbxvy%wdx4G7GPR9)YG`U~5n2>{+J-f=sy(erL38YS7&|X(eVoL zf2smG)`@)po&P;pPabF^2cN53wBeLB+1Omsr1`->yy zxe6)$(Uy>0|FD)Q>c)iayNnRc^r1bOl=Q9)1@eB3Crt=edJ{@xhK!G-SMeX7OM$E; z6jjDz-hB~QC^}lp&hwKmZz@Y&x$p|6of%|%RzesrlaeiPW{t z3+^`!JK(ZTc1qQ;wR?zvu(Mfud3a$L!~(s^9Y}OTOhcy zlC-P0_jbp@(a)7$2X?>7GrGvL1N(`cOa`1AYEF_wNjOJn?I=x`+nDN(E}Z=45hWyy z!XRWYl};n1cXFhuO#)2{ftnKK$&(`-?N@N`H|3QF)pgg=3ki-5pP`-b>+kg|YaRV) z;-wHRFljQ39#Ye+W>+L+hxm4oPdpoIg^Q!@Oc)+UIGr6X$rkyn;CK-@muxPkbwHmH zK(~<7Y(U3ke6Tp57gsQu>a~>Zw%wei&HA)}(oEDNz<$gUzez z*G{xwj$?}Sxwzr{ANm07PfXE4e4}s^dNo#j26*=?*>W}P)Re7cT$G;0d8xz{diG#B zf<5fA(4D*|QPHMaz=s88YDy8Kku~I=KunS6;4q|H`HYytpSaw=l(I1-LfVY_AARgC zpG`@iyOXm>Z$KqL-xOkEv?-Ha)Z3^0p_&aA)cLd5Z&5#d813|G<7bWM( zYHHha(V>9a173C{|Am~F^V@43{i#OPdqJV%_e94(`TAE@Uh9gvp__YyrIUys)&>`H zYkCwRhrd-@9 zr&Y0RBeG(V^l{8Kxs_Mx5ZYW|N@#fKVE|B&TN(L@k^r>yd8-qEe&!bz9*I0N1shsA zaoI?JEx(?}TmHtB2aDg z5=~ZKV;5-;E8Lo#1z|+`n30?Th2Sr=`^;I*-|~e&^hgA*h&=oFE$R%kk#zUVebPY4 z1>Brg#06Mwo+MM9?O2L%I-#4thulL=$hw_RpByH+Wt-Fx+H1eb?tc+8A)um3KL9lR2m>DfRWqv)PK9{Ui5kV@ zneJ*jlL}dr(~+=amv|AgZr?b;jN zjFy`a7WOzx>+3JCSWqHWlC4EZWR< zAPgT&!=UZ$74d6fr6xmPM@nx znC2RmDJi?2V=Y+PT~@~>{pER}%;D<^?t6W+e^#t$F_SjOV9XvI<9~KY^u1b)eNLWh$pxWYE8YVR)|Wt8H-t9f<#Q|Q_6ZUAi5ymng;mMx(Y zeb_5%>gvm}W5G#Psm#)CS28ZyI6>-2f^=yNpk|jeAVcAmBdt+QVtbN_FJGdrpVZP5 z^J!^m1PDB4&z&QO>AlYI-~~PJd)W66L61xQRYI-2t^Vdr^U6=e6ap)~?!K&o;NZL` zTUS?w0DYdp705t?luntfS(2%rSlifD3RGfIM^K|2(`2w*aV8Jh_hG;ZI&n{}zJP8M z%4hpKw;?Qe$h6=p?bTBsR^Elhg0WV|{^qt#dcM|>LaXPCdpwV;O-7|j-nWzk@vu6D!r`{X|OwVt4_P%La2nVr?9Q76I(I zv7;$^r^NpacMoUIO%gw-HH5xjnimjBoFCm*N!#6~MaqY-H;IDan2$lG9@a~ce_(>} z>*VhJm^JPa7FtKOYa&nNnxfxYm+=8?rGpOpg9sMHKHkC-6gtP+ztXO*p7iKbl{e0d zH`iX()%i=#g)^`tJ;HO0-KwE=<9NXGm7ABUYqnLi^pJpqd7jawG*gVSAfRRoowtSn zjXqp&uXtwXah7X!suyQ+PgO-5d!Dt0ujPFVU0hr_Lfl`4gyHM?JP06ThpOsEigQvA&cK5O(;H8A{W+>uu4pD9pC zluZ}gPlOF+VKJo4WV9ub{i$=@jTjPI(onq$ogf3!Mas|G{sNg0XsFF>RP5x zt2A$3Rg?7UXn9ey=Fn`~n5}f|09Zn3m;_n(;AcHPx#>C@o}@j>;bm)xAxZc8j1jgtIPId)tyfsRHJ;CPsgGY zo`su@d$1CdaLMTbX!ja2HauQR`IrM^AMH-(=G#Qnhou zTE`rPLiPK{#tOnr*h;H?Rsj7|peXa_x31sl4v@AwLjZMsvDa@cItq++c*^r|r-*UF zXlGVn3vyjL?*|p`L}}AyGAQqND*HZsE){dy{fgRh65Ma|d5njjzPn!4XKr zn7^`0$)>|+nGB)JM5dA~V0wN^E3!*THNpFy4qDIlJEbY{t_(E~X+Tr}yoK^|D1Yl@ zJbbOb(9e0dJDc{Qv8@;4;z+qE{;Q(e5^JO*wvv9ih>n@;_Dt4DgB0cEqPEc`jLM%) zpJBB&Lp+)CFGWBwju39s3TQV=?xjL%L?Tcc<~Ql(Hxj=g)5DY$4?E-c*Bl%sUsMin z8wf|z``xG2Zr)hwV5}!p>vUR-)=$v#e%8A$Zb`}e${t*S$)y1F@6l&lhaw(pZ=jJE zTfVez*vWYx&;!;I>>vxLW*22Q1J=jmhoByrFP9d)7Dvr1Vessv)((#C_!2+@p$`mT zC)MTDQpnxnHl3oR5+IrPfvP!QaVE|@^;l(P|2aL*6GvF*@Nn5zTA!KdZ;+0lNgpF{ zT_k3e#J}UY05Dl=f@RGF4F~VIadye=w+AJND#WK8&U9&$a`tpJanbRSn&*?p3Stp& zzfXU?LFGu4*`!z0h@Oi8KogBs?Tw=1-KLS^%dW;;+yb<`xnDT;j|dUO6noc!Kp8mQ zq=1Twm}2Yj6SWGTu!u+eCq1Q7{k!Q}z%bwu7m=e8vwrJ>+U*DucHHMq*VFNEuxv9{ z<>a8$^VIqNl_^ux2$HMg<{nQj_mMfq2SYi#4yLMz^P!IR{h|^CY9@r(Kt%gEg9CWU z&*o?Uv;}8JtbXZ&UIasP)eB=30B62&<2V4;5<3eVB04>%+b#T)DJeNj8}i<75}GM* zj1b?1A@Az0`~M454GohGrbrT!otk>|c-|jJ$D1dahI(1Jd^*tqfZP4{$-{teNvDY~ zjw;2Daiam~+zkhTNF`7$9^=;V52<*6T3}`x)(%c|G#Yl~gkrp-?{WMX0*`pHI0Gdd zME{RiCipt?>>XBRFWn=%oR}9OMy94VOoeIEC+dduunLu+l9dlF)UC;ll*8?ItFZ?t zMb{0smRYUo?WNPl1sEDe(Fhtk<6BZf0y}?e3ign{s$lYAM@7G>)MN9q-Nr$K)EaO6 z#{?HQ=Ga1A((e#ro+(m)9qJKlUBM|wqBx4SuQD#!I9SHe$C$#8#1vumKsEaheDyIH z5;p48OjBxHj>}e3Sr|%v?EyMj@Km_K17ub-3Ug8SgH15^?s+yVpgYmH1;zl9QLPbR z>>x-?(LO0Kc(!*x(e{cud0ao(zE0aBOk#x^QB$_1o((9<_&KrFFtzymzz(*rSyyNG z)qSgf>x})S8|dmloc&~8?)LYAMtgrTtY>BOkKNmVvmLgpkg9En&Ya{OyNG(fS~#Oh zm5XoU-?w};$P_SC$b?`j3~XQ{`@zDyvO6`d^V=5t@%^Tlrqoklto`}m=n||0BL*^y zh8`G908Cl5epG|fQ1&>!9IizKd4KRum<7rV51(q2p_WmbSv(7hhYL>(*V`?2`hoXA`Lc>%*6nD`H154VEmu`bK>qfVY*Bh+h?E5zyM)A%@h0)jO-ml?{PoLg z*%q(ztj?3h-Gn=zWGdO>FOP*BU&~ly{C>NkpSuEa&nxfBMQ;RsCw*wI}?hm@!H(; zX*zY_P?XzS28HLsv(vw?1NsI1-|++P&w>+4MR+&noL(b8UC*tfpu;$Yx)P+XohREq zvwW8TBjJ7|?RKTyb~rm3ea6v1;7*~83$#ZD-qJAl0{O;X_oZX2{-wc9rbja2Ygg6Z zG(!z9JWw;0f3^hNd{k~v$*aZ1O-0GO>&q43B7G9WSUB|0rZ7|7d=bJVB(n0UgC9TH zW!+bP4H*M>3*Y)nLajjikgmy6G1zYxV>#{0+&Nd69F1>`qRmD5mlh(X3Rz|p_+UGL z{(r~AaGQDm;cjiEU&Th)!?jKm!@Zyj;*@@X=)V-Cj;oc%M@-fzo;P-nx|!5Smh3j} z4Oeaj2j7^FW75jIfe^u(b4(Gl5gX2%R-ysx64zfCjt(btw@_eflV)OqL`iicxlroA875$Taa$Xo0h zf>=uaTna$990vy(PjlI3%>=i0$0cPEza`T7d(u#lg{Au<0c&Pt5s)K8AzmIU;vS306Uf0l?nMEuwMsQgpk%IHfFa-*+4lK^pCjMe8#U$2YB?P;QjUxKfZm}2cB zmh(G2EHNArdeCf3eI4EF#!Z4EWnykp3fy=$T}6rzc~+YT4wZam@D$!cm0?y)OfMv~ z^b?{>@vG1l#t3QOym!SqjF_@RHNZ+_<*1*9J@)zyM}KxwC@INP@=UEMq9Yf0lSjzb zG%;T&WgI~hQ&Z~pe7C!OE1jywW$vJ3vbQZ4_ukg%d;m$9 zdn$?0i@dHVv3|R76J=w>m2Ki6kGEUt3aeLF=m;BZzApP(XN~E#3Ws7p-6Xs2jBO5 z{_O1Ed7g9EbH{ZBjYHH#fX3_@VBD^xlm``L8zjXSOhYNq0F-r?wPs5`>X@9ANT8=g zv~AL}JPwplm}9SP1h)tn5;nHZh~3uW zsw(X(I=)9B7r4uY#*imIB|dfW08jkRX=%oGD9&! zAD7xipx`BuX%d?qQu>IO%%FO`&$M_@ zsSmhGuVlWT~aU}^AyCf+^qQ~Tr(e2GyGM_A-=v_4gtj+ zy|ljXY(jCi|LbY|#mBg?KWpZhGY{(qQ{rA)uaz3lmV0(zo;dzonsdBNy@60th+1tP zJ+P#*6O%@v||jV22?OvAWIOZI+^o*$Q(vuzm@j{v3)mgzEaT5L4f%1QJ_hW%Y6aFas03XwsJM|1WfZgAbsio zEDGpujbU%Q2a{Y`cuK3Fyf2HM%aVa{&x2|W4y>qX$k z#h*noO8PVr95@_(L-bVRK&6hv1 z`dph#h?#+Nid?sEdq3W3tH4VuPA-nl52$sPGqBN;YG9vPYGFvjwu$|D6LzOHo^kp`ig9371 zrx&5_ht}y^3VJ$~L;#g!N|%0b3cFRhWOJP!>@od+SGSXetqwL6-;tIheYICNd+ zn#R1J4=O5l9|?o_sG1hPgzV*zj=w1vgd;HTBCqLw8N=lkTeLKJi^`+KO3@{_;0ccofh``W9n zn51jJp5ETbWAzG}CPqQgu(s9>mK;NYoEC{&r#p+f`|VxF$M_Yz_zFNVcz&alHlbaF z9G=iV5kwD)xkF?Uar2qaxp7%HxU!tEBnJQhozIteIEf5ZD4S~S?g(3kRPf&gh#jA) zGangU_(%_1#RYGkZpjfBku!hk$Osb83UsnhPaRGW(TC?qEp!p1En zAm(UA0^{rL$eTAHCznF<)gxJdcU6vbkTt1C3MarR%~*I=D({mYn##yXPqmIv{MBpt zzvXHe+r4I4CN06VKBzT4pUvigP3$PfhX6|J>cd z@XX!Pu0{&Pco>3!D5a2w=T zpprqZjHS9R3ZwXb$gHs@TE!3?))?#-H3iD8q0?*Aef*VY)>@8G$}ru}IA1{t=ru%P zJa8tP>jN9O(vLbv*%U*|^-m}J`?bFR!$mG5(hX|zyJx|UJFZSsP%^SBuvR2yORFw+ z+^c)>LfHkbPAVc!24y@Cm+Ou^5&8D2%fS3%ur>O*G_Q62lmkSg0hAALR<%kf0HVIz={r3b=oCKm z2Ou(`lq@P8T5yL>5J6};F=hB@>xmQh)zu!D8$iakhJeXMbVxWVXpo?ZRGt<0RpAv; z?S4!9M;3=Jm+{H~;2wZWFdzS#ppq^~w&z4)Ip!*MQo8Y9rl}WF|7_ph)!KT+@$I9R zC+Woa2lzBTy!8rR)O>rvj%GR;S!arj#}6`Tf{vJ8v7P0VZz8ifSwARver z9T=cS3M&IUbld~M$*{D@>LfIpAStZ_a(@P$9j%#dzygnRV8MR5@jUpS z0-DL{pFRXWM!neAuiKxzL22UCX17K7Guk551J-rtE^j>adS!IY^V)=kvq@{fWpdXK zJHn!YULndyUNQjKyXk(BkA9ujUBC5#fQg&lb1~%u8_qD>Ph1g<1lMX8Y^+a{z101z z&=LZf-T8Q4^+%1pYPSgUPl1WwQ0At~-Xw0OD3qWhfDb|V3Nw`=HiHv_$ zlM|_@hqRn`%i{^o))7%;VCN}FbRehaQUk&y!IiIFgbn;nYLP-4v*NB83)}f`OWc%Z zcBfGGzus)^zbG7NUtFM$A=C5UTj*SDICU@DJ;c)wJ{S_rX{xIVYbYYsjCq|;t~r%o zDoFkhqJcd-n~c{zXj37i!>!$lzy#FEXL}7K6U4z4riUO$Uk|EboHjt(x;W{$M1b-n z%FL7}S_%46A1s0|rK&(-U_z@Cz$ELIN+20#zpmM5)O{EuB#FZ{?%d0cWPs6V7|iTA zC7HJs28yo*@tQ%AT=4?$0?Bt2Q*_4IlMt(0G8hKR zyWF3PMgYZZi#w%LF)ttsSy}KDw3!z;0}B2(=!~+a!a207T{0pNH z8W};)!NxOp3z0xOzmm;wpA@zi3r-=}kLRI(^)87*@ju0bH_14}?A~22prlJ56c*4+ zlsDna$uTc&J#xWNRg+nz5U}bI+FD{N6wuOf3soQ@ynR^T#7kcRwNs^O`fy_ zOX%29o0-Q%O+e%ez+Xz9-aW$|oulP0`0{nx7xEe^&#NVvj~q;uZ=LzK>n#>r^^ae^ zac!1lks8adE(+BDN5fXYi3nt52!sO`$2C84gToH$vZe+G4yzXB=hi2WwrKF2sw;5h}B8jZ3S%%NrmQUQF{JOZ&>g z`va+b#nwO|NlE|JrWn6+Ur<25%76q&aio;#5w%9P*Ubw+H#9`}^Ry7~15NN?=SoSo zy9+NGT#`qcXDGPiJuG%&mH*t$lK0imwyjD!&2WnQs+u>)&C=ylxMt_mtqf7$fE_26E{yO`c#J2B>;5Ai5)M^w_l~kFl<;aEP~*Kp?v(i6_^QIf&er^VYDb8B%@D2E ziCevEA!UaQ>y5wL{s8`qe*jz=zue!)F#2b7M>Ug^qt2iJ-`jaXY|*z7+13$DsuL-XKNkYD& z{xqPNVPqiY>9B#2a1t9$GC~;L1P}x>P-8n9;`tH{KBXoJ#NN$Sfznwqm-nkE?D?7= zx?BEA%ZP}@#t`y<0ULf@Si+{nrFP>;btV>W*(+GBn#GwB@pShpJQ5RH-dCa zixJ6HXzS4h6K5pV;MaE!)&j{@>u)=4&0jb#6)`()H zm=w8G92(*Otij|tNmj0=$k`>X$!kU8+aL1wO|Lbq7)U8aO1A5*_(b*ed&6bj<}ck@ zN9t0pi>wQmV$sQWvbE6M$vh+DLOpr{xD){mcC7y?7T)MetD%wqMxUeQK`JR~#8#{w zp0~N~exIh)p@}_@9hEm_{5p>SQM4Ko=Hs>R-!xyJovv-%CT@FNi|Qy_XMnD?qp;_G z#!15^uOv03yg&O$I{MVrjJN?A*`|uX*@~Kx*As2dEl^{onRhkM<%W%Z4`06eS+P04 z9uk(f38zl$;g(b;D&M^O9(xOj^8L)vGC7@7wc$w!dxt>TYbn}ab?Po9Ly3qf1wjk~ z&0Y$ysMpteD^-I)=$j-JG`fP%xt+4|-?3a>yPSbI9?B!#PAGM8hE=WW^PiQKC0qP(TMs_}s>yiC*mjMD;i2H)vCmPb?) zAHV(`L3oN4HBp2SzNIbHm~V+R5Ry#V89^$QsEQ57|TEDSu{?dNp zm2?_bbwkTatDY`ZaPr34jXs<8@+XjnmSJG#Ujv=wGO;!%sbR2bf2r-t;Kff+8#ve* zoM*9gbdd8{@+~lA#IDkBeN*fDKi@qlf|s>d_8mh3lh?f8hZ!*q$_tB(gOgH`vUKPV zZw=>D0E~!vuQ+>ego;slZ_UF(17b#8wwAgI&c1XN6mTc1owKsWLjW97Oy?xzYWHp0 zg9;0ccg_l)x8Ho~N+2alx#v>~!4Qsu@PR2`93atat9| z%5#CKbY)Aka;;WL^ZwHfF~(TIRTffexHJvtv?PzzPwk{C;U_-nc|Q>iHs)EUa(jod z7U%TduZ9AvNv-B~aj!eQRtImtcfC&-q(Yx`JWTA_H(?C5QG%&h&9|t-);*2N#-y)V z`f+emF||dBDjh(hL@gw87ALE1fZ&t!P6+2%l6)r=S1Xka9`RAZBb0qB@ABrwUUr2B zu-XZ$zM%mqR$8T47Gfhg$bC;vmlQ9aCS{h5R9)_s%r!BSe<+*F*^8~a2#N-da+N+> zk${SdYJ~gG(7PpDBR%|XzI4{uzTraWF97glyQec^)X+3%@NR5=WtFX5X`{+Idx*SR z6cyNszkmnVx|UyN!eiPrylEMRU__9Ls{I%q)b0&6c`WHj&Sz#i*+vDh?}iPa*dF3S z6TIj>CA*?uby+7>`Q3w%I5Y(gHEpydQqpoZZ;H;)vNw+fH1g#Rpk7nJ8-v)&`90F` zL*t{#j%77zzX=-kMDS+^+h43;!yCnEq-;c5SnSrH$(t#$($vYQ0rE$n7awz?2^cUa zbc#yan_gdrZ(^U{C33RBp`W)(0;PZN3nfPWN>(qpNQQ=<+08|jwaHqig0J?DkNWov zY*rsE9e*i*J7jI;FE1FgI}v;Q*|GJg*l-en7uHUrSkViA^BxANp55%fTrUek#QXzgV{&Zu(<0x$n%vHAnGn@3)sZ+|cUE7^?99t5UEBeJ;9U z19p>PqxhnebH9=7mfRs$VY=AS50wwfzGm7P<_QRDI_o?JSKB8vx>bP{i1KaeHShIL zu?^}f@Djgn%44g2e9(lQ5z}a<;)Jm!5s}RguvIl3rhC$RZsMj^Yf+dwc8qxvK&gCt z_ymve*hJ0aDX6i&6?OhIp^Ck^PIJq*)*YPogie3l3iN#CwR+|{Bb#J91m&_|f;~O` z;4yP+wq}tUho2lk8SAlrOci}yVG%{gNH8c~hEj|=@YB&$;twXGPJEQ0qCrFi!#}qs zrHoXUVmx?vqo{{c?RXTEW-8D8<^jvkU!!Ibu4(AAd!(oOtO!69sQlBAoL3JcITt&P zy=z}{`}=mvd9p?g4RZ!o#*Slu{WLdg%U!Y-?Xh^TpeN}f-x&k`jY78&=PPLw=yJkb zT(o<4n1wXGRlIqQeh7Z|q$Sb34muD%BW0U!nLF|E!YPw=M?RY-W2iIg`$I+@G*G38 zbvkSyA~|%r_H=E@x7Pm^YQaD8frCGO2|C0&Q+wSAzMe3mtPI-HrrN5~rV82`1{;i3 zMS)Vl<2|R&Q zQq?KT?DC}+%lfYJ)0yEXP+E42r%pk6N=yR1AX*R?2NCG?l)wOltbkUx;yEXzMQe#? z4U<%?Dm*elsTNwCNw*|-uM&F4b8Ki}A9d&5HbhYP`yxdkd zZmZ=7cq>;4^Y1pvrE+bCV)V&|+liy49hY)}3D;qdgz^r+sqQc{PqKE>n$>p)H7AwN z?#`XzHs+S+Ek68U`Pj_F$;?>$r!%X?OEVG?e$-beoSh2 z6uOk7U=)#4;vzRXZKJiAoBWoDFivoI}HVZs^Ir znZ(6x*{-uqn=VL`w6~D5fHRJOx&lKTor|?W7V_oa?tjiFx?%OD{?!}cC7;avb&)It<0kW=fBqU?{by-t!lpx0SrXcaqHjpd`Bsrix;u1B><^;IXnGDc%W(b|shsw$9GY)%UgUA+A0KSMkS-zQfB{ za$UZ1Z>AzAMc0}9!)&v7bp8JJzy$8l;FREac4B7cqSgiVd&$_$3xDj^^6KCiV7%|Q zIz1MSWV$P0tW$H7l${wctn5l*QLtDf$0K^pvECpgRY)i~6`MDYR1`9Ao{b6<7O6`e z9W$)S{*ZKv=cn2d>y69vs)?pQl)Gz~@uolf-&}9sd~EnKPWa+rZQCi3{!0Av6B+)K z!_{-U>1;8fI7gb}H30i8-?g~!Msdk14^G~;8tKy&zRlcAX}(|@^Sd1A zilZgIazJ}`Fn_~xl{WA6(TsEtciqO7y*IW(FRv%We2@|R`uk(a+Ni3|nX8UoNmdlS zaL?BLJUDz@=KFYu40IExYL{aT0=1QkMNzTAj*y6gkVt4ARd^7BQ3;qc1dr)68#KU4 z!w^w!rtyI5+3y?Iau(_)R9G6n$$lWccYaIsl%L>W61Sr+<^^Z+99*ZMPOJM8ETnX5 z#N@PL&Q)E3vOYIp()OPC!@TJkt{#YaEoo%N3nBo8g%Y5h;vX?^Mu&+)-ll1c5*fZg zJ$SJ_p?th~%d)#gpkc83Ph)zPYi{9$oke%_x8zv!+ZK9Pkq4E(=YI;$z0OUxMCitp zL%yv0mSZ&Q;ou5Jz{+tfH&mgN{Q0e z?6i#+6V-S~Q9$ugUqo~9M<4rhdy6=sZ=d2GR&cAWMUV5OAUvg3&97_Td!cfV+VZ+# zeou4P+ew=?0d;nWV;IZ##GLtJN=FVGNeN_YF zs9XyabzjQW@1Fk|mu$qbgA)oBm!-szyg+9b7NK7uoRg+p7u$X-E_w* zvnYwUr{{o!C_9c2JM*F2Y#GR|QW}&RDh#azyZ#BS6h+SlWIr(#ojd#ipRyFg<`@8O zGJYD6#-x0!$x(XW4hYQ-%HsT@LW(JRp|5FIqZ|GL;HR<@eRQEoib Date: Sat, 27 Apr 2024 13:57:22 -0400 Subject: [PATCH 37/64] Extend MFA state cache to 15mins --- BLAZAMSession/ApplicationUserStateService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BLAZAMSession/ApplicationUserStateService.cs b/BLAZAMSession/ApplicationUserStateService.cs index 086f3b9f..3a2ed11d 100644 --- a/BLAZAMSession/ApplicationUserStateService.cs +++ b/BLAZAMSession/ApplicationUserStateService.cs @@ -197,7 +197,7 @@ private void AddUserState(IApplicationUserState state) public void SetMFAUserState(string mfaToken,IApplicationUserState state) { _mfaLoginQueue.Add(mfaToken, state); - Task.Delay(60000).ContinueWith((val) => { + Task.Delay(900000).ContinueWith((val) => { _mfaLoginQueue.Remove(mfaToken); }); SetUserState(state); From ac72459662679595adfc9e3e1d9af485532027ff Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sat, 27 Apr 2024 14:05:07 -0400 Subject: [PATCH 38/64] Update Blazam Icon --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/wwwroot/android-chrome-192x192.png | Bin 0 -> 36970 bytes BLAZAM/wwwroot/android-chrome-512x512.png | Bin 0 -> 147855 bytes BLAZAM/wwwroot/apple-touch-icon.png | Bin 0 -> 33657 bytes BLAZAM/wwwroot/favicon-16x16.png | Bin 0 -> 1478 bytes BLAZAM/wwwroot/favicon-32x32.png | Bin 0 -> 2852 bytes BLAZAM/wwwroot/favicon.ico | Bin 5430 -> 15086 bytes BLAZAM/wwwroot/icon-192.png | Bin 0 -> 2626 bytes BLAZAM/wwwroot/logo.png | Bin 0 -> 16003 bytes BLAZAM/wwwroot/mstile-150x150.png | Bin 0 -> 20632 bytes BLAZAMStatic/StaticAssets.cs | 2 +- 11 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 BLAZAM/wwwroot/android-chrome-192x192.png create mode 100644 BLAZAM/wwwroot/android-chrome-512x512.png create mode 100644 BLAZAM/wwwroot/apple-touch-icon.png create mode 100644 BLAZAM/wwwroot/favicon-16x16.png create mode 100644 BLAZAM/wwwroot/favicon-32x32.png create mode 100644 BLAZAM/wwwroot/icon-192.png create mode 100644 BLAZAM/wwwroot/logo.png create mode 100644 BLAZAM/wwwroot/mstile-150x150.png diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index ef325eaa..c7af0f84 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.24.0209 + 2024.04.27.1801 false BLAZAM False diff --git a/BLAZAM/wwwroot/android-chrome-192x192.png b/BLAZAM/wwwroot/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0a5f068858b500710462a5aed044cb077735bf GIT binary patch literal 36970 zcmV)EK)}C=P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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%0AJ~UtR2at?J0vHBlDNl3*it-ro*=wLk`gO} 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%0Dwz2OZ>y#z2(i_@{d%d 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 SLN%2D0000HPp}A*Lt>05vg4FGg_h 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

    ?t19i6dhS5js*B~@Z}&lB-?rO6%H2#ti69~^ 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

      QlL%&AWdiZcmLqF z(PonVawa3nO?fQ?@$*u)qPd#le2B&;nq>-;$rMUutsizxTWPsodt=A-pXWlp*}UhF z^|A1THkI)|Nf4qa!gM;t#>PhD0z8O--}~&%xayp}&>Ue(0;Cn> zM-YtJT71=1d{<9Zi|J!}D$Hqta1GX&OlKGlfhdkW zU|P8j|Czd(%w4aZDZJsnohFw|=RleE5q{2&57?OcjOm{ND1agm1c=Ed*mB!$HoGmF zB=fRWMcDo3Eu~BDx$+qKTQ%tcSeuNoHlBf(mJK-0psLOi+In3N%o|ON zNNWoMBkUD1mWBf`7w*Su*k2jINgy(q0n!X24Jeg^Cn=JirK(B~heP7hx_nw|(fD#@rKS><^%|sv(VRK^xrZbR`xl6|^mI7MF*e^AH?=yGcyyYb@Gn8f^)5ee5 zLHeDT_uEyc6JG=yEWQ>JkG}8<9(ejiNI3vVLkR&wY~s`YA-hA+Wo1h~?nrW(?`^d?fhL$*8pQ4olGV+Yv37c=^1?Y_Ld@0wA{C?8r92Y z(XHhNsMaflgo428`nYV)ISa?7*_3b1{9p(fAs!5R<7E8B-**?79o&k%0Zt=qJDmA7 zO%t3tbqW9=?YT%Oh$uxGFGFbHmv6WVpT6qS!Y^&V)zclTJ|CUC>8S)Gl^T%(qAbFZ z%^CjVPwvGenOPoBrBv3n%!^buVYkiUdGJ7eA|tlns#1RUcDh7eP3s%$Cd#X`>TVoI zb3gjIbd3wqyeiSW@5I{1ZO^^)AznVV(fVAg1z;nY;rlPXv+v%wPkk~I5n^UQ5?FB$ z$;A}s$8*1#O(<{Ey?yFjWH1*2uKANF^n4dctxtcFBmsdj8VzdqhM(_Go33w)J-}Sw z&+klX{vq0+x-bQPm4HW{7UPh@K`&Ea!P6bsm(F=x{aXlRT4G}|gJQQWt-_p}be@(H z^a=a3#{P6+P~1T)|NAOwnE7=h1V9MLo)$kM!s_a3o>|bG6Ockf5dadnVsC`s`}D2Y zBLp&bNr<#JAIfb!9cBC8!*EPP@qnfN;~CO`ny!c2SnrRP5oRh6W-|f` zvqjf`)Czn5FUG400LUm51b@5M!V;iNLLL$TbSYhMs7xjkY^)a<|BN+TfFMC4#u5~M z>*Lqs#tZg=A)$4aGyg@()1}6|y+S8^>4h?Ry?VB9<_Owpa+tw?z&M0P_i+ zi{?nF(r+iqwrc!Up@M+*^$lcMYJC43zMpciL>Uh@ZxKS2*0+#=<6NE0KuQuD$?VgA z_~U2K&xHK2weF@1cfY-gmk)i2Nuuu5tS>B_Ak8NHrt_hUPm7O+`(ODe|JtTPRpx8M zmRd|!UD@zB--p*`oU=g{X{s=uOl_E;12|cbQ<3wkktEfOiT164h$6 zMt1*aFW-Ex$~-Wi_gwD1r(#Aq=G-T=r|d3hKHzCgS*F|@a)0bctq>gEqWlH6hRGt3 zJr7>mV6DMQfmH_93b4@yCexqWnNdPY2`MC2S5{3XMIuNDM39gW&~g9`i5t(`hhP2p zjfkW|3bQH9R+JYPt#Gy!vi%rC;BOv&9Pb=G0U=`(K`w*^{CQ!kLHAa`+-x<_Vv)7u z>~9&&&1-KTE3v)PJ3`l6d*6#jeX}w8Z7FFj(1dS%`_#0xuZ;pgqB8t<|KQ7FBh|kwSPddhp+S&b zpqWD&P**64BV=3brElUWEy#9JCJr1Z79Y2@@>UBG=R&bbZ(2sAHZ5%R)RU#I+uQ(# z`~;gT00LR2u{oY1&8nMK7;qFw<-WYC*;}wVq|tXA78btnz|dyTYX(SL^mI=j-cBozu2pGW zlrc8eHjqqa5JG~4KtvJ|Bm_xl8Dlvj{O+AMWep;wfSKLZMTLY=XwGJEhHiUBh8rTXzzzpzT>$7n?Pj0V^cie5)Rnt z0@$2seD{@=eVZD0q*mIH%otFFtb*d-swwE_wR9zyaN0wzY{JBqj>lsxFD)UCqcW4O zFl=WI4GBAhasmnSo?nd7BBg0jYg_F4RqV#;?DP50S4L`KE{XN-<($Zb<&M`@Z~Uu&{LA$3?|!oJ$wmR-ts^Ul1zk8% zba_Ss5o-u02uLtz@THR`B8Rmkm(8dQ#tJQ@UEsT3KG%-t$!D&0N_y>RCwf~7(5^}6 z!e3m`T4OvOV`;R6;c$@qKz&-x&&*w0N`KDXrx5K!^sJ)2w^G{XfJ30yHHCmyPN6!T zBY-?ftR1!6^mpI3+lJ^4#Evo>Yn%0`W>uR+vea55;KrEh@U`<$C9XEs+77mbn1#w)P!t{Y6cv{cZz_ z=YIH!+)BA#|2Qy=Bb&Oc1vlNqL7QQXyDyv)get(8SPvvJ#fbSUa}r^C}k61)jw`0>o*=W7X`DW=2hCGmOU*3l?nFP8<7* zCOI;HaYMiR3r}6+xsw8b%gs|ZZ1~c9Yd0I|=08&fw)quv<=nje6hzp)YXlNyjdG`P z7u!+thiR-LnT@{@6{}9RYwssxl~MgN6BsVJ)iEbR36Bg9*6z>7U{8x8H$`mk^~u3;{@c z58O9hPorEFOyT`5f0H3DS1$9+*t$?rj7Tq`p{34+Xc~OZXz*E@VSQs0X2*{3+D9np z*4Mq%n-9%FYiC86YC2~%;ai`6_avVAU_E$m&;@XElHy1I{=eFL|LY(AYAQ6yW+&4E z7?DO|THd4C41%h(wtIkFXii~@shB;;L*BM5@Z_B@y)$%gi{#2VTG_35GB6aXu^u-l z&DX7^LDx^S1}4)4nhDFxOOTPyW7*m3TS$EHTSs66;Iv(^ke1dsz^-u$nRxp?+eV{# ziUWWu!4TT?QIj$K8uy$1U>#bpVm@>RgB)^{rEDYOs_ z0D{KmF2LF%mYwFr$oD*lkkEF?5JVt086BN4Ahgl^r3Tj4RxulInuI@O&m%)dgftpq zNWib&aU*U$un$lgnP!kC#00R=LGyn|n_ZM%J1M|PO-N|~O&JDaf;U!DeEpuMpw$qO zB#_Y1f?(2Oo9wNctxuZD$$s*Gsn~ZOfQ>z`%w`wC6wuPmddnrjA@rUq=EZ%Bl0*)2 zLyl=j{w-8pjioh)f?|5(i0 z)poQAF^-J?-x!%ST?guz@Di=2(XHS8r@x2q{p_9KyMhA1hbK=V0?wbL z+0|@AJzPTsiQ1w!U-<|{p8LYZ8Ei5UAxRQwt+8uYj3^R$2vgtZ3k|^Q)B>S^e%ZsVJBdu% zFT`w|1x|Z?@VEN)X{=-nV#0o%;;VPwgbR0%AfQSDKxp2Hwgfq6VaWu8D1j8fOYg7X zI}bjEEQ+lHUe$7&-FDUAr8sk|73c0Mk4B+-fbcil^evZxlxC#;XM7-D^|{(SuKYPa z79ofN2eZWb+Stp_QqK|KTZ&4;6`Dcr{e%-oH}AX?c)bG%uR8=_mSmT|d~|%?p_Ad1 zz%>Eji8qhn(YKCaoF;dqBHGQMvNVr+&g?#*jcTXc7Nf0xeDnH|{of^%5q6HjhCYV2 zd;+d0MOa^-U^Y$RCL~d~{ciH*rn4@JC2>a~j<|Z~bH-pLq2?41R+;!DO`0TZpV!#TTo0)(0DB&~C zW}$#hg5*swzVX20IJ`E+(1wdS`kQsSo%xsk_V}B7zKxN#Y4KgcMqNk%=2@ZYA=b^` zjk`b8_TqYdehMKlnIxD_lfw5;;rjcOkYLobPL%JjxJ`&kM^hW508+?{kB#}pw~ue) z?e+RMUK0S4G{v|6@t0{jORiV7%Vu#5`EY(N%h}j17SI~l*xWP`0v({7Uz9Ujd`432 z7hV7uFFkiZMzI7l%&v52a44PD9y*$f5de}@;qcMp&?L6lg}UI19D_sN{_71Xd^y9x zp0BEnB!dl^4?=2?hnh>_-!@Y19dGzqVv zLsSHzD(z}@+2lcIYndl8lTr#B>l3g=z8hMg6*E=FC2U{2eI>7N5nxOemR2^BJO9;R zJcQRjT&>+x!vK6Z*7)Yr?;M;!eo}F2L;x-%bsw1EcRWmJvXWDo8cZrb!^H!^xc2r%g!bXKVmbzorOx2J1L+#hS{qS*lF%^Au5`=uqVNV(_wbG)P*jkigR!|~B27%p!6xSad zVPF&K5UbqZ9p0JVpGTz^%ry>ueWRVR?i3;B3{qq`k;QoT*eaF;OqNMYhkPWt$ZlCA z0xGmOXQLw2_XaRDHej@k^$jG`DM$)rU@R$yBt}L?Ac(UBU%c}++y*f&>)IRLJf&9<2Tci za`2^b!HC>+ZRVkeX{olYVle>Od;?yjfT^qO?|0t`J0N07o8|mdbK!Gcz&^h}TjRGj zLd|A0gpk*in9_qfWpI z0OWa=o2FXmoCkthuz$7Z$OkbI#^WiJ*4Vvk8It@jvS_DoN^-6?mt>i9fnjlj$2<#U zk^QjC9aQ)KnN-Xb0SVPbfC}_*evditGu859<}?3tZ9%H|A1hO7(G;GUu-pQhr<(vp z0<1O8KW7=2p1U8!j7)22otaP03L(`u`{v3;Xg_c1!t1zwErcMPn#^$IO3|8f~UUGmXGAWh5;Y_QbSmYxiPA^~E;)d%+CS8l%^BWpFtl+7Yovnuou za4K}4r&Rmdcbvla3G>a8{cee&;uv>7{tTXe?Olw9%MeiDP&rLn%T36R)= zCAe5W=5a~a-DG54W9IL^sv5xvT8UCO|JhGpKPOQ*UcINJEIoH@h7V4zVQn(KI@Q=) zHGbugpO*cJx3VB@)z8-F`FX1MK{WF_l(z@p(6ulT5oXf_>+72asN!p^{=EyldnZcR z{}(bpmOqF#Y16M7_?uRFEYHhv6JlaxC{=fQtek8%h#zw(t*lc>jB%nxwNnpT)U;FrN zxN_fa2yMdtG9}>aIepCIZF6iIxYcF9D!LtC=IDKA{Kb_vBc28-<-adK~|HDsyh8fc>2`COCa-C1C!IWDH z@u0;f{~{&GB!UENHh(sK49wapD4Zjb`vCTu-c$8EHkl-wTq_~qQj(-tTiZaEZzR-g zk+8M93QsH4VP5cAd2E7LTl%yM8;31{M; z%~EV`OyIM}?F6j137171tFG#>CB2mWWj-S*;%>0btKS;)Va~|7tMJ z)XgbG$sl8hRm9;+&kAsQS;*-xB?I{uySg*sSOA!yGKKZ^4a{aK{8UuAe>#9&INi*D zr;9PmpV|4?^g#+T8iv*ymz{S2S0304cnskqSFG`5rZnDq|1fmZd}>%D9kRb{@vLJs zvMj^K#zyJ9nbKxAJ3$)z28`dj>n5DP9Dzt9V}*jQl1Oos;Dk0Vbbyn(cx5&&vCv>~58pp`G z=~x4s8)Hu(Z^j^0g`M`EZmk5jY3}S3z>rWPUP_g|?Yqyug&#cgcIlpy0PybG8Xo%K z=z$HXuTvyIT0(>JL$S$1#O_mPn*hN}A655RSBI%B9=PRi?_akSB0SJEg`RVhy7F(6 zL|Q!NgTb21qLzTB>s{em<|O3|AAV|JYXVG_#@gm4#lS=HoOIP|P%j_T&cybdaG3}!1|g8?w0G4eXcrE$;OWbeuEH7?fNOd58mlv^H3oG5fP4_T)}Ja9{~+U5YAeb z(+0W!Iz&5XS%WTb*Gyb&I6E1SF`Lcu#oaB;hMs`p44=9BO5AnTrHGiJn2>4%*cIGv zhMw0fKTkcO(85K800aLs3~604zH#qEIJ_~1peWz`h)6)NFyU-Kq0v@5pTE~^T3clL zBUJO(Hfg9K>#Ca%0tD$?UiO>PRBVOK77**&Qqah>iO5+m$@^V-S4BN8&$seXw|@Bg zK`|C)t8|U=Y=UVrgAkDg09X3m;R>nDfKvOrw0^*+g-20hh&)v|wboUtml=W+WUO&& zqCfuVKmCJ9%iX1WN+7@!;|U@mE*ukI!T_KJw6sZMOC~*SQg1qF9Giu>DqlKaMPY5` z;zCO)nS;E^RR?yV5CXhy7fn2|K!P0X)sBfe>DM; z4Jgb3^b9DC;ZmU1%%LSg0oGcAV()I$=U;KJrN6hXGJAj`cZ*xJIKwR$?8nD1Iu|i( zBr40JMYvY+*X$!@+?+mpY)k5 z+X=F&_5DnCtU*}J1R)WG3pDVhYcI#Xp+trZsmjjyoL{t%0A?id#4B%MmZXr-fQS|! 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
    1. 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 literal 0 HcmV?d00001 diff --git a/BLAZAM/wwwroot/apple-touch-icon.png b/BLAZAM/wwwroot/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d00d3ae673f26218a6ffd250e302cadc0db83820 GIT binary patch literal 33657 zcmV)RK(oJzP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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

      8&_f5TDb_S(8V$(=LZAsG4&Uu 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 U^2y0`D$oiBPgg&ebxsLQ08>4%UjP6A literal 0 HcmV?d00001 diff --git a/BLAZAM/wwwroot/favicon-16x16.png b/BLAZAM/wwwroot/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c056d234a5823a01f45865f89d010140133a7793 GIT binary patch literal 1478 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 literal 5430 zcmc&&Yj2xp8Fqnv;>&(QB_ve7>^E#o2mu=cO~A%R>DU-_hfbSRv1t;m7zJ_AMrntN zy0+^f&8be>q&YYzH%(88lQ?#KwiCzaCO*ZEo%j&v;<}&Lj_stKTKK>#U3nin@AF>w zb3ONSAFR{u(S1d?cdw53y}Gt1b-Hirbh;;bm(Rcbnoc*%@jiaXM|4jU^1WO~`TYZ~ zC-~jh9~b-f?fX`DmwvcguQzn*uV}c^Vd&~?H|RUs4Epv~gTAfR(B0lT&?RWQOtduM z^1vUD9{HQsW!{a9|0crA34m7Z6lpG^}f6f?={zD+ zXAzk^i^aKN_}s2$eX81wjSMONE#WVdzf|MT)Ap*}Vsn!XbvsI#6o&ij{87^d%$|A{ z=F{KB%)g%@z76yBzbb7seW**Ju8r4e*Z3PWNX3_tTDgzZatz7)Q6ytwB%@&@A|XT; zecM`Snxx5po$C)%yCP!KEtos~eOS)@2=kX-RIm)4glMCoagTEFxrBeSX%Euz734Fk z%7)x(k~T!@Hbg_37NSQL!vlTBXoURSzt~I**Zw`&F24fH*&kx=%nvZv|49SC*daD( zIw<~%#=lk8{2-l(BcIjy^Q$Q&m#KlWL9?UG{b8@qhlD z;umc+6p%|NsAT~0@DgV4-NKgQuWPWrmPIK&&XhV&n%`{l zOl^bbWYjQNuVXTXESO)@|iUKVmErPUDfz2Wh`4dF@OFiaCW|d`3paV^@|r^8T_ZxM)Z+$p5qx# z#K=z@%;aBPO=C4JNNGqVv6@UGolIz;KZsAro``Rz8X%vq_gpi^qEV&evgHb_=Y9-l z`)imdx0UC>GWZYj)3+3aKh?zVb}=@%oNzg7a8%kfVl)SV-Amp1Okw&+hEZ3|v(k8vRjXW9?ih`&FFM zV$~{j3IzhtcXk?Mu_!12;=+I7XK-IR2>Yd%VB^?oI9c^E&Chb&&je$NV0P-R;ujkP z;cbLCCPEF6|22NDj=S`F^2e~XwT1ZnRX8ra0#DaFa9-X|8(xNW_+JhD75WnSd7cxo z2>I_J5{c|WPfrgl7E2R)^c}F7ry()Z>$Jhk9CzZxiPKL#_0%`&{MX>P_%b~Dx0D^S z7xP1(DQ!d_Icpk!RN3I1w@~|O1ru#CO==h#9M~S4Chx*@?=EKUPGBv$tmU+7Zs_al z`!jR?6T&Z7(%uVq>#yLu`abWk!FBlnY{RFNHlj~6zh*;@u}+}viRKsD`IIxN#R-X3 z@vxu#EA_m}I503U(8Qmx^}u;)KfGP`O9E1H1Q|xeeksX8jC%@!{YT1)!lWgO=+Y3*jr=iSxvOW1}^HSy=y){tOMQJ@an>sOl4FYniE z;GOxd7AqxZNbYFNqobpv&HVO$c-w!Y*6r;$2oJ~h(a#(Bp<-)dg*mNigX~9rPqcHv z^;c*|Md?tD)$y?6FO$DWl$jUGV`F1G_^E&E>sY*YnA~ruv3=z9F8&&~Xpm<<75?N3 z>x~`I&M9q)O1=zWZHN9hZWx>RQ}zLP+iL57Q)%&_^$Sme^^G7;e-P~CR?kqU#Io#( z(nH1Wn*Ig)|M>WLGrxoU?FZrS`4GO&w;+39A3f8w{{Q7eg|$+dIlNFPAe+tN=FOYU z{A&Fg|H73+w1IK(W=j*L>JQgz$g0 z7JpKXLHIh}#$wm|N`s}o-@|L_`>*(gTQ~)wr3Eap7g%PVNisKw82im;Gdv#85x#s+ zoqqtnwu4ycd>cOQgRh-=aEJbnvVK`}ja%+FZx}&ehtX)n(9nVfe4{mn0bgijUbNr7Tf5X^$*{qh2%`?--%+sbSrjE^;1e3>% zqa%jdY16{Y)a1hSy*mr0JGU05Z%=qlx5vGvTjSpTt6k%nR06q}1DU`SQh_ZAeJ}A@`hL~xvv05U?0%=spP`R>dk?cOWM9^KNb7B?xjex>OZo%JMQQ1Q zB|q@}8RiP@DWn-(fB;phPaIOP2Yp)XN3-Fsn)S3w($4&+p8f5W_f%gac}QvmkHfCj$2=!t`boCvQ zCW;&Dto=f8v##}dy^wg3VNaBy&kCe3N;1|@n@pUaMPT?(aJ9b*(gJ28$}(2qFt$H~u5z94xcIQkcOI++)*exzbrk?WOOOf*|%k5#KV zL=&ky3)Eirv$wbRJ2F2s_ILQY--D~~7>^f}W|Aw^e7inXr#WLI{@h`0|jHud2Y~cI~Yn{r_kU^Vo{1gjav0A9xRwxP|bki~~&uFk>U z#P+PQh zyZ;-jwXKqnKbb6)@RaxQz@vm={%t~VbaZrdbaZrdbaeEeXj>~BG?&`J0XrqR#sSlO zg~N5iUk*15JibvlR1f^^1czzNKWvoJtc!Sj*G37QXbZ8LeD{Fzxgdv#Q{x}ytfZ5q z+^k#NaEp>zX_8~aSaZ`O%B9C&YLHb(mNtgGD&Kezd5S@&C=n~Uy1NWHM`t07VQP^MopUXki{2^#ryd94>UJMYW|(#4qV`kb7eD)Q=~NN zaVIRi@|TJ!Rni8J=5DOutQ#bEyMVr8*;HU|)MEKmVC+IOiDi9y)vz=rdtAUHW$yjt zrj3B7v(>exU=IrzC<+?AE=2vI;%fafM}#ShGDZx=0Nus5QHKdyb9pw&4>4XCpa-o?P(Gnco1CGX|U> z$f+_tA3+V~<{MU^A%eP!8R*-sD9y<>Jc7A(;aC5hVbs;kX9&Sa$JMG!W_BLFQa*hM zri__C@0i0U1X#?)Y=)>JpvTnY6^s;fu#I}K9u>OldV}m!Ch`d1Vs@v9 zb}w(!TvOmSzmMBa9gYvD4xocL2r0ds6%Hs>Z& z#7#o9PGHDmfG%JQq`O5~dt|MAQN@2wyJw_@``7Giyy(yyk(m8U*kk5$X1^;3$a3}N^Lp6hE5!#8l z#~NYHmKAs6IAe&A;bvM8OochRmXN>`D`{N$%#dZCRxp4-dJ?*3P}}T`tYa3?zz5BA zTu7uE#GsDpZ$~j9q=Zq!LYjLbZPXFILZK4?S)C-zE1(dC2d<7nO4-nSCbV#9E|E1MM|V<9>i4h?WX*r*ul1 z5#k6;po8z=fdMiVVz*h+iaTlz#WOYmU^SX5#97H~B32s-#4wk<1NTN#g?LrYieCu> zF7pbOLR;q2D#Q`^t%QcY06*X-jM+ei7%ZuanUTH#9Y%FBi*Z#22({_}3^=BboIsbg zR0#jJ>9QR8SnmtSS6x($?$}6$x+q)697#m${Z@G6Ujf=6iO^S}7P`q8DkH!IHd4lB zDzwxt3BHsPAcXFFY^Fj}(073>NL_$A%v2sUW(CRutd%{G`5ow?L`XYSO*Qu?x+Gzv zBtR}Y6`XF4xX7)Z04D+fH;TMapdQFFameUuHL34NN)r@aF4RO%x&NApeWGtr#mG~M z6sEIZS;Uj1HB1*0hh=O@0q1=Ia@L>-tETu-3n(op+97E z#&~2xggrl(LA|giII;RwBlX2^Q`B{_t}gxNL;iB11gEPC>v` zb4SJ;;BFOB!{chn>?cCeGDKuqI0+!skyWTn*k!WiPNBf=8rn;@y%( znhq%8fj2eAe?`A5mP;TE&iLEmQ^xV%-kmC-8mWao&EUK_^=GW-Y3z ksi~={si~={skwfB0gq6itke#r1ONa407*qoM6N<$g11Kq@c;k- literal 0 HcmV?d00001 diff --git a/BLAZAM/wwwroot/logo.png b/BLAZAM/wwwroot/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f63d53b961673e1c6fb001051dfc3f2282ba1bad GIT binary patch literal 16003 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 bn-sl%gruf}+c)9iIOgIxm9wd5Zaw@z>Q`R- literal 0 HcmV?d00001 diff --git a/BLAZAM/wwwroot/mstile-150x150.png b/BLAZAM/wwwroot/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9960b55a33243c7d107a04f2cade251b273d08 GIT binary patch literal 20632 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 literal 0 HcmV?d00001 diff --git a/BLAZAMStatic/StaticAssets.cs b/BLAZAMStatic/StaticAssets.cs index 7af899e6..27087051 100644 --- a/BLAZAMStatic/StaticAssets.cs +++ b/BLAZAMStatic/StaticAssets.cs @@ -40,7 +40,7 @@ public class StaticAssets private static byte[]? GetDefaultIcon() { - var defaultIconFilePath = Path.GetFullPath(ApplicationInfo.applicationRoot + @"static\img\default_logo4.png"); + var defaultIconFilePath = Path.GetFullPath(ApplicationInfo.applicationRoot + @"static\img\default_logo5.png"); if (File.Exists(defaultIconFilePath)) return File.ReadAllBytes(defaultIconFilePath); return null; From 6b68417b823f7fece7f027b21f0772294dadfce5 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sat, 27 Apr 2024 18:55:05 -0400 Subject: [PATCH 39/64] Update readme with new logo --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAMGui/UI/Users/NewTemplateUser.razor | 2 +- README.md | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index c7af0f84..7e13a5bb 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.27.1801 + 2024.04.27.2251 false BLAZAM False diff --git a/BLAZAMGui/UI/Users/NewTemplateUser.razor b/BLAZAMGui/UI/Users/NewTemplateUser.razor index 89c5ca31..44821af8 100644 --- a/BLAZAMGui/UI/Users/NewTemplateUser.razor +++ b/BLAZAMGui/UI/Users/NewTemplateUser.razor @@ -311,7 +311,7 @@ - Next + Next diff --git a/README.md b/README.md index 52fa6d42..d5164143 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # BLAZAM +## Introducing Blazam's new Logo +![New logo for Blazam](https://blazam.org/img/default_logo.png "Blazam") + ## Website [blazam.org](https://blazam.org) From a80dcd89407179c825aea27dc8daebb9648b1635 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sat, 27 Apr 2024 18:59:36 -0400 Subject: [PATCH 40/64] Update img in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d5164143..002c3081 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # BLAZAM ## Introducing Blazam's new Logo -![New logo for Blazam](https://blazam.org/img/default_logo.png "Blazam") +![New logo for Blazam](https://raw.githubusercontent.com/Blazam-App/BLAZAM/Beta-Dev/BLAZAM/static/img/default_logo5.png "Blazam") ## Website [blazam.org](https://blazam.org) From 67735426fc0419f8ee61804dd1c1d960c17560dd Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sat, 27 Apr 2024 19:42:01 -0400 Subject: [PATCH 41/64] Increment version --- BLAZAM/BLAZAM.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 809cfcf1..70c9aa1e 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -5,8 +5,8 @@ enable enable false - 0.9.1 - 2024.04.27.2251 + 0.9.2 + 2024.04.27.2322 false BLAZAM False From d73b4dc584ed4b7b28314c2163f89194f36705b4 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 08:58:56 -0400 Subject: [PATCH 42/64] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 002c3081..065100cc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # BLAZAM ## Introducing Blazam's new Logo -![New logo for Blazam](https://raw.githubusercontent.com/Blazam-App/BLAZAM/Beta-Dev/BLAZAM/static/img/default_logo5.png "Blazam") + ## Website [blazam.org](https://blazam.org) From 33561935b7373a7ba4ae18d7e505bfc6ab830224 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 09:08:28 -0400 Subject: [PATCH 43/64] Include new icon file --- BLAZAM/BLAZAM.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 70c9aa1e..63143a32 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -26,6 +26,7 @@ + @@ -50,6 +51,9 @@ PreserveNewest + + PreserveNewest + From 32a3f0564ff729800adf994c1db30522be78af16 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 11:00:22 -0400 Subject: [PATCH 44/64] Fixes for home drive in template --- BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor | 2 +- BLAZAMGui/UI/Users/NewTemplateUser.razor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor b/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor index 4093e09e..f90d8cd5 100644 --- a/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor +++ b/BLAZAMGui/UI/Users/Fields/HomeDriveSelect.razor @@ -20,7 +20,7 @@ @code { - private string _driveLetter="D"; + private string _driveLetter="D:"; [Parameter] public string DriveLetter { diff --git a/BLAZAMGui/UI/Users/NewTemplateUser.razor b/BLAZAMGui/UI/Users/NewTemplateUser.razor index 44821af8..26f12622 100644 --- a/BLAZAMGui/UI/Users/NewTemplateUser.razor +++ b/BLAZAMGui/UI/Users/NewTemplateUser.razor @@ -249,7 +249,7 @@ From 0c3005016d1af30e22538aafd0706737e6e148f0 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 11:00:50 -0400 Subject: [PATCH 45/64] Improve news popover --- .../UI/Outputs/ApplicationNewsProvider.razor | 64 +++++++++++-------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/BLAZAMGui/UI/Outputs/ApplicationNewsProvider.razor b/BLAZAMGui/UI/Outputs/ApplicationNewsProvider.razor index d2f916ff..7ac33716 100644 --- a/BLAZAMGui/UI/Outputs/ApplicationNewsProvider.razor +++ b/BLAZAMGui/UI/Outputs/ApplicationNewsProvider.razor @@ -15,51 +15,59 @@ color = Color.Warning; } - + - - @foreach (var item in unreadItems.OrderByDescending(x => x.UpdatedAt)) - { - - - - @item.Title - - @if (item.Link != null) - { - @item.Link - } - - - } - @if (showRead) - { - foreach (var item in readItems.OrderByDescending(x => x.UpdatedAt)) + + @if (readItems.Count > 0) + { + + } + @foreach (var item in unreadItems.OrderByDescending(x => x.UpdatedAt)) { - - - @item.Title + @item.Title @if (item.Link != null) { - @item.Link + @item.Link } } - } - else - { - @AppLocalization["There is nothing new to see here"] - } + @if (showRead) + { + foreach (var item in readItems.OrderByDescending(x => x.UpdatedAt)) + { + + + + + + @item.Title + + @if (item.Link != null) + { + @item.Link + } + + + } + } + else + { + if (unreadItems.Count == 0) + { + @AppLocalization["There is nothing new to see here"] + } + } + } From 7e2952f3822fcfcff94c7f3d7ee8e343a0c305bd Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 11:01:19 -0400 Subject: [PATCH 46/64] Change inherited permissions display to row --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAMGui/UI/Settings/Permissions/PermissionMapEditor.razor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 63143a32..3ecf1ff6 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.04.27.2322 + 2024.04.28.1441 false BLAZAM False diff --git a/BLAZAMGui/UI/Settings/Permissions/PermissionMapEditor.razor b/BLAZAMGui/UI/Settings/Permissions/PermissionMapEditor.razor index e89b64f1..c7d11eee 100644 --- a/BLAZAMGui/UI/Settings/Permissions/PermissionMapEditor.razor +++ b/BLAZAMGui/UI/Settings/Permissions/PermissionMapEditor.razor @@ -34,7 +34,7 @@ } else { - + @if (selectedPermissionDelegateNames != null) { @foreach (var pd in selectedPermissionDelegateNames.Split(SELECTION_DELIMITER)) From 6043ecedcc23d6b4947dd4d1ec0cd022a40fb4b7 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 11:26:32 -0400 Subject: [PATCH 47/64] New Mobile Search Experience --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAMGui/UI/Search/SearchControls.razor | 92 +++++++++++++++++ BLAZAMGui/UI/Search/SearchPageHeader.razor | 114 +++++---------------- 3 files changed, 116 insertions(+), 92 deletions(-) create mode 100644 BLAZAMGui/UI/Search/SearchControls.razor diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 7e13a5bb..a3b10461 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.27.2251 + 2024.04.28.1524 false BLAZAM False diff --git a/BLAZAMGui/UI/Search/SearchControls.razor b/BLAZAMGui/UI/Search/SearchControls.razor new file mode 100644 index 00000000..1dd07bfb --- /dev/null +++ b/BLAZAMGui/UI/Search/SearchControls.razor @@ -0,0 +1,92 @@ +@inherits AppComponentBase + + + + + { SearchService.SeachObjectType=ActiveDirectoryObjectType.All; })>@AppLocalization["All"] + + + { SearchService.SeachObjectType=ActiveDirectoryObjectType.User; })>@AppLocalization["User"] + + + + { SearchService.SeachObjectType=ActiveDirectoryObjectType.Group; })>@AppLocalization["Group"] + + + + { SearchService.SeachObjectType=ActiveDirectoryObjectType.OU; })>@AppLocalization["OU"] + + + + { SearchService.SeachObjectType=ActiveDirectoryObjectType.Computer; })>@AppLocalization["Computer"] + + + + { SearchService.SeachObjectType=ActiveDirectoryObjectType.Printer; })>@AppLocalization["Printer"] + + + + + + + +@if (IsAdmin == true || CurrentUser.State?.CanSearchDisabled(ActiveDirectoryObjectType.User) == true) +{ + var buttonColor = Color.Error; + if (!SearchService.IncludeDisabled) + + { + buttonColor = Color.Success; + } + { + SearchService.IncludeDisabled= !SearchService.IncludeDisabled; + await InvokeAsync(StateHasChanged); + }) Color=buttonColor> + Enabled Only + + + + + + +} +@{ + var adornmentIcon = Icons.Material.Filled.AccountTree; + switch (SearchService.SeachObjectType) + { + case ActiveDirectoryObjectType.User: + adornmentIcon = Icons.Material.Filled.Person; + break; + case ActiveDirectoryObjectType.Group: + adornmentIcon = Icons.Material.Filled.People; + break; + case ActiveDirectoryObjectType.OU: + adornmentIcon = Icons.Material.Filled.Folder; + break; + case ActiveDirectoryObjectType.Computer: + adornmentIcon = Icons.Material.Filled.Computer; + break; + case ActiveDirectoryObjectType.Printer: + adornmentIcon = Icons.Material.Filled.Print; + break; + } +} + + + + +@code { + +} diff --git a/BLAZAMGui/UI/Search/SearchPageHeader.razor b/BLAZAMGui/UI/Search/SearchPageHeader.razor index ef40ddfa..4119c466 100644 --- a/BLAZAMGui/UI/Search/SearchPageHeader.razor +++ b/BLAZAMGui/UI/Search/SearchPageHeader.razor @@ -5,102 +5,34 @@ - - - - - - { SearchService.SeachObjectType=ActiveDirectoryObjectType.All; })>@AppLocalization["All"] - - - { SearchService.SeachObjectType=ActiveDirectoryObjectType.User; })>@AppLocalization["User"] - - - - { SearchService.SeachObjectType=ActiveDirectoryObjectType.Group; })>@AppLocalization["Group"] - - - - { SearchService.SeachObjectType=ActiveDirectoryObjectType.OU; })>@AppLocalization["OU"] - - - - { SearchService.SeachObjectType=ActiveDirectoryObjectType.Computer; })>@AppLocalization["Computer"] - - - - { SearchService.SeachObjectType=ActiveDirectoryObjectType.Printer; })>@AppLocalization["Printer"] - - - - - - - - @if (IsAdmin == true || CurrentUser.State?.CanSearchDisabled(ActiveDirectoryObjectType.User) == true) - { - var buttonColor = Color.Error; - if (!SearchService.IncludeDisabled) - - { - buttonColor = Color.Success; - } - { - SearchService.IncludeDisabled= !SearchService.IncludeDisabled; - await InvokeAsync(StateHasChanged); - }) Color=buttonColor> - Enabled Only - - - - - - - } - @{ - var adornmentIcon = Icons.Material.Filled.AccountTree; - switch (SearchService.SeachObjectType) - { - case ActiveDirectoryObjectType.User: - adornmentIcon = Icons.Material.Filled.Person; - break; - case ActiveDirectoryObjectType.Group: - adornmentIcon = Icons.Material.Filled.People; - break; - case ActiveDirectoryObjectType.OU: - adornmentIcon = Icons.Material.Filled.Folder; - break; - case ActiveDirectoryObjectType.Computer: - adornmentIcon = Icons.Material.Filled.Computer; - break; - case ActiveDirectoryObjectType.Printer: - adornmentIcon = Icons.Material.Filled.Print; - break; - } - } - - - - - - + + + + + + + + + + + Search + + + + + + + + + + @code { + MudDrawer? _searchDrawer; + AppModal? _searchModal; List ObjectTypes = new() { ActiveDirectoryObjectType.All, ActiveDirectoryObjectType.User, From 41c1a5f033f079dd5126b63ff6c917c2434c8024 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 11:34:59 -0400 Subject: [PATCH 48/64] Create SECURITY.md --- SECURITY.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..3e581a6d --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,12 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 0.x.x | :white_check_mark: | + + +## Reporting a Vulnerability + +Please report security vulnerability issues by email to support@blazam.org From ff76b94a8ce0c5286b67e30da3fc2e64cfddaef8 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 12:24:18 -0400 Subject: [PATCH 49/64] Add upcoming news items source --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAMSession/ApplicationNewsService.cs | 52 +++++++++++++++++++------ 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index a3b10461..bb691001 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.1 - 2024.04.28.1524 + 2024.04.28.1623 false BLAZAM False diff --git a/BLAZAMSession/ApplicationNewsService.cs b/BLAZAMSession/ApplicationNewsService.cs index 1423e660..1f67e8af 100644 --- a/BLAZAMSession/ApplicationNewsService.cs +++ b/BLAZAMSession/ApplicationNewsService.cs @@ -15,20 +15,26 @@ namespace BLAZAM.Session public class ApplicationNewsService : IApplicationNewsService { private HttpClient _httpClient; + private HttpClient _secondaryHttpClient; private Timer? _pollingTimer; private bool _pollCompleted = false; private List _allNewsItems = new List(); - private List activeNewsItems => _allNewsItems.Where(x=>x.DeletedAt==null && x.Published==true && (x.ScheduledAt==null||x.ScheduledAtDateTime.Now)).ToList(); + private List activeNewsItems => _allNewsItems.Where(x => x.DeletedAt == null && x.Published == true && (x.ScheduledAt == null || x.ScheduledAt < DateTime.Now) && (x.ExpiresAt == null || x.ExpiresAt > DateTime.Now)).ToList(); public AppEvent OnNewItemsAvailable { get; set; } public ApplicationNewsService() { _httpClient = new HttpClient + { + BaseAddress = new Uri("https://blazam.org/api/"), + Timeout = TimeSpan.FromSeconds(60) + }; + _secondaryHttpClient = new HttpClient { BaseAddress = new Uri("https://blazam-news.azurewebsites.net/api/"), Timeout = TimeSpan.FromSeconds(60) }; _pollingTimer = new Timer(Tick, null, 10, 1000 * 60 * 15); - // GetAllNewsItems(); + // GetAllNewsItems(); } private async void Tick(object? state) @@ -41,17 +47,36 @@ private async Task GetAllNewsItems() try { _pollCompleted = false; - var apiResponse = await _httpClient.GetAsync("newsItems"); - if (apiResponse != null && apiResponse.IsSuccessStatusCode) + try { - var content = await apiResponse.Content.ReadAsStringAsync(); - var allNewsItems = JsonSerializer.Deserialize>(content, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); - if (allNewsItems != null) + var apiResponse = await _httpClient.GetAsync("newsItems"); + if (apiResponse != null && apiResponse.IsSuccessStatusCode) { - _allNewsItems = allNewsItems; - _pollCompleted = true; + var content = await apiResponse.Content.ReadAsStringAsync(); + var allNewsItems = JsonSerializer.Deserialize>(content, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); + if (allNewsItems != null) + { + _allNewsItems = allNewsItems; + _pollCompleted = true; - OnNewItemsAvailable?.Invoke(); + OnNewItemsAvailable?.Invoke(); + } + } + } + catch + { + var apiResponse = await _secondaryHttpClient.GetAsync("newsItems"); + if (apiResponse != null && apiResponse.IsSuccessStatusCode) + { + var content = await apiResponse.Content.ReadAsStringAsync(); + var allNewsItems = JsonSerializer.Deserialize>(content, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); + if (allNewsItems != null) + { + _allNewsItems = allNewsItems; + _pollCompleted = true; + + OnNewItemsAvailable?.Invoke(); + } } } } @@ -93,7 +118,8 @@ public List GetUnreadNewsItems(IApplicationUserState user) } } return unreadItems; - }catch (Exception ex) + } + catch (Exception ex) { Loggers.SystemLogger.Error("Error while trying to get unread news items for user. {@Error}", ex); return new(); @@ -116,7 +142,9 @@ public List GetReadNewsItems(IApplicationUserState user) return new(); - }catch (Exception ex) { + } + catch (Exception ex) + { Loggers.SystemLogger.Error("Error while trying to get read news items for user. {@Error}", ex); return new(); } From 6bdb5085ffa8324436f3ef7c4536b6f9943dbd3c Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Sun, 28 Apr 2024 12:25:39 -0400 Subject: [PATCH 50/64] Incement v0.9.2 branch --- BLAZAM/BLAZAM.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index bb691001..dd5ef60b 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -1,11 +1,11 @@ - + net6.0 enable enable false - 0.9.1 + 0.9.2 2024.04.28.1623 false BLAZAM From 9dad1b2b0507b4cfc43f8f60a8fc3510c621a106 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:55:30 +0000 Subject: [PATCH 51/64] Bump Octokit from 10.0.0 to 11.0.1 Bumps [Octokit](https://github.com/octokit/octokit.net) from 10.0.0 to 11.0.1. - [Release notes](https://github.com/octokit/octokit.net/releases) - [Changelog](https://github.com/octokit/octokit.net/blob/main/docs/releases.md) - [Commits](https://github.com/octokit/octokit.net/compare/v10.0.0...v11.0.1) --- updated-dependencies: - dependency-name: Octokit dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- BLAZAM/BLAZAM.csproj | 2 +- BlazamUpdate/BLAZAMUpdate.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index dd5ef60b..5e34c7e8 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -80,7 +80,7 @@ - + diff --git a/BlazamUpdate/BLAZAMUpdate.csproj b/BlazamUpdate/BLAZAMUpdate.csproj index d4754fb0..256054c5 100644 --- a/BlazamUpdate/BLAZAMUpdate.csproj +++ b/BlazamUpdate/BLAZAMUpdate.csproj @@ -10,7 +10,7 @@ - + From ec911b1f52305c43e4ebc84080bc1a0ddc5888ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:57:34 +0000 Subject: [PATCH 52/64] Bump NUnit.Analyzers from 4.1.0 to 4.2.0 Bumps [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/nunit/nunit.analyzers/releases) - [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md) - [Commits](https://github.com/nunit/nunit.analyzers/compare/4.1.0...4.2.0) --- updated-dependencies: - dependency-name: NUnit.Analyzers dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- PlaywrightTests/PlaywrightTests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PlaywrightTests/PlaywrightTests.csproj b/PlaywrightTests/PlaywrightTests.csproj index 1c9781fe..c8f03435 100644 --- a/PlaywrightTests/PlaywrightTests.csproj +++ b/PlaywrightTests/PlaywrightTests.csproj @@ -13,7 +13,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive From 41ebeb17bdda39a32e51dfb71165ed0e6e93f7bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:00:03 +0000 Subject: [PATCH 53/64] Bump xunit from 2.7.0 to 2.8.0 Bumps [xunit](https://github.com/xunit/xunit) from 2.7.0 to 2.8.0. - [Commits](https://github.com/xunit/xunit/compare/2.7.0...2.8.0) --- updated-dependencies: - dependency-name: xunit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- BLAZAM.Tests/BLAZAM.Tests.csproj | 2 +- BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM.Tests/BLAZAM.Tests.csproj b/BLAZAM.Tests/BLAZAM.Tests.csproj index 00770045..f1b711a1 100644 --- a/BLAZAM.Tests/BLAZAM.Tests.csproj +++ b/BLAZAM.Tests/BLAZAM.Tests.csproj @@ -10,7 +10,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj index f9eed8d2..4890054b 100644 --- a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj +++ b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj @@ -16,7 +16,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all From 6d65ad318e277035cf00cbb56f9abb068e858cca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:01:06 +0000 Subject: [PATCH 54/64] Bump xunit.runner.visualstudio from 2.5.8 to 2.8.0 Bumps [xunit.runner.visualstudio](https://github.com/xunit/visualstudio.xunit) from 2.5.8 to 2.8.0. - [Release notes](https://github.com/xunit/visualstudio.xunit/releases) - [Commits](https://github.com/xunit/visualstudio.xunit/compare/2.5.8...2.8.0) --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- BLAZAM.Tests/BLAZAM.Tests.csproj | 2 +- BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BLAZAM.Tests/BLAZAM.Tests.csproj b/BLAZAM.Tests/BLAZAM.Tests.csproj index 00770045..37d81d70 100644 --- a/BLAZAM.Tests/BLAZAM.Tests.csproj +++ b/BLAZAM.Tests/BLAZAM.Tests.csproj @@ -11,7 +11,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj index f9eed8d2..a1521d9d 100644 --- a/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj +++ b/BLAZAMCommon.Tests/BLAZAMCommon.Tests.csproj @@ -17,7 +17,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all From 38f4b2cf2c22dfac256248b8fc0326d77efd9422 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Mon, 29 Apr 2024 19:15:02 -0400 Subject: [PATCH 55/64] Somehow the new icon still isn't being published --- BLAZAM/BLAZAM.csproj | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index dd5ef60b..07ccbb41 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.04.28.1623 + 2024.04.29.2313 false BLAZAM False @@ -26,6 +26,7 @@ + @@ -108,6 +109,12 @@ + + + PreserveNewest + + + True From 56ece8d8354caef13fa3216397b27c585679b967 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Tue, 30 Apr 2024 15:42:53 -0400 Subject: [PATCH 56/64] Add "Require Password Change" functionallity --- BLAZAM/BLAZAM.csproj | 4 +- BLAZAM/Pages/Users/ViewUser.razor | 4 +- .../Adapters/AccountDirectoryAdapter.cs | 68 ++++++++++++++++--- .../Adapters/DirectoryEntryAdapter.cs | 1 - .../Interfaces/IAccountDirectoryAdapter.cs | 1 + 5 files changed, 63 insertions(+), 15 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index dd5ef60b..669cb240 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.04.28.1623 + 2024.04.30.1910 false BLAZAM False diff --git a/BLAZAM/Pages/Users/ViewUser.razor b/BLAZAM/Pages/Users/ViewUser.razor index 2052c6cc..d3b4ae5c 100644 --- a/BLAZAM/Pages/Users/ViewUser.razor +++ b/BLAZAM/Pages/Users/ViewUser.razor @@ -227,7 +227,9 @@ @bind-Value="@ConfirmPassword" InputType="InputType.Password" /> } - + ("userAccountControl")); - if(uacRaw == 0) + var uacRaw = Convert.ToInt32(GetProperty("userAccountControl")); + if (uacRaw == 0) { UAC = ADS_UF_NORMAL_ACCOUNT | ADS_UF_PASSWD_NOTREQD; return ADS_UF_NORMAL_ACCOUNT | ADS_UF_PASSWD_NOTREQD; @@ -164,11 +163,11 @@ protected int UAC } set { - // PostCommitSteps.Add(new("Set UAC", (step) => { - SetProperty("userAccountControl", value); + // PostCommitSteps.Add(new("Set UAC", (step) => { + SetProperty("userAccountControl", value); // return true; - // })); + // })); } } @@ -233,13 +232,59 @@ public bool Enabled } } + public virtual bool RequirePasswordChange + { + get + { + //var pwdLastSetRaw = GetProperty("pwdLastSet"); + if (PasswordLastSet == null) return true; + return PasswordLastSet == DateTime.MinValue; + } + set + { + if (value) + { + PasswordLastSet = null; + } + else + { + + + PasswordLastSet = DateTime.Now; + + + } + } + } public DateTime? PasswordLastSet { get { + var dateTime = GetDateTimeProperty("pwdLastSet")?.AdsValueToDateTime(); + if (dateTime.HasValue) + { + return dateTime.Value; + + } + var rawValue = GetProperty("pwdLastSet"); + if (rawValue == -1) + { + return DateTime.UtcNow; + } + if (rawValue == 0) + { + return null; + } + return null; + } + set + { + if (value == null) + SetProperty("pwdLastSet", 0); + else + SetProperty("pwdLastSet", -1); - return GetDateTimeProperty("pwdLastSet"); } } @@ -265,7 +310,8 @@ public bool SetPassword(SecureString password, bool requireChange = false) { Invoke("SetPassword", new[] { password.ToPlainText() }); return true; - }catch (Exception ex) + } + catch (Exception ex) { Loggers.ActiveDirectryLogger.Warning("Could not set password via Invoke {@Error}", ex); //The following works outside the domain but may have issues with certs @@ -294,7 +340,7 @@ public bool SetPassword(SecureString password, bool requireChange = false) return true; } - + } catch (Exception ex) { @@ -304,7 +350,7 @@ public bool SetPassword(SecureString password, bool requireChange = false) throw new ApplicationException("Unable to set password", ex); else return true; } - + } public void StagePasswordChange(SecureString newPassword, bool requireChange = false) diff --git a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs index d59a9ce9..b25e61fe 100644 --- a/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs +++ b/BLAZAMActiveDirectory/Adapters/DirectoryEntryAdapter.cs @@ -983,7 +983,6 @@ private void FetchDirectoryEntry() return list; } - protected virtual T? GetProperty(string propertyName) { try diff --git a/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs b/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs index 452c8fe8..32848525 100644 --- a/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs +++ b/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs @@ -72,6 +72,7 @@ public interface IAccountDirectoryAdapter : IGroupableDirectoryAdapter /// SecureString? NewPassword { get; set; } bool PasswordNotRequired { get; set; } + bool RequirePasswordChange { get; set; } /// /// Changes the password for this entry immediately From 6a65a95295f26b233be8ee9da9377c58b67f9f31 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Wed, 1 May 2024 14:22:59 -0400 Subject: [PATCH 57/64] Added require password change to template edit page --- BLAZAM/BLAZAM.csproj | 2 +- .../Adapters/AccountDirectoryAdapter.cs | 2 + ...sswordChange_To_TemplatesMySql.Designer.cs | 1803 ++++++++++++++++ ...RequirePasswordChange_To_TemplatesMySql.cs | 28 + .../MySqlDatabaseContextModelSnapshot.cs | 3 + ...PasswordChange_To_TemplatesSql.Designer.cs | 1868 +++++++++++++++++ ...d_RequirePasswordChange_To_TemplatesSql.cs | 28 + .../Sql/SqlDatabaseContextModelSnapshot.cs | 3 + ...swordChange_To_TemplatesSqlite.Designer.cs | 1798 ++++++++++++++++ ...equirePasswordChange_To_TemplatesSqlite.cs | 28 + .../SqliteDatabaseContextModelSnapshot.cs | 3 + .../Models/Templates/DirectoryTemplate.cs | 34 +- .../Templates/EditDirectoryTemplate.razor | 243 ++- 13 files changed, 5717 insertions(+), 126 deletions(-) create mode 100644 BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.Designer.cs create mode 100644 BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.cs create mode 100644 BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.Designer.cs create mode 100644 BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.cs create mode 100644 BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.Designer.cs create mode 100644 BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.cs diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 669cb240..29908e1d 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.04.30.1910 + 2024.05.01.1755 false BLAZAM False diff --git a/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs b/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs index fa240d00..d0821835 100644 --- a/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs +++ b/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs @@ -27,6 +27,8 @@ public class AccountDirectoryAdapter : GroupableDirectoryAdapter, IAccountDirect + public virtual bool CanSetPassword { get => HasActionPermission(ObjectActions.SetPassword); } + public virtual bool CanEnable { get => HasActionPermission(ObjectActions.Enable); } public virtual bool CanDisable { get => HasActionPermission(ObjectActions.Disable); } diff --git a/BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.Designer.cs b/BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.Designer.cs new file mode 100644 index 00000000..9d07d308 --- /dev/null +++ b/BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.Designer.cs @@ -0,0 +1,1803 @@ +// +using System; +using BLAZAM.Database.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BLAZAM.Database.Migrations.MySql +{ + [DbContext(typeof(MySqlDatabaseContext))] + [Migration("20240501175454_Add_RequirePasswordChange_To_TemplatesMySql")] + partial class Add_RequirePasswordChange_To_TemplatesMySql + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.18") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("FieldMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "FieldMapId"); + + b.HasIndex("FieldMapId"); + + b.ToTable("AccessLevelFieldAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("ObjectMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "ObjectMapId"); + + b.HasIndex("ObjectMapId"); + + b.ToTable("AccessLevelObjectAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("PermissionMapsId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "PermissionMapsId"); + + b.HasIndex("PermissionMapsId"); + + b.ToTable("AccessLevelPermissionMapping"); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("MembersId") + .HasColumnType("int"); + + b.HasKey("ChatRoomId", "MembersId"); + + b.HasIndex("MembersId"); + + b.ToTable("AppUserChatRoom"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ADSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("ApplicationBaseDN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FQDN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Password") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ServerPort") + .HasColumnType("int"); + + b.Property("UseTLS") + .HasColumnType("tinyint(1)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectorySettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectoryFields"); + + b.HasData( + new + { + Id = 1, + DisplayName = "Last Name", + FieldName = "sn", + FieldType = 0 + }, + new + { + Id = 2, + DisplayName = "First Name", + FieldName = "givenname", + FieldType = 0 + }, + new + { + Id = 3, + DisplayName = "Office", + FieldName = "physicalDeliveryOfficeName", + FieldType = 0 + }, + new + { + Id = 4, + DisplayName = "Employee ID", + FieldName = "employeeId", + FieldType = 0 + }, + new + { + Id = 5, + DisplayName = "Home Directory", + FieldName = "homeDirectory", + FieldType = 0 + }, + new + { + Id = 6, + DisplayName = "Logon Script Path", + FieldName = "scriptPath", + FieldType = 0 + }, + new + { + Id = 7, + DisplayName = "Profile Path", + FieldName = "profilePath", + FieldType = 0 + }, + new + { + Id = 8, + DisplayName = "Home Phone Number", + FieldName = "homePhone", + FieldType = 0 + }, + new + { + Id = 9, + DisplayName = "Street Address", + FieldName = "streetAddress", + FieldType = 0 + }, + new + { + Id = 10, + DisplayName = "City", + FieldName = "l", + FieldType = 0 + }, + new + { + Id = 11, + DisplayName = "State", + FieldName = "st", + FieldType = 0 + }, + new + { + Id = 12, + DisplayName = "Zip Code", + FieldName = "postalCode", + FieldType = 0 + }, + new + { + Id = 13, + DisplayName = "Site", + FieldName = "site", + FieldType = 0 + }, + new + { + Id = 14, + DisplayName = "Name", + FieldName = "name", + FieldType = 0 + }, + new + { + Id = 15, + DisplayName = "Username", + FieldName = "samaccountname", + FieldType = 0 + }, + new + { + Id = 16, + DisplayName = "SID", + FieldName = "objectSID", + FieldType = 2 + }, + new + { + Id = 17, + DisplayName = "E-Mail Address", + FieldName = "mail", + FieldType = 0 + }, + new + { + Id = 18, + DisplayName = "Description", + FieldName = "description", + FieldType = 0 + }, + new + { + Id = 19, + DisplayName = "Display Name", + FieldName = "displayName", + FieldType = 0 + }, + new + { + Id = 20, + DisplayName = "Distinguished Name", + FieldName = "distinguishedName", + FieldType = 0 + }, + new + { + Id = 21, + DisplayName = "Member Of", + FieldName = "memberOf", + FieldType = 4 + }, + new + { + Id = 22, + DisplayName = "Company", + FieldName = "company", + FieldType = 0 + }, + new + { + Id = 23, + DisplayName = "Title", + FieldName = "title", + FieldType = 0 + }, + new + { + Id = 24, + DisplayName = "User Principal Name", + FieldName = "userPrincipalName", + FieldType = 0 + }, + new + { + Id = 25, + DisplayName = "Telephone Number", + FieldName = "telephoneNumber", + FieldType = 0 + }, + new + { + Id = 26, + DisplayName = "PO Box", + FieldName = "postOfficeBox", + FieldType = 0 + }, + new + { + Id = 27, + DisplayName = "Canonical Name", + FieldName = "cn", + FieldType = 0 + }, + new + { + Id = 28, + DisplayName = "Home Drive", + FieldName = "homeDrive", + FieldType = 3 + }, + new + { + Id = 29, + DisplayName = "Department", + FieldName = "department", + FieldType = 0 + }, + new + { + Id = 30, + DisplayName = "Middle Name", + FieldName = "middleName", + FieldType = 0 + }, + new + { + Id = 31, + DisplayName = "Pager", + FieldName = "pager", + FieldType = 0 + }, + new + { + Id = 32, + DisplayName = "OS", + FieldName = "operatingSystemVersion", + FieldType = 0 + }, + new + { + Id = 33, + DisplayName = "Account Expiration", + FieldName = "accountExpires", + FieldType = 1 + }, + new + { + Id = 34, + DisplayName = "Manager", + FieldName = "manager", + FieldType = 0 + }, + new + { + Id = 35, + DisplayName = "Photo", + FieldName = "thumbnail", + FieldType = 2 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("CustomActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomActiveDirectoryFieldId"); + + b.ToTable("ActiveDirectoryFieldObjectMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AppSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AnalyticsId") + .HasColumnType("longtext"); + + b.Property("AppFQDN") + .HasColumnType("longtext"); + + b.Property("AppIcon") + .HasColumnType("longblob"); + + b.Property("AppName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AutoUpdate") + .HasColumnType("tinyint(1)"); + + b.Property("AutoUpdateTime") + .HasColumnType("time(6)"); + + b.Property("ForceHTTPS") + .HasColumnType("tinyint(1)"); + + b.Property("InstallationCompleted") + .HasColumnType("tinyint(1)"); + + b.Property("LastUpdateCheck") + .HasColumnType("datetime(6)"); + + b.Property("MOTD") + .HasColumnType("longtext"); + + b.Property("MyrtilleURL") + .HasColumnType("longtext"); + + b.Property("SSLCertificateCipher") + .HasColumnType("longtext"); + + b.Property("SendDeveloperAnalytics") + .HasColumnType("tinyint(1)"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("tinyint(1)"); + + b.Property("UpdateBranch") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UpdateDomain") + .HasColumnType("longtext"); + + b.Property("UpdatePassword") + .HasColumnType("longtext"); + + b.Property("UpdateUsername") + .HasColumnType("longtext"); + + b.Property("UseUpdateCredentials") + .HasColumnType("tinyint(1)"); + + b.Property("UserHelpdeskURL") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("AppSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1") + .HasName("CK_Table_Column1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.DirectoryEntryAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Sid") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("DirectoryEntryAuditLogs"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.LogonAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("LogonAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.PermissionsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("PermissionsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.RequestAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("RequestAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SettingsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("SettingsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SystemAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AfterAction") + .HasColumnType("longtext"); + + b.Property("BeforeAction") + .HasColumnType("longtext"); + + b.Property("IpAddress") + .HasColumnType("longtext"); + + b.Property("Target") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("SystemAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AuthenticationSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminPassword") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("DuoApiHost") + .HasColumnType("longtext"); + + b.Property("DuoClientId") + .HasColumnType("longtext"); + + b.Property("DuoClientSecret") + .HasColumnType("longtext"); + + b.Property("DuoEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("DuoUnreachableBehavior") + .HasColumnType("int"); + + b.Property("SessionTimeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1") + .HasName("CK_Table_Column2"); + }); + + b.HasData( + new + { + Id = 1, + AdminPassword = "password", + DuoEnabled = false, + DuoUnreachableBehavior = 0, + SessionTimeout = 15 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)"); + + b.Property("MembersHash") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ChatRooms"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ChatMessageId") + .HasColumnType("int"); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatMessageId"); + + b.ToTable("UnreadChatMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("CustomActiveDirectoryFields"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminBcc") + .HasColumnType("longtext"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("FromAddress") + .HasColumnType("longtext"); + + b.Property("FromName") + .HasColumnType("longtext"); + + b.Property("ReplyToAddress") + .HasColumnType("longtext"); + + b.Property("ReplyToName") + .HasColumnType("longtext"); + + b.Property("SMTPPassword") + .HasColumnType("longtext"); + + b.Property("SMTPPort") + .HasColumnType("int"); + + b.Property("SMTPServer") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("SMTPUsername") + .HasColumnType("longtext"); + + b.Property("UseSMTPAuth") + .HasColumnType("tinyint(1)"); + + b.Property("UseTLS") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("EmailSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "Id = 1") + .HasName("CK_Table_Column3"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Body") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("CC") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("TemplateName") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("EmailTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("AccessLevels"); + + b.HasData( + new + { + Id = 1, + Name = "Deny All" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AccessLevelId") + .HasColumnType("int"); + + b.Property("AllowOrDeny") + .HasColumnType("tinyint(1)"); + + b.Property("ObjectActionId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AccessLevelId"); + + b.HasIndex("ObjectActionId"); + + b.ToTable("ActionAccessMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("FieldAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 100, + Name = "Read" + }, + new + { + Id = 3, + Level = 1000, + Name = "Edit" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("FieldAccessLevelId") + .HasColumnType("int"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("FieldAccessLevelId"); + + b.HasIndex("FieldId"); + + b.ToTable("AccessLevelFieldMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ObjectAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 1000, + Name = "Read" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AllowDisabled") + .HasColumnType("tinyint(1)"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("ObjectAccessLevelId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ObjectAccessLevelId"); + + b.ToTable("AccessLevelObjectMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Action") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("ObjectActionFlag"); + + b.HasData( + new + { + Id = 1, + Action = 4, + Name = "Assign" + }, + new + { + Id = 2, + Action = 3, + Name = "UnAssign" + }, + new + { + Id = 3, + Action = 8, + Name = "Unlock" + }, + new + { + Id = 4, + Action = 5, + Name = "Enable" + }, + new + { + Id = 5, + Action = 6, + Name = "Disable" + }, + new + { + Id = 6, + Action = 7, + Name = "Rename" + }, + new + { + Id = 7, + Action = 0, + Name = "Move" + }, + new + { + Id = 8, + Action = 2, + Name = "Create" + }, + new + { + Id = 9, + Action = 1, + Name = "Delete" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionDelegate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DelegateSid") + .IsRequired() + .HasColumnType("varbinary(3072)"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("IsSuperAdmin") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("DelegateSid") + .IsUnique(); + + b.ToTable("PermissionDelegate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("OU") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("PermissionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AllowCustomGroups") + .HasColumnType("tinyint(1)"); + + b.Property("Category") + .HasColumnType("longtext"); + + b.Property("DeletedAt") + .HasColumnType("datetime(6)"); + + b.Property("DisplayNameFormula") + .HasColumnType("longtext"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("ParentOU") + .HasColumnType("longtext"); + + b.Property("ParentTemplateId") + .HasColumnType("int"); + + b.Property("PasswordFormula") + .HasColumnType("longtext"); + + b.Property("RequirePasswordChange") + .HasColumnType("tinyint(1)"); + + b.Property("UsernameFormula") + .HasColumnType("longtext"); + + b.Property("Visible") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("ParentTemplateId"); + + b.ToTable("DirectoryTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("Editable") + .HasColumnType("tinyint(1)"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("DirectoryTemplateId"); + + b.HasIndex("FieldId"); + + b.ToTable("DirectoryTemplateFieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("GroupSid") + .IsRequired() + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("DirectoryTemplateId"); + + b.ToTable("DirectoryTemplateGroups"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("APIToken") + .HasColumnType("longtext"); + + b.Property("DarkMode") + .HasColumnType("tinyint(1)"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("ProfilePicture") + .HasColumnType("longblob"); + + b.Property("SearchDisabledComputers") + .HasColumnType("tinyint(1)"); + + b.Property("SearchDisabledUsers") + .HasColumnType("tinyint(1)"); + + b.Property("Theme") + .HasColumnType("longtext"); + + b.Property("UserGUID") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("Username") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("UserGUID") + .IsUnique(); + + b.ToTable("UserSettings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.NotificationMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Created") + .HasColumnType("datetime(6)"); + + b.Property("Dismissable") + .HasColumnType("tinyint(1)"); + + b.Property("Expires") + .HasColumnType("datetime(6)"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Link") + .HasColumnType("longtext"); + + b.Property("Message") + .HasColumnType("longtext"); + + b.Property("Title") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("NotificationMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("NewsItemId") + .HasColumnType("double"); + + b.Property("NewsItemUpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Slot") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WidgetType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserDashboardWidgets"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("DN") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteEntries"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("IsRead") + .HasColumnType("tinyint(1)"); + + b.Property("NotificationId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.HasIndex("UserId"); + + b.ToTable("UserNotifications"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("Message") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatRoomId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.Property("PermissionDelegatesId") + .HasColumnType("int"); + + b.Property("PermissionsMapsId") + .HasColumnType("int"); + + b.HasKey("PermissionDelegatesId", "PermissionsMapsId"); + + b.HasIndex("PermissionsMapsId"); + + b.ToTable("PermissionDelegatePermissionMapping"); + }); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessMapping", null) + .WithMany() + .HasForeignKey("FieldMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", null) + .WithMany() + .HasForeignKey("ObjectMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", null) + .WithMany() + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", null) + .WithMany() + .HasForeignKey("MembersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", null) + .WithMany("ObjectTypes") + .HasForeignKey("CustomActiveDirectoryFieldId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.HasOne("BLAZAM.Server.Data.ChatMessage", "ChatMessage") + .WithMany("NotReadBy") + .HasForeignKey("ChatMessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatMessage"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany("ActionMap") + .HasForeignKey("AccessLevelId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAction", "ObjectAction") + .WithMany() + .HasForeignKey("ObjectActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAction"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessLevel", "FieldAccessLevel") + .WithMany() + .HasForeignKey("FieldAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + + b.Navigation("FieldAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", "ObjectAccessLevel") + .WithMany("ObjectAccessMappings") + .HasForeignKey("ObjectAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", "ParentTemplate") + .WithMany() + .HasForeignKey("ParentTemplateId"); + + b.Navigation("ParentTemplate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("FieldValues") + .HasForeignKey("DirectoryTemplateId"); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("AssignedGroupSids") + .HasForeignKey("DirectoryTemplateId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("ReadNewsItems") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("DashboardWidgets") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("FavoriteEntries") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.HasOne("BLAZAM.Database.Models.User.NotificationMessage", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", "ChatRoom") + .WithMany("Messages") + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatRoom"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionDelegate", null) + .WithMany() + .HasForeignKey("PermissionDelegatesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionsMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Navigation("ObjectTypes"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Navigation("ActionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Navigation("ObjectAccessMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Navigation("AssignedGroupSids"); + + b.Navigation("FieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Navigation("DashboardWidgets"); + + b.Navigation("FavoriteEntries"); + + b.Navigation("Messages"); + + b.Navigation("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Navigation("NotReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.cs b/BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.cs new file mode 100644 index 00000000..896d2569 --- /dev/null +++ b/BLAZAMDatabase/Migrations/MySql/20240501175454_Add_RequirePasswordChange_To_TemplatesMySql.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BLAZAM.Database.Migrations.MySql +{ + /// + public partial class Add_RequirePasswordChange_To_TemplatesMySql : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "RequirePasswordChange", + table: "DirectoryTemplates", + type: "tinyint(1)", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "RequirePasswordChange", + table: "DirectoryTemplates"); + } + } +} diff --git a/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs b/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs index 28be53c6..f6c4bfd5 100644 --- a/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs +++ b/BLAZAMDatabase/Migrations/MySql/MySqlDatabaseContextModelSnapshot.cs @@ -1221,6 +1221,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("PasswordFormula") .HasColumnType("longtext"); + b.Property("RequirePasswordChange") + .HasColumnType("tinyint(1)"); + b.Property("UsernameFormula") .HasColumnType("longtext"); diff --git a/BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.Designer.cs b/BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.Designer.cs new file mode 100644 index 00000000..e60e3302 --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.Designer.cs @@ -0,0 +1,1868 @@ +// +using System; +using BLAZAM.Database.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sql +{ + [DbContext(typeof(SqlDatabaseContext))] + [Migration("20240501175443_Add_RequirePasswordChange_To_TemplatesSql")] + partial class Add_RequirePasswordChange_To_TemplatesSql + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.18") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("FieldMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "FieldMapId"); + + b.HasIndex("FieldMapId"); + + b.ToTable("AccessLevelFieldAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("ObjectMapId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "ObjectMapId"); + + b.HasIndex("ObjectMapId"); + + b.ToTable("AccessLevelObjectAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("int"); + + b.Property("PermissionMapsId") + .HasColumnType("int"); + + b.HasKey("AccessLevelsId", "PermissionMapsId"); + + b.HasIndex("PermissionMapsId"); + + b.ToTable("AccessLevelPermissionMapping"); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("MembersId") + .HasColumnType("int"); + + b.HasKey("ChatRoomId", "MembersId"); + + b.HasIndex("MembersId"); + + b.ToTable("AppUserChatRoom"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ADSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("ApplicationBaseDN") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FQDN") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ServerPort") + .HasColumnType("int"); + + b.Property("UseTLS") + .HasColumnType("bit"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectorySettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectoryFields"); + + b.HasData( + new + { + Id = 1, + DisplayName = "Last Name", + FieldName = "sn", + FieldType = 0 + }, + new + { + Id = 2, + DisplayName = "First Name", + FieldName = "givenname", + FieldType = 0 + }, + new + { + Id = 3, + DisplayName = "Office", + FieldName = "physicalDeliveryOfficeName", + FieldType = 0 + }, + new + { + Id = 4, + DisplayName = "Employee ID", + FieldName = "employeeId", + FieldType = 0 + }, + new + { + Id = 5, + DisplayName = "Home Directory", + FieldName = "homeDirectory", + FieldType = 0 + }, + new + { + Id = 6, + DisplayName = "Logon Script Path", + FieldName = "scriptPath", + FieldType = 0 + }, + new + { + Id = 7, + DisplayName = "Profile Path", + FieldName = "profilePath", + FieldType = 0 + }, + new + { + Id = 8, + DisplayName = "Home Phone Number", + FieldName = "homePhone", + FieldType = 0 + }, + new + { + Id = 9, + DisplayName = "Street Address", + FieldName = "streetAddress", + FieldType = 0 + }, + new + { + Id = 10, + DisplayName = "City", + FieldName = "l", + FieldType = 0 + }, + new + { + Id = 11, + DisplayName = "State", + FieldName = "st", + FieldType = 0 + }, + new + { + Id = 12, + DisplayName = "Zip Code", + FieldName = "postalCode", + FieldType = 0 + }, + new + { + Id = 13, + DisplayName = "Site", + FieldName = "site", + FieldType = 0 + }, + new + { + Id = 14, + DisplayName = "Name", + FieldName = "name", + FieldType = 0 + }, + new + { + Id = 15, + DisplayName = "Username", + FieldName = "samaccountname", + FieldType = 0 + }, + new + { + Id = 16, + DisplayName = "SID", + FieldName = "objectSID", + FieldType = 2 + }, + new + { + Id = 17, + DisplayName = "E-Mail Address", + FieldName = "mail", + FieldType = 0 + }, + new + { + Id = 18, + DisplayName = "Description", + FieldName = "description", + FieldType = 0 + }, + new + { + Id = 19, + DisplayName = "Display Name", + FieldName = "displayName", + FieldType = 0 + }, + new + { + Id = 20, + DisplayName = "Distinguished Name", + FieldName = "distinguishedName", + FieldType = 0 + }, + new + { + Id = 21, + DisplayName = "Member Of", + FieldName = "memberOf", + FieldType = 4 + }, + new + { + Id = 22, + DisplayName = "Company", + FieldName = "company", + FieldType = 0 + }, + new + { + Id = 23, + DisplayName = "Title", + FieldName = "title", + FieldType = 0 + }, + new + { + Id = 24, + DisplayName = "User Principal Name", + FieldName = "userPrincipalName", + FieldType = 0 + }, + new + { + Id = 25, + DisplayName = "Telephone Number", + FieldName = "telephoneNumber", + FieldType = 0 + }, + new + { + Id = 26, + DisplayName = "PO Box", + FieldName = "postOfficeBox", + FieldType = 0 + }, + new + { + Id = 27, + DisplayName = "Canonical Name", + FieldName = "cn", + FieldType = 0 + }, + new + { + Id = 28, + DisplayName = "Home Drive", + FieldName = "homeDrive", + FieldType = 3 + }, + new + { + Id = 29, + DisplayName = "Department", + FieldName = "department", + FieldType = 0 + }, + new + { + Id = 30, + DisplayName = "Middle Name", + FieldName = "middleName", + FieldType = 0 + }, + new + { + Id = 31, + DisplayName = "Pager", + FieldName = "pager", + FieldType = 0 + }, + new + { + Id = 32, + DisplayName = "OS", + FieldName = "operatingSystemVersion", + FieldType = 0 + }, + new + { + Id = 33, + DisplayName = "Account Expiration", + FieldName = "accountExpires", + FieldType = 1 + }, + new + { + Id = 34, + DisplayName = "Manager", + FieldName = "manager", + FieldType = 0 + }, + new + { + Id = 35, + DisplayName = "Photo", + FieldName = "thumbnail", + FieldType = 2 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("CustomActiveDirectoryFieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomActiveDirectoryFieldId"); + + b.ToTable("ActiveDirectoryFieldObjectMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AppSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AnalyticsId") + .HasColumnType("nvarchar(max)"); + + b.Property("AppFQDN") + .HasColumnType("nvarchar(max)"); + + b.Property("AppIcon") + .HasColumnType("varbinary(max)"); + + b.Property("AppName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AutoUpdate") + .HasColumnType("bit"); + + b.Property("AutoUpdateTime") + .HasColumnType("time"); + + b.Property("ForceHTTPS") + .HasColumnType("bit"); + + b.Property("InstallationCompleted") + .HasColumnType("bit"); + + b.Property("LastUpdateCheck") + .HasColumnType("datetime2"); + + b.Property("MOTD") + .HasColumnType("nvarchar(max)"); + + b.Property("MyrtilleURL") + .HasColumnType("nvarchar(max)"); + + b.Property("SSLCertificateCipher") + .HasColumnType("nvarchar(max)"); + + b.Property("SendDeveloperAnalytics") + .HasColumnType("bit"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("bit"); + + b.Property("UpdateBranch") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UpdateDomain") + .HasColumnType("nvarchar(max)"); + + b.Property("UpdatePassword") + .HasColumnType("nvarchar(max)"); + + b.Property("UpdateUsername") + .HasColumnType("nvarchar(max)"); + + b.Property("UseUpdateCredentials") + .HasColumnType("bit"); + + b.Property("UserHelpdeskURL") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("AppSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1") + .HasName("CK_Table_Column1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.DirectoryEntryAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Sid") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("DirectoryEntryAuditLogs"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.LogonAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("LogonAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.PermissionsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("PermissionsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.RequestAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("RequestAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SettingsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("SettingsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SystemAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("AfterAction") + .HasColumnType("nvarchar(max)"); + + b.Property("BeforeAction") + .HasColumnType("nvarchar(max)"); + + b.Property("IpAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("Target") + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("SystemAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AuthenticationSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminPassword") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DuoApiHost") + .HasColumnType("nvarchar(max)"); + + b.Property("DuoClientId") + .HasColumnType("nvarchar(max)"); + + b.Property("DuoClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("DuoEnabled") + .HasColumnType("bit"); + + b.Property("DuoUnreachableBehavior") + .HasColumnType("int"); + + b.Property("SessionTimeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1") + .HasName("CK_Table_Column2"); + }); + + b.HasData( + new + { + Id = 1, + AdminPassword = "password", + DuoEnabled = false, + DuoUnreachableBehavior = 0, + SessionTimeout = 15 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("IsPublic") + .HasColumnType("bit"); + + b.Property("MembersHash") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ChatRooms"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChatMessageId") + .HasColumnType("int"); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatMessageId"); + + b.ToTable("UnreadChatMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("FieldType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("CustomActiveDirectoryFields"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailSettings", b => + { + b.Property("Id") + .HasColumnType("int"); + + b.Property("AdminBcc") + .HasColumnType("nvarchar(max)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("FromAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("FromName") + .HasColumnType("nvarchar(max)"); + + b.Property("ReplyToAddress") + .HasColumnType("nvarchar(max)"); + + b.Property("ReplyToName") + .HasColumnType("nvarchar(max)"); + + b.Property("SMTPPassword") + .HasColumnType("nvarchar(max)"); + + b.Property("SMTPPort") + .HasColumnType("int"); + + b.Property("SMTPServer") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("SMTPUsername") + .HasColumnType("nvarchar(max)"); + + b.Property("UseSMTPAuth") + .HasColumnType("bit"); + + b.Property("UseTLS") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.ToTable("EmailSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1") + .HasName("CK_Table_Column3"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("BCC") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Body") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CC") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TemplateName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("EmailTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("AccessLevels"); + + b.HasData( + new + { + Id = 1, + Name = "Deny All" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AccessLevelId") + .HasColumnType("int"); + + b.Property("AllowOrDeny") + .HasColumnType("bit"); + + b.Property("ObjectActionId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AccessLevelId"); + + b.HasIndex("ObjectActionId"); + + b.ToTable("ActionAccessMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("FieldAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 100, + Name = "Read" + }, + new + { + Id = 3, + Level = 1000, + Name = "Edit" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("FieldAccessLevelId") + .HasColumnType("int"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("FieldAccessLevelId"); + + b.HasIndex("FieldId"); + + b.ToTable("AccessLevelFieldMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ObjectAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 1000, + Name = "Read" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AllowDisabled") + .HasColumnType("bit"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("ObjectAccessLevelId") + .HasColumnType("int"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ObjectAccessLevelId"); + + b.ToTable("AccessLevelObjectMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Action") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("ObjectActionFlag"); + + b.HasData( + new + { + Id = 1, + Action = 4, + Name = "Assign" + }, + new + { + Id = 2, + Action = 3, + Name = "UnAssign" + }, + new + { + Id = 3, + Action = 8, + Name = "Unlock" + }, + new + { + Id = 4, + Action = 5, + Name = "Enable" + }, + new + { + Id = 5, + Action = 6, + Name = "Disable" + }, + new + { + Id = 6, + Action = 7, + Name = "Rename" + }, + new + { + Id = 7, + Action = 0, + Name = "Move" + }, + new + { + Id = 8, + Action = 2, + Name = "Create" + }, + new + { + Id = 9, + Action = 1, + Name = "Delete" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionDelegate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DelegateSid") + .IsRequired() + .HasColumnType("varbinary(900)"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("IsSuperAdmin") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("DelegateSid") + .IsUnique(); + + b.ToTable("PermissionDelegate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("OU") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("PermissionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AllowCustomGroups") + .HasColumnType("bit"); + + b.Property("Category") + .HasColumnType("nvarchar(max)"); + + b.Property("DeletedAt") + .HasColumnType("datetime2"); + + b.Property("DisplayNameFormula") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("ParentOU") + .HasColumnType("nvarchar(max)"); + + b.Property("ParentTemplateId") + .HasColumnType("int"); + + b.Property("PasswordFormula") + .HasColumnType("nvarchar(max)"); + + b.Property("RequirePasswordChange") + .HasColumnType("bit"); + + b.Property("UsernameFormula") + .HasColumnType("nvarchar(max)"); + + b.Property("Visible") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("ParentTemplateId"); + + b.ToTable("DirectoryTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CustomFieldId") + .HasColumnType("int"); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("Editable") + .HasColumnType("bit"); + + b.Property("FieldId") + .HasColumnType("int"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("DirectoryTemplateId"); + + b.HasIndex("FieldId"); + + b.ToTable("DirectoryTemplateFieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DirectoryTemplateId") + .HasColumnType("int"); + + b.Property("GroupSid") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DirectoryTemplateId"); + + b.ToTable("DirectoryTemplateGroups"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("APIToken") + .HasColumnType("nvarchar(max)"); + + b.Property("DarkMode") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("ProfilePicture") + .HasColumnType("varbinary(max)"); + + b.Property("SearchDisabledComputers") + .HasColumnType("bit"); + + b.Property("SearchDisabledUsers") + .HasColumnType("bit"); + + b.Property("Theme") + .HasColumnType("nvarchar(max)"); + + b.Property("UserGUID") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Username") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("UserGUID") + .IsUnique(); + + b.ToTable("UserSettings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.NotificationMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Created") + .HasColumnType("datetime2"); + + b.Property("Dismissable") + .HasColumnType("bit"); + + b.Property("Expires") + .HasColumnType("datetime2"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Link") + .HasColumnType("nvarchar(max)"); + + b.Property("Message") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("NotificationMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("NewsItemId") + .HasColumnType("float"); + + b.Property("NewsItemUpdatedAt") + .HasColumnType("datetime2"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Slot") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("WidgetType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserDashboardWidgets"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DN") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteEntries"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("IsRead") + .HasColumnType("bit"); + + b.Property("NotificationId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.HasIndex("UserId"); + + b.ToTable("UserNotifications"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ChatRoomId") + .HasColumnType("int"); + + b.Property("Message") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Timestamp") + .HasColumnType("datetime2"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ChatRoomId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.Property("PermissionDelegatesId") + .HasColumnType("int"); + + b.Property("PermissionsMapsId") + .HasColumnType("int"); + + b.HasKey("PermissionDelegatesId", "PermissionsMapsId"); + + b.HasIndex("PermissionsMapsId"); + + b.ToTable("PermissionDelegatePermissionMapping"); + }); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessMapping", null) + .WithMany() + .HasForeignKey("FieldMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", null) + .WithMany() + .HasForeignKey("ObjectMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", null) + .WithMany() + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", null) + .WithMany() + .HasForeignKey("MembersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", null) + .WithMany("ObjectTypes") + .HasForeignKey("CustomActiveDirectoryFieldId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.HasOne("BLAZAM.Server.Data.ChatMessage", "ChatMessage") + .WithMany("NotReadBy") + .HasForeignKey("ChatMessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatMessage"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany("ActionMap") + .HasForeignKey("AccessLevelId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAction", "ObjectAction") + .WithMany() + .HasForeignKey("ObjectActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAction"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessLevel", "FieldAccessLevel") + .WithMany() + .HasForeignKey("FieldAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + + b.Navigation("FieldAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", "ObjectAccessLevel") + .WithMany("ObjectAccessMappings") + .HasForeignKey("ObjectAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", "ParentTemplate") + .WithMany() + .HasForeignKey("ParentTemplateId"); + + b.Navigation("ParentTemplate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("FieldValues") + .HasForeignKey("DirectoryTemplateId"); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("AssignedGroupSids") + .HasForeignKey("DirectoryTemplateId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("ReadNewsItems") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("DashboardWidgets") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("FavoriteEntries") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.HasOne("BLAZAM.Database.Models.User.NotificationMessage", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", "ChatRoom") + .WithMany("Messages") + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatRoom"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionDelegate", null) + .WithMany() + .HasForeignKey("PermissionDelegatesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionsMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Navigation("ObjectTypes"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Navigation("ActionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Navigation("ObjectAccessMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Navigation("AssignedGroupSids"); + + b.Navigation("FieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Navigation("DashboardWidgets"); + + b.Navigation("FavoriteEntries"); + + b.Navigation("Messages"); + + b.Navigation("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Navigation("NotReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.cs b/BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.cs new file mode 100644 index 00000000..9fbbd830 --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sql/20240501175443_Add_RequirePasswordChange_To_TemplatesSql.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sql +{ + /// + public partial class Add_RequirePasswordChange_To_TemplatesSql : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "RequirePasswordChange", + table: "DirectoryTemplates", + type: "bit", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "RequirePasswordChange", + table: "DirectoryTemplates"); + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs b/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs index 3a475aba..f9e57b4e 100644 --- a/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs +++ b/BLAZAMDatabase/Migrations/Sql/SqlDatabaseContextModelSnapshot.cs @@ -1268,6 +1268,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("PasswordFormula") .HasColumnType("nvarchar(max)"); + b.Property("RequirePasswordChange") + .HasColumnType("bit"); + b.Property("UsernameFormula") .HasColumnType("nvarchar(max)"); diff --git a/BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.Designer.cs b/BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.Designer.cs new file mode 100644 index 00000000..6adbd8ec --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.Designer.cs @@ -0,0 +1,1798 @@ +// +using System; +using BLAZAM.Database.Context; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteDatabaseContext))] + [Migration("20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite")] + partial class Add_RequirePasswordChange_To_TemplatesSqlite + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.18"); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("INTEGER"); + + b.Property("FieldMapId") + .HasColumnType("INTEGER"); + + b.HasKey("AccessLevelsId", "FieldMapId"); + + b.HasIndex("FieldMapId"); + + b.ToTable("AccessLevelFieldAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("INTEGER"); + + b.Property("ObjectMapId") + .HasColumnType("INTEGER"); + + b.HasKey("AccessLevelsId", "ObjectMapId"); + + b.HasIndex("ObjectMapId"); + + b.ToTable("AccessLevelObjectAccessMapping"); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.Property("AccessLevelsId") + .HasColumnType("INTEGER"); + + b.Property("PermissionMapsId") + .HasColumnType("INTEGER"); + + b.HasKey("AccessLevelsId", "PermissionMapsId"); + + b.HasIndex("PermissionMapsId"); + + b.ToTable("AccessLevelPermissionMapping"); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.Property("ChatRoomId") + .HasColumnType("INTEGER"); + + b.Property("MembersId") + .HasColumnType("INTEGER"); + + b.HasKey("ChatRoomId", "MembersId"); + + b.HasIndex("MembersId"); + + b.ToTable("AppUserChatRoom"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ADSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("ApplicationBaseDN") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FQDN") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Password") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ServerPort") + .HasColumnType("INTEGER"); + + b.Property("UseTLS") + .HasColumnType("INTEGER"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectorySettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("ActiveDirectoryFields"); + + b.HasData( + new + { + Id = 1, + DisplayName = "Last Name", + FieldName = "sn", + FieldType = 0 + }, + new + { + Id = 2, + DisplayName = "First Name", + FieldName = "givenname", + FieldType = 0 + }, + new + { + Id = 3, + DisplayName = "Office", + FieldName = "physicalDeliveryOfficeName", + FieldType = 0 + }, + new + { + Id = 4, + DisplayName = "Employee ID", + FieldName = "employeeId", + FieldType = 0 + }, + new + { + Id = 5, + DisplayName = "Home Directory", + FieldName = "homeDirectory", + FieldType = 0 + }, + new + { + Id = 6, + DisplayName = "Logon Script Path", + FieldName = "scriptPath", + FieldType = 0 + }, + new + { + Id = 7, + DisplayName = "Profile Path", + FieldName = "profilePath", + FieldType = 0 + }, + new + { + Id = 8, + DisplayName = "Home Phone Number", + FieldName = "homePhone", + FieldType = 0 + }, + new + { + Id = 9, + DisplayName = "Street Address", + FieldName = "streetAddress", + FieldType = 0 + }, + new + { + Id = 10, + DisplayName = "City", + FieldName = "l", + FieldType = 0 + }, + new + { + Id = 11, + DisplayName = "State", + FieldName = "st", + FieldType = 0 + }, + new + { + Id = 12, + DisplayName = "Zip Code", + FieldName = "postalCode", + FieldType = 0 + }, + new + { + Id = 13, + DisplayName = "Site", + FieldName = "site", + FieldType = 0 + }, + new + { + Id = 14, + DisplayName = "Name", + FieldName = "name", + FieldType = 0 + }, + new + { + Id = 15, + DisplayName = "Username", + FieldName = "samaccountname", + FieldType = 0 + }, + new + { + Id = 16, + DisplayName = "SID", + FieldName = "objectSID", + FieldType = 2 + }, + new + { + Id = 17, + DisplayName = "E-Mail Address", + FieldName = "mail", + FieldType = 0 + }, + new + { + Id = 18, + DisplayName = "Description", + FieldName = "description", + FieldType = 0 + }, + new + { + Id = 19, + DisplayName = "Display Name", + FieldName = "displayName", + FieldType = 0 + }, + new + { + Id = 20, + DisplayName = "Distinguished Name", + FieldName = "distinguishedName", + FieldType = 0 + }, + new + { + Id = 21, + DisplayName = "Member Of", + FieldName = "memberOf", + FieldType = 4 + }, + new + { + Id = 22, + DisplayName = "Company", + FieldName = "company", + FieldType = 0 + }, + new + { + Id = 23, + DisplayName = "Title", + FieldName = "title", + FieldType = 0 + }, + new + { + Id = 24, + DisplayName = "User Principal Name", + FieldName = "userPrincipalName", + FieldType = 0 + }, + new + { + Id = 25, + DisplayName = "Telephone Number", + FieldName = "telephoneNumber", + FieldType = 0 + }, + new + { + Id = 26, + DisplayName = "PO Box", + FieldName = "postOfficeBox", + FieldType = 0 + }, + new + { + Id = 27, + DisplayName = "Canonical Name", + FieldName = "cn", + FieldType = 0 + }, + new + { + Id = 28, + DisplayName = "Home Drive", + FieldName = "homeDrive", + FieldType = 3 + }, + new + { + Id = 29, + DisplayName = "Department", + FieldName = "department", + FieldType = 0 + }, + new + { + Id = 30, + DisplayName = "Middle Name", + FieldName = "middleName", + FieldType = 0 + }, + new + { + Id = 31, + DisplayName = "Pager", + FieldName = "pager", + FieldType = 0 + }, + new + { + Id = 32, + DisplayName = "OS", + FieldName = "operatingSystemVersion", + FieldType = 0 + }, + new + { + Id = 33, + DisplayName = "Account Expiration", + FieldName = "accountExpires", + FieldType = 1 + }, + new + { + Id = 34, + DisplayName = "Manager", + FieldName = "manager", + FieldType = 0 + }, + new + { + Id = 35, + DisplayName = "Photo", + FieldName = "thumbnail", + FieldType = 2 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ActiveDirectoryFieldId") + .HasColumnType("INTEGER"); + + b.Property("CustomActiveDirectoryFieldId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("CustomActiveDirectoryFieldId"); + + b.ToTable("ActiveDirectoryFieldObjectMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AppSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("AnalyticsId") + .HasColumnType("TEXT"); + + b.Property("AppFQDN") + .HasColumnType("TEXT"); + + b.Property("AppIcon") + .HasColumnType("BLOB"); + + b.Property("AppName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AutoUpdate") + .HasColumnType("INTEGER"); + + b.Property("AutoUpdateTime") + .HasColumnType("TEXT"); + + b.Property("ForceHTTPS") + .HasColumnType("INTEGER"); + + b.Property("InstallationCompleted") + .HasColumnType("INTEGER"); + + b.Property("LastUpdateCheck") + .HasColumnType("TEXT"); + + b.Property("MOTD") + .HasColumnType("TEXT"); + + b.Property("MyrtilleURL") + .HasColumnType("TEXT"); + + b.Property("SSLCertificateCipher") + .HasColumnType("TEXT"); + + b.Property("SendDeveloperAnalytics") + .HasColumnType("INTEGER"); + + b.Property("SendLogsToDeveloper") + .HasColumnType("INTEGER"); + + b.Property("UpdateBranch") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdateDomain") + .HasColumnType("TEXT"); + + b.Property("UpdatePassword") + .HasColumnType("TEXT"); + + b.Property("UpdateUsername") + .HasColumnType("TEXT"); + + b.Property("UseUpdateCredentials") + .HasColumnType("INTEGER"); + + b.Property("UserHelpdeskURL") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("AppSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.DirectoryEntryAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Sid") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("DirectoryEntryAuditLogs"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.LogonAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("LogonAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.PermissionsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PermissionsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.RequestAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("RequestAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SettingsAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("SettingsAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Audit.SystemAuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("AfterAction") + .HasColumnType("TEXT"); + + b.Property("BeforeAction") + .HasColumnType("TEXT"); + + b.Property("IpAddress") + .HasColumnType("TEXT"); + + b.Property("Target") + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("SystemAuditLog"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.AuthenticationSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("AdminPassword") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DuoApiHost") + .HasColumnType("TEXT"); + + b.Property("DuoClientId") + .HasColumnType("TEXT"); + + b.Property("DuoClientSecret") + .HasColumnType("TEXT"); + + b.Property("DuoEnabled") + .HasColumnType("INTEGER"); + + b.Property("DuoUnreachableBehavior") + .HasColumnType("INTEGER"); + + b.Property("SessionTimeout") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("AuthenticationSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + + b.HasData( + new + { + Id = 1, + AdminPassword = "password", + DuoEnabled = false, + DuoUnreachableBehavior = 0, + SessionTimeout = 15 + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("IsPublic") + .HasColumnType("INTEGER"); + + b.Property("MembersHash") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ChatRooms"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ChatMessageId") + .HasColumnType("INTEGER"); + + b.Property("ChatRoomId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("ChatMessageId"); + + b.ToTable("UnreadChatMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FieldType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("CustomActiveDirectoryFields"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailSettings", b => + { + b.Property("Id") + .HasColumnType("INTEGER"); + + b.Property("AdminBcc") + .HasColumnType("TEXT"); + + b.Property("Enabled") + .HasColumnType("INTEGER"); + + b.Property("FromAddress") + .HasColumnType("TEXT"); + + b.Property("FromName") + .HasColumnType("TEXT"); + + b.Property("ReplyToAddress") + .HasColumnType("TEXT"); + + b.Property("ReplyToName") + .HasColumnType("TEXT"); + + b.Property("SMTPPassword") + .HasColumnType("TEXT"); + + b.Property("SMTPPort") + .HasColumnType("INTEGER"); + + b.Property("SMTPServer") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SMTPUsername") + .HasColumnType("TEXT"); + + b.Property("UseSMTPAuth") + .HasColumnType("INTEGER"); + + b.Property("UseTLS") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("EmailSettings", t => + { + t.HasCheckConstraint("CK_Table_Column", "[Id] = 1"); + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.EmailTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Body") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("CC") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TemplateName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("EmailTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("AccessLevels"); + + b.HasData( + new + { + Id = 1, + Name = "Deny All" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AccessLevelId") + .HasColumnType("INTEGER"); + + b.Property("AllowOrDeny") + .HasColumnType("INTEGER"); + + b.Property("ObjectActionId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("AccessLevelId"); + + b.HasIndex("ObjectActionId"); + + b.ToTable("ActionAccessMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("FieldAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 100, + Name = "Read" + }, + new + { + Id = 3, + Level = 1000, + Name = "Edit" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CustomFieldId") + .HasColumnType("INTEGER"); + + b.Property("FieldAccessLevelId") + .HasColumnType("INTEGER"); + + b.Property("FieldId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("FieldAccessLevelId"); + + b.HasIndex("FieldId"); + + b.ToTable("AccessLevelFieldMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ObjectAccessLevel"); + + b.HasData( + new + { + Id = 1, + Level = 10, + Name = "Deny" + }, + new + { + Id = 2, + Level = 1000, + Name = "Read" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AllowDisabled") + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("ObjectAccessLevelId") + .HasColumnType("INTEGER"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("ObjectAccessLevelId"); + + b.ToTable("AccessLevelObjectMapping"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Action") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("ObjectActionFlag"); + + b.HasData( + new + { + Id = 1, + Action = 4, + Name = "Assign" + }, + new + { + Id = 2, + Action = 3, + Name = "UnAssign" + }, + new + { + Id = 3, + Action = 8, + Name = "Unlock" + }, + new + { + Id = 4, + Action = 5, + Name = "Enable" + }, + new + { + Id = 5, + Action = 6, + Name = "Disable" + }, + new + { + Id = 6, + Action = 7, + Name = "Rename" + }, + new + { + Id = 7, + Action = 0, + Name = "Move" + }, + new + { + Id = 8, + Action = 2, + Name = "Create" + }, + new + { + Id = 9, + Action = 1, + Name = "Delete" + }); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionDelegate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DelegateSid") + .IsRequired() + .HasColumnType("BLOB"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("IsSuperAdmin") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("DelegateSid") + .IsUnique(); + + b.ToTable("PermissionDelegate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.PermissionMapping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("OU") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("PermissionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AllowCustomGroups") + .HasColumnType("INTEGER"); + + b.Property("Category") + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("DisplayNameFormula") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.Property("ParentOU") + .HasColumnType("TEXT"); + + b.Property("ParentTemplateId") + .HasColumnType("INTEGER"); + + b.Property("PasswordFormula") + .HasColumnType("TEXT"); + + b.Property("RequirePasswordChange") + .HasColumnType("INTEGER"); + + b.Property("UsernameFormula") + .HasColumnType("TEXT"); + + b.Property("Visible") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("ParentTemplateId"); + + b.ToTable("DirectoryTemplates"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CustomFieldId") + .HasColumnType("INTEGER"); + + b.Property("DirectoryTemplateId") + .HasColumnType("INTEGER"); + + b.Property("Editable") + .HasColumnType("INTEGER"); + + b.Property("FieldId") + .HasColumnType("INTEGER"); + + b.Property("Required") + .HasColumnType("INTEGER"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomFieldId"); + + b.HasIndex("DirectoryTemplateId"); + + b.HasIndex("FieldId"); + + b.ToTable("DirectoryTemplateFieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DirectoryTemplateId") + .HasColumnType("INTEGER"); + + b.Property("GroupSid") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("DirectoryTemplateId"); + + b.ToTable("DirectoryTemplateGroups"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("APIToken") + .HasColumnType("TEXT"); + + b.Property("DarkMode") + .HasColumnType("INTEGER"); + + b.Property("Email") + .HasColumnType("TEXT"); + + b.Property("ProfilePicture") + .HasColumnType("BLOB"); + + b.Property("SearchDisabledComputers") + .HasColumnType("INTEGER"); + + b.Property("SearchDisabledUsers") + .HasColumnType("INTEGER"); + + b.Property("Theme") + .HasColumnType("TEXT"); + + b.Property("UserGUID") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Username") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserGUID") + .IsUnique(); + + b.ToTable("UserSettings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.NotificationMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Created") + .HasColumnType("TEXT"); + + b.Property("Dismissable") + .HasColumnType("INTEGER"); + + b.Property("Expires") + .HasColumnType("TEXT"); + + b.Property("Level") + .HasColumnType("INTEGER"); + + b.Property("Link") + .HasColumnType("TEXT"); + + b.Property("Message") + .HasColumnType("TEXT"); + + b.Property("Title") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("NotificationMessages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("NewsItemId") + .HasColumnType("REAL"); + + b.Property("NewsItemUpdatedAt") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Order") + .HasColumnType("INTEGER"); + + b.Property("Slot") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.Property("WidgetType") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserDashboardWidgets"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DN") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteEntries"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("IsRead") + .HasColumnType("INTEGER"); + + b.Property("NotificationId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("NotificationId"); + + b.HasIndex("UserId"); + + b.ToTable("UserNotifications"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ChatRoomId") + .HasColumnType("INTEGER"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Timestamp") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("ChatRoomId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatMessages"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.Property("PermissionDelegatesId") + .HasColumnType("INTEGER"); + + b.Property("PermissionsMapsId") + .HasColumnType("INTEGER"); + + b.HasKey("PermissionDelegatesId", "PermissionsMapsId"); + + b.HasIndex("PermissionsMapsId"); + + b.ToTable("PermissionDelegatePermissionMapping"); + }); + + modelBuilder.Entity("AccessLevelFieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessMapping", null) + .WithMany() + .HasForeignKey("FieldMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", null) + .WithMany() + .HasForeignKey("ObjectMapId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AccessLevelPermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany() + .HasForeignKey("AccessLevelsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("AppUserChatRoom", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", null) + .WithMany() + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", null) + .WithMany() + .HasForeignKey("MembersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.ActiveDirectoryFieldObjectType", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", null) + .WithMany("ObjectTypes") + .HasForeignKey("CustomActiveDirectoryFieldId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.UnreadChatMessage", b => + { + b.HasOne("BLAZAM.Server.Data.ChatMessage", "ChatMessage") + .WithMany("NotReadBy") + .HasForeignKey("ChatMessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatMessage"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ActionAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.AccessLevel", null) + .WithMany("ActionMap") + .HasForeignKey("AccessLevelId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAction", "ObjectAction") + .WithMany() + .HasForeignKey("ObjectActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAction"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.FieldAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Permissions.FieldAccessLevel", "FieldAccessLevel") + .WithMany() + .HasForeignKey("FieldAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + + b.Navigation("FieldAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", "ObjectAccessLevel") + .WithMany("ObjectAccessMappings") + .HasForeignKey("ObjectAccessLevelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ObjectAccessLevel"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", "ParentTemplate") + .WithMany() + .HasForeignKey("ParentTemplateId"); + + b.Navigation("ParentTemplate"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateFieldValue", b => + { + b.HasOne("BLAZAM.Database.Models.CustomActiveDirectoryField", "CustomField") + .WithMany() + .HasForeignKey("CustomFieldId"); + + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("FieldValues") + .HasForeignKey("DirectoryTemplateId"); + + b.HasOne("BLAZAM.Database.Models.ActiveDirectoryField", "Field") + .WithMany() + .HasForeignKey("FieldId"); + + b.Navigation("CustomField"); + + b.Navigation("Field"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplateGroup", b => + { + b.HasOne("BLAZAM.Database.Models.Templates.DirectoryTemplate", null) + .WithMany("AssignedGroupSids") + .HasForeignKey("DirectoryTemplateId"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.ReadNewsItem", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("ReadNewsItems") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserDashboardWidget", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("DashboardWidgets") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserFavoriteEntry", b => + { + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("FavoriteEntries") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.UserNotification", b => + { + b.HasOne("BLAZAM.Database.Models.User.NotificationMessage", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.HasOne("BLAZAM.Database.Models.Chat.ChatRoom", "ChatRoom") + .WithMany("Messages") + .HasForeignKey("ChatRoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.User.AppUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChatRoom"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("PermissionDelegatePermissionMapping", b => + { + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionDelegate", null) + .WithMany() + .HasForeignKey("PermissionDelegatesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BLAZAM.Database.Models.Permissions.PermissionMapping", null) + .WithMany() + .HasForeignKey("PermissionsMapsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Chat.ChatRoom", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.CustomActiveDirectoryField", b => + { + b.Navigation("ObjectTypes"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.AccessLevel", b => + { + b.Navigation("ActionMap"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Permissions.ObjectAccessLevel", b => + { + b.Navigation("ObjectAccessMappings"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.Templates.DirectoryTemplate", b => + { + b.Navigation("AssignedGroupSids"); + + b.Navigation("FieldValues"); + }); + + modelBuilder.Entity("BLAZAM.Database.Models.User.AppUser", b => + { + b.Navigation("DashboardWidgets"); + + b.Navigation("FavoriteEntries"); + + b.Navigation("Messages"); + + b.Navigation("ReadNewsItems"); + }); + + modelBuilder.Entity("BLAZAM.Server.Data.ChatMessage", b => + { + b.Navigation("NotReadBy"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.cs b/BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.cs new file mode 100644 index 00000000..493e36e3 --- /dev/null +++ b/BLAZAMDatabase/Migrations/Sqlite/20240501175432_Add_RequirePasswordChange_To_TemplatesSqlite.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BLAZAM.Database.Migrations.Sqlite +{ + /// + public partial class Add_RequirePasswordChange_To_TemplatesSqlite : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "RequirePasswordChange", + table: "DirectoryTemplates", + type: "INTEGER", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "RequirePasswordChange", + table: "DirectoryTemplates"); + } + } +} diff --git a/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs b/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs index 542ac306..24aa299b 100644 --- a/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs +++ b/BLAZAMDatabase/Migrations/Sqlite/SqliteDatabaseContextModelSnapshot.cs @@ -1216,6 +1216,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("PasswordFormula") .HasColumnType("TEXT"); + b.Property("RequirePasswordChange") + .HasColumnType("INTEGER"); + b.Property("UsernameFormula") .HasColumnType("TEXT"); diff --git a/BLAZAMDatabase/Models/Templates/DirectoryTemplate.cs b/BLAZAMDatabase/Models/Templates/DirectoryTemplate.cs index a1ed725a..6dd09d50 100644 --- a/BLAZAMDatabase/Models/Templates/DirectoryTemplate.cs +++ b/BLAZAMDatabase/Models/Templates/DirectoryTemplate.cs @@ -38,11 +38,11 @@ public class DirectoryTemplate : RecoverableAppDbSetBase [NotMapped] - public string EffectiveDisplayNameFormula + public string? EffectiveDisplayNameFormula { get { - return GetEffectiveValue(t => t.DisplayNameFormula, t => t.EffectiveDisplayNameFormula); + return GetEffectiveValue(t => t.DisplayNameFormula, t => t.EffectiveDisplayNameFormula); } set => DisplayNameFormula = value; @@ -50,23 +50,35 @@ public string EffectiveDisplayNameFormula public string? PasswordFormula { get; set; } [NotMapped] - public string EffectivePasswordFormula + public string? EffectivePasswordFormula { get { - return GetEffectiveValue(t => t.PasswordFormula, t => t.EffectivePasswordFormula); + return GetEffectiveValue(t => t.PasswordFormula, t => t.EffectivePasswordFormula); } set => PasswordFormula = value; } + public bool? RequirePasswordChange { get; set; } + [NotMapped] + public bool? EffectiveRequirePasswordChange + { + get + { + return GetEffectiveValue(t => t.RequirePasswordChange, t => t.EffectiveRequirePasswordChange); + + } + set => RequirePasswordChange = value; + } + public string? UsernameFormula { get; set; } [NotMapped] - public string EffectiveUsernameFormula + public string? EffectiveUsernameFormula { get { - return GetEffectiveValue(t => t.UsernameFormula, t => t.EffectiveUsernameFormula); + return GetEffectiveValue(t => t.UsernameFormula, t => t.EffectiveUsernameFormula); } set => UsernameFormula = value; @@ -74,23 +86,23 @@ public string EffectiveUsernameFormula public string? ParentOU { get; set; } [NotMapped] - public string EffectiveParentOU + public string? EffectiveParentOU { get { - return GetEffectiveValue(t=>t.ParentOU,t=>t.EffectiveParentOU); + return GetEffectiveValue(t=>t.ParentOU,t=>t.EffectiveParentOU); } set => ParentOU = value; } - private string GetEffectiveValue(FunclocalSelector, Func effectiveSelector) + private T? GetEffectiveValue(FunclocalSelector, Func effectiveSelector) { if (localSelector.Invoke(this) == null) { - if (ParentTemplate == null) return ""; + if (ParentTemplate == null) return default(T); var effectiveValue = effectiveSelector.Invoke(ParentTemplate); if (effectiveValue == null) - return ""; + return default(T); else return effectiveValue; } diff --git a/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor b/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor index 18ece2ee..0c6e7a56 100644 --- a/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor +++ b/BLAZAMGui/UI/Settings/Templates/EditDirectoryTemplate.razor @@ -10,93 +10,94 @@ @AppLocalization["Current Template:"] @originalTemplate.Name - - - - - - - - - - - - + Label=@AppLocalization["Parent Template"] + Values="@dropdownTemplates.OrderBy(t=>t.Name)" + Value="@DirectoryTemplate.ParentTemplate" + ValueChanged="@ParentTemplateChanged" /> + + + + + + + + + + + - - {fn}:First Name
      -
      - + + {fn}:First Name
      +
      + - {fi}:First Initial
      -
      - - {mn}:Middle Name
      -
      - - {mi}:Middle Initial
      -
      - - {ln}:Last Name
      -
      - - {li}:Last Initial
      -
      - - {username}:Username
      -
      - - {AlphaNum[u/l]}:Random letter or number (optional force uppercase/lowercase)
      -
      - - {Alpha[u/l]}:Random letter (optional force uppercase/lowercase)
      -
      - - {Num}:Random number
      + {fi}:First Initial
      +
      + + {mn}:Middle Name
      +
      + + {mi}:Middle Initial
      +
      + + {ln}:Last Name
      +
      + + {li}:Last Initial
      +
      + + {username}:Username
      +
      + + {AlphaNum[u/l]}:Random letter or number (optional force uppercase/lowercase)
      +
      + + {Alpha[u/l]}:Random letter (optional force uppercase/lowercase)
      +
      + + {Num}:Random number
      -
      -
      -
      + + +
      - - @{ - var usernameFromTemplate = GetParentOfValue(DirectoryTemplate.EffectiveUsernameFormula, template => template.UsernameFormula); - var displayNameFromTemplateName = GetParentOfValue(DirectoryTemplate.EffectiveDisplayNameFormula, template => template.DisplayNameFormula); - var passwordFromTemplateName = GetParentOfValue(DirectoryTemplate.EffectivePasswordFormula, template => template.PasswordFormula); ; + + @{ + var usernameFromTemplate = GetParentOfValue(DirectoryTemplate.EffectiveUsernameFormula, template => template.UsernameFormula); + var displayNameFromTemplateName = GetParentOfValue(DirectoryTemplate.EffectiveDisplayNameFormula, template => template.DisplayNameFormula); + var passwordFromTemplateName = GetParentOfValue(DirectoryTemplate.EffectivePasswordFormula, template => template.PasswordFormula); ; + var requirePasswordChangeFromTemplateName = GetParentOfValue(DirectoryTemplate.EffectiveRequirePasswordChange, template => template.RequirePasswordChange); ; } - @if (DirectoryTemplate.ParentTemplate != null && DirectoryTemplate.ParentTemplate.EffectiveUsernameFormula != DirectoryTemplate.EffectiveUsernameFormula) @@ -106,7 +107,7 @@ await ParentTemplateChanged(null); - @if (DirectoryTemplate.ParentTemplate != null && DirectoryTemplate.ParentTemplate.EffectiveDisplayNameFormula != DirectoryTemplate.EffectiveDisplayNameFormula) @@ -123,7 +124,7 @@ await ParentTemplateChanged(null); @if (DirectoryTemplate.ParentTemplate != null && DirectoryTemplate.ParentTemplate.EffectivePasswordFormula != DirectoryTemplate.EffectivePasswordFormula) @@ -131,6 +132,18 @@ await ParentTemplateChanged(null); { DirectoryTemplate.PasswordFormula=null;}) /> } + + + + + + + @if (DirectoryTemplate.ParentTemplate != null && DirectoryTemplate.ParentTemplate.EffectiveRequirePasswordChange != DirectoryTemplate.EffectiveRequirePasswordChange) + { + { DirectoryTemplate.RequirePasswordChange=null;}) /> + } + @@ -176,7 +189,7 @@ await ParentTemplateChanged(null); } })> @field.DisplayName - + } @@ -209,38 +222,38 @@ await ParentTemplateChanged(null); @cellContext.Item.FieldDisplayName - - - - - - - - {ValueChanged(newValue,cellContext.Item);}) /> - - - - - - - - - - - - - - - - - - @if (DirectoryTemplate.IsValueOverriden(cellContext.Item)) + + + + + + + + {ValueChanged(newValue,cellContext.Item);}) /> + + + + + + + + + + + + + + + + + + @if (DirectoryTemplate.IsValueOverriden(cellContext.Item)) { {await RemoveField(cellContext.Item);}) /> } @@ -330,7 +343,7 @@ await ParentTemplateChanged(null); @buttonText - @if (DirectoryTemplate.Id == 0) + @if (DirectoryTemplate.Id == 0) { Cancel @@ -408,6 +421,8 @@ await ParentTemplateChanged(null); { if (_template == value) return; + if (Context != null) + value = Context?.DirectoryTemplates.First(dt => dt.Id == value.Id); _template = value; originalTemplate = value; DirectoryTemplateChanged.InvokeAsync(value); @@ -646,7 +661,7 @@ await ParentTemplateChanged(null); { if (Context.EntityIsTracked(DirectoryTemplate)) { - + } var result = await Context.SaveChangesAsync(); if (result > 0) @@ -666,7 +681,7 @@ await ParentTemplateChanged(null); /// /// Null if the value comes from the current /// template, otherwise the source template - private DirectoryTemplate? GetParentOfValue(string value, Func valueSelector) + private DirectoryTemplate? GetParentOfValue(T? value, Func valueSelector) { var templateCursor = DirectoryTemplate; var templateValue = valueSelector.Invoke(templateCursor); From 211310cad781a733fe270cc7550d84ed74b15996 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Wed, 1 May 2024 14:42:42 -0400 Subject: [PATCH 58/64] Fixed require password change option in "Set Password" modal --- .../ChangeUserPasswordModalContent.razor | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor b/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor index 31220418..59f860d9 100644 --- a/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor +++ b/BLAZAMGui/UI/Users/ChangeUserPasswordModalContent.razor @@ -1,5 +1,5 @@ @inherits AppModalContent - + @@ -14,10 +14,10 @@ @AppLocalization["Require change"] - + - -@code { + + @code { #nullable disable warnings string newPassword = ""; string newPasswordConfirm = ""; @@ -46,11 +46,22 @@ if (User.SetPassword(newPassword.ToSecureString(), requireChangeSwitch.Value)) { + if (requireChangeSwitch.Value) + { + User.RequirePasswordChange = true; + var job = await User.CommitChangesAsync(); + if (job.Result != JobResult.Passed) + { + Loggers.ActiveDirectryLogger.Error("Could not set password change required when setting password."); + + } + } SnackBarService.Success("Changed password for " + User.DisplayName); await AuditLogger.User.PasswordChanged(User, requireChangeSwitch.Value); await InvokeAsync(Close); + } else { From 31acd60cac26db07a7784dcc7979ef58d774a3e3 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Work Date: Wed, 1 May 2024 14:42:57 -0400 Subject: [PATCH 59/64] Implemented require password change for new template users --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/Pages/Users/CreateUser.razor | 4 +++- .../Adapters/AccountDirectoryAdapter.cs | 9 +++++++++ .../Interfaces/IAccountDirectoryAdapter.cs | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 29908e1d..ebe51ea4 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.05.01.1755 + 2024.05.01.1841 false BLAZAM False diff --git a/BLAZAM/Pages/Users/CreateUser.razor b/BLAZAM/Pages/Users/CreateUser.razor index b4d5ea59..3baaa676 100644 --- a/BLAZAM/Pages/Users/CreateUser.razor +++ b/BLAZAM/Pages/Users/CreateUser.razor @@ -270,7 +270,9 @@ newUser?.StagePasswordChange(customConfirmPassword.ToSecureString()); newUser.DisplayName = SelectedTemplate.GenerateDisplayName(newUserName); //newUser.SetPassword(SelectedTemplate.GeneratePassword().ToSecureString(),false); //newUser.CanonicalName = SelectedTemplate.GenerateDisplayName(newUserName); - newUser.StagePasswordChange(SelectedTemplate.GeneratePassword().ToSecureString(), true); + newUser.StagePasswordChange(SelectedTemplate.GeneratePassword().ToSecureString()); + if (SelectedTemplate.EffectiveRequirePasswordChange == true) + newUser.StageRequirePasswordChange(true); if (!newUserName.GivenName.IsNullOrEmpty()) newUser.GivenName = newUserName.GivenName; if (!newUserName.MiddleName.IsNullOrEmpty()) diff --git a/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs b/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs index d0821835..dbab5e79 100644 --- a/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs +++ b/BLAZAMActiveDirectory/Adapters/AccountDirectoryAdapter.cs @@ -233,7 +233,16 @@ public bool Enabled SetProperty("accountExpires", value?.ToUniversalTime().ToFileTime().ToString()); } } + public void StageRequirePasswordChange(bool requireChange) + { + PostCommitSteps.Add(new JobStep("Require Password Change", (JobStep? step) => + { + + RequirePasswordChange = requireChange; + return true; + })); + } public virtual bool RequirePasswordChange { get diff --git a/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs b/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs index 32848525..5d2260a2 100644 --- a/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs +++ b/BLAZAMActiveDirectory/Interfaces/IAccountDirectoryAdapter.cs @@ -85,5 +85,6 @@ public interface IAccountDirectoryAdapter : IGroupableDirectoryAdapter void StagePasswordChange(SecureString newPassword, bool requireChange = false); + void StageRequirePasswordChange(bool requireChange); } } \ No newline at end of file From ed8835c6b9029188218e01e40c10d606f17e32d2 Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Wed, 1 May 2024 17:07:47 -0400 Subject: [PATCH 60/64] Second time trying to fix exception when Duo config empty --- BLAZAM/BLAZAM.csproj | 4 ++-- BLAZAMGui/UI/Settings/AuthenticationSetting.razor | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 07ccbb41..c4868f48 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.04.29.2313 + 2024.05.01.2106 false BLAZAM False diff --git a/BLAZAMGui/UI/Settings/AuthenticationSetting.razor b/BLAZAMGui/UI/Settings/AuthenticationSetting.razor index c7a578b6..c1d666f0 100644 --- a/BLAZAMGui/UI/Settings/AuthenticationSetting.razor +++ b/BLAZAMGui/UI/Settings/AuthenticationSetting.razor @@ -108,8 +108,14 @@ { duoHealthCheckResult = null; await InvokeAsync(StateHasChanged); - - duoHealthCheckResult = await Duo.DoHealthCheckAsync(); + try + { + duoHealthCheckResult = await Duo.DoHealthCheckAsync(); + } + catch + { + + } await InvokeAsync(StateHasChanged); } private void UpdateTimeoutDisplay() From 40e5384a49521f659fc8d5d45985abca699d13cd Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Wed, 1 May 2024 18:43:07 -0400 Subject: [PATCH 61/64] Remove Require Password Change from main page --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAM/Pages/Users/ViewUser.razor | 4 +--- BLAZAMUpdate/BLAZAMUpdate.csproj | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 32e18308..c121cbd7 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.05.01.2106 + 2024.05.01.2221 false BLAZAM False diff --git a/BLAZAM/Pages/Users/ViewUser.razor b/BLAZAM/Pages/Users/ViewUser.razor index d3b4ae5c..073616c6 100644 --- a/BLAZAM/Pages/Users/ViewUser.razor +++ b/BLAZAM/Pages/Users/ViewUser.razor @@ -227,9 +227,7 @@ @bind-Value="@ConfirmPassword" InputType="InputType.Password" /> } - + - + From 73b97467bb9c3056e11604bbf5808da310e2027e Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Wed, 1 May 2024 19:04:54 -0400 Subject: [PATCH 62/64] Update logger not available during tests --- BLAZAM/BLAZAM.csproj | 2 +- BLAZAMUpdate/ApplicationUpdate.cs | 40 +++++++++++++++---------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index c121cbd7..8f249a90 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.05.01.2221 + 2024.05.01.2302 false BLAZAM False diff --git a/BLAZAMUpdate/ApplicationUpdate.cs b/BLAZAMUpdate/ApplicationUpdate.cs index e9ed0051..2b3a1a69 100644 --- a/BLAZAMUpdate/ApplicationUpdate.cs +++ b/BLAZAMUpdate/ApplicationUpdate.cs @@ -195,9 +195,9 @@ private async Task InitiateFileCopy(JobStep? step) //Update the updater first - Loggers.UpdateLogger.Debug("Copying updater script"); - Loggers.UpdateLogger.Debug("Source: " + UpdateStagingDirectory + "\\updater\\*"); - Loggers.UpdateLogger.Debug("Dest: " + _applicationRootDirectory + "updater\\"); + Loggers.UpdateLogger?.Debug("Copying updater script"); + Loggers.UpdateLogger?.Debug("Source: " + UpdateStagingDirectory + "\\updater\\*"); + Loggers.UpdateLogger?.Debug("Dest: " + _applicationRootDirectory + "updater\\"); using var context = await _dbFactory.CreateDbContextAsync(); @@ -205,14 +205,14 @@ private async Task InitiateFileCopy(JobStep? step) if (_applicationRootDirectory.Writable) { - Loggers.UpdateLogger.Warning("The application user has write permission to the application directory!"); + Loggers.UpdateLogger?.Warning("The application user has write permission to the application directory!"); try { return ApplyFiles(); } catch (Exception ex) { - Loggers.UpdateLogger.Error("Error applying update: {@Error}", ex); + Loggers.UpdateLogger?.Error("Error applying update: {@Error}", ex); } return false; @@ -236,7 +236,7 @@ private async Task InitiateFileCopy(JobStep? step) } catch (Exception ex) { - Loggers.UpdateLogger.Error("Error applying update: {@Error}", ex); + Loggers.UpdateLogger?.Error("Error applying update: {@Error}", ex); } return false; @@ -246,7 +246,7 @@ private async Task InitiateFileCopy(JobStep? step) } catch (ApplicationException ex) { - Loggers.UpdateLogger.Error("Unable to apply files {@Error}", ex); + Loggers.UpdateLogger?.Error("Unable to apply files {@Error}", ex); return false; } @@ -259,8 +259,8 @@ private async Task InitiateFileCopy(JobStep? step) private bool ApplyFiles() { - Loggers.UpdateLogger.Information("Running update as: " + WindowsIdentity.GetCurrent().Name); - Loggers.UpdateLogger.Information("Updating updater"); + Loggers.UpdateLogger?.Information("Running update as: " + WindowsIdentity.GetCurrent().Name); + Loggers.UpdateLogger?.Information("Updating updater"); @@ -268,13 +268,13 @@ private bool ApplyFiles() SystemDirectory updaterDir = new SystemDirectory(_applicationRootDirectory.Path + "updater\\"); updaterDirFromStagedUpdate.CopyTo(updaterDir); //File.Copy(UpdateStagingDirectory + "\\updater\\", _applicationRootDirectory + "updater\\", true); - Loggers.UpdateLogger.Information("Updater updated"); + Loggers.UpdateLogger?.Information("Updater updated"); //If the updater updated we can run the updater var updaterRan = InvokeUpdateExecutable(); if (updaterRan) { - Loggers.UpdateLogger.Information("Update process started"); + Loggers.UpdateLogger?.Information("Update process started"); return true; } @@ -313,18 +313,18 @@ private bool InvokeUpdateExecutable() public async Task Backup(JobStep? step) { - Loggers.UpdateLogger.Information("Attempting backup of current version to: " + BackupPath); + Loggers.UpdateLogger?.Information("Attempting backup of current version to: " + BackupPath); try { var result = await Task.Run(() => { return _applicationRootDirectory.CopyTo(BackupDirectory); }); - Loggers.UpdateLogger.Debug("Backup result: " + result.ToString()); + Loggers.UpdateLogger?.Debug("Backup result: " + result.ToString()); return result; } catch (Exception ex) { - Loggers.UpdateLogger.Error("Backup of current version failed: " + ex.Message); + Loggers.UpdateLogger?.Error("Backup of current version failed: " + ex.Message); return false; } } @@ -334,7 +334,7 @@ public async Task CleanDownload(IJobStep? step) { return await Task.Run(() => { - Loggers.UpdateLogger.Information("Attempting cleaning of download folder: " + UpdateFile); + Loggers.UpdateLogger?.Information("Attempting cleaning of download folder: " + UpdateFile); try { @@ -345,7 +345,7 @@ public async Task CleanDownload(IJobStep? step) } catch (Exception ex) { - Loggers.UpdateLogger.Error("Error while cleaning of download folder: " + UpdateFile + " {@Error}", ex); + Loggers.UpdateLogger?.Error("Error while cleaning of download folder: " + UpdateFile + " {@Error}", ex); return false; } @@ -363,7 +363,7 @@ public async Task CleanStaging(IJobStep? step) } catch (Exception ex) { - Loggers.UpdateLogger.Error("Error while cleaning staging directory. {@Error}", ex); + Loggers.UpdateLogger?.Error("Error while cleaning staging directory. {@Error}", ex); return true; } }); @@ -375,7 +375,7 @@ public async Task ExtractFiles(JobStep? step) if (!UpdateFile.Exists) return false; - Loggers.UpdateLogger.Debug("Attempting unzip of " + UpdateFile); + Loggers.UpdateLogger?.Debug("Attempting unzip of " + UpdateFile); UpdateStagingDirectory.EnsureCreated(); @@ -386,13 +386,13 @@ public async Task ExtractFiles(JobStep? step) var zip = new ZipArchive(streamToReadFrom); zip.ExtractToDirectory(UpdateStagingDirectory.Path, true); - Loggers.UpdateLogger.Debug(UpdateFile + " unzipped successfully to " + UpdateStagingDirectory); + Loggers.UpdateLogger?.Debug(UpdateFile + " unzipped successfully to " + UpdateStagingDirectory); return true; } catch (Exception ex) { - Loggers.UpdateLogger.Error("Error while extracting update zip {@Error}", ex); + Loggers.UpdateLogger?.Error("Error while extracting update zip {@Error}", ex); return false; } From 0e354fee33b8af7543c9743da6390bd8136c370f Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Wed, 1 May 2024 19:29:40 -0400 Subject: [PATCH 63/64] Ignore test cleanup error due to concurrent execution --- BLAZAM.Tests/Updates/UpdateTests.cs | 8 ++++++-- BLAZAMUpdate/ApplicationUpdate.cs | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/BLAZAM.Tests/Updates/UpdateTests.cs b/BLAZAM.Tests/Updates/UpdateTests.cs index f5d6838a..77322904 100644 --- a/BLAZAM.Tests/Updates/UpdateTests.cs +++ b/BLAZAM.Tests/Updates/UpdateTests.cs @@ -48,8 +48,12 @@ private async void Update_Cleanup_OK(ApplicationUpdate latest) { await latest.CleanStaging(null); - latest.UpdateFile.Delete(); - Assert.True(!latest.UpdateFile.Exists); + try + { + latest.UpdateFile.Delete(); + Assert.True(!latest.UpdateFile.Exists); + } + catch { } Assert.True(latest.UpdateStagingDirectory.Files.Count == 0); } } diff --git a/BLAZAMUpdate/ApplicationUpdate.cs b/BLAZAMUpdate/ApplicationUpdate.cs index 2b3a1a69..599dd43a 100644 --- a/BLAZAMUpdate/ApplicationUpdate.cs +++ b/BLAZAMUpdate/ApplicationUpdate.cs @@ -385,7 +385,6 @@ public async Task ExtractFiles(JobStep? step) { var zip = new ZipArchive(streamToReadFrom); zip.ExtractToDirectory(UpdateStagingDirectory.Path, true); - Loggers.UpdateLogger?.Debug(UpdateFile + " unzipped successfully to " + UpdateStagingDirectory); return true; From a9a2e7061d0f5a288788ce7f056bd8619f4b69bf Mon Sep 17 00:00:00 2001 From: Chris Jacobsen Date: Wed, 1 May 2024 19:38:50 -0400 Subject: [PATCH 64/64] Fix concurrncy --- BLAZAM.Tests/Updates/UpdateTests.cs | 16 ++++++---------- BLAZAM/BLAZAM.csproj | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/BLAZAM.Tests/Updates/UpdateTests.cs b/BLAZAM.Tests/Updates/UpdateTests.cs index 77322904..e3d8bd75 100644 --- a/BLAZAM.Tests/Updates/UpdateTests.cs +++ b/BLAZAM.Tests/Updates/UpdateTests.cs @@ -34,26 +34,22 @@ public async void Update_Returns_ValidDownload() await latest.Download(null); Assert.True(latest?.UpdateFile.Exists); - Update_Stages_OK(latest); - Update_Cleanup_OK(latest); + await Update_Stages_OK(latest); + await Update_Cleanup_OK(latest); } - private async void Update_Stages_OK(ApplicationUpdate latest) + private async Task Update_Stages_OK(ApplicationUpdate latest) { await latest.ExtractFiles(null); Assert.True(latest.UpdateStagingDirectory.Files.Count > 2); } - private async void Update_Cleanup_OK(ApplicationUpdate latest) + private async Task Update_Cleanup_OK(ApplicationUpdate latest) { await latest.CleanStaging(null); - try - { - latest.UpdateFile.Delete(); - Assert.True(!latest.UpdateFile.Exists); - } - catch { } + latest.UpdateFile.Delete(); + Assert.True(!latest.UpdateFile.Exists); Assert.True(latest.UpdateStagingDirectory.Files.Count == 0); } } diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj index 8f249a90..034430a0 100644 --- a/BLAZAM/BLAZAM.csproj +++ b/BLAZAM/BLAZAM.csproj @@ -6,7 +6,7 @@ enable false 0.9.2 - 2024.05.01.2302 + 2024.05.01.2331 false BLAZAM False