From 1a153ef4be095b693c14128b3f74fe347ef295cb Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 15 Nov 2022 16:23:40 +0100 Subject: [PATCH 1/8] Update (quasi) completo x gestione sessione utente --- MP.Data/DTO/OperatoreDTO.cs | 19 ++ MP.INVE/Components/CmpTop.razor | 1 + MP.INVE/Components/CmpTop.razor.cs | 50 +++++- MP.INVE/Data/LoginService.cs | 247 ++++++++++++++++++++++++++ MP.INVE/Data/MessageService.cs | 2 +- MP.INVE/Data/MpDataService.cs | 32 ++-- MP.INVE/MP.INVE.csproj | 2 +- MP.INVE/Pages/OperatoreLogin.razor | 12 +- MP.INVE/Pages/OperatoreLogin.razor.cs | 28 ++- MP.INVE/Program.cs | 2 + MP.INVE/Resources/ChangeLog.html | 2 +- MP.INVE/Resources/VersNum.txt | 2 +- MP.INVE/Resources/manifest.xml | 2 +- 13 files changed, 363 insertions(+), 38 deletions(-) create mode 100644 MP.Data/DTO/OperatoreDTO.cs create mode 100644 MP.INVE/Data/LoginService.cs diff --git a/MP.Data/DTO/OperatoreDTO.cs b/MP.Data/DTO/OperatoreDTO.cs new file mode 100644 index 00000000..62f6e001 --- /dev/null +++ b/MP.Data/DTO/OperatoreDTO.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MP.Data.DTO +{ + public class OperatoreDTO + { + public int MatrOpr { get; set; } = 0; + public string Cognome { get; set; } = ""; + public string Nome { get; set; } = ""; + public bool isAdmin { get; set; } = false; + public string authKey { get; set; } = ""; + public string CodOprExt { get; set; } = ""; + public string userJWT { get; set; } = ""; + } +} diff --git a/MP.INVE/Components/CmpTop.razor b/MP.INVE/Components/CmpTop.razor index c2578ed2..214509c9 100644 --- a/MP.INVE/Components/CmpTop.razor +++ b/MP.INVE/Components/CmpTop.razor @@ -7,6 +7,7 @@
+ @userName
diff --git a/MP.INVE/Components/CmpTop.razor.cs b/MP.INVE/Components/CmpTop.razor.cs index 0fc621ce..88979cd7 100644 --- a/MP.INVE/Components/CmpTop.razor.cs +++ b/MP.INVE/Components/CmpTop.razor.cs @@ -1,11 +1,12 @@ using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.Extensions.Configuration; using Microsoft.JSInterop; using MP.INVE.Data; namespace MP.INVE.Components { - public partial class CmpTop + public partial class CmpTop:IDisposable { #region Public Methods @@ -17,6 +18,13 @@ namespace MP.INVE.Components NavManager.NavigateTo(NavManager.Uri, true); } + public void Dispose() + { + LServ.EA_LogIn -= LServ_EA_LogIn; + LServ.EA_LogOut -= LServ_EA_LogOut; + GC.Collect(); + } + #endregion Public Methods #region Protected Properties @@ -24,20 +32,34 @@ namespace MP.INVE.Components [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; + [Inject] + protected LoginService LServ { get; set; } = null!; + #endregion Protected Properties #region Protected Methods protected override async Task OnInitializedAsync() { + LServ.EA_LogIn += LServ_EA_LogIn; + LServ.EA_LogOut += LServ_EA_LogOut; await forceReload(); } + private void LServ_EA_LogOut() + { + NavManager.NavigateTo("OperatoreLogin", true); + } + + private void LServ_EA_LogIn() + { + NavManager.NavigateTo("Starter", true); + } + #endregion Protected Methods #region Private Fields - private string userName = ""; #endregion Private Fields @@ -54,15 +76,27 @@ namespace MP.INVE.Components private async Task forceReload() { - var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); - var user = authState.User; - if (user.Identity != null && user.Identity.IsAuthenticated) + await Task.Delay(1); + // controllo per login + if (LServ.matrOpr <= 0 && !NavManager.Uri.Contains("OperatoreLogin")) { - userName = $"{user.Identity.Name}"; + NavManager.NavigateTo("OperatoreLogin", true); } - else + } + + private async Task logOut() + { + await Task.Delay(1); + LServ.LogOut(); + } + + private string userName + { + get { - userName = "N.A."; + string answ = "ND"; + answ = $"{LServ.Cognome} {LServ.Cognome} ({LServ.matrOpr})"; + return answ; } } diff --git a/MP.INVE/Data/LoginService.cs b/MP.INVE/Data/LoginService.cs new file mode 100644 index 00000000..b76a8741 --- /dev/null +++ b/MP.INVE/Data/LoginService.cs @@ -0,0 +1,247 @@ +using MP.Data.DTO; +using Newtonsoft.Json; +using NLog; +using StackExchange.Redis; +using System.Diagnostics; + +namespace MP.INVE.Data +{ + public class LoginService : IDisposable + { + #region Public Constructors + + public LoginService(IConfiguration configuration, ILogger logger, HttpClient httpClient, + IHttpContextAccessor httpContextAccessor) + { + this.HttpClient = httpClient; + HttpContextAccessor = httpContextAccessor; + + _logger = logger; + _logger.LogInformation("Starting LoginService INIT"); + _configuration = configuration; + + // setup compoenti REDIS + redisConn = ConnectionMultiplexer.Connect(_configuration.GetConnectionString("Redis")); + redisConnAdmin = ConnectionMultiplexer.Connect(_configuration.GetConnectionString("RedisAdmin")); + redisDb = redisConn.GetDatabase(); + + // leggo cache lungo periodo + int.TryParse(_configuration.GetValue("ServerConf:redisLongTimeCache"), out redisLongTimeCache); + + _logger.LogInformation("Redis LoginService INIT"); + } + + #endregion Public Constructors + + #region Public Events + + public event Action EA_LogIn = null!; + + public event Action EA_LogOut = null!; + + #endregion Public Events + + #region Public Properties + + public string Cognome + { + get + { + string answ = "NA"; + if (matrOpr > 0 && !string.IsNullOrEmpty(authKey)) + { + var currUser = UserDTO(matrOpr, authKey); + if (currUser != null) + { + answ = currUser.Cognome; + } + } + return answ; + } + } + + public int matrOpr + { + get + { + int answ = 0; + if (HttpContextAccessor.HttpContext != null) + { + var token = HttpContextAccessor.HttpContext.Request.Cookies["userId_token"]; + if (token != null) + { + int.TryParse(token, out answ); + } + } + return answ; + } + set + { + CookieOptions options = new CookieOptions(); + options.Expires = DateTime.Now.AddDays(1); + if (HttpContextAccessor.HttpContext != null) + { + HttpContextAccessor.HttpContext.Response.Cookies.Append("userId_token", $"{value}", options); + } + } + } + + public string Nome + { + get + { + string answ = "NA"; + if (matrOpr > 0 && !string.IsNullOrEmpty(authKey)) + { + var currUser = UserDTO(matrOpr, authKey); + if (currUser != null) + { + answ = currUser.Nome; + } + } + return answ; + } + } + + #endregion Public Properties + + #region Public Methods + + public void Dispose() + { + } + + public void LogOut() + { + OperatoreDTO resetData = new OperatoreDTO(); + UserDTOSave(resetData); + } + + /// + /// Ricerca su REDIS dell'utente loggato + /// NB: da rifare con unico JWT che contenga tutto + /// + /// + /// + /// + public OperatoreDTO? UserDTO(int matrOpr, string authKey) + { + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + OperatoreDTO? result = null; + string source = "REDIS"; + // cerco in redis... + RedisValue rawData = redisDb.StringGet($"{redisUserSession}:{matrOpr}"); + if (!string.IsNullOrEmpty($"{rawData}")) + { + try + { + result = JsonConvert.DeserializeObject($"{rawData}"); + } + catch + { } + } +#if false + else + { + result = await Task.FromResult(dbController.AnagStatiComm()); + // serializzo e salvo... + rawData = JsonConvert.SerializeObject(result); + await redisDb.StringSetAsync(redisUserSession, rawData, getRandTOut(redisLongTimeCache)); + source = "DB"; + } +#endif + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"LoggedUser Read from {source}: {ts.TotalMilliseconds}ms"); + // restituisco + return result; + } + + /// + /// Salva su REDIS dati dell'utente loggato + /// + /// + public bool UserDTOSave(OperatoreDTO userData) + { + bool fatto = false; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + string source = "REDIS"; + // cerco in redis... + string rawData = JsonConvert.SerializeObject(userData); + fatto = redisDb.StringSet($"{redisUserSession}:{userData.MatrOpr}", rawData, TimeSpan.FromMinutes(60)); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"UserDTO write to {source}: {ts.TotalMilliseconds}ms"); + // restituisco + return fatto; + } + + #endregion Public Methods + + #region Protected Properties + + protected string authKey + { + get + { + string answ = ""; + if (HttpContextAccessor.HttpContext != null) + { + var token = HttpContextAccessor.HttpContext.Request.Cookies["authKey_token"]; + if (token != null) + { + answ = token; + } + } + return answ; + } + set + { + CookieOptions options = new CookieOptions(); + options.Expires = DateTime.Now.AddDays(1); + + if (HttpContextAccessor.HttpContext != null) + { + HttpContextAccessor.HttpContext.Response.Cookies.Append("authKey_token", value, options); + } + } + } + + protected HttpClient HttpClient { get; set; } + protected IHttpContextAccessor HttpContextAccessor { get; set; } + + #endregion Protected Properties + + #region Private Fields + + private const string redisBaseAddr = "MP:INVE"; + + private const string redisUserSession = redisBaseAddr + ":User:"; + private static IConfiguration _configuration = null!; + + private static ILogger _logger = null!; + + private static Logger Log = LogManager.GetCurrentClassLogger(); + + /// + /// Oggetto per connessione a REDIS + /// + private ConnectionMultiplexer redisConn = null!; + + /// + /// Oggetto per connessione a REDIS modalità admin (ex flux dati) + /// + private ConnectionMultiplexer redisConnAdmin = null!; + + /// + /// Oggetto DB redis da impiegare x chiamate R/W + /// + private IDatabase redisDb = null!; + + private int redisLongTimeCache = 5; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/MP.INVE/Data/MessageService.cs b/MP.INVE/Data/MessageService.cs index 99dc18df..985557d0 100644 --- a/MP.INVE/Data/MessageService.cs +++ b/MP.INVE/Data/MessageService.cs @@ -53,7 +53,7 @@ get => searchVal; set { - //if (searchVal != value) + //if (_nome != value) //{ searchVal = value; diff --git a/MP.INVE/Data/MpDataService.cs b/MP.INVE/Data/MpDataService.cs index 13c3ee36..e44df918 100644 --- a/MP.INVE/Data/MpDataService.cs +++ b/MP.INVE/Data/MpDataService.cs @@ -1090,37 +1090,37 @@ namespace MP.INVE.Data #region Private Fields - private const string redisArtByDossier = redisBaseAddr + "SPEC:Cache:ArtByDossier"; + private const string redisArtByDossier = redisBaseAddr + ":Cache:ArtByDossier"; - private const string redisArtList = redisBaseAddr + "SPEC:Cache:ArtList"; + private const string redisArtList = redisBaseAddr + ":Cache:ArtList"; - private const string redisBaseAddr = "MP:"; + private const string redisBaseAddr = "MP:SPEC"; - private const string redisConfKey = redisBaseAddr + "SPEC:Cache:Config"; + private const string redisConfKey = redisBaseAddr + ":Cache:Config"; - private const string redisDossByMac = redisBaseAddr + "SPEC:Cache:DossByMac"; + private const string redisDossByMac = redisBaseAddr + ":Cache:DossByMac"; - private const string redisFluxByMac = redisBaseAddr + "SPEC:Cache:FluxByMac"; + private const string redisFluxByMac = redisBaseAddr + ":Cache:FluxByMac"; - private const string redisFluxLogFilt = redisBaseAddr + "SPEC:Cache:FluxLogFilt"; + private const string redisFluxLogFilt = redisBaseAddr + ":Cache:FluxLogFilt"; - private const string redisMacByFlux = redisBaseAddr + "SPEC:Cache:MacByFlux"; + private const string redisMacByFlux = redisBaseAddr + ":Cache:MacByFlux"; - private const string redisMacList = redisBaseAddr + "SPEC:Cache:MacList"; + private const string redisMacList = redisBaseAddr + ":Cache:MacList"; - private const string redisOdlCurrByMac = redisBaseAddr + "SPEC:Cache:OdlByMac"; + private const string redisOdlCurrByMac = redisBaseAddr + ":Cache:OdlByMac"; - private const string redisPOdlList = redisBaseAddr + "SPEC:Cache:POdlList"; + private const string redisPOdlList = redisBaseAddr + ":Cache:POdlList"; - private const string redisPOdlByPOdl = redisBaseAddr + "SPEC:Cache:POdlByPOdl"; + private const string redisPOdlByPOdl = redisBaseAddr + ":Cache:POdlByPOdl"; - private const string redisPOdlByOdl = redisBaseAddr + "SPEC:Cache:POdlByOdl"; + private const string redisPOdlByOdl = redisBaseAddr + ":Cache:POdlByOdl"; - private const string redisStatoCom = redisBaseAddr + "SPEC:Cache:StatoCom"; + private const string redisStatoCom = redisBaseAddr + ":Cache:StatoCom"; - private const string redisTipoArt = redisBaseAddr + "SPEC:Cache:TipoArt"; + private const string redisTipoArt = redisBaseAddr + ":Cache:TipoArt"; - private const string redisVocabolario = redisBaseAddr + "SPEC:Cache:Vocabolario"; + private const string redisVocabolario = redisBaseAddr + ":Cache:Vocabolario"; private static IConfiguration _configuration = null!; diff --git a/MP.INVE/MP.INVE.csproj b/MP.INVE/MP.INVE.csproj index 5a0477f8..33483024 100644 --- a/MP.INVE/MP.INVE.csproj +++ b/MP.INVE/MP.INVE.csproj @@ -5,7 +5,7 @@ enable enable MP.INVE - 6.16.2211.1510 + 6.16.2211.1516 diff --git a/MP.INVE/Pages/OperatoreLogin.razor b/MP.INVE/Pages/OperatoreLogin.razor index 73e37eab..20a76f37 100644 --- a/MP.INVE/Pages/OperatoreLogin.razor +++ b/MP.INVE/Pages/OperatoreLogin.razor @@ -3,23 +3,23 @@

OperatoreLogin

-
- - -
+
+ + +
- +
diff --git a/MP.INVE/Pages/OperatoreLogin.razor.cs b/MP.INVE/Pages/OperatoreLogin.razor.cs index e6b2a3a5..40220f62 100644 --- a/MP.INVE/Pages/OperatoreLogin.razor.cs +++ b/MP.INVE/Pages/OperatoreLogin.razor.cs @@ -16,6 +16,7 @@ using MP.INVE.Data; using MP.INVE.Shared; using MP.INVE.Components; using MP.Data.DatabaseModels; +using MP.Data.DTO; namespace MP.INVE.Pages { @@ -26,8 +27,11 @@ namespace MP.INVE.Pages [Inject] private NavigationManager NavManager { get; set; } = null!; - private int idOperatore { get; set; } - private string authKey { get; set; } + [Inject] + protected LoginService LServ { get; set; } = null!; + + private int idOperatore { get; set; } = 0; + private string authKey { get; set; } = ""; private List? elencoOperatori; @@ -44,12 +48,30 @@ namespace MP.INVE.Pages if (ok) { + // recupero operatore + var currOpr = elencoOperatori.Where(x => x.MatrOpr == idOperatore).FirstOrDefault(); + if (currOpr != null) + { + var oprDto = new OperatoreDTO() + { + authKey= currOpr.authKey, + CodOprExt= currOpr.CodOprExt, + Cognome= currOpr.Cognome, + isAdmin=currOpr.isAdmin, + userJWT="", + MatrOpr= currOpr.MatrOpr, + Nome= currOpr.Nome + }; + // salvo valori operatore + LServ.UserDTOSave(oprDto); + } + NavManager.NavigateTo("/Starter", true); } else { - } + } } } } \ No newline at end of file diff --git a/MP.INVE/Program.cs b/MP.INVE/Program.cs index ae34829e..ef779ba4 100644 --- a/MP.INVE/Program.cs +++ b/MP.INVE/Program.cs @@ -35,9 +35,11 @@ builder.Services.AddAuthorization(options => builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); +builder.Services.AddHttpContextAccessor(); builder.Services.AddSingleton(redisMultiplexer); builder.Services.AddSingleton(); builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddHttpClient(); builder.Services.AddSingleton(); diff --git a/MP.INVE/Resources/ChangeLog.html b/MP.INVE/Resources/ChangeLog.html index 875b9e27..3c5ae6f3 100644 --- a/MP.INVE/Resources/ChangeLog.html +++ b/MP.INVE/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOINVE -

Versione: 6.16.2211.1510

+

Versione: 6.16.2211.1516


Note di rilascio:
  • diff --git a/MP.INVE/Resources/VersNum.txt b/MP.INVE/Resources/VersNum.txt index bebf680a..2002665a 100644 --- a/MP.INVE/Resources/VersNum.txt +++ b/MP.INVE/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2211.1510 +6.16.2211.1516 diff --git a/MP.INVE/Resources/manifest.xml b/MP.INVE/Resources/manifest.xml index c0c8cbb8..9f89f9c7 100644 --- a/MP.INVE/Resources/manifest.xml +++ b/MP.INVE/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2211.1510 + 6.16.2211.1516 https://nexus.steamware.net/repository/SWS/MP-INVE/stable/LAST/MP.INVE.zip https://nexus.steamware.net/repository/SWS/MP-INVE/stable/LAST/ChangeLog.html false From b141f5cfa2ceabf9e4afbd6a189d0d520f69cea7 Mon Sep 17 00:00:00 2001 From: "zaccaria.majid" Date: Tue, 15 Nov 2022 17:39:04 +0100 Subject: [PATCH 2/8] minor fix --- MP.INVE/Data/LoginService.cs | 8 +++++ MP.INVE/Pages/OperatoreLogin.razor.cs | 2 +- MP.INVE/Pages/Starter.razor | 30 ------------------ MP.INVE/Pages/Starter.razor.cs | 45 +++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 31 deletions(-) create mode 100644 MP.INVE/Pages/Starter.razor.cs diff --git a/MP.INVE/Data/LoginService.cs b/MP.INVE/Data/LoginService.cs index b76a8741..dd08f946 100644 --- a/MP.INVE/Data/LoginService.cs +++ b/MP.INVE/Data/LoginService.cs @@ -67,10 +67,17 @@ namespace MP.INVE.Data int answ = 0; if (HttpContextAccessor.HttpContext != null) { +#if false var token = HttpContextAccessor.HttpContext.Request.Cookies["userId_token"]; if (token != null) { int.TryParse(token, out answ); + } +#endif + var currUser = UserDTO(matrOpr, authKey); + if (currUser != null) + { + answ = currUser.MatrOpr; } } return answ; @@ -167,6 +174,7 @@ namespace MP.INVE.Data bool fatto = false; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); + string source = "REDIS"; // cerco in redis... string rawData = JsonConvert.SerializeObject(userData); diff --git a/MP.INVE/Pages/OperatoreLogin.razor.cs b/MP.INVE/Pages/OperatoreLogin.razor.cs index 40220f62..1aaee477 100644 --- a/MP.INVE/Pages/OperatoreLogin.razor.cs +++ b/MP.INVE/Pages/OperatoreLogin.razor.cs @@ -66,7 +66,7 @@ namespace MP.INVE.Pages LServ.UserDTOSave(oprDto); } - NavManager.NavigateTo("/Starter", true); + NavManager.NavigateTo("Starter", true); } else { diff --git a/MP.INVE/Pages/Starter.razor b/MP.INVE/Pages/Starter.razor index 47b44abf..1f41fc74 100644 --- a/MP.INVE/Pages/Starter.razor +++ b/MP.INVE/Pages/Starter.razor @@ -9,34 +9,4 @@ @**@ -@code { - [Inject] - private IConfiguration Configuration { get; set; } = null!; - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - await JSRuntime.InvokeVoidAsync("clearContent", $"qrCodeImg_{101}"); - await JSRuntime.InvokeVoidAsync("displayQr", $"qrCodeImg_{101}", rawCode); - } - } - - protected string BaseUrlTab - { - get => $"{Configuration["ServerConf:BaseUrl"]}"; - } - - - protected string rawCode - { - get - { - string answ = ""; - answ = $"{BaseUrlTab}MatrOpr={101}&UserAuthKey={12345}"; - return answ; - } - } - - -} diff --git a/MP.INVE/Pages/Starter.razor.cs b/MP.INVE/Pages/Starter.razor.cs new file mode 100644 index 00000000..1227da09 --- /dev/null +++ b/MP.INVE/Pages/Starter.razor.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using System.Net.Http; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Components.Forms; +using Microsoft.AspNetCore.Components.Routing; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.Web.Virtualization; +using Microsoft.JSInterop; +using MP.INVE; +using MP.INVE.Shared; +using MP.INVE.Components; + +namespace MP.INVE.Pages +{ + public partial class Starter + { + [Inject] + private IConfiguration Configuration { get; set; } = null !; + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("clearContent", $"qrCodeImg_{101}"); + await JSRuntime.InvokeVoidAsync("displayQr", $"qrCodeImg_{101}", rawCode); + } + } + + protected string BaseUrlTab { get => $"{Configuration["ServerConf:BaseUrl"]}"; } + + protected string rawCode + { + get + { + string answ = ""; + answ = $"{BaseUrlTab}MatrOpr={101}&UserAuthKey={12345}"; + return answ; + } + } + } +} \ No newline at end of file From f7d40af040756e7db9d7e3b37917e9bda0d47b55 Mon Sep 17 00:00:00 2001 From: "zaccaria.majid" Date: Tue, 15 Nov 2022 17:42:48 +0100 Subject: [PATCH 3/8] fix condizione modifica nel readme --- MP.INVE/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/MP.INVE/README.md b/MP.INVE/README.md index e670ce8c..9c897b55 100644 --- a/MP.INVE/README.md +++ b/MP.INVE/README.md @@ -106,7 +106,7 @@ Operativamente una volta letti questi codici dovrà svolgersi il seguente proces * richiesta all'operatore di verifica che si tratti di prima lettura (per evitare doppie letture l'operatore dovrebbe marcare/siglare ogni collo con un simbolo/data/etichetta comprovante l'effettuata lettura inventario') * presentazione all'operatore dei dati per conferma OBBLIGATORIA ad ogni lettura - * Salvataggio, in caso di modifica dei valori proposti la prima volta, della "Forzatura" + * Salvataggio, in caso di modifica dei valori proposti la prima volta, della "Forzatura", previo controllo della presenza del lotto all'interno delle anagrafiche Questo significa che è possibile avere in uscita liste di giacenza * con possibili "errori di doppia lettura" @@ -132,7 +132,7 @@ Operativamente una volta letti questi codici dovrà svolgersi il seguente proces * in alternativa proposta quantità/collo, articolo e lotto a partire dall'ultimo valore letto di tipo (C), salvataggio successivo in MAPO del codice + dati specifici * richiesta all'operatore di verifica che si tratti di prima lettura (per evitare doppie letture l'operatore dovrebbe marcare/siglare ogni collo con un simbolo/data/etichetta comprovante l'effettuata lettura inventario') * presentazione all'operatore dei dati per conferma OBBLIGATORIA ad ogni lettura - * Salvataggio, in caso di modifica dei valori proposti la prima volta, della "Forzatura" + * Salvataggio, in caso di modifica dei valori proposti la prima volta, della "Forzatura" previo controllo della presenza del lotto all'interno delle anagrafiche Questo significa che è possibile avere in uscita liste di giacenza * con possibili "errori di doppia lettura" @@ -189,3 +189,4 @@ Invio aggregato dei dati di |------------|----------------|:-------:|-----------------:| | 2022.11.10 | S.E. Locatelli | 0.1 | Initial draft | | 2022.11.10 | Gian / Zac | 0.2 | Second draft | +| 2022.11.15 | Zac | 0.3 | Aggiunta appunto su modifica post forzatura | From 5ced0fec533ec243f55a561800d56ef0ec416e31 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 15 Nov 2022 18:08:19 +0100 Subject: [PATCH 4/8] LAND: - fix warning compilazione - fix auth windows x login --- Egw.Core/SteamCrypto.cs | 16 +- Egw.Core/licenseManGLS.cs | 2 +- MP.Land/Components/CmpTop.razor | 4 +- MP.Land/Components/CmpTop.razor.cs | 25 +- MP.Land/Data/LicenseService.cs | 516 +++++++++++++------------ MP.Land/MP.Land.csproj | 3 +- MP.Land/Properties/launchSettings.json | 4 +- MP.Land/Resources/ChangeLog.html | 2 +- MP.Land/Resources/VersNum.txt | 2 +- MP.Land/Resources/manifest.xml | 2 +- MP.Land/Startup.cs | 16 +- MP.Stats/MP.Stats.csproj | 2 +- MP.Stats/Resources/ChangeLog.html | 2 +- MP.Stats/Resources/VersNum.txt | 2 +- MP.Stats/Resources/manifest.xml | 2 +- 15 files changed, 312 insertions(+), 288 deletions(-) diff --git a/Egw.Core/SteamCrypto.cs b/Egw.Core/SteamCrypto.cs index 1f021d25..2373a2fc 100644 --- a/Egw.Core/SteamCrypto.cs +++ b/Egw.Core/SteamCrypto.cs @@ -23,18 +23,20 @@ namespace Egw.Core public static string DecryptString(string Message, string Passphrase) { string answ = Message; - byte[] Results = null; + byte[] Results = new byte[8]; UTF8Encoding UTF8 = new UTF8Encoding(); // Step 1. We hash the passphrase using MD5 // We use the MD5 hash generator as the result is a 128 bit byte array // which is a valid length for the TripleDES encoder we use below - MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); + var HashProvider = MD5.Create(); + //MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase)); // Step 2. Create a new TripleDESCryptoServiceProvider object - TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); + var TDESAlgorithm = TripleDES.Create(); + //TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); // Step 3. Setup the decoder TDESAlgorithm.Key = TDESKey; @@ -42,7 +44,7 @@ namespace Egw.Core TDESAlgorithm.Padding = PaddingMode.PKCS7; // Step 4. Convert the input string to a byte[] - byte[] DataToDecrypt = null; + byte[] DataToDecrypt = new byte[8]; try { DataToDecrypt = Convert.FromBase64String(Message); @@ -84,11 +86,13 @@ namespace Egw.Core // We use the MD5 hash generator as the result is a 128 bit byte array // which is a valid length for the TripleDES encoder we use below - MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); + var HashProvider = MD5.Create(); + //MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase)); // Step 2. Create a new TripleDESCryptoServiceProvider object - TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); + var TDESAlgorithm = TripleDES.Create(); + //TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); // Step 3. Setup the encoder TDESAlgorithm.Key = TDESKey; diff --git a/Egw.Core/licenseManGLS.cs b/Egw.Core/licenseManGLS.cs index fccea72c..c7108110 100644 --- a/Egw.Core/licenseManGLS.cs +++ b/Egw.Core/licenseManGLS.cs @@ -39,7 +39,7 @@ namespace Egw.Core } answ = Convert.ToDateTime(datePart); } - catch (Exception exc) + catch //(Exception exc) { //logger.lg.scriviLog(string.Format("Errore decodifica auth key:{0}AuthKey: {1}{0}cliente:{2}{0}applicativo:{3}{0}errore:{4}", Environment.NewLine, authKey, cliente, applicativo, exc), tipoLog.EXCEPTION); } diff --git a/MP.Land/Components/CmpTop.razor b/MP.Land/Components/CmpTop.razor index 534995a0..cb7100a0 100644 --- a/MP.Land/Components/CmpTop.razor +++ b/MP.Land/Components/CmpTop.razor @@ -4,12 +4,12 @@ @using MP.Land.Data @inject MessageService AppMessages -@*@inject AuthenticationStateProvider AuthenticationStateProvider*@ +@inject AuthenticationStateProvider AuthenticationStateProvider
    @**@ - @* @userName*@ + @userName
    @PageName diff --git a/MP.Land/Components/CmpTop.razor.cs b/MP.Land/Components/CmpTop.razor.cs index 1706938e..7b3b7d14 100644 --- a/MP.Land/Components/CmpTop.razor.cs +++ b/MP.Land/Components/CmpTop.razor.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; using System; using System.Threading.Tasks; @@ -62,20 +63,16 @@ namespace MP.Land.Components private async Task forceReload() { userName = "N.A."; - await Task.Delay(1); -#if false -var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); -var user = authState.User; - -if (user.Identity.IsAuthenticated) -{ -userName = $"{user.Identity.Name}"; -} -else -{ -userName = "N.A."; -} -#endif + await Task.Delay(1); var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); + var user = authState.User; + if (user.Identity != null && user.Identity.IsAuthenticated) + { + userName = $"{user.Identity.Name}"; + } + else + { + userName = "N.A."; + } } #endregion Private Methods diff --git a/MP.Land/Data/LicenseService.cs b/MP.Land/Data/LicenseService.cs index baeb055c..ede92400 100644 --- a/MP.Land/Data/LicenseService.cs +++ b/MP.Land/Data/LicenseService.cs @@ -12,6 +12,8 @@ using System.Text; using System.Threading.Tasks; using System.Web; +#nullable enable + namespace MP.Land.Data { /// @@ -19,56 +21,6 @@ namespace MP.Land.Data /// public class LicenseService { - #region Private Fields - - private static IConfiguration? _configuration; - private static ILogger? _logger; - - /// - /// URL dell'API x chiamate gestione licenze - /// - private static string apiUrl = "https://liman.egalware.com/ELM.API/"; - //private static string apiUrl = "https://localhost:44351/"; - - /// - /// Chiave redis x info della licenza - /// - private static string rkeyAppInfo = "LongCache:AppInfo"; - - private readonly IDistributedCache distributedCache; - - /// - /// Elenco obj in cache - /// - private List cachedDataList = new List(); - - /// - /// Fattorte conversione cache sliding --> 1 h - /// - private int cacheFact = 12; - - /// - /// Durata assoluta massima della cache IN SECONDI - /// - private int chAbsExp = 60 * 5; - - /// - /// Durata della cache IN SECONDI in modalità inattiva (non acceduta) prima di venire rimossa - /// NON estende oltre il tempo massimo di validità della cache (chAbsExp) - /// - private int chSliExp = 60 * 1; - - #endregion Private Fields - - #region Protected Fields - - /// - /// Chiave redis x attivazioni della licenza - /// - protected const string rKeyAttByLic = "LongCache:AttByLic"; - - #endregion Protected Fields - #region Public Constructors /// @@ -95,9 +47,7 @@ namespace MP.Land.Data #region Public Properties public List ActivList { get; set; } = new List(); - public List AKVList { get; set; } = new List(); - public string Applicazione { get; set; } = ""; public bool HasActivData @@ -158,74 +108,212 @@ namespace MP.Land.Data #endregion Public Properties - #region Private Methods + #region Public Methods - /// - /// Opzioni cache con moltiplicatore durata risp durata base (1/5 minuti) - /// - /// - /// - private DistributedCacheEntryOptions cacheOpt(int multFact) + public async Task> ActivListCache() { - var numSecAbsExp = chAbsExp * multFact; - var numSecSliExp = chSliExp * multFact; - return new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddSeconds(numSecAbsExp)).SetSlidingExpiration(TimeSpan.FromSeconds(numSecSliExp)); - } - - /// - /// Elenco attivazioni attuali - /// - private async Task?> OnlineActivationList() - { - List? answ = new List(); - // cerco online - RestClient client = new RestClient(apiUrl); - //client.Authenticator = new HttpBasicAuthenticator("username", "password"); - string MKeyEnc = HttpUtility.UrlEncode(MasterKey); - var request = new RestRequest($"api/attivazioni/?chiave={MKeyEnc}", Method.Get); - var response = await client.GetAsync(request); - // controllo risposta - if (response.StatusCode == System.Net.HttpStatusCode.OK) + List dbResult = new List(); + string cacheKey = $"{rKeyAttByLic}:{MasterKey}"; + trackCache(cacheKey); + string rawData = await getRSV(cacheKey); + if (!string.IsNullOrEmpty(rawData)) { - // salvo in redis contenuto serializzato - string rawData = $"{response.Content}"; - answ = JsonConvert.DeserializeObject?>(rawData); + var cacheRes = JsonConvert.DeserializeObject?>(rawData); + if (cacheRes != null) + { + dbResult = cacheRes; + } } - return await Task.FromResult(answ); + + return await Task.FromResult(dbResult); } /// - /// Recupera info licenza da remoto + /// Verifica attivazione licenza /// - private async Task> OnlineAppInfo() + /// + /// + public bool checkLicenseActive(string authKey) { - List answ = new List(); + bool answ = false; + //cerco anche nelle info AKV + if (AKVList != null) + { + var recLic = AKVList.Where(x => x.ValString == authKey).FirstOrDefault(); + int numLic = 0; + //cerco in record + if (recLic != null && recLic.ValInt != null) + { + numLic = (int)recLic.ValInt; + // verifico scadenza licenza! + DateTime scadenza = licenseManGLS.expiryDateByAuthKey(Installazione, recLic.NomeVar, numLic, authKey); + answ = scadenza > DateTime.Today; + } + else + { + _logger.LogInformation($"checkLicenseActive | Record non trovato per {authKey}"); + } + } + return answ; + } + + /// + /// Stato server gestione licenze + /// + public async Task checkLimanServer() + { + string answ = "ND"; // cerco online RestClient client = new RestClient(apiUrl); - string MKeyEnc = HttpUtility.UrlEncode(MasterKey); - //string mKey = System.Net.WebUtility.UrlEncode(MasterKey); - string reqUrl = $"api/licenza/{Installazione}?CodApp={Applicazione}&Chiave={MKeyEnc}"; - var request = new RestRequest(reqUrl, Method.Get); + var request = new RestRequest($"api/health", Method.Get); var response = await client.GetAsync(request); // controllo risposta if (response.StatusCode == System.Net.HttpStatusCode.OK) { // verifico risposta - string rawData = $"{response.Content}"; - answ = JsonConvert.DeserializeObject?>(rawData); + if (response.Content != null) + { + answ = response.Content.Replace("\"", ""); + } } return await Task.FromResult(answ); } - private void ReportUpdated() + /// + /// Verifica scadenza licenza + /// + /// + /// + public DateTime getLicenseExpiry(string authKey) { + DateTime answ = DateTime.Today.AddDays(-1); + //cerco anche nelle info AKV + if (AKVList != null) + { + var recLic = AKVList.Where(x => x.ValString == authKey).FirstOrDefault(); + int numLic = 0; + //cerco in record + if (recLic != null && recLic.ValInt != null) + { + numLic = (int)recLic.ValInt; + // verifico scadenza licenza! + DateTime scadenza = licenseManGLS.expiryDateByAuthKey(Installazione, recLic.NomeVar, numLic, authKey); + answ = scadenza; + } + else + { + _logger.LogInformation($"getLicenseExpiry | Record non trovato per {authKey}"); + } + } + return answ; + } + + /// + /// Init della classe con variabili di base da Redis/DB + /// + public bool InitAkv() + { + bool fatto = false; + Applicazione = "MAPO"; + Installazione = getAVKStr("Installazione"); + MasterKey = getAVKStr(Applicazione); + NumLicDb = getAVKInt(Applicazione); + fatto = !string.IsNullOrEmpty($"{Installazione}{MasterKey}"); + return fatto; + } + + public async Task> LicAppCache() + { + List dbResult = new List(); + string cacheKey = $"{rkeyAppInfo}:{MasterKey}"; + trackCache(cacheKey); + string rawData = await getRSV(cacheKey); + if (!string.IsNullOrEmpty(rawData)) + { + var cacheRes = JsonConvert.DeserializeObject?>(rawData); + if (cacheRes != null) + { + dbResult = cacheRes; + } + } + + return await Task.FromResult(dbResult); + } + + /// + /// Init della classe con variabili di base da Redis/DB + /// + public async Task RefreshLicense() + { + bool fatto = false; + // scadenza info a 15 gg... + int numDays = 15; + + // dati applicativo + var appData = await OnlineAppInfo(); + if (appData != null) + { + if (appData.Count > 0) + { + fatto = await setAppInfo(appData, numDays); + // salvo info licenza... + NumLicRemote = appData[0].NumLicenze; + } + } + + // dati attivazioni + var onlineAct = await OnlineActivationList(); + if (onlineAct != null) + { + if (onlineAct.Count > 0) + { + infoExpiry = DateTime.Now.AddDays(numDays); + ActivList = onlineAct; + fatto = await setActivList(onlineAct, numDays); + } + } + await Task.Delay(1); + return fatto; + } + + public async Task setActivList(List newActList, int numDays) + { + bool fatto = false; + string cacheKey = $"{rKeyAttByLic}:{MasterKey}"; + var rawData = JsonConvert.SerializeObject(newActList); + await setRSV(cacheKey, rawData, numDays * cacheFact * 24); + fatto = true; if (EA_InfoUpdated != null) { EA_InfoUpdated?.Invoke(); } + return fatto; } - #endregion Private Methods + public async Task setAppInfo(List newAppInfo, int numDays) + { + bool fatto = false; + string cacheKey = $"{rkeyAppInfo}:{MasterKey}"; + var rawData = JsonConvert.SerializeObject(newAppInfo); + await setRSV(cacheKey, rawData, numDays * cacheFact * 24); + fatto = true; + if (EA_InfoUpdated != null) + { + EA_InfoUpdated?.Invoke(); + } + return fatto; + } + + #endregion Public Methods + + #region Protected Fields + + /// + /// Chiave redis x attivazioni della licenza + /// + protected const string rKeyAttByLic = "LongCache:AttByLic"; + + #endregion Protected Fields #region Protected Methods @@ -329,198 +417,120 @@ namespace MP.Land.Data #endregion Protected Methods - #region Public Methods + #region Private Fields - public async Task> ActivListCache() - { - List dbResult = new List(); - string cacheKey = $"{rKeyAttByLic}:{MasterKey}"; - trackCache(cacheKey); - string rawData = await getRSV(cacheKey); - if (!string.IsNullOrEmpty(rawData)) - { - var cacheRes = JsonConvert.DeserializeObject?>(rawData); - if (cacheRes != null) - { - dbResult = cacheRes; - } - } - - return await Task.FromResult(dbResult); - } + private static IConfiguration? _configuration; /// - /// Verifica attivazione licenza + /// URL dell'API x chiamate gestione licenze /// - /// + private static string apiUrl = "https://liman.egalware.com/ELM.API/"; + + /// + /// Chiave redis x info della licenza + /// + private static string rkeyAppInfo = "LongCache:AppInfo"; + + //private static string apiUrl = "https://localhost:44351/"; + private readonly IDistributedCache distributedCache; + + /// + /// Elenco obj in cache + /// + private List cachedDataList = new List(); + + /// + /// Fattorte conversione cache sliding --> 1 h + /// + private int cacheFact = 12; + + /// + /// Durata assoluta massima della cache IN SECONDI + /// + private int chAbsExp = 60 * 5; + + /// + /// Durata della cache IN SECONDI in modalità inattiva (non acceduta) prima di venire + /// rimossa NON estende oltre il tempo massimo di validità della cache (chAbsExp) + /// + private int chSliExp = 60 * 1; + + #endregion Private Fields + + #region Private Properties + + private static ILogger _logger { get; set; } = null!; + + #endregion Private Properties + + #region Private Methods + + /// + /// Opzioni cache con moltiplicatore durata risp durata base (1/5 minuti) + /// + /// /// - public bool checkLicenseActive(string authKey) + private DistributedCacheEntryOptions cacheOpt(int multFact) { - bool answ = false; - //cerco anche nelle info AKV - if (AKVList != null) - { - var recLic = AKVList.Where(x => x.ValString == authKey).FirstOrDefault(); - int numLic = 0; - //cerco in record - if (recLic != null) - { - numLic = (int)recLic.ValInt; - // verifico scadenza licenza! - DateTime scadenza = licenseManGLS.expiryDateByAuthKey(Installazione, recLic.NomeVar, numLic, authKey); - answ = scadenza > DateTime.Today; - } - else - { - _logger.LogInformation($"checkLicenseActive | Record non trovato per {authKey}"); - } - } - return answ; - } - /// - /// Verifica scadenza licenza - /// - /// - /// - public DateTime getLicenseExpiry(string authKey) - { - DateTime answ = DateTime.Today.AddDays(-1); - //cerco anche nelle info AKV - if (AKVList != null) - { - var recLic = AKVList.Where(x => x.ValString == authKey).FirstOrDefault(); - int numLic = 0; - //cerco in record - if (recLic != null) - { - numLic = (int)recLic.ValInt; - // verifico scadenza licenza! - DateTime scadenza = licenseManGLS.expiryDateByAuthKey(Installazione, recLic.NomeVar, numLic, authKey); - answ = scadenza; - } - else - { - _logger.LogInformation($"getLicenseExpiry | Record non trovato per {authKey}"); - } - } - return answ; + var numSecAbsExp = chAbsExp * multFact; + var numSecSliExp = chSliExp * multFact; + return new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddSeconds(numSecAbsExp)).SetSlidingExpiration(TimeSpan.FromSeconds(numSecSliExp)); } /// - /// Stato server gestione licenze + /// Elenco attivazioni attuali /// - public async Task checkLimanServer() + private async Task?> OnlineActivationList() { - string answ = "ND"; + List? answ = new List(); // cerco online RestClient client = new RestClient(apiUrl); - var request = new RestRequest($"api/health", Method.Get); + //client.Authenticator = new HttpBasicAuthenticator("username", "password"); + string MKeyEnc = HttpUtility.UrlEncode(MasterKey); + var request = new RestRequest($"api/attivazioni/?chiave={MKeyEnc}", Method.Get); var response = await client.GetAsync(request); // controllo risposta if (response.StatusCode == System.Net.HttpStatusCode.OK) { - // verifico risposta - answ = response.Content.Replace("\"", ""); + // salvo in redis contenuto serializzato + string rawData = $"{response.Content}"; + answ = JsonConvert.DeserializeObject?>(rawData); } return await Task.FromResult(answ); } /// - /// Init della classe con variabili di base da Redis/DB + /// Recupera info licenza da remoto /// - public bool InitAkv() + private async Task> OnlineAppInfo() { - bool fatto = false; - Applicazione = "MAPO"; - Installazione = getAVKStr("Installazione"); - MasterKey = getAVKStr(Applicazione); - NumLicDb = getAVKInt(Applicazione); - fatto = !string.IsNullOrEmpty($"{Installazione}{MasterKey}"); - return fatto; + List? answ = new List(); + // cerco online + RestClient client = new RestClient(apiUrl); + string MKeyEnc = HttpUtility.UrlEncode(MasterKey); + //string mKey = System.Net.WebUtility.UrlEncode(MasterKey); + string reqUrl = $"api/licenza/{Installazione}?CodApp={Applicazione}&Chiave={MKeyEnc}"; + var request = new RestRequest(reqUrl, Method.Get); + var response = await client.GetAsync(request); + // controllo risposta + if (response.StatusCode == System.Net.HttpStatusCode.OK) + { + // verifico risposta + string rawData = $"{response.Content}"; + answ = JsonConvert.DeserializeObject?>(rawData); + } + // restituisce valori o insieme vuoto + return await Task.FromResult(answ ?? new List()); } - public async Task> LicAppCache() + private void ReportUpdated() { - List dbResult = new List(); - string cacheKey = $"{rkeyAppInfo}:{MasterKey}"; - trackCache(cacheKey); - string rawData = await getRSV(cacheKey); - if (!string.IsNullOrEmpty(rawData)) - { - var cacheRes = JsonConvert.DeserializeObject?>(rawData); - if (cacheRes != null) - { - dbResult = cacheRes; - } - } - - return await Task.FromResult(dbResult); - } - - /// - /// Init della classe con variabili di base da Redis/DB - /// - public async Task RefreshLicense() - { - bool fatto = false; - // scadenza info a 15 gg... - int numDays = 15; - - // dati applicativo - var appData = await OnlineAppInfo(); - if (appData != null) - { - if (appData.Count > 0) - { - fatto = await setAppInfo(appData, numDays); - // salvo info licenza... - NumLicRemote = appData[0].NumLicenze; - } - } - - // dati attivazioni - var onlineAct = await OnlineActivationList(); - if (onlineAct != null) - { - if (onlineAct.Count > 0) - { - infoExpiry = DateTime.Now.AddDays(numDays); - ActivList = onlineAct; - fatto = await setActivList(onlineAct, numDays); - } - } - await Task.Delay(1); - return fatto; - } - - public async Task setActivList(List newActList, int numDays) - { - bool fatto = false; - string cacheKey = $"{rKeyAttByLic}:{MasterKey}"; - var rawData = JsonConvert.SerializeObject(newActList); - await setRSV(cacheKey, rawData, numDays * cacheFact * 24); - fatto = true; if (EA_InfoUpdated != null) { EA_InfoUpdated?.Invoke(); } - return fatto; } - public async Task setAppInfo(List newAppInfo, int numDays) - { - bool fatto = false; - string cacheKey = $"{rkeyAppInfo}:{MasterKey}"; - var rawData = JsonConvert.SerializeObject(newAppInfo); - await setRSV(cacheKey, rawData, numDays * cacheFact * 24); - fatto = true; - if (EA_InfoUpdated != null) - { - EA_InfoUpdated?.Invoke(); - } - return fatto; - } - - #endregion Public Methods + #endregion Private Methods } } \ No newline at end of file diff --git a/MP.Land/MP.Land.csproj b/MP.Land/MP.Land.csproj index e5d244a5..f9e55a89 100644 --- a/MP.Land/MP.Land.csproj +++ b/MP.Land/MP.Land.csproj @@ -3,7 +3,7 @@ net6.0 MP.Land - 6.16.2211.0416 + 6.16.2211.1518 @@ -45,6 +45,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/MP.Land/Properties/launchSettings.json b/MP.Land/Properties/launchSettings.json index aeaf5b5b..7f84d546 100644 --- a/MP.Land/Properties/launchSettings.json +++ b/MP.Land/Properties/launchSettings.json @@ -1,7 +1,7 @@ { "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, + "windowsAuthentication": true, + "anonymousAuthentication": false, "iisExpress": { "applicationUrl": "http://localhost:7314", "sslPort": 44311 diff --git a/MP.Land/Resources/ChangeLog.html b/MP.Land/Resources/ChangeLog.html index 9fbcacb8..d340f879 100644 --- a/MP.Land/Resources/ChangeLog.html +++ b/MP.Land/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo gestione Programmi MAPO -

    Versione: 6.16.2211.0416

    +

    Versione: 6.16.2211.1518


    Note di rilascio:
      diff --git a/MP.Land/Resources/VersNum.txt b/MP.Land/Resources/VersNum.txt index 3af0d134..b3babe51 100644 --- a/MP.Land/Resources/VersNum.txt +++ b/MP.Land/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2211.0416 +6.16.2211.1518 diff --git a/MP.Land/Resources/manifest.xml b/MP.Land/Resources/manifest.xml index 2f81485a..3baa45d2 100644 --- a/MP.Land/Resources/manifest.xml +++ b/MP.Land/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2211.0416 + 6.16.2211.1518 https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/MP.Land.zip https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/ChangeLog.html false diff --git a/MP.Land/Startup.cs b/MP.Land/Startup.cs index c599a8b6..e8f91d80 100644 --- a/MP.Land/Startup.cs +++ b/MP.Land/Startup.cs @@ -1,3 +1,4 @@ +using Microsoft.AspNetCore.Authentication.Negotiate; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Hosting; @@ -75,8 +76,8 @@ namespace MP.Land app.UseRouting(); - //app.UseAuthentication(); - //app.UseAuthorization(); + app.UseAuthentication(); + app.UseAuthorization(); app.UseEndpoints(endpoints => { @@ -103,6 +104,17 @@ namespace MP.Land o.SlidingExpiration = true; }); + + services.AddAuthentication(NegotiateDefaults.AuthenticationScheme) + .AddNegotiate(); + + services.AddAuthorization(options => + { + // By default, all incoming requests will be authorized according to the default policy. + options.FallbackPolicy = options.DefaultPolicy; + }); + + services.AddStackExchangeRedisCache(options => { //options.ConfigurationOptions = new StackExchange.Redis.ConfigurationOptions() { KeepAlive = 180, DefaultDatabase = 1, EndPoints = { { "localhost", 6379 } } }; diff --git a/MP.Stats/MP.Stats.csproj b/MP.Stats/MP.Stats.csproj index 8683fb68..39ac2560 100644 --- a/MP.Stats/MP.Stats.csproj +++ b/MP.Stats/MP.Stats.csproj @@ -4,7 +4,7 @@ net6.0 MP.Stats 826e877c-ba70-4253-84cb-d0b1cafd4440 - 6.16.2210.2110 + 6.16.2211.1517 diff --git a/MP.Stats/Resources/ChangeLog.html b/MP.Stats/Resources/ChangeLog.html index c3a834ed..5e47116b 100644 --- a/MP.Stats/Resources/ChangeLog.html +++ b/MP.Stats/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo statistiche MAPO -

      Versione: 6.16.2210.2110

      +

      Versione: 6.16.2211.1517


      Note di rilascio:
        diff --git a/MP.Stats/Resources/VersNum.txt b/MP.Stats/Resources/VersNum.txt index 148d3a17..b5d4a429 100644 --- a/MP.Stats/Resources/VersNum.txt +++ b/MP.Stats/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2210.2110 +6.16.2211.1517 diff --git a/MP.Stats/Resources/manifest.xml b/MP.Stats/Resources/manifest.xml index b9e7e7bc..920440d2 100644 --- a/MP.Stats/Resources/manifest.xml +++ b/MP.Stats/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2210.2110 + 6.16.2211.1517 https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html false From 5a286e76ed6edfd556349ac537d340de1a19ad2f Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 15 Nov 2022 18:09:55 +0100 Subject: [PATCH 5/8] Update vers script da eseguire --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 28d7a489..cd12eb99 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,6 +27,7 @@ variables: .fixVers: &fixVers - | $VersScript = $env:APP_NAME + "\bin\publish\post-build.ps1 -ProjectDir $CI_PROJECT_DIR\$env:APP_NAME -ProjectPath $CI_PROJECT_DIR\$env:APP_NAME\$env:APP_NAME.csproj" + $VersScript echo "Script called: $VersScript" # helper creazione hash files x IIS From 7ed80d83ec67fb93dffa1cebf76f091c34580393 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 15 Nov 2022 18:21:10 +0100 Subject: [PATCH 6/8] update verbosity x publish --- .gitlab-ci.yml | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cd12eb99..53292c31 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -266,7 +266,7 @@ LAND:IIS01:deploy: - develop needs: ["LAND:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj PROG:IIS01:deploy: stage: deploy @@ -282,7 +282,7 @@ PROG:IIS01:deploy: - develop needs: ["PROG:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj STAT:IIS01:deploy: stage: deploy @@ -298,7 +298,7 @@ STAT:IIS01:deploy: - develop needs: ["STAT:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj MON:IIS01:deploy: stage: deploy @@ -314,7 +314,7 @@ MON:IIS01:deploy: - develop needs: ["MON:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj # WAMON:IIS01:deploy: # stage: deploy @@ -347,7 +347,7 @@ SPEC:IIS01:deploy: - develop needs: ["SPEC:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj LAND:IIS02:deploy: stage: deploy @@ -363,8 +363,8 @@ LAND:IIS02:deploy: - master needs: ["LAND:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj - - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj PROG:IIS02:deploy: stage: deploy @@ -380,8 +380,8 @@ PROG:IIS02:deploy: - master needs: ["PROG:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj - - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj STAT:IIS02:deploy: stage: deploy @@ -397,8 +397,8 @@ STAT:IIS02:deploy: - master needs: ["STAT:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj - - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj MON:IIS02:deploy: stage: deploy @@ -414,8 +414,8 @@ MON:IIS02:deploy: - master needs: ["MON:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj - - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj # WAMON:IIS02:deploy: # stage: deploy @@ -449,8 +449,8 @@ SPEC:IIS02:deploy: - master needs: ["SPEC:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj - - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj LAND:installer: stage: installer @@ -468,7 +468,7 @@ LAND:installer: - master needs: ["LAND:build"] script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - *fixVers - *hashBuild @@ -490,7 +490,7 @@ PROG:installer: - master needs: ["PROG:build"] script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - *fixVers - *hashBuild @@ -512,7 +512,7 @@ STAT:installer: - master needs: ["STAT:build"] script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - *fixVers - *hashBuild @@ -534,7 +534,7 @@ MON:installer: - master needs: ["MON:build"] script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - *fixVers - *hashBuild @@ -578,7 +578,7 @@ SPEC:installer: - master needs: ["SPEC:build"] script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - *fixVers - *hashBuild @@ -606,7 +606,7 @@ LAND:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet PROG:release: stage: release @@ -630,7 +630,7 @@ PROG:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet STAT:release: stage: release @@ -654,7 +654,7 @@ STAT:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet MON:release: stage: release @@ -676,7 +676,7 @@ MON:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet # WAMON:release: # stage: release @@ -721,5 +721,5 @@ SPEC:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet From 8376c2c407f3d675bda73c739a4138a9915c6bf7 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 15 Nov 2022 18:28:52 +0100 Subject: [PATCH 7/8] CI/CD: - aggiunta step build pre publish - pulizia progetto WAMON da CI/CD --- .gitlab-ci.yml | 111 +++++++++---------------------------------------- 1 file changed, 20 insertions(+), 91 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 53292c31..35dea986 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,12 +24,6 @@ variables: dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --store-password-in-clear-text echo "Has Source: $hasSource" -.fixVers: &fixVers - - | - $VersScript = $env:APP_NAME + "\bin\publish\post-build.ps1 -ProjectDir $CI_PROJECT_DIR\$env:APP_NAME -ProjectPath $CI_PROJECT_DIR\$env:APP_NAME\$env:APP_NAME.csproj" - $VersScript - echo "Script called: $VersScript" - # helper creazione hash files x IIS .hashBuild: &hashBuild - | @@ -266,6 +260,7 @@ LAND:IIS01:deploy: - develop needs: ["LAND:test"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj PROG:IIS01:deploy: @@ -282,6 +277,7 @@ PROG:IIS01:deploy: - develop needs: ["PROG:test"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj STAT:IIS01:deploy: @@ -298,6 +294,7 @@ STAT:IIS01:deploy: - develop needs: ["STAT:test"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj MON:IIS01:deploy: @@ -314,25 +311,9 @@ MON:IIS01:deploy: - develop needs: ["MON:test"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj -# WAMON:IIS01:deploy: -# stage: deploy -# tags: -# - win -# variables: -# PROJ_PATH: MP.WASM.Mon\Server -# APP_NAME: MP.WASM.Mon.Server -# SOL_NAME: MP-WAMON -# before_script: -# - *nuget-fix -# - dotnet restore "$env:SOL_NAME.sln" -# only: -# - develop -# needs: ["WAMON:test"] -# script: -# - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:PROJ_PATH/$env:APP_NAME.csproj - SPEC:IIS01:deploy: stage: deploy tags: @@ -347,6 +328,7 @@ SPEC:IIS01:deploy: - develop needs: ["SPEC:test"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj LAND:IIS02:deploy: @@ -363,6 +345,7 @@ LAND:IIS02:deploy: - master needs: ["LAND:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj @@ -380,6 +363,7 @@ PROG:IIS02:deploy: - master needs: ["PROG:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj @@ -397,6 +381,7 @@ STAT:IIS02:deploy: - master needs: ["STAT:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj @@ -414,27 +399,10 @@ MON:IIS02:deploy: - master needs: ["MON:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj -# WAMON:IIS02:deploy: -# stage: deploy -# tags: -# - win -# variables: -# PROJ_PATH: MP.WASM.Mon\Server -# APP_NAME: MP.WASM.Mon.Server -# SOL_NAME: MP-WAMON -# before_script: -# - *nuget-fix -# - dotnet restore "$env:SOL_NAME.sln" -# only: -# - master -# needs: ["WAMON:build"] -# script: -# - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:PROJ_PATH/$env:APP_NAME.csproj -# - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:PROJ_PATH/$env:APP_NAME.csproj - SPEC:IIS02:deploy: stage: deploy tags: @@ -449,6 +417,7 @@ SPEC:IIS02:deploy: - master needs: ["SPEC:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj @@ -468,9 +437,9 @@ LAND:installer: - master needs: ["LAND:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - - *fixVers - *hashBuild - *nexusUpload @@ -490,9 +459,9 @@ PROG:installer: - master needs: ["PROG:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - - *fixVers - *hashBuild - *nexusUpload @@ -512,9 +481,9 @@ STAT:installer: - master needs: ["STAT:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - - *fixVers - *hashBuild - *nexusUpload @@ -534,34 +503,12 @@ MON:installer: - master needs: ["MON:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - - *fixVers - *hashBuild - *nexusUpload -# WAMON:installer: -# stage: installer -# tags: -# - win -# variables: -# PROJ_PATH: MP.WASM.Mon\Server -# APP_NAME: MP.WASM.Mon.Server -# SOL_NAME: MP-WAMON -# NEXUS_PATH: MP-WAMON -# before_script: -# - *nuget-fix -# - dotnet restore "$env:SOL_NAME.sln" -# only: -# - develop -# - master -# needs: ["WAMON:build"] -# script: -# - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:PROJ_PATH/$env:APP_NAME.csproj -o:publish -# # qui il deploy su nexus... -# - *hashBuild -# - *nexusUpload - SPEC:installer: stage: installer tags: @@ -578,9 +525,9 @@ SPEC:installer: - master needs: ["SPEC:build"] script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet # qui il deploy su nexus... - - *fixVers - *hashBuild - *nexusUpload @@ -606,6 +553,7 @@ LAND:release: paths: - publish/ script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet PROG:release: @@ -630,6 +578,7 @@ PROG:release: paths: - publish/ script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet STAT:release: @@ -654,6 +603,7 @@ STAT:release: paths: - publish/ script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet MON:release: @@ -676,31 +626,9 @@ MON:release: paths: - publish/ script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet -# WAMON:release: -# stage: release -# tags: -# - win -# variables: -# PROJ_PATH: MP.WASM.Mon\Server -# APP_NAME: MP.WASM.Mon.Server -# SOL_NAME: MP-WAMON -# NEXUS_PATH: MP-WAMON -# before_script: -# - *nuget-fix -# - dotnet restore "$env:SOL_NAME.sln" -# only: -# - tags -# except: -# - branches -# needs: ["WAMON:build"] -# artifacts: -# paths: -# - publish/ -# script: -# - dotnet publish -c Release -o ./publish $env:PROJ_PATH/$env:APP_NAME.csproj - SPEC:release: stage: release tags: @@ -721,5 +649,6 @@ SPEC:release: paths: - publish/ script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj -p:verbosity=quiet From 462acdbaf5d7268f67a9c5d70f81025d59e87230 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 16 Nov 2022 11:45:56 +0100 Subject: [PATCH 8/8] update readme pdf --- MP.INVE/README.pdf | Bin 246117 -> 246507 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/MP.INVE/README.pdf b/MP.INVE/README.pdf index be7a8d21aa9f8460028a939ec5132071f289936b..cc873d2773154d2a20866652c9044497625aa5c9 100644 GIT binary patch delta 73315 zcmV)7K*zu3f)DG350G9eHZd?XGc+_SFfb=DFefPrFHLV`L}7GgASgsSGB7eSF)=YV zF)%bUG&He@83%teIX*rhb98cLVQmU{oV8oqjvluSzW<+Mt_yTB)LB4LAa-hBr!~+A z*fuc=Z-J!m50s=RlA4)ayV=H@&5phqNj!e!=-=H#?EG&#@avDe8@2>{hu+)v^!)hc zLH9#y#}@O^w_pGH`1>EWe=tO;{qRj_v!K7hqU$W(@(e%%LiMmduQx+Vm^*LS)A4#SEp%Tb#%b*^s=MzcESHJwqQKM`k**%wFSmkolYn9<8X3#kJtD! zc5?hl!P-YiZi!-sgwOprsRyt_j8KoUl^Z5V`w@R)X}EvDYn+={U(qf`ggWI2;-jE*U|HwJM=9r-fz1k|C^nf-7%k6kn~<2>dQ>JN@6QqS#1CGa2DkaoyBo1YmrA#GMg0U zGIYO?qq3=R54XOKF;~!^c`gb)pxH~>% z0t^Wx(Dq$28)a*InK#KYZd`|NJyMtkJ;KK58qt-atHMlooL(KTPS4cnv4G{v7C2Z! z)JeDCCyF1-Ds|>2VU&}#spb_nGWmbJ4>G5j-&oYAhev1?s*@b<)iS9JPOHk-fF`IY z0AJ({rJZY(kw{K{W1cUx!pv=hQ3Bnl%=;KPx@4VXg3_)uIdqDCcg4)2G%q^KNMNysmqsLHiNF2e{a%7Dxn?&C1e zZTpnHEq132ZWoGzh-0ux#RR~`$;HuEYBBQ&4sLkMHP6)Ftf>8WT z{C{w)I#?5eB^q-l$*HyoJjnoI&jlLvxj@{4hA2g_@xG3a8ZS{S2PXMJs2(I?ny~JW zwR0jMX~^w(ct943;Axd86k>3!iBCj(0(6?SD8ix(L@Uum;kQAj2q=G%(k4P_gGos` zeVX+^`8B4RSkhGToXU$`xE2NSbP6%sdX7&a7LLBjr4Xy%*T5`9O4qKcjBI95_Ekn* zK+A9s`=E_kO~MpQ26RB%F7Zoj!Qgol3~XmlC0zs^iIO?z`i^fYt}ZmZL|~G1QNSp7 zfd}V$NJ*DsRdtI#7|(y;h?TrNCRa&_mqX8hFr#s*KS+29{-RQ9xXw6GV8p%GW-B`sFGfu=)qTe{Y{(y_#+22(MD@=qsU^rQ2_ogAf} z1TJmr!dJn#g~xx*2s66^cm~>h!92nIVv?&jcN|@ov;T1J!bSK@_au|qDhogoTGYui z&W9sk&7~Gdg01s@344nfNamQzpXcFwn_F6;U_7;1fL)I&3XS1%U0GJKmGaU|OkMQA) zbbMHjn#D+7P#b42_{SSYoYJU$1a%Q2g7CkAN_PAbZhn2BRRwATsEN_y!xR6D#hWOxwKl$ciz9 z2&;dZ_!``618)zkk;uYq549VyFKg-Si;Pra;swuq z2qAT4I}wY}5X%s2NRKkI#^BT>j4okJ7K0ECHH&p{>*+e7Di8BMxB-VdGT~yPMc1F<9cec_bS*)t*)#v6+$GdhwfPcu`4UkG0&M55IeI1LN}~{=!F#sbF2{3$_jSdSizPtR`44NE2w{1 z#tJ6Av4U4qS;6dKtYCJVtl;fytYDr9Hy(@PP|pg4kiup2%N(q5cH14SZdzD@P>S?q ztPr7JSb?xBD-h~gfyQT6AneKtgq~ReG4Uewg%$XQg@H}AfbpAHWSKY`fGV*Cs#ncI z+Kk{rUv1@*#97s)lUl#tc&Vuqe=C101pPe)Y+e(6zr*h)zmP)h3^GOfUNDfKdE84M zX#6s3eD|?XOVLnF{{4XGM-wdqBO?^s(6$hkq>weU3t}_4n^-V1I+CE7rP0wNS(^By zGe(zj%x2#;Mrjhx9zO1oF!e%s3=%5%pd&CWTm(Y>-ZA8}CdeB4TxJ!Th`H}?W za(e_Wc3o~23GuM*mpDXv@RCWwB(H&`me*Bt(2OFf+P(2+N_!()>YF>ljoYGll|M;y zw?}OHWrD=8Z5Olxda;7kN+&%?@_02t)65$LXijAltKmS>)|(hK!M!s;sK7f7rZ-`D zbNU)K9}GIvg^k<81(-_X0#SdZb|LHZbHS~aa7myBbLrwt>k>;{P;Xq-)RUhde|v>S zZN|h4sJY2@&J`{>bu`);zf_Ds3>cW2@rL7ENw=HOG z6$@{_pCy6{X8B_BTV{DpH3iKimZ@gCnbF?Fmigw4aO1QnK3xc;cLY-6l|V|o5(uA!T?nMaD}f-7i!+wsg{u5P6i*Z*UJ%260R*mzPNcNH^@;=u3Z- z^MC1#AfYII{+2DhBr%V5Yl8-FNh>7WMq<)WZkJ}uROQ+C?T=4j}ngV|tpSPJJ*5At%$xiv&WD|C6vI#vm*@T^&Y{IThHle2` zn;|QaIDILR?zYmhTSWD&=++!n>F zzD5#qu8}F9n{0nVt~HX-Q;kgd+GG=Ut&xPDYb0T`HY_F{4RBs+B%$XTnKDdoE=@M$ zE*P#&_OgcyFqOsy;;Z_bCcQAC?+|L zLc`ln(a-NLU$JC{H`d-9ZfmbAE?>9atLL~mozHOz8FXU@PdSClr#pmQ&v6OG>}$=P zLaS26n=^#vx_!#T-!8M-%=Cq#U zy4!k$D9e8==eV*V7YR9&baLsrrITN&)9X1Y*4aZ3Or70?u^0O)vpY|O8;?bCs6WRg zgcRQVDtwSQKJbyV0d{X<@tDBlS z@i(61X8U`yEHwdxw-qe0S`(V1k~1;OOBVfA;%u$+JOp+WW28(UKK~czn@lN#OBRPq z76G?Q76K?50Wz0#Faq#@K1UicpB|(16sP<*;m`baY@efymb3imkN?-lYJ>*zjhO9! z>u-K4jq%yz==EdB1ngUX<|i}1{RA__mqY%|pXLxh)9cs%e*NS>$$$RkN0fPC!CLu< z(lDhe>ziWzZ1R({#`zNzN5A?f_p`svp#(Pnv&)_2zvcVomVb_aVa$&vJQlSP=Ox1$ zH%-v6x3&CDmKgv2d-?CMB`->)^1m4t?SHHOTlok4{i2>ss=R$AZo+}F%Kxst)~3Co z_c|1>^6xd-SO4Msx&Et1XKlKD>mRJYY;9iq?e`e)zi3aO*uOn&Xs(98u(=NSXE_P|X5P5jX4Sg0(hU?7(J;QLvx* zv5i{LQe$oLLu5#(Gs(xL$DRiUDp=M5$)~~Ng8lqa@~7|ze(i@@s`Nj4hSnzLEJ`SKEZ9N2 z@J8yg=RV4iZ`9IcyzO&}FpxDU^Rx6Sn;e+P8l_m3IfRi#V)pteON1q?@iRkVMiI%M zvy0mAA63>ZMN#<hpv3yorasO?hA;{JJDC=GenN7(FzuuT|(c$2OV&4|>;OlfBz=(r<5R(nKDF9?)`26TylY);b%LCJuAb;dHlbvAS-ZJ7) z%}W!ZZ!K9C#kUlWDWv(4CbD8JHXGxXCbG7DO%Elp03N1B{(`yG8odG`L9&5;pq_c&>CDCAmhO1d65&986o z)j87Stm2U-PwP!S5TmaOvF2q=9#nR3Ty|5J5hQ8wEh_eEYlaGUr%@ZN3A5e0NK@fT zf3g0LoDi#O%#mxkBud9Fi*0zTMfwSG#6lS*bby7)zJ*{M(UvIkXAxXEswFeI?x1ap zLnT~qoIhwAbe3(&3Hh~1in`EJT9!Q^v<)!dX$OtcIUbQ#VoC(c@x1sDs8C!{`5?b7 z>m`x}zaC4%U6}1({@PG)L1LDj6n;k0e}mHK1r_;#9YZRKvB!CgC}Li%#d;meSj3bgti|$$0LVJ`IP^m50;)9LJuVr@#`;6&Z zCgF4)dE3+!Ut*6jv_<#mM!xth>~9M#)T42j_%=%xAJkL$X>Y)uhvdj1r+Dp|e}j5& zWq^OXxK%eQZds!u+~APSlV`JrMQj%79;$H&4+3jx=$02$gnJrENkK9XQTniG=qi~< zCzz-Zc<~@(vn@Zw_mj_z%I(-A*juntDVIc-%uyhN=VwnkZmgEs34+SM%Ot@8F;Fkh z0KLmW7Lj>TcC*KX&$%>nso;O?$1X zJ_T$0OL>JdCN}&CP#W8;f15C>WpSN06R5||4xQec4GiC}h9Y$Jw{_``DO)A151aVl zZ-))BFAe_%RMsHt6wMY8EaaMNb<>vdNUN%zj$zWL=z}hjJo}afLAjtUO_PEYU39W~ z8jF=cw4r_W#Ug?UN9F0|v|u6%3>#Zoh-J`qal~_ODpz0u2hMzMfBECF9Z@={-^5QW zLssgr`ml+;HGI(HQ%#5@%B$^C%?VT4#M*YLVvwF@I;3Sh33e=x_v!n~U52Jc~k1~Zv2W*!zWleoumay0Zl78U`w;*i}MF7R%>cPLy1l?WI|uXXdy;$QII8iz>GWc+*VHqU#*&4pPFQF(7{V;m_E zu*R3WL7xX)J+kqKmx+Rlr&yQ6p(YH_y>sIl^@S!s4u|h-NTAjDS9W<$O?RjaDeE49 z6S87zoQo*wsJ6>A+cbZxrZ?MEBr8WJRD%7J6rE|)G#;6N1a#Yr3__}u?Pm{U2;3#9 zw@VJ(N$TBN#MH8(q-VAMz+}m_1l);FBx ziWGE_P4gpVNELA_9rp7_Y6wW7j)H3`{(8dMpzm>G=iBn@jZ(e!221T0T=U2I z5QtIaOVy9bfzs_BzJt#^Pp1w$-~ahYsNcE;%?sX7GyLUI=x>o;-A!d6Te(5{otYfW zPvoF(aJ$E+0snu*aDQL&fBTZ}Ywmw_3;c)Q*Z1GLzJK_>tVcpPNNif1*NCZ>Aegb> z2M&m+ifxDaWyI}7alfEAz?`W&G-YH9%Lp_Qk)|kZf(7%FOUk8c@G*;9 z2?`aQcEkNcfJ2%_VofY16(@h-RRco_r|v~S=&q79Kq=&x zF7b2JT^Rg2ly=Lrv1y0yWwbC3gcB|h#u!PZ9V{4U95#Gde-&<8fG?QD2_cvp#~+zl zwg(`eWe64L_O&)0zmgPzk`Q%JFqJv}n2^mhqD?>ash}7OI@7WjH6a53zp)6y3ik(F(C%8aDzKuXM$xSnsxWGLpoWvR-AR4&p~7G>(gf!x6$Lho)`-%R*D%_=K^bEkYZ9le7*&DHDl}-! zXcArvT^A6}+gcV`-%Y|PJGByxV+<}<*+f8b9b#R)pXnI5AZ@iNt00R?7fU>) zqC6$0TA3chQP^C&XQND33buI~LXQ@Yv=u1meJc0w1(3n_%5ZbYi>U#wos!P)(;mFA z!s$RbKxrbd$R6D)n*|WI)Ui@}RI)kTKu`h$GZr1lEDQXcFT#j2T}* z+2?_9LzTP~QdwV7bby4rL*D^EG%+QSHp^l72n zvKCvM%bYXv5(J$iu%);YG9q0AVKAzkhvCwuBPgv)EAhhx2% zU53@gohlS>IIeEC>g-#zuDA(nfz87IDlw(NtA1;Y&t)(Bs z5}1gb*hH`W`oR9&7l?Hk545$BWnYLPA+GTa>&B@1$pdp7LwOUUhkgQ9VqfQGn+(V^ zsm4SwG`Ql@ASiFtvotvIO+(ddt(yx`ek=v!*h4d=IHZ>}LQC%1pU$TpQ%ttRD)y0`yk6`i|GH|q{A!P*v4GRP5g z@(vdxYzKIG=N8J#yQlSgSy-(-+Xm<_d*CE*iM2 zvpA!V9@J`F+$wx)o1(kV9}ZaP*W>bAOr(#IKJbsIoF*nHVK835GrKk*Z)-4~l;njO`fs24%Q7W(z1Fcu=VANEgVX36U)Eu~2Fbu0ly_ zB*xsq3JrH`arwk-`3$QowTVP8)J4mP#aHymOOP#J*q#u6y-?YnBFSX^X&r79zn4#a zz_w@|3HAjZX|DmL@YZw=hI5rY_XFb?ZIS7qhn)L64%!3y`M4T?w)}tG?@RcPP zeTd`E8KQ_C@m&#~7Ek`y1&iBPc*w7jPm#4Hzru*Xr^Zg8pkgj|;ua=O0!m?01B`!2 zzR-slwFM@cW)I*`Vv&pN1~_?eukly08j)ztwz8s$ZHLHC3<2s@s5W^L5^Y>m4X7I{ z9pG|W(GL7@D@={@TkwA-1z>oNQTu*|aazTs2|az>BXO-^p;x1jhee4`oj48wT6%-8 z)(>mNqtl8ER&gxby@(F>^TdT2(KaQ%zz9kN`5y zDBu`27#=nQoN(B3H>6RCHHHDe`s5V^0dWk^!A_hLLTNh?S2XLIfrFVPj(d@~a3k}; z2nvcwCiYsTE2RrgG4>S7=WJql02Z^E10%UwL^>A0qG>6z2)&7e(i{km#pzyN9Vq;D z!=48p)?FFGwNHPCA@ETn{DyVq#fg>=IvAtwqMQvBhJm@j`%_}0X$O&6$vW*G#ZKs? zTW`uGOm@`4A@0FzTOJIbs7^Z<-3-oij{tcSNqG;+=%Z){HQREE(C3cP4v-D8IHFP3 zG@K}IHW7)N6_ly04uoB^t{ifi#F5bLEXFYTOtysdRCIrPitWh`&dP1@Ubzi_J+B0p zh}XO7o8a|uxA|d-2JPkVQO6ZeJ@b=2!3Dzp@?Sitmj<}H(qI99gZd9X^sC>K9p7+o z`TpKUuby!w8n>-4bf7S=EIUN~p7jQ=mPj6uo%sy<(aO&oJfM3DBElIiAgjHjSKIe# zak{fG5LbWh>GGn%8+j*kjoJ1>aWGz|sy1a!MZ5L8s1T=kz$&W?GeE%Zg2~q?r;vOz zR3sslS~f=2mU+VcXU=jD)}y$r+T#?(+}*eFYou?#jxz^+6Ns5PVF!K`$8gkM6Gx=jXC_5o3&b-=A`xqqOB)vtr=1HY+gGyM-URZE(Z4(av8$q!j zt7b)nHHC`nK66cBG}TtH@sUWv(YD24aDAkKT zuKQYIIL3Ji zO_7Al2LPBB~cVB@Ut8-o8%_AHB zdS(UX5uC)~r25vD8}(XI3~t$uc#Pva*vXiuo;4#ESEh0@@kxF6i>~YxZ&!ciRLYbO zJb)4}O}h~JGK!|r<}Q*@C1N!%jVB8c)i3}Lm9z-+M(jBSdu9iSu8ZeY9jNJpGT1rq zwuoV;{V^GeCMU$OJIJZ+9NZ4;sd8eb-Qn9!+C;o8pTJKJL!mEImlrCG!Keg0g*jo6 z(G^hw$akVrN;r2h4%~pAf<}LinhIzcXy{c(lo1EWD}{K2d+)J~(S~E9d`0r)A{DD; z8vSs~e1Tyt05t3fF!hi>f;0_=<8?|2mnyNHk?m}wPsqGWEB{k`B~%gtj1(DN{(*!C zW&5H!gOQ$DjlDPRJ!*pE!h-I)8(X{9p%F>!WF5rKZ8h->jnWS0PgH+;z|<}~E3oyM z$$J6*ZO~L#+~8*0U}hO+-xl+RW2@ohY4P4^TVx%lGB461m3QF28}WnLM3!eTqztCvtmcddr^Z47iFnZ zVOkQlpX168EMwK!G;@C<%UqF9L9%U-*zHYTfTZSE7sXz2!VkGt&eZ#bK2^>xFj|3!ao%roIms!%tqu~wT_ zbwUbB_BI3hb5V!TW2mEhdzSYlwvgQRD80oky|=DFO!mmx(lvc{(S=F3l)Ue%V zwSlvVNmVIpwITizjXNHHnx4o@8ADGD8`YAY%7HW3uF6ZB5?B;hcZgmpFarCpBF}k{}uC#ai-k zHER?>I%MA<$$;{Ev3g~ZjD@OHtGFYJ%mZSo=4)cn29N#Zr)IHFE%@t#A;gx|SGk=- z{2qpI>Lwg2o`)PuIhKS~mR8NcjJj-{el$R_W?FIBPYwcCG(Gxt zpxkaYY= zI%D9%gW0yZ#+^4@5H`j}hgpV{DUE!XnF4cbeZGGl{Q=`jT*08On7Dz@SLABupRllF^=+W0cAL@w#X_lg;I6;2)V_cZS-6A zV5w8qVO6sdFQzC<_&qTYRf_c7kxDjRILpCh#XJzqGsa*@iAGK3t8zMpYC=S3CSQXz zrM!Pr8HU&c#HxwV@XA>mRNCUjz#M&Bm=kBYtXHtk8mk)tVsx@6b(fo?!~mTQ7I{^q zw+CV1nF{ytc2U`>jVi8~6b)zDQ@Rb)iYzkLGn52jX;4fH^8PZHJqet-?8$Z7I>PQ= z{UW##_yyae^-G&pgz1S5$RE(tGUMulaKC>p*h^gKFk#5wfLXL`=#4ro;S_zKHg;}$ zV2C4d6s%ConL!txV~UlSR8DO(4Q}b^(F|wZeK^HT`I1ur=NZ-!UI_h8e&4kPB|@=J zsgHo8BA9J9rsYq$rrR6&A}m<1>L$%X1>A6jPsg=Mpl3}++;B`9%t7R5PA_f6&`y7= z*Q~66=mJ^4g{sg{dI;vwsG@C5HdkuLI zU*F%bQ*Teaw2s!qi!fJT*WnkB%SzT5ezxeF9-nNq73PeebitTj; z2)9jx()u~tcUDVe8Rud>YFrjY^y4s#wk~EvQRTV+Cpi?Zzo##lw2qR19`v;4ny_<&<1# zRPP5pN=H%8$uv%b7d4bqeE5GHZ+EaTC8C!@Q-u4Q-Qv4|ViUw0?Iy#yclr*j`;lzI$>qwW3cX$vFK+&Z3Jhw3}zKi3kwH*h6}scCYwjeML_3P?KL zO&Fz`hDRonuW-nALHjuFLj5M;rx6rV(+e*KjeX3zOgB{M+*_h;77D%QrRj7NhpEEC zsV)e_)a|S-o2c2$0?&WKw)vL^8sGI%kyaoADEiy_I4ya{URl+vbaph5gtu+$l z^vCU-AcOl@UY2@Q9UkOan4a981&W-;bxOOP5GFzDv`x5? zJTfn|-7WF@a^W6;22*+)1Xfu?J}=XsWGE(7aBn6QX8R*46v?cC>9$~ z-vui>)0zv^xkK{t{Vvp`$c34?b75Qh4R9NZV;uBL(cXWn#V)N+9A?F+=T;^s@vKU3 z)vuOvK;r#f4FfUKF<3X;f=KJv#jW*rhDYJ`y>hk0Jy!J29`)3TH?L9p;hbU{@1|OA z&WDRogPk@HhUXr3lkT#F+h#?bfqlF_+TKs;oUQ{6wX0;cP%yq#=TL9N)H=r$lC7@W zWozdKq&t7HWntEwIzyT#L4IqCV|MNY=xOsjEqTXv9a&MB@ZFzoXAW^QE3aK7RXir> z2ckp4!c&V#@5E3dA(T^^kLdmKsP~75{8@(oE$W?QR=UN_U*{uFgqVaGKb(s^G38j( z?IBN)F{~UBb&-)hC*5BsMuO!%qP>A9k~I^)?OK0Ah?J1Ldpr{>N!xgqLOdVWi(OhD7+0E#xvVqXxjsKgnA$dFU_Gqr*Ph_{}b*dwvaCM53u#roeTt& zQ6G z2)FJ>O;GD{>wct_<`gd7?=YwP9lCYD>v8FR_vxehImXmR->RQ8L9r_*4>0H6I1?v1 zNFCO&@GUV|#>Kbl#}Wh^;8Fctt7x{pYJNZ>w8PQ-9yyx-MpaASm}>qTTbdtq=rw;@sq0#T^E86I z6hE+;N4^z5`F7il#`8#$c1r(g3;pEQLQ%b(Z>7)Hx{Hp^Cy4rLPUrJGsG#X|K8KS{ zCZD~P*JfQBKe0qX9bV&;&BkJsrSX4BNS)wmh{TR=$4pfCfQ-A3zUK;7^77XAoO7*C z+dol3sl(85y$?to>O@*%y%1rz?@*`hfr^$G!)be9cqqhc`xM|VwsLEGpkh8Xr|bc> z5XQ9+@ryN{y<>61wxfcnYss6qylu91eTuXm;;rjlOQ-9B;xUx!bUm=h0quWjb3jJS zqw0Z*V;S>H%bbcGh^UNoq;RS}vC`?NPSXSGI>W8$N$*)~&6lPJx<0)$Juor#%hB{6 z$=8P$dQ{aDzi1x+D!HXq_IZMvI&*TOUNe_nW0%PBC+YW3{{?qQ|C9XZUw*WR*!4h7 zlgjs`a4j;!sh0h<|IqQ9|NMV9AOB5$vHuY_PycrR&2=V-KfvR{ej=e&oz!|Ljcj zo;+^mU=RAvJV~Bz>?5c{g^TSUpF?X=t-qXlRC(evc%lX6VgfI+{rXWOv{Lcl z*8wxiGw_lco|i<{@yOYs4$GW`Y^?L0jOw8csYgE_zs{#010O4h@fwvw@zjWjP7Vtd zAqTEpeS_k~ha%gSQ(%8y2dXq|^vo5n5)_>M{(sK|cp4Q)8v~O9+yH(#5H(U*JygDr zYYk%5j_**o(`iy>3*GcV7>Bx9;dR|0+8l#@q`juUcn!9&h_+%VDy=n0fabi=EMDJWOGmV+-}YE#kNWF_Mx>g3_#Ww6B8)Q*6C4Z*l5LHQaM(ELH-v+Jb-K5==m%35ubMF&K&E+;thM zbW;h1O*EYEldJNkE{@T}zaSd^t2-(O}!5dRk9r|f$!Ce|r9NoxBM}KI`X5*IqHMGaL4=r%nR8@4VuT~B0LJW-(1A#Y_cjS(S4kiBV)qpOUJ zi$PU@SN*g%J_3hbdmuj5rqnth-y486fZj|~zj*To8(e=d9VB=zaSLn+KgLy)n%dPcEr~Js9MV)Q z_O?E~m1o@RG`B1cw$m_|IEzZeWIJsjx~rc?1v-;Q|Ap$bog!w@G1Dj ztaQXnF-i*QUmk7EbgFFMjB8KGV*UCzCYjA+mzz_h_-@ynA>?hY5d4 z9a+Uw7T=+J#$S(gpec!K`ZCdaTTq#$GF}WQUcgR>^BoHcH}C8-;h|S=}=spJw#IpcVXLtx=@qN zuE%Xbxo zJ9z^N_xhyo>MbZ>CEfNDK3jjwi}{3G!fpT9K8&Q1Vas9$6yB(c{WhO4W1Gh|pZEq$ z#R?g{rU{u%!6xg_PQyc^8$iQPjIl1Tzs0%d% zDmN|Z>URXiOd>cJYI z6~zJyZKT^uD7>J+7=|+waI+glExegfm}1_&m4H&?qLu4yB?yX(?cPX0SuS3obw)x( zs42g!Y(+K&Vo}FNsL?81IL%+-1ihLFyf>T7_FN4!^7Nax5GsGNFng)Dg-}rjXMNZ# zgj!jL!W#&+u0cEdprXo=fugfL>!EENc+kYo>1~?^=c~>#!0393-Y{^J*oFb7 z`(_tZz54CV0)b@3dv<04t^nt1k(zB7ROl+@qiq-zlvYZl^D+zyOgm*PXBmL8kZI^G z1C}!#p?lMS65PLau7T3=SO(N;UxI3%saO{5r+*v^qsJ9P*4P7s1A=Jt$ zF#R?WfQJ2h`#Op_MOzy)5h}{ahx%e9VCFWTZ6sjlqX>=H{kVLtT;;6<$QKm0xmtop zvi;hu1PZKT)Yw)6BwOSjIab1vfyYX4a?x1{7iv}lb_pvJI4c1hq<(-i5^$%V1u&eE zP!W=xW-Na%DU-Hzb4EhVETB-Gk#M->7zq{iR7i1eCJ1V4v&{rtlr~|p&4k((OL{W_ z7nhWf$4tPPxplbB1cx~@!J*qssJtlEy_Hb4wnu%@C2c8*>BKi`wp4E7uhzB_SXf5sxUB>T zFWYp^PGAX)ZigRcC$RVl1=X<=9_#_y35~IZknU*9L48~WDPWB?)1Ofvy?E%C(F-eZ zHB_JM?;SLn&g1pXGN*384x5yTLZYmS#c<%?fChMHES0H3FXh4eQ`mmdq$nj+fyO9& z^J0Hv@?)fN^g7$s5~m63hP0(waWk;5kL*u()=j87AY*vmT*K`jR;IUKH)aECpm}S! z-ffT&2fE6gui6ehj7T(z9F&g<<4`<cO(-!|v}KOQ(7H$PY1?%@9Fw${wT`d~ zdbXCvzOV}H)7fqKv4kGfTB83(9j=TH^L4e1nU(^G*3yM31NK1XKP}r>B*%huJo$q@jX9sBa(0TPXc&5~v{E*6MO#XWy83z-PqJm|1_fqPIdT5%<9uAtCCWm#o++YxWF zfb&6pTinl>V|9vApQTKUk+`!5t5Ropj!{mXuNv(Gw;^?|2>$q?y2%Bh3xOzSwSJ<-7F8|B2S;4 z_lOch**N*X;EWjAsO+TDor`}4izJlgtk7%``Vv^}xno^%yPrJ(>|x@d6QBsdw2D%X zCJU`_O8TfcjE6Zegw8A6czZA7=|CM<=lzYwmm#v=gFy$^a64Wy`7L;p;!Eo}i`L2G zTe$Jz`lOw>k@(hucbLWtjQ4`7PQ0-m!5e(FepoB5H;02UypAgWP#Aw2iuR1ohBIRr ziBG53)R3QE;V&}c#&^>r-kzzQML3jvd^deek(7WDH_$4AS7^e8~04-KK=FL%P927g!(g zaWMRt$;yH-vzyYSF~)z;w20**RHyA4?fXI$h2cguD=dq1-APQ1Kvs~HUJKVnSJ8^q zj)Wq2T&_B;vSC@@NA(P)=^@_+wKQW2BbRcu#goBGe^g;ms-R|7Tm!9}egXMZLIRzZ zk=ilEir_vnkXFoujWYThXE_*^%?qa%_rjt`Gd2V(6B}dUIi-J;R>fDm`b)~74n-SQ z@>MJtPHe1=?J2WBWvtu)T|lD0ar^&j+fbZ8SO=?DBpVqM_z{SMlf`T9*I@fu8~SCr z-e7U8?chvT{Nw5r!IY9;27pJKAZ(O5_Fy5TYto{}ds=aCI7fm7THVe?uIM)BChY0; ztbrfES*>KzscTs=scN!+;f)2f^c`*kH(2-=Z+Li1or;&XBQA|Qse>r;jIie~u>(z& z#L8}7>>ylUgh!(nC5R2?0kiKCI~77*{{P*Ur+aV;oZLYXn1DwTZoyMUa)>t^x|2M3 z44}{hm>Obp~7X@P(14G<32D zVYoU_AHc~T9w}I_Tb?)?dfCJBqq2_iYKw9Wx(HkLu)b$oL*23m5y+HL#=*%R&l+3y zJh74T7c_k-Z~W!pEqiJ@tGoAeO^3hS-mj>OmX$VJP6!#I{0pbHC5oqwlRluMSkM<7 z86_9;#;aG1#TdbVj{uH!j3mw(Z9l8CrH==l^zrbLKEBf}ef$92=J$i$a>7q*OB7E6 zCw)A*qT8dJu%}nI2z~@^!M6PIOS|RI6B}r0MR>d-LT}6Upc*|(>ya^G!BM_L5l}D5 zP`)lLt_CHAnW%{K;8jy^;b^TzF_2!&9t56}be6BSI2##%h&lrtHL)%uUYZjP&o6E9 zgYcl4$cQkL5ny8m(E`K}*o(wkQ33=LDEjMRWI}|i{ETL!(JLBYG8>U{G__g>AFzY^ zmBFi4-C_@aFGG2!9DGC(2-@pAEros5WkgMhorXGebm`?h_nUDi%x+XE$zKPFGQ#&F~?8 zYDtBE%bDl{Yk5l)%Q={q4C|&^7y5OfZrvZ&SJ(ZtPHx>1_a~J%szv;AMqQwT^7?VX zGli8`psPYHp{Nk|-ZWu|C_Udk1ggkT!v2&qwY)@Wnb z8g2CJk?LHHfkN}OmwOi;)GIB%AXv)$4uw3+5Xf3hD&$#ILzp5ODEga|@^hj(1=j5Q zEUjt8$9~5%ORBLrTU7k&X?Tkp7|KnQTMG^tt|8wovC-DARg(3psCBWC&3Nt$^ukb$$@Ae}e{Bre9XZn9}73_aF*w?q<7YTDA&>Of=>)%W=A#Y=+* ztM#co!cups*(Na2#{yo_u(rhoiW2JbWF9-Rf)@&Mm<%xSbFgy4SPpeN`+;Yamyirt zxQCt9?9lC$p$wMEtL>9bNV6GUB0(sBMU_+T-XoiNNr1Dyv$*ZLIROtoiaB#dfo5AG z`FLZfb7TgrbH*l4rfTw0pvjB#v3pm{Va^kC=yt>eGgWf@unA^W@;En41~jv_++NsZ z$-92VepRsRy$hzVWVY_TszWsIfK8ZN;z^;)KbklrOmlii z%8|qQTp*lj!qXCmxvG~=k9eF}7uqMmxyVq|=9j?vC)-k8<|N_fMYsM-Zq4<@Ie0T$hbz$zY5Rt6_sfXRHS9ziT4 z8#QJEis+F^)XHbgnp~r8nW#NZocXfHz8x%}z2>287m+fBqCBNU3kvIh>~SMH;X!hT zq0kS`G;rhEx5UGKiNjeru)roN5AxH?BuNo9boJAS0AL3KlcCulb!Ujd?FPP_lf+xe z(+D&u&VV_hW&O6tg6%+$@?99DNxL3pacHUgZx`kntdWZeg&G17&tzmjn_>&jc~_+x z3#fAk0%cHk7T zS(`Ug)BRQ{M%=$h`yL2nM&`gGjR4ba8Ah<^eF7L3b-xhxKYg3N2+9u1Al zg&qgF6afM8RTUF`SKDQPV&tJB(F~~SBw$VSxb9qIfG`$$THE4(7DNk!`wQC{sYR?Z zr7H-Bn3@I@x9zntyeKnH|5g07J_*~%Hya#Jnh8FNWpvex?o}ZW&C!^>%fcq=8LF^RQvtVu`hT8RF9f;GvC z_87Oc30u+~bDJ_Tk*T535c6^Dg1x9RKk^y1XuEb14eX+Si-Uj_lFqT-X^RU}4zVtt z?AfdW{J5>vh7C@;09djPtHl6r3~5Qle!WnnpT(iS4kkIf#Rd57FigI0)e@`I8Aq0j zIx2eTtCl;ZY1LoP9r^(pX18O=P96XqQ&vegZIskZx*s;CCFq13R={6dhPi|Y<20>k zA-9zC`u0|TseP~4FbN&n+IE_*X0kKew(Hx#V!=_9vIy=3%B8ww67jG=o4+NeHlRw_TKmGHM%n%L=un1QmF+Ib`a42YqVyhpxF(LD)@uN|=qc#aj zM$3f4beNb~kU3LCV{|zrn0LcTuKyUyxS%qo z8`gq;{&3@8;F@N4{W)xZ`sX8={%jel$Jzb5;c0TjPXk#R0reE!JT`VsWTS4>yGxH9 z+M)>4?`!^VT=ShG_t&_>fB1cY|7{D5dV}~6YYpN*CrJ*6JAJhJ(RhZ@1028u;#5EP zhMY2gcr#;!^n&7A%uL;*gO?|fLDO*OCWt-+)>_tIi?L9`fI>qgKjmUAGg3$qvls0u zssd1B`K*E0esDRs@u*OI5BwI@i>)EF>5M9Dwix#U>l%2@$pG98#rtuBHn80CP)F#n4TI@2cF#(G zKcDyu9Eo)CGdrY!W$@kLBOo3mhehjQfiPc;u!zlomw4W?AX(Vjbl|65mR>q%tSM)} z0!&PS#3)|W?;|d1O_c1IL~|?3n|s~uQT81p@iY4L~vJs=#y;z zwy+2R<}3o5GzGz>CEV(uzs5;-y^vy(guiv@L~1;`t3^LjQ4bu$7H47&8?PiQFXPRD z5@J^2q#VvS3|b|55a(RrK4NpDopzER!SVSGY2k+(d58jTAD6C!gBAn;_<_Ya;I=(i#8y8XK0rCeNeBNv4% z5(#f8h}6RRL*lI!>_!SF@+K~!MqDC1GH>E~w66b_dI-&?&67*+&AdszCErA;w3vq% zXne-QX6Sb01D})s@gBM@d9$7R>jwh4Y2GOLzuMO}iV+OsKoTdC`%AQc)o5q-xanON z%On}e#DjLm25qec$}I2&IIvsK#%_32Ts&3f%SEI`Vu&K$Bo1R1qjKAYM(S{OXhURT zBNmPC9TeL*d)TbWufv83mTY^A*a90=J_7(Y$Y*;m*5IULX-YCwQesPlUuO>82`EIw z7posp<`?IPvZp0`SxTpW#XLJ4!8g-kriF5>#-2-?;}(m|1F~OED)0joaJh#m0OlRi-O3`J6u>rdhJZ>|8#!H7w(jrgI*o6t8 z$^>En1Z`+Mi3}oR{jopoS9_sfk8Az)KNy?fYYYjedftt3=yo|$YJBR*xh9E;pa}kW zFDBt6TsE|CDY{RrodhFdcjz$Z!Z_4@ghx^X*OWc5t|8fSto1N*M-VWy6mnZW4 z`O?@A6Z>_c%ei!aQ`kMmH@4m3!+05w_K}ez)PLQg z{zmK}W!8br_3{K9>TLdmY8m109wXE z;&U+5(25t;KY;aus)N8LO^w7?rt~Ar&cd(heP^}kq85HjyyT_O;O!ZYmF-)36z_UR z-nLG>jg~bgL&HypqeE=lK>{k)P}WF|`V@%|@#3%s3l~Zx=krEJoN60ziGGr1xhpY- zMUE053DU`b;G!Cq9oQTT6W?^`v~g6X1e#`r0Gl|sq4}d7;#r-{;ehsL+a)9lvlhU` z9yG*o=60ccW(dbCG}IP%QUOI^hq;w`eV1jTrmZ2uO~Dcvf8r4tU~ zx70y@@yy|{ZJz@Nooz9=Pxc;F*G>m5%v98E(oigSkMVypTc1+s1-ln$pZl8XR{}M7w0ut1R||uiAX&hhW!PGOZ#Ml^ln+k_PC{F5A=yR*sYUKo;0lK4 ztcyC(rM)1y3Oek!3$07Y;433UrLZua6@aToi0+1+Su4e49>+uSq%w8;4o1sat0TeF zI~Z6?EQrwU*NT35^b%(8tE;Pi`sioXStCn{+)p3K#R)A%hq9zq92UZ2G#8UX?U}BB zT7Ah_q{4N)e!);kQcghFy^*=uraP(SPY{q+(t+hx+0f?pFnWcj!^V!fqGiy3+Nl>l1hr5_Mj`p8I&MJMowN z&Y6vy?E2j=ef+Yuag)Hcb)7x+@H&;h*hl_w&ha6|dX?VFM4}|B_4EF12zc}v<#{VI ziS!}8HTzLeY62;GNb5rioLym9XheCr(bu(v8j$bt4Z3>xdhB;ynJ_$wio^YXwU_T9 zz|?bj>G=`eJ$ya(`(^J_i(bMR^7Xxq`kqlUC!qwyGl=^IX@fnp&;t^J%H)g6III~_ ze=duOhue9m5odOoW(T){!u`G_V$paXpt9C~;!DGYHyQ|uXb3AYS@>q?XYkCgzGd9- z1_7XnJSR=E4m!ie=Wg{aXV7kcp?KFbe<))$j*+EJIT~2y0aq#UxJyg+C@-&|L`B8R z)cXJ>mVzG-+)8Qn!jOm5!ph|~)Gr%@%AoEeh{qL3o(p8jDYEjeRVvRX;r3aVaGP!#-)X1H2gQF>=tc^r}?zQ*})7<%> zl~i0yJa5ENw?#t~ty{xOaS=PXK`#~y`^(IPy&*i4(&u{r+|X-}yzhlC%NG}Yi<~XL zM|g{ZDU8>4m`IC^_s-$#vrJs53I1BKS6$&&G8;8vZ%lj8Hg=fDH6=Wk#1}=G7sy}Z zBs})@$gTV<5-X*pP%Pyn z>rqr`K>lLj)Uiwf&b73qsa^mLKEX3lVXN;)a4_-i=1q zZ6wWihj^+=w4whpbkm&rockGKWHo5=&z=gnyuYx(#w?j$$>UmXD!Lvwy{~WYmBAp9 zhyLMKkdvwN<7uhM0;o0C5UIWdq(hx7OsF`TbNd!`67r$nulsvmM!MEc9J-z#Q7asp zz(!xzNTYc}ZvACM0$VI_49mm{d8xOnB_=z(WeJ`t zdw|Qb1pl33FHXz*(`H$E=vbBxy@>n1DY#h*Uoz<9-Yk3w2hrtgTcB)Oq#<{qxBybw zgR?Au1+5X0Y-d>(yjh4+;LfrXOhhk#?JP?c@oLE%mW2$RyL@OBT0dkA9SV z4Pd;@s96=-i&hUb(Xcgw=*_e&h4C*&dS%(v29CHOY6k;@!D!A(cN|YBI07g-6mCF= zjS*&O{Ss9|>*11qzAW}eNO2BtNH9F#^NVeNfdc-uo0Gj7qI@rJK_1(J1*gWmO$+4Z zbzVw2rUj0u+FD0p2@d99;YgW-Mn0C?@PaIi~-fRgiOtDc`B}TeQ+*? zuEdd;jL!#iZnkVi5RzeZ-*VWx=*6{UF?6mUzFf=zMzEccdX5oAKP)V-EHsu0doXB! z(_*UlLS@7(XzVdn+Ba5*Nf?BqtFqrhHB=w=*0J3W`rz6TcTVdh53ed2KW(cRd5;qh z6wt0EKZ0l=Px2<#;T~s;v3&n9wp|UW9-4lp8%Oa@l5JYgx1%5)>zN++Zkt+dI>Cos z^wZ9SwD2^9nQrD^y5*EY8(n8YlYBLQOh@udwr02u$aTbslD^s9uW`!OG$G#AaX`#E zX^)F5$!jXuE>5j`oTnv2Te+IOu$O0WZ^!QTXXeONm+tL}zF&wYuFoTRt?Lkj5)kjgMuhESs-aIBQB@L zYG#1yV%}G6Wq7N`Va}>Ks8<`TBu3&squ#1<=(1`+AhG+hw`zFhbd7ymH7H}&yP;~; zIErtp2IakY6ZEob^blfJXVu_;I&jkdwylElQpNzzsu8xpE5Ye%iAP3s+{>y#O}9P3 zZPhTvccF{V^8WO)Y8>ROnuA`%ecKOI)OdNJAO({CQJ}IPl<#xO+JfV zr&g0Se_#`+SK676I~3bHk2T};*BM82e3LAFYFZ|+DDrpuUH_df%XaWT%Hm6k#B-hRYi&lFZ)YMBz`3 zu~;OhGoyMGqoHXHoHeI^YS9?obg1dUw>eb}DzWjRURl^Qn-quAo#mpykZRuW4Y8D> z*VLU!-xp>l)pO>ThJ%mvvBN>L?1Ag4G)6(0zGmv5no)LxUUUk|dsz)TT!K-yM;dTr znji9+wb5J(6qjD)L&o%K>EY5#iL-md6HklG7JZ-#vw4uOaB^=WCLRF2h_AT!3tH^76hfZ4!Mo+svb_fmJ z6=Qg61inO?2yMN8iYrsXnr1g~2Vlk1^3PSy2{O&29L=N(Fku<>w^cs?(iJ-~*&AEy zN~PWt{-q3nn%- z=y+khm;Gr&Q?Lm0*M%a*QYl&2!a~Lum6MfEg_@9E3VxvSZ!-s9*u3l5@r0g+`qidO zI5Ag_-iC}(Qd!m8JOh`BC{T{kfZMHsY=!TrgnAHv`>GCX({DFcl|fEx?&gDF=b453H!BGz7fu^~!DoB8>83j9a;noYoByil?4O@@$0a2W^TISu-B1M|?Z0)u! z%stUod}3`V6GE_eR6SkTX4MPTMN{D%%&j&?cPa~&mFE65o@=r*j$kj@n#h2DGR_D~ z;A~8Pb?8zwrzPK_3}(<7rz81jt>U)BAt^U%=UkAfDk(9UK27#EqgguV2iUi|ms2w7 zd$=NQ*?IV+?;ZBaJ2bZk>V3ACj1h-=Gj2@mr#Zewo2f)a#bz?pq}dL;?O?n5$LuvP=s;he7UtVGUxs!T#vecZ+Ii(YKf~%>(}NW;@((Y-)>8cp{0$o zn;G#%G>=})J5BcSiHu)2abR@@3loo}V=(m8LcCg{_!Vn~qrW5-wzdf>QkIp9 zk(JYtf{=AM+aE(NO-$wkAH|GEM|F9|76nMsj%h_^RJ3{Qu=++XG4{?hWG37;%Niel zbiSKI-8mHR3fI`aMcwJtL%%QI^UUj7J2rJaKcaqq5B=)*km5aQrMm;zgPt>dl+NV+ z_j86n5koF!&#W_iaYpRI@j1iKs0GM;)5E_xAnK0%MbGIuWV?OpTjDG-2aBFE?2%D7 zsOdTAIm6F^SC?rktTTLIGb4fb*ozK-b7%M-U1#{fdMQ(5ohsXaWh2@-!^eo`Eavd& z89uO5^f=kh@G%(_4lf`63?FDPzg_)45F*)!m%wl&b1n>stCx743o{XBBEe6TeInvB zZGbz>KKaC(32zItJFZwK_z#Ri{f$?sYA>%0bkMCa=Ul6}PshP4#zF2J9q3qpjw6oS zF+;suaw5T=7AIy*s>R&zmf5aoxDI*UxwMz>!Y?i{T_db}8SMPtL%}ibM)&!>>u{al zyDz&lbT`C(+U};ZJqW*Nj<4a!<60UGU4NU_{`CH=$~nD1tG7?@AC~#&dR9-fN&kn^ zNO`3@zGPV*(8;r^PYHj69rav)^}TbaoU1-oS)FdKJbYQ{MWzvO_8^Xf2`t?|Rcn!5 zapbCRZ{OYtsw;?1eK&-EzJIJzsOtN?^-|1LYopamFXKF*SfrD*$B~EdQ0;EMRSPL5 zuc@WK#=@6&jBYI}iz`}7)yh@hPBU4)v~uNGwa=xMal9~-kC9eJMDnG7k@@QUrH`vV zHD8@NzM!Rz59rj=19L!E@nM~ruS~dK7kadAqqW82v)`ac>pu1S@;%R_uJz$a-}58t zr}xk=zQ>~3vMQGLM4|NS2cH1fTJ$MeH0J9EADzJMeT^P+gQF;8s(djo@n8k_945js z+9&QTsG>u8%&wKXcOZ>_Z>je*{Ru9MaBA&ur*BZ~GiXud(-M_TX118H>YIiFvDV|! zHx0+XHCZ-QVDPcw{c(K>0{SN5cA1014%$1E=~8fvSnfy(go6^EPNDcm(F)q`lm$2J zrq*ai{Dq{%VN;wdUpFwWg(HNd)sh zS2khrQ4D=Xg@i$Jy?t>a+o z5J+Y-*7O<@=U~Da6lSa;Fn~iuQ+?W6k_1U%gj8ZHST`|!; z`t7t<>_Lt|S0jqCcKFE{K^(5z9zQ7~h!TW6ZB%-CKEgGBCj>VTESbvdE@cD-^Lt!E zN6!vX-P+h~3k_7Keitt|bTCFZEs^V{h3>a_>1U5S@xo`I+pyyjHD~#1x<0wGvqn62 zvPK-bvqo4ZT1mXqM)2)s?G9U`y0sB#r;VV3sR)(mJ@<~2>ln(Ny^IjP%=T_M_u}ll z5k`z{Q=ABY?ZA!SknFrx6Gw0el5`z*;)ugs;>e9^;>eAuy?A3QaRgO$ZIipi5!Tw> zR9E8x>nJ4 zI5m6z6>FwjYOpdt;&4lut=y5P4aJR?x6*aVBZ%66Em3%qN6<$$QMi&v@U69OD|rNC zGL`L;M_7r?^v_Bj!I{yka0SPiNbvkx&p3C>iWiHL9l2`q2oDiWqn+dtaQhnh${yi! z?Mk_wJ@P~iP-);vkCf+~KH^YkNTE)nUY!08J&phZ`K>Kf_t8LcM_w{Nz5qhx=SzDZ zRp!!vo1w0A#q%%X*>`^f0Wax{vU*&5cp$5`&ATP4YwusHH-I;D`u_HE2L`Hq+bEAe zFrY$nv-!{?KvA)fT1al<7?9q$_Z|U;UQ+a~5}&A<$r`GK0b1k{;vJ?NRDs&%Qokry zT5UATB^a=mMzce@7Q=FSxPg7&z1!$xl23(;1cfT8?&hx=iPZ zho_U?YC5Jfs?N>IcLulVjE7ys=c?VA&WNK$>+_h-s2eC^r1&#v#MVMyIj+hx6VaQP zFYG7kyNP1w3o@rAE{;^b>9KVi;-1xdJi2YrUSx99Hl10JDm0rpO=k}s)7hchbe0Z( zQN7achw0W7EQ6MJ+BJfvF|4#=B_$u9X?)soo6fwNR#vw8GMy3Au89wnY}0x2B$aQk z?yUl%)iz&p)k)sTx7AKd`9o7eZqr#`U|HGk%XDVxK+6bQ>Jp_4)7W{=Fr87KFxs?_ z>5Pk#hd|48MoqIrA~l^+JI%Oio6fv{j=71pOlMXZEPO3xo6fA!7Z)j&=m_P5)$Y_( zkWIdqymX&DHeEfc={)1+NoP9a8tO>XMyY#k20usDl@4>JvqzWdj2_n>Tc-1jXWt#u z8P{D8s;0AJf~}{)1mJ>vX>?FX?8xNxJg#YmJ}r|}O=lFfGbV7RGfQOdQL5>GJb65; z-(IHklN{kgNeJXk+s-Fz1#s?7cjQW2iHKkebD7}K#1(*hRws8wEVfVixej6_uK*OQ zkL$UmL<}gBJjRPai6LxWJQ8J|nXUYliIScB`%BwRzBbB@xiVM;S{q?yuz2WXuy}N3 zuppMaW@$Mr_=HIWm&1a$xfY>+R}u?`xLU3xmWf!&SnakLom*V5EEW&~{BH71RUN=$ zvv#R0fY%D`WEK#3@yN<%0k#FjNoV0=njqf!EZ~JT_np!La7*2j)k1jfcS~zgY)c?L zr+5Wz*)DixwgBAXW~H`}L$UA*F5Qe7OtCeB2_b3&fY~(Bjw6E^w|F>zA!ksg*CST@ z;!$Wf6HZKU0jlu%!aTXc#0l?D@eMc!0HaHNde^4W!3CagUC=TCPJ)ZXTm~+&gaxuAL2YV~d$@RM%03d|DcRZ3d?TPd*G_oL5#0 zSFwtN6Hq(P1>ll@P%b3~RNac}w1qvhP4KlBkXpM}b{BJij6JY!5z6Cb?XSETfOV1Y zB*t);+t%NiF&DSQEqE^$>U%dna2AW4AWS0*msb!}{iTQ{L9%qY9HvP1o?05tV*)5^ zQY}45T_*GkU6kkLGXVytj_Hh_2rmSMfiEiuwzu7C^;Qmlo!6BCznY>Hx~9P{w<+Q- zd$B%`-xT>&-5BdyA04NNYs7{mHq)n&% zwtcCnhT0}M_PgCS(FtFmoSaj7j0Ei>`;r%B3yrV+R%D-K0`7rQs-c)3MOIR~q z?i5z5^$=~OCL^Gc&s5do@u2glE_k_A>~(F!B@j7(f(0I@3UE8HRp@byv7IF{hFu_b zeif-zcS7K5I}xagmUgI~Rpk8_76Ze0D&&bfM&I@Ey3!Kk`8E{Vj$ zI}Is9)7O~oW*zg8B0U;gos)-7Qsycsju_s5n9IT2j)8Uxo0m1tjNvZsa>+t~w^p>Y zB22fnqBGl@$&B3IBl81M` zlIwHjEBUXxv>`vxonhpsbeuxJyPN~*Nafldnz~*O{jU)euYWaj$*<~4U3z2yat5A% z=n6fDyEMlIBV)h{)Uj;EIfGOW0);R_ioxG-7vUsUXyFBLzZWtutmb;R#hI2J30EUI zs(AFNzc2fgO}>17UzQbuDj*A7ce!N8!Lrm2(mo3ST-UeK^1}oaVZa;bu>E^@1;bI| z4yN9vw#>A-v(Mk}sBw1)+onYUJL>Ggz)gZPyk-gRnX^LoV}m%W8S3>*gGo07U>SWkYZ6 z0YqI;%idF!RPYLvk?MpPF4&bsM1{(1UwekV&-ui+H0x2(11Wxf*?!${v`d_Sq%bN0 ztA@@R7RYta z$1_vU74P)0=e~+k(QidPJ?!dtKK1?e^3hAmy7sPIpzr+|zIMVx-~1>u62-=Oad1&Q zUi|<0;@~3NGjtw*9tRio7V!Lg^bRh|Y+Jw1!9|&iAm-EM;8tc72Y!S_&{9;|0b|2%RiR( zVz0B z20p26y_%mZ;Nn^D=a$KL%x$#h=a%WGYf{~T-p}>$_H)te+KpR(s-rT}0-Xk^;k4b_ z!g0sZE0xx;GPu)0thJs=1J^b~Z|G&2?H|>=xx@Rp*yCrk=I3I`@%VZ4e(sa-q5MU@ z_cUH|^4G&o(BcV!wV2<)PX0di{q^!uFMoY|Cun`|&#;%jPkq~SSg2YkTT6TiRLZD) z4eJ%dL)}PWf_46Xk#PlU%nCv6P$u*t!zm+CLZ~o5atj{?Ck?y=iNF2)L8*mR<=?-4 zRP`_Ll#cwp(jJ9&%}60`6H+EK%?c3Tv#h8PUklEZMbXHIK}BAS5ZRbTUrSfavP1CK zL2K0b@j}se36a+lHpa~PiEsied8BQ9R1`&-q3Zdfj{jhPKYyHA9`x(Sp~OKC#m;ve zX5;z!NN=k>F3Moa$_T&q50t9!T(dXOm4p9%@%}m%?+?HAGTP~fasd}cBNDwcUjF;$ zdQOQ9*P@tl!6A@Xxw5bY5wBcW;<$f`=|A!L0xO^dUT1J9{D+qwfZ|pX-uAsvRJs+N z0OImll%oBAqDW0flG}ws%$C=FAI1y96vX2jo(;yb&5nQw=79uHtiT3!8d-;ykqIC+ zJWEG+4NgF=xRHJoJlndfc@vY<*OZfJY} z6M98ubTM7zPw2CaU>mEKQaJ(yJH;qWq-t(cP+*})WOx?*=D*i=ExUH)HgG>*;dOu{ zdO!B_1A!Nly|?EknE&5IRYghcdykPIfbET4&}p?Ok|Nm@xr~^FA^yV3GY7-3VFseZ zk{^kGq)XQ5W`A^aLN6#ml=#HVCdne*LKhMB;>(n1>m_kS$AJ?Z)k_De4ttCjLQCO~ zFIv#t7t2;GhXg_sSU9nmga+=yl95tV(_kYiQWhR>8Hu)t>f+W0v1Pr2JQvgkaB)t)#vQzc=39ZVz-oesEv8#!sIiDO0{;23OJU{#aUhay`ravPB{wq^eW#C6}1xSLbCnu)?nM)S=C<4SD~?u|0ivB@sWqvG6s@7NnX@`L*2Jhc>K>kp6O zILeUb7g4&i(i@ZO%nY!YjEAZD$EF8=G|65k!f`{|r8W-hdvmYK$o-4L!B0`BmE>?E z%a#);7qKcLj_0-WW(}}1lCnjjNn(O^+SV>6^$x?1vmZYoA*`n9jhK7Ky!o(=M4G zhwEeDbdndA1P@|xV3JAg-mQzSsb|!ATv+Rti+qb79(ujyES+fROI4>Saas@`50pK^ zY7|i}AM=m~NwN`Yn4F7HqcVtw6()^rhj>S>GD`yT*G>Xasrj6ddn6j!@sy)XW2K~? zVMx#GMrM99sZtXa%kjix;PexJnX41ui=uk&9=WGR74;HL%#OkxPNYiN>OSK03f8jE z*SNJ7So|Cx;~XETvRLY4U_GZMvW%z(^Hq(>HsJ@iYlN+CDNuL+kn${U`?}NAIhDp$ zsZV?JqKD$(Ettc5tO;sigc$`zt~w~_1;)~nUU8sGb7W5wHxeZ?1`PRsa^#}moAJhS z)ti=rDp9QH>E=c$zEZ?Nqtc!#3>FOWPfbQ5aD8EwPv~%NPRV;}sPNGY8}{RIbyi`% z5t>`Dj5xRj*rIEgP(?qZs|Ane0!@Z*ieT<7$#=&Ju zwRtuiNli2)9ahcK*RMC~HV3ghalt##`$TVKirN;v1n1y~n_-N9^zlHQ7gt%>kKd>wuVnXQ{NW4?(342DV@y@aY}3xuj6Kn1L+ zkOwU~V(6ROqA~DDcATP7XJ^YF@Db0m(&8C;PL75=sV9bCvzYv+k!TV)bi_ni5xC1f za?ufUBnky+%P@9-HI;>mwmFzYCETHXVBH9cUwgFRzAWciR?YP0PeZ_<()qm>BG8=B zH&6&w>##fLqy+DjJIr{}WkHDK7amj%~x z>g#AlgW1ZODEROt*G%O$NZWGVLUjM_>@Nj_OK*;U^|OU3xP}jTM)93hf}-lM7E&Ji)ce$ zEzv-fLe^4~N89WzQCLFHOb@B;O{+|MCme;2pW2WIJuRklWhWprgYSMv1~w4a+-6s@ zPxqeXtOv~j!sbA^Bfz$dro+D%%Z>v*nwN>$#6w|!(@j1Y+g)dax?@1o4taaSc*ns? zMoXFke~YD<$QShe4qN1_X`5m!P4+VuC>HebYO);TkgR4(78ySbV6c*h7#jCcg_R?A z^$IQ6DzI)5)QFS=nW~X_>yD>@fsRsBSV8Ppjd`zHt4C=2VE~Vv5Q0O;ww)W32IY8~ zo7i}NS)@#Nis;2>3R7s4o47FJQh3%1iZ%9KDCYD!&Nmr>MQh7OgLZ1aYx!Q1dm9-W z)}E+1CGQBUI6xgN>;yX!5B+D7Jn0CqjW`QgVbMWK`|BZ1N1%0N)bdKbGfo`p%#e1J z;!jX#oVp7n{PA=-rko)BKs5egDJeTu-bzG1Q<2l^{!2mmS+i_31hw2m!P`GF; zBMDT&m5weXrD~+9ShRnxrX%BKNYoOFG$=Rt@}OH3iVY|B;rj_1Z-fvR{JYR$`V?q7 zs9zN7fQyZaPTd z%MITA>N!{x9(Dt+3m17=XC!Wd=Tyy((bNq#??po&A9JD9wQhDr>x1syLkc>Mn3qF(*>j!&q22h8*~KJ(9iMcWQ< zpxA_M=9`1Y{Q!XK7i;MvTabY~SZb_4f@_Y2oQtGh%Fi$yZk&f;K@@u;Zk*e8 zySZ`WeB@gETcX3RF~JEcI?TBm4lUbUa!<_LHFR?)i}vZw_gkj@;mxfk9&x(s-WaHM zDRf6(N}eY=n!CB(?%=Y-upQffyI6QAzu9au0k6Q9(w<7|qFz0rXaX+1{}fF(_KW(V zC06qTWCToHiSE^Fh>H7#G3KW(0orG2&yf)s>`{tzS@c*7?(!{a>5aB7spuEXOjRhI zi9N5pc+VR7=ldBjtifCmvjHo*{o2x#eaZorbF<@BVP9Y+haf)K20zh%r7WbfQe-br z-1AL&WV5g#&mJr1`>{ivrspCD3H%<#6S@K%9?fPw6N}X>{AI1Yz*SVW~l8sad!(y=xBKr>v zn*nd*F)sAKRWn+Xv0y_Lr?&0(Ejy^o$Fk4oNCCD^&a6;$V$j-uW7P@IMT>o1(i4@$ zvsTJrFy~&!uf9=S;pvAs(fl2*WN~8mnjoS?05f&H&WI?15SM z7Xx&TVde(|Dcse`Ex=+#3Wwbf8c(zbwWIQwbhXEtx&B&q94MZ9(HGHVB-$1!2~?_` z?Q+XOpkPEB#~>nq*%Cj>9_zV=c?h&mSI0i?90qD_)ZIuhpFYG-lOD@cteV@iZV+Ex zwr9R)6s9G<6D6ETTzD@=b|r3nNbrnE8+{24>|O_BmpsfpHzH^I0>D>VOk`1$^P({5 z%Cx8ptwt<;)c(j;AipKOk>}QV-t&wM{E{Ed59@n_&}!a)GBS>YcD}jktRtgHN7g}M zEc1pM&qB-vRWw3dE6Qk*S3C3jPA0^`1;5C`={=a;?Ek}(f7QDZ>VO2 zCQ}&r$G3m|7CXZeTdSd~J9@%_i~9dR2p2Dwt#bzQi&s1&8^o%jJb4_f0yz|+s--K~ zysWIy-EbIxA00Vv7*4zF18waK3Wp7cz8sng-Ve#Yuk(mS%y;nP$v6T2_{*C2&)+J) zNWtJk{@q_Et}C~(7%VpQK4-p5YPhR}PAxw^cBb9m|GCuP@BiN0@V^m8Q|2XWc|sLp z%KN`}58;I34>S^948J%itK8*+KbV$?nm3uf_Lf9{PRJ880+s8T3UWD-j+a>yHg-@p zqan?bA2mv3P0aPP?|XIV+`FU{HT+Qt7FTUP*h6`+T~0>qVML@_qMI*Hcf1u!6^ym$ z*Sp_avg&%R`U__`E6B@EuFKJyY`(aRoSC_79M*YQx5C~cewGJs8nW{v+DVLAiGF>; zr$zjKx=FtOw{1suC=$CBNDNSkU$z~$zVrGS&hq8@^Jf{gZqi`L7q@{`t=E)H~*JS@|{`+zo@;{p?x5~uDI z{ImM%f;`dnC%M*tJbfN_yZo%N<`DW#zy8N#eTlx%+i>CjH+|TYuk~46E$LDF0PeQ( z$G5a#ZlMuU%UAgD)^NF}*R6e9xBPSe|F2(M9~UVs$A{}*^gea{dY7KL-y%8=Pm(x2 zcYcD~{?NafpB?*D+rIzAPqf{;;P&xb~zvNnN#xRQq#R?OXrX&);L$NBn+c zg?`_p(>oo_lU;D@$=~M_NVf3@TFGDMJ&AtOjnnt?{W-ur^?rVtp9vfH_V1?qImO*r zoPAi|i`c(1pFKX;+28R~XP?GTo!=jQTJ2JMU!{*}-Q$+TU<`iVbA7wVQ1@$ps}D5J z@!hv~#&+G~|9U_FXOO9rb~f3pXJwH)$!I+HtH_1*^NOa^a_*(6HHvhP3?;R+KO~Uu zdpz{I+&z4g@1?uvW5g9SyChoxPoTLfzq94k*)Bf=tzb#&*5r_GRuZY8JwG*_pe>fV zwt9bCkH00I?&mjYOKXWe#h=H2%=n9zF!~8zHgx1)&~RBSv1tV~84tZ0-^Cs;U#Otf zI(xsYfTgmu@kW!)=RNdpu}uK)Uaj-^(c4I`-+&cRm$yEay_ufF$X}IxIY@2U!uUak zK^uA#`_g_9m;JuUHB5bTc%;h{?j{=>8`~S(wr$(CGaK6*Zfx7;#I}=-ZR_To-?{g> z|4i$9s-B*nsd~Szx2xxGjgn$lg_^W?b+k0zi?JL>oQ)CeUs)Pj-#)?D05^uULl1kP zC>6m#S3=J)F5O7$aS?8BmSn~&wV;wni& ztOr|jn`jOqCx5|X7aF!xk0FX$fc5PGfDB3KRra~IKuo}4BT%3v=pNyTa=j2j$Xk8x z`}{(!cH*6-g_EV14vKMH`=Ct?9wWms@>=el799EzMGOPv!EzCh{hSi2 zh&So2=Zxo{`X-1S0pUws`5YCpY4Ep=j7R3-2=@|0K5wP zxmE2~CCY@J23bFjpp4Uxm(Rc7Cp)GdT_wS=?DpT4dRbS>p1E~-l{d?|v{+`EP4^9i zaI0^p#cb&57h8I=&us3BX9C@uc{B>-l8@z&-Pg_9b+ZpLNqF`jzIU^WUnJNIR>o}D zp*eo*VP;U-!Ac%EpN2Ob;`z=50mw46eF|Lco3-jT@8%nK_nu^(z+G(z=9qiWR!2hU z5={Fp6?yM)aEoOhPSC{1Af$+nxY~HIjkXxGL*_7XaV>);E&9GM9$tAVu_jsdX7flFn9#t93aOpusyop~9)X zvn(pNo>K@#=n!&NR_7|~5Po0rWJXAD@}mDy>Ec4e-7^gZsu!+#4WkdKd@%HDMmTUA zf1TAKpB40q9kYz%00p{*9v~gFflCVK($jVYnHgL-m#JnEp73hZ$vb4Nbv&G5(roA1 zPxT}B;`^rfv0TNhVm}ogbHyy9y0&t~?98Ticde95g=}*@jIN-w27CUF1ha+FWF3q< zuI*x`MsTpd+%|1_n8QqU2N~L;Dw=MW1XZmdO^C5S4)i)H3Pt?Y1;DS;?80NLDN^b6 zsF9w{d#=%0sl6$ML;)+S(MTBcT??6Nx%#y8;gfYT!g%#>I})XiFT3L=(Om3fx3a7$ zcmW?8uib*6&60Z~RHw*(zBY9U6pn7kCC5^a>*!8Jw)NT-1k<~3zw|UA!TQxAmm~~( z2OhVL2PJ1ddq?96JivbF<*?1(gImHS@^u3NUJdweH)Qwm^(kK3z2?`fYhAv^f3B_D z2G*|Ah2z#bJ-NE?OHt?qjGZql8OgrVx$6j_N|>cY zp66(ib&e(Jbk5&v8#4%+rMm^5EF|`f!;wbz@lv%W56~{o`J%H<*fO2B-Q~V z8%&7WOQL`bz!prOhN=$|D?!+XmjU&dDgBnEgOQzZ81`rw*_ZM3ujj1M~|e8cwxz#uOQ$(~+dqh9e_+4o#P zNQcn!Ftv!No)6wzNcMMp2wFPvy%_)Is*gbJevZM<6rNvX8a6WIgnEQ{YC-%zX=s8k z_RuoOsvRtEV3zzl`b>w%*roNl@YGC$W@Ux+x}quU^X|`Us7O?*M~P{*it&Aw_e4{A zemvPRU|T?rM|zWr4R=CV2VeVZ){{;H-sq+Eh&As@#u6~7%OZ&RiK=@Hd)#lbvlABn z#7&24nylYsQsv)GzPc~QSKz%Q2M_sm#XZK78TevGZHu4w>y7MKpDeY$(JuP4s+A)U z=}-y3eMiH^)}PXQtS)3#&DWXTs{O6!?=MYnIfr&vArO~^*4Cb;>Cez!K&E03n4L=+ zC(mT4m!wdTg#|md{OT_vQ;~=Lo@hy=>zR$d*T#^*Bi;h5-9ahGMb0z)j?p*Z$W$L8 z5cEsbA+lJpr|&Qi2B4s+LA7xJ9&pz&{aSheE;QaDkh5A@JeIb>W$30y=(1Lcn&W;N zv?5BI>!rvo=1V<$e%sd))U*v4&qH4me0B0_rt1`Qb`A9uB=twwp0L9sjpW;(=pc+J z%Nve81TVYqDv#-&K(Vg68))1%f>cFqIq7SmJAhC9PUR5}03vgB?UJSm|Qze?+*-@s-^n5s~wXY-=zW z9tKKsp}N@8h7B7jm6#HLjSbDGUXov4k2VOfJKvYcL!W9doQ!z#&I- zrxw%?!)=hQ-T~r{a&TQ#MN_H^Ls3#TJ|$i#dYzz@g|g!nOKv-nx`_iWX&oG!qxM6r zXIjt;;tnyVy2%+KUf`sQlTiBlmW@~T%*X2Or!i>E`J!99;vOWGU_TM$$EXlEIoSJq zTQw2rQueo<@RaU?uo37c9UL4f{#PUiMsgP%K?4?Wb=HBsgVYEIr`u0&m^n}uNW($x z5C!#O-_F2<(Xh3NLF$Z07%2jR{JAwTK62`7T-ux+?2-d-!{RtC=#>d4Fhu)Wu~8-m z6CCI${#PUiIdkqEK`(H=#L&7P)FnF5;XvO`7;sL*En~Vv$;5Lbh`|bjothc`!T{8a z_vj0>ZEIEpJ58&h*>(;0z4Z;4dt#zW)7)g9^DQshJ4zVXZK_leyBI9->Nw=(n2jPr zGyRyic_uOpH8r?R4$xxwF)z0e8e|1y)vKhyjYfb{MpA2M6wYCLq|T2~$@76vt=#L#6qza4QxKWI6~=dDD{u*Z-YW4hBtH zZnq8vjM0DIUKGX(oH{F!rjH@mNhjLG90meX(Awyg3G5mLm!=&R zRy0G-q&WlCltzwb^$M~wxNspF4rk<$Ahm1rRVLLjZN+medtTjmAnOl&; z`KKW)^nQ+zkQ1Iv48eCGG<*OSBo4}7hk}4;4Ujmf zeP+`@8yN|%7%}e%=x~N<*gQ?x9G98;uOjRpz$N+^OZ_wGzJ1NRi6q-CFF*wjt$=AO zzaM~5%(d0rpIhh^CWBPAB{f=_)|>#KIr?jOozVSq%sZv;X1A6FG=d4JHZAYH+2dYeUd` zB|@_H9}>q6KO{!zz?JHBrWxDm2~{ouuv|^^X|t2yl(srO?D_iz{apfFK}D%&O5Z}l z4l>V_ewl_KB-;9DxF{gBmF10LloH-b^5}f}I=vc!CV-`(2{eL8_958m)1N*pXf{_D zhmq#Kn2Pk>jfDl_y>+F>?fvSxEQgUCb**W%5>8kqT&8!2Kg$UHhOdaoC>aj}@WA}a z6;hiOkdTK6nAX4f=tzx^~gK-!KiE0a*uPn@%yN@@tamgb}dm8y;W zRcDlNXX*S_H%Pi~#(-x55mm9ATHt~^-jrdKKn&*)WMrH`sB=|mB%F{}PSxf!bA1XU zi4KSMVolwC@RBCHkCgpUD^2qT#6^ zQVg0&G#{+&gfPIx70Iy4;9t%S$0+pUB6iS2yz5K?kh(Hk(i;pG_DAGuL)5t&(Mb#hA zj*be~+Kvidl^j0-Eol^pCpD$UwbN9>14{%;)bUp^M{H!cPEX!3A2rD|Ga`vn4KoEO zwk)Ls$}FWK+6F3l;p9mk5#&j^N4}JrMS0DICgH^}`6#j+r317XDtRyzBd(gA!^S3= zf$*ad5^dzv6j-1hRy+fV8b9kyP*)iF2b6gv8+H)2V5Q3eYf^P0IPz4ALy1y6gNafs z*I%l5zEtsisWMi{i>5#}dyF%kJ!}d+!#s74rHH1sKNbq!jVt-$5#B6B!;{D zjw3Jh^?tMBkzi3C!KSY*ojh<&S|KywJgFAJJ?eF~?>>WgsFF228Bzzxfr6HU++%sw z8q#wD09H4Ff=XlLbYgKtjXJcY`(DJ2Iv9FjvKmo@c<3bKA;ZuM8OhBx z8kAHtQ+ft6+TUd}A4 z2X<^D=elX)3{`KaE99!t%;gQlHFR4gR;eC@p0jrBJNr8M&uR}ZaZq`pl9r-_QT2NW zs@y2BuX~nt#}X@mfeRtIRKEZ~%p4?PKSBD_G|f@uiyqZnbJsSZ19qHN&ZT=K8U}re zQqtF^i)ltHm#Q0yT1G+FcQ+uKn%M%ifT})}%vaqxX{`ei*m6eXybOoAVtU$9uxrq? zR5~dg8D3R(bkpcr-WG5OSBlDbRZ{ebP!H^PzU~2>&4ElI%RL%g zEbgqck9`g;{alJHa`-^*_K0vEXnS~HO}<{sU4F#m|5JZwa;4~672o>+x*$#k4Nra9 zG*`HIZnrE06MH9dTg}#S+arNEUR`);`06araB333$$1`~a;LSMv}K`T?x;`5!V6nz zjJ4@k!Ccufp9UOi>3Rgf+`htRsdE<_7kLJ|@-O+5U5y?Ezs4v#)DLwu^)psSBcQ9| z46(%$y1xEcKTs@O1J-&fn{UJvcd*%?RQzdnT|D;~w!Sq3wR@$kmd(DQS_;11XJq0w z2xN+tSTgC_K^`6m65hv(5+%OPkg$^t{b`uSCi)+clI;eZI}BShhjy?5QvLq$?lw*s z%QpKOb7x(zBA9>a$EprmQP6O18gIMCs+P^XUVUKJTif|M;m@<%h&SnB8~W9}j#5X4 z;PU6)MGK1bGmZ7I_4v92BbP+)4?R8p?c)x$o0a##+(G*q$$cHi6O8B}1$*c6w~Z`b`dP zI*&yp8{%r-L|~K0Xke4Y?f<$$c`R@!hAzw>n?1k0z8fI2Smf(DLi=rd z+k2b|mHp_K1z9dKOaP{D+qoXYL3JXefc>8V#t)IjG9@K_1S;ssQq3|Jkq@as=&s}q zgTmwu6V5u+{O?zU3I2|bsK)`vjdt}}oA{@p)VS4~r{6`?%* z{)dL!o^paR7X)mYO=1Rz%C%ZDG)=CC+u19j@ix?A2)_j_P2~l3yG?xt?I{ffk(+7C zgdhy^L zOCP#bwO{3>v$Qi^<(*=vEfAU>2>uA7)=SDAb6}rSj!^aqun#BCp5#90|6d?ODJvHm z!VmZrGIV9^7hei_6J@6Ax;+1pm9)r(wYo<@)Hn1fmb<9VmXkk@acZ`Z4Lcvt`%VFK zH{<_=cUugK2ry7~YRDdn=^upLu!DP-V_?(~ghYibz-%)nPvu}x4rWpqoW`5$9RNvV zJrqC_M3h0k>lsgX&cP9s4}xy{Y=cDI;Q}NE@C2_ITgP}pZ~=Y5z8f5@hP3^Z6X_Fy z`ifgPB{JMn{fA5AvmpzfT8*hvIgq|YPiN-z@5?gT8<ltVfHi%evWY7Xg9Qc1>QyC_ENp}(p1tHF#X5|q~`ou>c z=K-zggoRFo1LyW->&H;KIyWemzD{}Dgwq(2LRY%+=k_f|fZS}2jyf_#RX$6m9G`4u z`nJ@A#IhJ$nW520bqOw3U+m{nK8V8x?`M6N7?e3vnX9|U-A@cvLH^bMg;R|BKsf

        L)Yq)ma}5DX4K{o~3KJVeUcDK-ay+Yh)&q!F=m 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

        $ z9q!HsY94gwSJ(;%>ry{k6qwh^J??8lnp(di)$$o(pRdOWowZg>qGYs+xi?&s`hyL79`;;Hf1)bxhGj=% zDlEVou7I9(*5l~WIq7I%iu|SmO=-%3AfNzXSpMxMAube zH=GIU+SOjf9PQeu*$+V0yMF=iw$3>3*M%2d$8qgTXTds)7&F^t7ga(MC$nDPLPQI} zoOjNM6uQVICq6m%-zW@oIRf5LAED}tK}DsWJPHE2I4Y3f1Nfn;%k80 zp>Giq^)`F{V8OlK@f3lDWZ{`WG!PZm+9|mbhy}ye=?P9A%$Sa6ml#FIMa*LKcI8M6?Y zNC=)6(dSJ3W?aMylUfHMfojd!umq@)YR}+G%##HQDSw`#rOTIgZ7{g#>PtA8K zJf;>0fvNC1e8@=^=h%$X=QM~jy0|eiI#T=O1Y|R6i9sSgNdoE)ZJ?j>q6EP!o z;kJ45`;^*JSm-8M0B#-}d~2k^;BvvgbB^#0(Oo6=+B1<&@DcEA@GfIg?lELc11QvV z-8q}wUU|~wMM}?4Q7L^KU1kYdG{uf4!v7l1@LDgDq6;q0iZW&t_K>eEEU;m^WiTQC zG@E6_HVW;7)?viX&*;Mjg{_vuF975j6 zLq}#*oKXb6DggMd)9~s^Ms?rWf)?9=sMSJ=mJFG}qgPK-=cr!I1SNW+>9C^}2MkSR z^%8`bG!f8(VoK*M`y=~?qkCb4BK)2FELZwWp+ybb)b=9#LSfx2%m0}shGB1zkeSR7 z7&*U<^ZW~P8=`8n?tN^Z5p7clSqP5;&?dWva`^!Ca--^F7*p!-RxQ%@9JiPz>|4gF zBRXSh1M1N@EyjwC7$zCj*p)RY>DAbar4OMndSo7xu4I=DN=1aL%A9-6cc#V-d}bgG z2~Nc(BTNCX5`QN(qPYpcntz3oEC6%P!PxD3W5!qalR#~JTg_S&s%a~2 z;Hr%J=lsW{bDK#&W)aIF$QQdB0P+6nTA^UMz=O&e!f!%HXzPEI`8N(ZitaAWDW~?z zA?uR3bp3eu_4FR>%ER$fK+s(1!41G*|6ao37Uu#hm&9bWWQG#Kevx#;-z{TPN%QEt z$@ak;8KSnhOycx3@B#0Q`!#X-G$vd&mWqNS$N=1NYAf2yUO*Qv(YUSiFf$#|rmf3xn>=9mmKZtj zjks+W<1e)ZZ3Q&kuc4axRXDTK!lPu@@idh4;6y2$Qd5=TXu2##WhxWMXf)}{WTrxH zOY*97rt)Mb8&DZZcC+aHpKfGH%qdzy%_VB%nxr6)xwhljq;NXatI4;sDj011x58eg z(JU9YGs|p86bl#mkUZOCh2H_};;~+2{L2quGuEt_4&ORFF7)^H_1OnD2+fP)#B`C) zarN6Q#IC#w&Z0}b9pGccx!>lw8w#H zErH20ek68TJg3JqUdqcoup+`+OwPSSRa4_VFH?}cLdW8P{|Br{ zY^YM52wM|cLo&V?$3Y7-M?#r3T5MXR;6)O+2eL`QqiAto*)yT2s){Nfd*d7e*1Ki# zz=jRJ2pcr+h5DA??VYRgqWWZ@J>rwBmAg(SAzz=5vr033;?v7ny~?kDra~r{HHuWv zYEVuo=bWHSlzVCw^6%%_XRLOA;EA5Ha??#T6@d&H?u>`Y{4-`V|BUL)KOMqNE{!ph zOJmS*XL6Q1lUwA{7*%JO1_5;@RTe1iuw{EUu(x5nP61bbBAYaYA8K=^~@i3SSi~`0r<|8&Z<_yLfSCxSx2Q+_M8Hj?#EoCbMhn}ja@d<0D zo_~qol7H!W63o6WYQv}Vgi|?{d+!y1NtYQabv{{U?~ub(wojjbXO{IRA8I}yb6?y+ zIAl)Eqa@9feBbk`8oIx0;QvrLzI#~x3pL(vTM$)*h00=A>EvA)Qr@Mw zLwOfQtao8ld6&X(vXpmW%z76_C-1_5_AZRsu$)mHmJ`+$=~RlWHGwHOn+Fa!o$1w;#*YN%khnyRA6$Nr^^-x!&H48}7?dKa!;Ry3}v)>nC? zSMpYQVx4H}@fb3!6Ky>nV++=awjPfR-Lg(x)Z;N|SSQ+gJjQq$iglu?$7>LO+6lt*Y{7f^>{LU*p6{gk0%0w?HzSJ9ts%fBHDU9QCaLNomnRalMN`*t84%x zCNa;TO3ask=uBdsF}haC07j>JJO&Kw#8o{WqlR^&8;Vr*c&!Od!Pev9IA~tZuuin~ zc(^_^Y-bYlA~4)4-X`Wn0sBHxRTTMzb;fVsII88}fk$GU_ytbC?{fAYQC!dG-pdaZ zV4^#}Y}D^?+b;uyd-xuBek)kAsikAcuusmGeKMDSdX=o$Cuj3ku;gOdCzl2LILTB#Drjo8?T}j8tBI3!WlCET1NypeC;>oI#jse3xIV{f8jH>fAK|_tI zkghdq~F0{@9I4J!tW*Uoo4T+$7|!{H{K#WKj)V5`9@{%FmHtz(mcEe`&NiC8wE0|qrg3X*tbHA86IX(@i0T0hZ(ax%&6kw1_=-E zLA?`_cA%@rS6#^ASgoVOlSLnpU4Cxqf z5BiM|BPIr9Q1S2{lHp;-EDtj}@h}6LhZ(ax%&6jFf`%H^`=Hi@hF~fLaTK&I^Eya8 z=8UGgst^=8pz&wJ!ys4OPxft)sHut?AM@}&eyjHMP4_B8g`5iY$mZ;cH6B=TIQWqN ze>(pK{3v`$mxl8KJpnV9#Pb5&f3Gl_4ejZ0^*#qfu(^Es+od(okJAUNy_VozvUz`k zX0^Wm8y`;YO1WlRa=aAUQeVOQ<1W>2U3kwtv+)nRdSkC{o$Zr!`4j#9h4z)Mtilv7 zmL7C2lE$5l*F;^0*8P=rz~dgDpxbx0T1(rC&kexQk1zG10ni%kEC6#!f6iLbz87_v z;6ohR2&9ehPCqv?12TnBCfU%E)76u?7*qD)LzUrE>s79)rWi^b!Xs3%f!sRTpbhRO_8yZ< zG<5XANq3n$MyEw`=mZTkMq&7f6vEH>z9wYxld~^ zFuv}t_j7#>xBh&F&nmLs&yKx_irU&f`txawcW-Xqx5`GwyNzd>e9AGFm_YlNfB$r} z+0UYxP)G;S(yQa=w~(*xrI`+>cpEQ_`4nS&%w6eS5Ev_l{Ma2>h>19od#BFjO${DrME`G z_0tQ^JLm1ZQF5$GuYQz>zj~YPArX-ry^rd#%_d=cbT!F`V?feHp!g=Z6PTX^3NxFDnpO|pvdB!MH90q1q_||f#@3xeDoh-$T--cF-<%eOW8x%$#y0a zrpgmzWWO;6L8J&fF@Hu5-AX|Ygo!R7y`yP92aa*+rd<27_jL!-%J>~EbtFqK6n!BbGV!e1Uyp(rw$AP21i#_ zxD%CmQRz$=1ksi!zQ~StOd^Eo9NYE67X&(gkb^GX?tDQQd4E(`_=31EF7rGuWL0L1}>ewAxwcYumiEH7DL#``dsQmM; zrZTkngf6n=1sWWD9InrmZ6)wt78O*;+MbVfrp?KD*LPD3@H1THo2G*o$TGBz}-nw1v7 z`fBbG2N-D06Ay6>W8xug2N%$Bz**Xi2l0td>B7MAbOYd`u+!noDiUyc6`e8zh!_|| zmElg5=0&M95!JX6Q4K2*)u0Z8%L*G4Ro-&+^EUk%6Mt2|L@w3ukqcobOjP~GMAfSz z{lY}mPfR48(P-K%3lZsZzzF>wxWMMnu0;%J{~|5)lyF8wD*wEzsSGVXCZb>@`)kgR z*&b$ALJ%iprJ0rxjOhf`$q6$@%&sKElli7>u+L{c?HO6C#P!T8e?XQ7S)&l4j&(!Q zA`P#k#edLBTEUi$v>4k-i_w*|g01YKQ?|v}7CSLWK98Km(8^hi?V%H+OX$>~L0N%v z{E4zg`|uSVW;oR`-xNBHWeo?_)eld`U8>6uaSUb{ViN{I@eZaLif|_i^PU9)II*QgJ;|LA25dmX$i*q ze1Ebg>=R&q$w!5+!?8}S+OVIeKGu+a|8Aj1HK zq^%S-mIZW__EH$`b1<9=1cZh&cYcobjGtrO`8i50j6co%9H&~?=nX~#^MHBjiiQ>Hs=-|2Sut!# z0v%v4h8>dK_&M#xu%W3kH2H*}Q~oUoddWTm26x|jG!RC4zGcFA%HhThTeO^QF z=clD45jl$LXX9j~vA`KzNd3r=NGLi#P9J0FCxe_C#|Wp7Em{Pb~*`TFUjoPPn@;~vF`FrIHA87I?W&HTZMOf${h&7hK)m-r1&3o%v`H~$2C|H{)z)r_n!pU?{A|Kr3G zBedk*8lf??=FiFdEq`Wg&z~7x^Jj_)w)~l~Eq`Wk$)6co^Jm8P0FBWlK!0n{2+;VI zJq2i^eS`)&%!nayz8-3fWsP`5S3d$5+@(f1LmVRzI>ct-sPYhROmlqJ6*0wULt$PN zI>l!UE%|fucFCU^*-jo9bbQ2%i#J=nkFmYp$LMtOz`$DXV{8x47+u3N!c>iB4$oQ> z8iLuvGn@yF%d928v1+tcbAM9u8whiVnF^!JnF>LwNw-ieH=!}O^-QJDvJk8;2dvO-XDYZkG;FsM ztV#=A#h>KAL;m?hPi5%w3B@M!8&Rz0p*;_rf<*}eC76pwi-kg+OtMNvx-jrTSwA={>~nav3Iv?L32qAent->k?@+}Y_NmIesB|VJg4VE) z@6gO)A77W*If*aK%w@Th!&a7KY%j|(I&%^M8z=D%nw^sfT{$TS)niyViJQ=uHf&I2Hg=}S(LS7Wj5FLAXYAfS7B(nB*FU%e z_o*Z^1Oi;7f>X`{0Ry+GD%^?6yr^`hNPXP}ttQ^^9JTR1 zo}D52E`QI&kOXWD$ya-Jh9q=l$eM&9Yg!nxrime?GY}-q0tBh+83d_o27-j$0YR!9 z(E3GO=qD;ybf~;XZK9qMRD@^DQ5i08J`%!ku!G zEET+H=Bk_Ipn5A9*(N))vJFEk+hk`qwqa~%8-GSOwjoYk^F+qBJdwdQPh@P(6B#?9 z8$y>dT!VmZoL|^R+ktIl7$BQA-;^beWdYgf@_}t&pMz~wAj7YR;KcpAfaA;W00OF))w*#a`gcDiA7IwxgdJtt*sFT^pr7UBpKMcOj+ zO@C_wQ_$XEG%ydCm#%17p{^Rt74`>)t&#u-P=SG~fM~&~R0Vn0R2hnV!ZI9F)CRaRY~79s*6I z5P5CXV`XwC{wO@xyuXZBN>d`7dCO&`$xxQ_b9`;#VUrk~?m_Aoc8sOxi&9qg=Bv-R zHRP961NS5cbKy=OOjFnp`vDl@I=9IB;m!CLG+Y9F-DkRY|LOPwxw#FKZ&>UYNPoBC zX~)-F5L%(Rcf|MEOcf+`I}bZstfaNAN1}L)+K)h+H2d>-wN`_iHty?Z{KW-5PyX$` zF#Of$?Ef!cV}5AGCE2e%Y{z>sa0do2QDR8D9iXpwVvvj8$II%~J2+1d{n3-k`5tt< z53_l|)0gqeN%)+|1HbKbv)$vH?K7!rL@0fc zai7g?W{GW)9fs-h?0Ow&(H6$r{Oh-_L8LAI`YJPq2tF={^0Kd9Y{m$6Sn>;6O~Qvm0VHW<7fs;?Hg zm7kYwt)vgt_^~ahMrGsbQjKcRa%-Qmd9&WyZ`gKgzoE;meZuTojcV9hjcVXhjcV9Z zjcV9-YoVcYHR^!08b!alsTu|CS_c`!Xu)Kf@2IQ5vb6XD%hxi^v`bH^=YT-8?9&AY z)u=AurS=V~a3?DBqEf6zHE6lBKvq9hX1>108>rCfTJL1scdFnkqw+56e-sH~G?zH$WHnzO)1RtKKSD zE@`<}BWK8!<>J;Mk8?ZV~qdwR(>}6pNyPI$$vbP5dH^k{{e_F%Hj%TZe*7r1p_vJH90jt zJ|J^+a%Ev{3V58YRNHFYFc5wBSLnGAMRSoff)Yr!-8{D#`T=bdD5Q|||DiLIe9KD)r}rUN?UADh$3rDdN7r46lRDBTH};Lve3Ehi@O;Z;i8uq`zDV zHZKYTXV=$9*B;)UhucST&wna^TQ1}P5RL4qMuMfb2Tgq#hub5&;>IT>s`|iD_E`X< zLvrKG@G%6{6Hs)pj;!yYy#s`xQ-SlH8-ER-$Mb{{$gkLdYc_kL%t6D!jXzwS(1CLT zfEOlAkWVvoRiJ*4R~JVSpFwhTqMy_iJY0tqI)T_X+sc8iLMed9i>rNq(d$*eD|stn zVh5Ut7`5UE(IzWO)yX=|M53ucwVbK~f) z3bE+@p!d}8TFwY<&dO_loozAJ`6#`!rRBsrw<$e|1AbS06&<*XF*;_0Rv3~;F6(w@ z+2I4o8$z+2*0tvyEb5*M#X4lgK&7I@GfIX~w)S-MR43+01?JhUVS6T^(SyilVd&`Y zMfAFvQi+$mh-a;(Jng8>_HXAoZjU zpSsZW&mJyPClBKeRY!3I$o$6-WeMn}heWgHg<97Y|70Xli- z+)8=@XM5lK-uK@3O@;c^t-I7c_ndRje>wM7IsgLzH-ZG=k#%D)0zcplE5ls%;!9!` z^{?D>2j2I^`^L)#k8D`du;LB8zZ*dQWXjx0^Ff6n0Osqkyll#nMd2Tb6W_=CZ2;Ed zY4fMg9X9x#=>V>m@cxSFlNQd05JUj-I$?cn`kbZH_U%)G0QnmLDu>KS%)QS0f7}D# z0E~VU!1BS2sgn}l!rZM`J`U^mo`D%&hvgE0@kzYzG-K|f>w0`r_&MHVeW7N~)l()_ zB?ndE^LrtU;klEpn{T?xehgruhV{d9r!JZ_a`4kn<9!djUp;Tq+^HvSsKCA_;`7X9 z^RHgGC_M(Q1xS2A_2(~`I{%KZe+%~E{aFA-$28+J1B!5h~1$lVmVYG#yIwXUg>Y4CsZL; zKySoK=!4h``li2uDyT;6e+~T*`#=q1UyjvqVfru75Beis0JVrUFd%&rE`))I{b4X- zEz}|Eh<}CwFa&WRT!c6Xh9VAzVd<}-4u&HRfqKM?UGp9>yS! zKs*j3VJzY(7>9TKxG`Y0@cf0c;W!fM3p5I=>b@FT=!9GAmd#Oq-l;tIGi{Rymun-EvQ&4{aE zefnd#0h$nh1RD_7z^#aD;m7HZU>)Mea3kD?>6_qo#G7Fg;(E9v{UJ2LX2e@y3*rX2 zGyMVF3U?v?816y54YnfQj`%)ognJP;!F`B#!2O7u;eqsff3O7}M7$FoLc9weM!Xvy zNxuvCz&6CK@F?QFupRL}_@DGU@Dtd9ct89U@d0=o@j=A5;UV}L;=}MH;v?`B;x^cs zehVJuxE*#O{txU%+=2Le_$ll~d<>pOd>on)pFn&Qeg^vxpM?F0Pr)Z4F?hTf50!&zk{E{3y6E+mxxcpuMnFNUx$5g2ys8Wg!l{`Mmzv7r(c6-;T6Q^ zI6eP^4M*NuLCvY}nuiz^sApVKtacD`u2q!px4Qa$bGlqB)@t5!y zCL(^rfAL!;A%4f?^b7D;W=8y;DTse#7Q|D`n*Ig+o!JmiGZpa+vm>5m&h$ZOVH#qJ zW16`T(P5Dn!PAS#_*FtHO!-uTr0^3<hUf+hPQK_zIW4S*` z?Kf%)N75(chrlijP5()Zqt5`eN9~UE38@l&f5kS`%v*3~UYmL{TcTu6$+&IGWG~EI zXXAMd&gjYK`nq<mShc?(SHkV&FVcsU>^Mh~~djq}5BDCB)+8$<#;9Q%9bw`km$JzHV_O%jbqdZ+gCvb^? zzUl_F?brO9qx_-cHuM>H!ok#m)Hm3B0`2+r!uO~j0Cwq4^tI#A1I|LqN0?`(dg9DF z(AHEs0xr{oq%$c%d$t$-2wj`;`pkb$e@GfqQ(ES>EJ^<;y+-~@{)6}U<=xAo-MV(^Tw2m8Qd|@+EXdCb z<>mwfexKLlc4_ z#IX&@g6wTP{zF9W!@%R#+N^^jgQi+B19%4PwAwJoMj7~s`8%1~pYepC*7e&dfMQ4Xxry95I%g&ITN*JD z8H{|x5>H!6bNb+h_CxCe6};f3pFgq!f5>NX-q29wY`SD-&q88TU2tZYZkw8Je+nlbL~`4e77?Nn z1d;Tnx(N1$538FskVFz|6&u&aVF@lA{gz4L@0-Tc+}%Zs0>heGS*m8cZiOMD2%5vGw?dx*3tWwhnRNm=H_O zZCg~7%!yLNrlvX~e{oU*sW(W*f;ReTPK2Ti=^2#N$MFk{<1)Y=^+|){nXF8O@zjh; z8VASYMTXq5YSLVClUyDNH_;Q#B}s2oD|!*j4t6iAAKOqjIK)Sv6b3b1cp?}&f$93u zt=TMyb(&%)LI#iOFNxHTF|=St78=JH6If`KJXX!r=TAKne+(VL^pMDq#-^qrk?@eF z#->Tl>D7}XVJ*_MQ&pSh*ENRu%x9Rt|CUg4$cA`QYn;LQp^!=6hK#LGdd5s3@eB#i zm}D4>+DK8~P?0O1tuy)`6=&udYCP&a&9f%$IMSw~MGA$7ka=lFs}M?ReQBB^C6_kf zJeb0DmIKa@e@pP;A(|;-yrgdCB^d^xHf9ut?B1A6EQpy@d^Hq}!M0rEv30lb}e=QPzEt1rtNqJDi!B9;+thvy< zF|0E*O0x#7=xdR~jBF=(wIr)aGC$=5+EQ-P#Xw&yY*n6cT~lL5yV?&c;{Xyfet2wH zM~mR_LPmX;J3=FTm7BDTr7jslb1770)EFL5I>;U;9mhE!y`e!3VYEItTgUK3xGp?{ zgq;jGe-7qmARcO;-JJfUaWI)ZB$=v&GHQ)zu(qSF{reie8a4ce4e=SM-ATP0jv!ox z-SXKot|7yvzM;%4qP~XFP&$^kaxq)yeD2nd>u}fZx#SRvu()sQ+#lDF91_hw%DBHM z8ft$#^qk^h*|e#+Z@>T<3)@3XM=)AUb2kMP}G`TpinRnPqBDre1KA*Aq-{i(m!JVn=c zt{#$iX7<^=&Xjcu-dcElIt17bAgz^`AivF!tJ};>lt7eaiv+PF?&{bPywo1)*`v}` zS$kI=ffc+cI2Ua=K}=e>4i8@QC=nuv*^ApAgZ#PN`6eNzY5am1Ie>h$g`- zicnj5q=Lopc@ul~V6F&0EaGClHnI;l%3D(d*z&2g??iK}Vc!b4_CRp95 zOZ7IS_6wI`Jqrxbqq1gWBN;(oftf@I%g0RY7=TStRMSXBvmqQ4=_1CWf1gI9NXDmc zeG0X;_~41rD2sqgW0eTPxJ{{-S?|rML#h32vS1c0Y+h<@%AB%MpMK0d%KIF?4@~Kk zyRkz+_oLe|(Z|Aj7V-Y))X^~o9hq*Yt`!?I9h2c0qh4LuInvPDxu>=B$2PIPsY9C) z_Om7Iuk7#a`qZYDzqS0GfBOCsR!N(sDA-__UL-ms#bMU1Ofs9L=i*K?vx{bMFi9RL zTg~iQ30=Z&9Jz!&RaYO0GVN0c#;&?@V$|h^>gwE}c0xOW-IEZCs)}4FTWND@&briG zcE>ulS#VS0Ms`PPF816xb&A!%XDE?6J-=FH)xZQ@+$BL6dw?!De?V9*=&qchLUZ~U z^-9;hm@UL)HZc~BMstruqo94CdxS2M z#!zo!cI^5Z6fw37e-xKi_3B+&f$L4v$K?YCl*a}R^bagAA2g`Ed>}q2{aM;AcIP^m zquZ}#3^W^zBm*SGVo*!k7oEshgo)i-M&BbmDR2Gzb*7t9?=MS#A)b|Yfd)b7s{3HQ z%a!X}uUnm-ttb;Yur)5{AO#StjbhB7djcg-T=xnlQ>3`Ge^jXIhnqno-8eYcZBoriHCz$ ztL%`s#vNuHoC_+0v0AQI*)h7SPvEkj^(q%4#SXz-g=4HJ5PV)tJ49cRuc)e5f1yu* zQIxt~)Y!Mj6_<~R)IGku;m&!roiDy_%+xg_3x$`@f8NsNiY;?S&D29u@xaLg!nx&o z=j5P^DktAQ@zSPc^ZN~*7LWJ4k|H)XjeTsYc5H5aM_N87o|Us=&#sM3leRh3~^ucBfcJs-R#`wB#H->`N2 z=O0t)=1+S=LHlgxdks4YUXjQ5@Uc{BX;aR~~$7OJ%AP z`>OuNrSs&iXGh+ddWwzt@vOg``r9>UM+(oa`OS`->22cp^jCZqM4%7U!vsCncfB&O zf5|QT+zNgmcYS&J$WH5Z@X3`IURb#`e&K~(?S)_3U}MURt7GUQu;< zZ85vOdSPO0u-79~F1~ScpT3iC95v;UUcs@6h1FNycXj{%SKl{h(3}xnyN#GLux94y z^61FfLcH?w0VSmaF0bg-pyRcHdSwo+@<4f1HA| zIenbWC|${nI%7H9j9!DLJi{wwMLU}&{(yapWv*ghG<3R-hVJaHR+A^dm#n|ES)9W? zcBSq#$55Yjo#Mtg>N(B;#i`mv!C|qZdAe3+ z*8xNNztkNz6-GdiBe>+4s}gxRaUxDzh{bAgVuKcZQF}30`!E`P5p#R?f53nMofggV zn+_gy96YGqgdiV0h+be~QA8{fBdpRRmUfPq%%bexe|O7+w>=}2KKa0>Hk)L%f6O+e zXu8}cOeq+6VWj0JG)E5Le2pPboGAA~_&`@Jc4o3+q=gKSh{|&GI7-mv3T}+MTsaJK zHpX%7s%?xj(UPN@XwW8=e*hIiU6GGL#%|2xSJk-cF)Yf@m#Lb(VwI2iDE9FwnCtTu zxpIhcIh2({Sve~)a5+WK!0Y$)47%4XCKK(?~fBmTwzxZtPBdP83 z*1emS?J1R9`!+X!CJU*a>z2OWvbE*xhGi-8N>`@8ls2H1@xeX1v(Czf0UItdXMm}q zg_J}^EfRxBxYY(e${2)cpU)$BHpT@H*sz|>W>@SRYCVIHeW#=Ja>07*fAyFi#42{X%R)o7&`>R; zN0yab_J$6mGCGjjO)8KTHJ81SY&AVJS|BlpX{abx8Z(M@gYbQ7Lh6Ax-(tC}U&~&3 zYfD{fPin3#oVk;gGoR2IrHCUF_u$BEFkkOw!tt0eUf&q)VX_L$isNz%GKvdFC*ktN zZn6@=RwCF+e*{}svdrl4dYTC4S1e)ewY9R6!nRfo#Y7CrE<%Il%ben#7Dafca9{j3q|vm~*E@rMsH*8o2c=F%|v5bl`5|_&cdnsUxX%>`^x8 z*aJ^~fBl!#tE}L!JC>&ov7?ihu?=hpuIC;fv40+F(5ckP)ZsyF)7^%ASb|6D+Fn@6 zP+xF?Sc~f_9^h88#EuZ>6t1+nl##m%7llEh zjhQkQfY#eA-$VQlV1dWpPLpXo+DaFWe}l&3%FIs}(*G%vUtNJ?iK4HYSjh)gZHS1( z!`G@PAy=^gz1V9Z8-939w5f2We+ z%PDm06#clFELp6gg*k!72Bx;DyvoH~#1EH?SmmNNIauKG*<^+4DpXgYy2?sRh7Xpk zt{RRYE7$6Z3^({qCBzJ7@C9(Iy0$T)w8~W}>%VC!$a9;N9q$Rh>28;-JEUu)vGTjl zd?#-`bMKJc{#(Rv$fuzdlOIDXe@2n-4SE5%(U*BlDtZ9vT(`8smr-F~Wdm96&za}L<4jAP3bIX@Kc3x}nxA?$^-yYtT#?$J`Wt?pWxbe>f90{>8SgE1 zMd@0>4Y%uEhnSe)WU8dX#<;4Af?Kq0jEka~blI%5nu`@0%}-KWnhXV`x-=3^^Qw$S zYbZO7maP;rvlFl1aVZKC-)`v;v9%j8-J?sInK6rVvRFw=_AXtJiyTT);A`Pt-? zPp6VXLCaBj>nE?inmQ|df7Y_+fsHJW%dgf{g7Wi1C+Mx`dNj$Uszo`HM*~Ii@u(_) zW8958U3;k2_0mEP?VffB7Z1er&ZRD`Pw%2|!0*z`IH`(CaPeX`xwHVToBQ;3X`M?^ z0f10v=0rjz_9qfrKA6PuF`z4Eqb*kzS%Wv8FS?%mmWm|4#oBCc{5oozz-WqGXt+9T^ z1Eb3S!97 zjWiXnUATvVkvYVX%P`@hQcIbqSPJ&c#V3U@=ne(-ATl>70h%|F_3UZd81Lx`h02PF zYsJLqVq$dh3Xg}CQC=D4l~G>V3JV!TC(V2dvsn5t#qdIWN*fHz@XZLTv=@0K0=Yr$ z2&RxXuFQ%qf8%f`_Ngim`8uRr=v*!uI|)2GaUf3%gh1PV!qVcaX3pw&{{mtR!> zqsBg$ZP-2W%}J|%-Dloqy}OQHSU<99#)X&M+B~f|F=JxCLj^sG+zaRQyX>L?ok~Yt zdF|-Q8?P*{e6}IbYwQJmMi1;?QaWzh^`mFqaYa{~f3FZZ(-pN+o`ThF#W2{d z2sTNue^8*Qin4gVFTy32ig`90jUa#pHm8{?nW>VQDw$W}f;XjGDB_TeJ?adBS;vDu zxVF_^(cUNq7sf^Ueapu!-|t|H*z_I3;FfJdojCXG{i%!CW8yVPu^YMiIbU78q+6HU z*dmGiDw6WrZk3I+QQ%`Yt{C#Nkx~!LmBMxcf4r@>vEC9}WM<|rG`lIR<3V4Wk+zuy zQ50+>1$@X^n$mRDT~yYE3;_j}^i5_GiL-TtWSu1v)6-PmS!5!uCut>3pNiG3}no?*9otdf$$wqT?+4ZZAbeTLT5Nmo};XR7F*bIfrY}TAh`rynzj~H6Avw$?R>8XMykXeD<-T8ZJAh% zEfk=aC@@ms8{@_tkPG$^MjAld-( zZLxfe0Fb{%G>4q7H2!5{8so^s;vJ8P#=(r3kH>zkF<<6tZcNSoRq9=jB$>Raw||+s zVjt`2k!3lTUHA~|p(&CSU?n6TDLClj;X}@#R-V~YS6?+j8gb@{>XE%JlSXIsf3=a% zu&H{{LKBlLjLD+gjx)<5(5w+?)(9qJu4mThbk+TQy36(z08SGRrcH9#i6gEgo%+g^ zo%IyYlKVeWNovLTTeMbnYD{(Bk*a*24KU@4);xym;Ir4Yd@VS{4K3HHBZ_+qHzSQj zNMnMph_~ww6=`HlV`1JSF}^3If2yDka3SV_2#EdU;j*C0d2*R721J=j60VyiHz;Ps zObciek31=$p=o5wMleiOGk0Dx@hXkaY-T27!7b5lJBlq9%dR>MA6eVxBS~Pr?b=Wb(vCpPcoW9;>g`pj(>t*KP>fZ^qvu^C1u@1dgva!;CXIoG zX_AR=UfO(j#%&t6t$A+de-rcMye)Cr??mT*JJU3C3#f zyUec1*Lr~X%!-^jYZT(WLPjd4FolBUuPWO@NL;v1%&zmJ8NXq;mFzmdC{h)n7g|+X zNr@KWuROvov)N?wdHv*T#WmZc*{|L6Gd7l0zOir1UB6;8xBYFwf1=s(We+^q{P2ye zFcxL<${mfVA8jty#!Roj>hU%Fy)^otaq@9o!{_5FJ_=T*nM5D+IelB=PQN*132lj6 zGzre#9bFU5gvUV&zf^wxgPw~;!C;|Da8q?RRd-W$_gd~hUF1jwnqG{r9}3%T+jNMh zGaP93pU8lch|gHTe^*wxeHsQ2VrJkNl@*)VC~4a^Y3WzL`uOy_ugrOL)s~;$f75MG zZr&^(Z)torb>fRuI`xV$?6y@qKYQiz7k-V}(}-Fy8MVL%>+}f?BC|MioPrH}7)4U3(L;@;jZhS_~3<|M-CaI7C%H8 zx*-Ri`nl7LgErBAOLv=Ns0ocII`4Q+j^wmRsKb7ze;+kkTZNH_pF#~1pV|qOv7U@`^pKCG@X+H4<#0R7h+#%_yhbH9sI(SV^JzYuvn-5$RYCjt=WpTjojY1> z6!}TOzE*CyeVt2*6=w0nmhMt=>(4gc^wGPgnDg-A4|cGdu3Pl5hrRvy{smhnvp~zA zS@+c0e=n+jeE;?vDITdp6?o7jphaui2O2V#YeS}ukICe@4q z{qeafJ1jIT3k}Oc!?LWkX4c32YAmKc*R8agvif~7Kbz=kC*um*1I8Gubsrc|qO>_# zOX9}C_U9(C|bUIM1owzP5^va9}G0l9CPTExy%s5r^tPy(zhv^SEefggJEpc2q z`*Qr}h0bd&a%NwK2FKSuQ5v_UvlOPPVX7LYs^K*nNmwIA*GSQ|Sm!oHZ)dp!mDvs2 ze-2iQ#B98?fU72!Xhr<3b=Z|rf6YzmUv;kfw|w^8kAL+ zL1Xw&lbFxqQzfTFs&9q!9ah^8WOnACf6@#1%=f70?rW{J2nO>~8Rn(-@@*|o$IbV1 zjd*SLWkylNrO{wBJF&H2Gaz zX*gk&9s$#o3E*(rEt5sNDo#%KIM*kwwP$FvXK1tAU7De=w0_NeL8tc6Id677e@M^i zvi|+cy4Ti5wr!K8n)31sFDx(XfBG!_SuE!)8;+b6p`VV1RQN$YrZW8F9b<$kwROzD zg~WHxhvVaq8&5QiLp?8q5BCmJ*)WL};Dmdc0`4Lv=Ak9h%ji|EpQ)1U^M@pR5FJr| zQ1dvg%>B>0Kdxn6XHZm2uvQVtAQ=P~keu1TvP%?63IdXoz><-iSxHAha+bItpx{bY zVaZWIat09rLCHDi{J2%`y{gMSe@@jm-CuWqJ?F=ns+n2TxFmo6gnX|i56F(>tI5l@ zFHWb6lIrA_=-?0Sn|x|uUp{0$S}+@U%U842CEnAKqQy%o=iZ+lGHXSh*JqL#MwE!| z)snf&A3s8Ex0Db;F2(5R$)TtoBdbkzmJN!yTd8f1=`YWFBr5zxZSd@xevjHrr8NHK zVd9TMuWba0RlrE1i_R9AjDR#wH2QL;a7rHAv4X5T`MCHQE>$UxOS_OGJ-J|6sy_Vl z(|uEBU^go5@_ik+w|@MsLkZ; zgqTg197r3xU;EERe6W4afC-VsW!wo#x74vxnkE>CY?g=9n#fz5w`0;?zwGQmDX|F(ko@wPiY?z zXC=|j6kFhFxmg+6*5|HN_5SF9-V}^p^wxXJZdiUCzHaXXNRH@KEpw7~3>9(Lyk|Gk zl|H`s;tje;0z-rGs)$Ee8z{7+GR24EdZk;5P_)cvoGewvz+%IwvAvTTP$*$b9R_#n zacigd9Vvr|Yidvy_J+_FYek0A5M*0ePeo*h{|1dlwr(qgf}D>{0>u^tJmbn!UxTx$ zvCqgUmXQmZTqhV?4NUOV_WQ{&JNfMNBO?V~dsC39hb!IVsg2jn&V9*MdU%FctDhl} zJsUI0Xm0>u9l)ZZhlz}T4){tpsNYTY?FbY&yz%zVoR!ID?GYW{dRB!~CI|vo2g}xe zl2ranvRY_6L34Z|ET(Gn`)ELdvpnU1S+ZUT;xbjdziMsbu5`RraCX*^!%xu9IOsWW zrkb-U{6wv~-rm#TJN1gzs7up8;i^h^CB7; z=0=*+zPe8${~2rY#mHrtxWi6V;wk*Ol~Z`SMwr)0U&Q@Z8?8QnWSMT4LyHPVESswS zw1QD0cFd*Z0bQhZ3unYl!xY&L{1d~_NTmq>qgtPa3reRYZ=ID1OE)HJ&3rbC6Yt6p z1B?qWA2O_yKPpxxDO3L;6~NJ2`Oz4clUV)sO%0!x8SKMfrNP)WTh;Lu!WLnM zTE$z(CeDFD$Dy)H&2$jbbFzK{G}V7V7@iE&=i^B@Q!7sYdKTWQXX||@dG!Dbuh2$~ zLMr6V{engmndGSc@XUP4cPpI`S8>6#GzM5eBLmev#!J(s;R8{^FUB}Uab{hn!eKm& z4O)hj^M5Rh7JNUBMb{iKeVpOXXQaS>{?qc&4`;bQ%MplUl~r+B3uZqhp_v@`g5dz- z7w(>^9h%ackNS*JB?(rRDn#v5QGj;`cL2XNcm zm~$*LjK%JtPubi2AZE8K6BBH=(Dmn~Z->Fq+a$_Y$=d?owG8)Ggf6I_&;9}W|MJ{( z?gGzePg+qIhxw=8RTYZ0#7Q`^{&Ea_6%aKQoVVu>pL@`|b|731pch9Ulx+{9IH<+2 zUSCW4Sq|ou-74ApOT+Vx`&o8QITTks#jVWQi7k?Aet-_@QL0kEtNDGYqUyC=8{`4U z?YxbzX{q4{YC(+COwQDo^Ikw+W`@|Md4i|P^PO$gpMtKf$3aH9moCFU5aJFQ5xYhp zx_f=ng3rfx8kXoyWlnoSlwH4tc#Qwbff)pAGDOM2T3FHedJjOPq{gjgy}A!*s+HLc zTeEfcR37=Uycq>`*$&B%4K&UsSHjO#2) zeM&r)W?5(s=C!VaPCNwQ8Y%`bj1}$)B)z1@7Cg(=`PQJKgSGO~-7n$wr?vWO+Hvxe z67G>t&jKqsvCrfU68m$AJh|l(#w>CAJ;|i1*3fc}w5P?eu~HaD;M1j4+FC&~;3J}v z5Nw;BoA%N_o{KD(sPpSURv<=u??|`Rp@PSbU$sM_Re+ZEN7kGTkWu zS->kUs?=dK>}_ZME{MKDg01G#-{`N@Cv1v^t>#)ix<$6&2}gLVwFXUL>&=K@!!(YM zzp^{%@UwWvXd_!6q+8DAR9nQhncDCwA50A;kGC7CABNMNN%ifv zMH0MFmD7NYg*JE6shoXQJN*tFf9{hC{dh;n=ap?XHGWW@i7x&~HXeP{hG4O_zR?GE zRZ!))B6UHQu_gypDk(C`wiK`THf`ru3x)L7d6!?z@IqkZb4`O>g02_F%;;OV|0>i-3rlvd$f!5=x-0y1Hja z9@?ISr%!@3gG$7Ck}J5+Q1{-<{q%w^z4gUm!To9g<*{jt4OHyDtSOt6z12=j(OI%VdNaF1q<o@M&3fblJsijQLmsP>Cd6nF& zpX-hkApN|)R&Mq$O^qoB7bbm;fd!NJ!PwA7KODEx*R4ks2%O(!9D%3Zeb3Vt+9NyMNoo3!lX1{y~N*S4L7n z!OytQIeWsECb>AQO+_@sG4Cjd;B=$Oo!J_?32?yII0&d^O<6~0`cF$FrW}*%bsE3hH5lS?9ioV$;VMjKZJH)fBnP{fz8Q$#@ z6pE5Hk#=pi>F=bNTeLfViBJ|zOUcUG+^OCP%(%q}8Q;ZsGs7BB50bNM%SlCDaar5?l$Tq6-;bEA{0QtU03PQ}LO$=62#!np4(*8yi)KEzN0MHX#SpJcddfY` zgoRf|H5s}Hgc|4h%L-FU3)c^~fi`6)2I2MB>oY>Oi3c-`L5kCN@@AIPQ4$hQHlINx zkwg=!SxsJDDR1>-*7GvAs4B9Ep>OK%ww6w`{>dTnCkmXQzC$*1u6TLbDeG~L3g~&i zZCat8X&P#Ks=nL-YJON1Za?hUEKQixkShDF8kFJ~x{j>M~%}4og2eNxBq!o>v{o z@dQ?4`-D7m!|Ck42sX(J#=oBVrJ`F8w@2{`|Hy!J7e)CrPy;{dj7$ z=)>uygOO+%9lkgp<^3Urq2REQVr&9>S+nYmj2WmR<4qPm+R@a)E;P41>Dk!RBVIdS z{JmG11N2(#U>o9OQ!4uqQbSqfl?N6j}{kACDI6}ckrC(g6oCJw+Z!m(NEd(-0n`?h!7}^)oRGgi$_8en8zx*5stI( zcNESJLl#l>Zmxw@T7J5Ipnm_EfU>=HPX}2=72G{9(S!QLv27xp$YmkV+9Qc5oJ6T8^L)`j>~hSBL|GWo=1VdG`vlCb5)X7nD< ziHuaA%s?mZ!dE~RF8RC1t~A_aOkM#_+0E633omte)XVkJ;ZYA)YCuTt5VIC@zuQ^z ztSKUM?#L#F8v&X5&cJwprV4koOYT=ZkAYHwgZb$Q}x=sv;{d(pD*dFgAzg&_Jt9({Sm0&UJ8zICk9?Rhtiw)yyZA(T|#Qf=+%P@pm zHfT95z^15{OU&j2F!ugkHWqF2jBGFft?SHa$RNS$PY!0pV=(x={)9eY=iQ#z+9`F6 z+47uIZK0uaa?E<^%fdq}g)%U8pYQYM`>6K!@0uKkD#N58M>cA^DYcG2JK7b3$)5KXO9P)&tVh*H<;w+HIr?*IwQ9TG#dO)Mpbv$h%9%?Rc=_|MZ~(G0|W$ z?&lIFcWy~cf2Z4&NaMWzq1yf_TF$vP=3uFlWkx*B^jUEuEur@1GLr4&x2}Mdz4xRA z(ArJbW>xNLaP_hJ2xlImu*F7}em&gk!1}(P^Ei*Dpb?emgI=*9fc^tye+YGR_`fIw5J( zgkRCLrFz%>Q)AF~>ZWA+NR@(p`ZyGDudV6#UE?h2yz0W(I%N-LzY~$t`S}#I;bE41 z46_lhyzf(8o#FQx>O_ONy7!pTEz1kB=nD6g6}&Y?{a9I_#Nvq&%Xz_FI1P>V7w5Ox zs`kZ$MsYDrx+O~yNtzz>h89(LT(e7DU#texx9f=dJ<*>H_!SxrPY=tRd&-M|T|>H+ zS(1Z;;{v}86KNZ)dhwQl&&g9MKl2`f`G%WV2Sj0e@PREnFn~OqOeuP~UFf0ea(6*f zlMhas;la4RY1NH>A4$_Dt>$-Asl!ZMe|ZDjPRt~Rg}}y$_hAMYvI+j4z;)H0sC64C zewLG5-9P48O}pyo%%Dj z;kVo6KN9t9se*#lN_5ZkX;@yx%DUVk#w&TXv`6P-VFLcXvo7oYc@oIQUvuiTj}6v0 zP_0Z862*#U*hSbki{guZNJB+`X)~TJD*2IW_x)ZTqcJjub8`Qgj1y`oNT9gU5>*N@ z{38(3&c&a-|D=0~h)ja<)Royip}Du0w2c#+o{nEvMG&1eFwoolaie;>AHC`n zt(0@zdHdXDZsiPJ8VFETF1CM=HUM)mMvzKwPR>3eM_X=AU~?pD6Mu5nj;JapkBE{l z1V^S}@|~=qxSzf6-Y_u!?xC4&pwxQz z+u5W!eF~kUcxNX|>^JY-)FpZXZW!rS$weGW6n)T)yVcK-Igd`B&Y$6(=AG%>i=Heiw6& z)vSHhA?Gbi8jDO|vDhWNy67RWqun~dy(hhc6qoMm6>P%Z!T#MVPH9#2FP-<;IDd_i zHLmW%>EHPg1_}27Tgf%6o{a2MqaQ&g+TDi)CX&^2l}gEYOgwlnBs9gU0gsaoA_`#@ z`R8GEVkQ3P4S~YML@M7m;PKvMKp-ISe~*fYh>Af(Q>Gj7sHLF)8A8Co*DyE)CW^R* zAw(b|qAB2S|D^!KAYg>(zsvkZc`){-j>0li)b3@Y{?J{S~vwPXID$tuE1`hU|F Xc7>+AYsOO`h9QthVopv4b;bVy7bPiz