From 4abc3b322bde4ca6465d8c93da847ab9cb50fcde Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 31 Oct 2015 12:48:50 +0100 Subject: [PATCH 001/144] #44: Sign all assemblies. --- .gitignore | 1 - .../Properties/AssemblyInfo.cs | 15 ------------- .../SQLite.CodeFirst.Console.csproj | 12 ++++++++++ .../Properties/AssemblyInfo.cs | 12 ---------- .../SQLite.CodeFirst.Test.csproj | 12 ++++++++++ SQLite.CodeFirst.sln | 8 +++++++ SQLite.CodeFirst/Properties/AssemblyInfo.cs | 21 ------------------ SQLite.CodeFirst/SQLite.CodeFirst.csproj | 12 ++++++++++ Shared/AssemblySharedInfo.cs | 15 +++++++++++++ Shared/AssemblyVersionInfo.cs | 7 ++++++ Shared/SQLite.CodeFirst.StrongNameKey.snk | Bin 0 -> 596 bytes 11 files changed, 66 insertions(+), 49 deletions(-) create mode 100644 Shared/AssemblySharedInfo.cs create mode 100644 Shared/AssemblyVersionInfo.cs create mode 100644 Shared/SQLite.CodeFirst.StrongNameKey.snk diff --git a/.gitignore b/.gitignore index f8c1427..c8add9d 100644 --- a/.gitignore +++ b/.gitignore @@ -155,7 +155,6 @@ ClientBin/ *~ *.dbmdl *.dbproj.schemaview -*.pfx *.publishsettings node_modules/ diff --git a/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs b/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs index 02804aa..7a9242e 100644 --- a/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs +++ b/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs @@ -1,19 +1,4 @@ using System.Reflection; -using System.Runtime.InteropServices; [assembly: AssemblyTitle("SQLite.CodeFirst")] [assembly: AssemblyDescription("A console application which demonstrates how to use SQLite.CodeFirst.")] -[assembly: AssemblyProduct("SQLite.CodeFirst")] -[assembly: AssemblyCopyright("Copyright © Marc Sallin")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("945f6a68-1bcd-47ff-a551-a2820b88ff8c")] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index b04e945..e91b289 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -36,6 +36,12 @@ prompt 4 + + true + + + ..\Shared\SQLite.CodeFirst.StrongNameKey.snk + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll @@ -64,6 +70,12 @@ + + Properties\AssemblySharedInfo.cs + + + Properties\AssemblyVersionInfo.cs + diff --git a/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs b/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs index cda4f2d..a54c997 100644 --- a/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs +++ b/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs @@ -1,16 +1,4 @@ using System.Reflection; -using System.Runtime.InteropServices; [assembly: AssemblyTitle("SQLite.CodeFirst.Test")] [assembly: AssemblyDescription("Contains the Unit Tests for the SQLite.CodeFirst Library.")] -[assembly: AssemblyProduct("SQLite.CodeFirst")] -[assembly: AssemblyCopyright("Copyright © Marc Sallin")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index e4c30c6..717d7ca 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -34,6 +34,12 @@ prompt 4 + + true + + + ..\Shared\SQLite.CodeFirst.StrongNameKey.snk + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll @@ -67,6 +73,12 @@ + + Properties\AssemblySharedInfo.cs + + + Properties\AssemblyVersionInfo.cs + diff --git a/SQLite.CodeFirst.sln b/SQLite.CodeFirst.sln index 3a10ed8..3953195 100644 --- a/SQLite.CodeFirst.sln +++ b/SQLite.CodeFirst.sln @@ -27,6 +27,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{436039AE-ADD Lib\Moq.dll = Lib\Moq.dll EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{1F6D4E0E-5D07-4889-961A-A6AFC0ECD7C7}" + ProjectSection(SolutionItems) = preProject + Shared\AssemblySharedInfo.cs = Shared\AssemblySharedInfo.cs + Shared\AssemblyVersionInfo.cs = Shared\AssemblyVersionInfo.cs + Shared\SQLite.CodeFirst.StrongNameKey.snk = Shared\SQLite.CodeFirst.StrongNameKey.snk + EndProjectSection +EndProject +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/SQLite.CodeFirst/Properties/AssemblyInfo.cs b/SQLite.CodeFirst/Properties/AssemblyInfo.cs index cb88143..59d1f3b 100644 --- a/SQLite.CodeFirst/Properties/AssemblyInfo.cs +++ b/SQLite.CodeFirst/Properties/AssemblyInfo.cs @@ -1,28 +1,7 @@ using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; [assembly: AssemblyTitle("SQLite.CodeFirst")] [assembly: AssemblyDescription( "Creates a SQLite Database from Code, using Entity Framework CodeFirst. " + "This Project ships several IDbInitializer which creates " + "a new SQLite Database, based on your model/code.")] -[assembly: AssemblyProduct("SQLite.CodeFirst")] -[assembly: AssemblyCopyright("Copyright © Marc Sallin")] -[assembly: AssemblyCompany("Marc Sallin")] - -[assembly: InternalsVisibleTo("SQLite.CodeFirst.Test", AllInternalsVisible = true)] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("46603902-448a-4c50-87ec-09cb792b740f")] - -// Will be replaced by the build server -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 844d66d..0ce1922 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -56,6 +56,12 @@ + + true + + + ..\Shared\SQLite.CodeFirst.StrongNameKey.snk + @@ -73,6 +79,12 @@ + + Properties\AssemblySharedInfo.cs + + + Properties\AssemblyVersionInfo.cs + diff --git a/Shared/AssemblySharedInfo.cs b/Shared/AssemblySharedInfo.cs new file mode 100644 index 0000000..68e4474 --- /dev/null +++ b/Shared/AssemblySharedInfo.cs @@ -0,0 +1,15 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyProduct("SQLite.CodeFirst")] +[assembly: AssemblyCopyright("Copyright © Marc Sallin")] +[assembly: AssemblyCompany("Marc Sallin")] + +[assembly: InternalsVisibleTo("SQLite.CodeFirst.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e35b9d3bf8a8ebcbbc7414b81cc803f1e43b24996e5af0d552c54743651fc328a50977e6e3c10b31c26165a74f3abbd9fdf2b785b8b9ba48568914aec8fea586a4ffa287c9dc5bd2b6367a3cb48e840baab417e89b27b95fa7ac5bc5b926cf9c45a76b064307845c71e9161bdb6eb7f96a6bf24ee6db96f7a4b71b7408938fae", AllInternalsVisible = true)] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] diff --git a/Shared/AssemblyVersionInfo.cs b/Shared/AssemblyVersionInfo.cs new file mode 100644 index 0000000..a4af52d --- /dev/null +++ b/Shared/AssemblyVersionInfo.cs @@ -0,0 +1,7 @@ +// Will be replaced by the build server + +using System.Reflection; + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/Shared/SQLite.CodeFirst.StrongNameKey.snk b/Shared/SQLite.CodeFirst.StrongNameKey.snk new file mode 100644 index 0000000000000000000000000000000000000000..7a0d9a67b3a019d88d9e1ae743076664589d91ae GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50098wTb(=jsO!tTbQHK8$OG}@J0zKITJY6U z#YaPBAHyi633uk>!3#0MVP&UJI=k8Z^0$S!xw=SJi4?BL{-uVb|DuP<+*{JNHhMg? zj)V)Uv=```C%IpztXsvoCeNHjr)vg72ZUU4=@uK?ZnybrYw}L!+m`pFw;OZ_laH>o zjc&iLeIS#b6d^4qlC<;&>viuIDBUrDSU^H6GO3!OKW+(y?(1T=(w2wL z_FwkK^ve}xCD`ycf~#|$Sq`i46xF(F0|XZp!*o8=@VgD2)@?fpF-!Hr^rJTm$;a*8 z0Erd(`}E0jZRK5oOw->+-=Sq;q>H)v`(XXWuR2FQOio^h*f|pz4iv$!AFr9JBWHFD z0T92?1I~1~w4lmh{>}=DGta9367k%)(kfy^PNFWc(xF&;$6?6)3uwTJpX?!*Ov$8{ zR@i;dm?U;Nt&4|Qh=~mK-=%Z`>nSmND^(vUIyrB#h9UR8I|F5DKXol7?Sl@w^!wN{ zw76frqBRn4%KpDiW8l#nNye$x&%SMmE zH&?r0g(o;|Lz2^>b|%AGa_^g11$Jg75IT(zH`Owt)*uF8NN(xW(iE}16EowJRG2d^!s3U19hFz@ME*xqWz@3Ztmu({{wsSDjn$!yQq|6WD i#G6_!rdvHcU8zan_@XMyv<2!Wp987K>d^w!D{liZb|C}+ literal 0 HcmV?d00001 From 8bb8a169e049f270c7f566084b8730d6a2129c4c Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 31 Oct 2015 14:20:14 +0100 Subject: [PATCH 002/144] Version 1.0 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index c7581e6..e7c88b0 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 0.9.{build}.0 +version: 1.0.{build}.0 branches: only: - master From e0669c40c10517131a7a5a1c1f2d2efe4400da05 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 3 Nov 2015 22:33:59 +0100 Subject: [PATCH 003/144] Update README.md Support. --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 5058ff8..dce51ba 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,12 @@ **CI Build** [![Build status](https://ci.appveyor.com/api/projects/status/oc1miog385h801qe?svg=true)](https://ci.appveyor.com/project/msallin/sqlitecodefirst) +**Support** PayPal donate button + +To support this project you can: report bugs by creating new issues, write code and create PRs or donate. +Especially if you use it for a commercial project, a donation is welcome. + + Creates a [SQLite Database](https://sqlite.org/) from Code, using [Entity Framework](https://msdn.microsoft.com/en-us/data/ef.aspx) CodeFirst. This Project ships several `IDbInitializer` classes. These create new SQLite Databases based on your model/code. From 280a3c5740519ca98b2f0df48f2c2edc6aeb3fa1 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 10 Jan 2016 12:22:49 +0100 Subject: [PATCH 004/144] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index dce51ba..c297a20 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,8 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.5 (use net45) - .NET 4.5.1 (use net45) - .NET 4.5.2 (use net45) +- .NET 4.6 (use net45) +- .NET 4.6.1 (use net45) ## How to use When you want to let the Entity Framework create database if it does not exist, just set `SqliteDropCreateDatabaseAlways<>` or `SqliteCreateDatabaseIfNotExists<>` as your `IDbInitializer<>`. From 4d2559fe780506ec20952c3017482c3d80e84b66 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Fri, 15 Jan 2016 14:32:28 +0100 Subject: [PATCH 005/144] #16: Refactoring and added SqliteDropCreateDatabaseWhenModelChanges. --- .../Entity/CustomHistory.cs | 12 ++ SQLite.CodeFirst.Console/FootballDbContext.cs | 53 +----- .../FootballDbInitializer.cs | 53 ++++++ .../SQLite.CodeFirst.Console.csproj | 2 + .../SqliteCreateDatabaseIfNotExists.cs | 0 .../SqliteDropCreateDatabaseAlways.cs | 4 +- ...qliteDropCreateDatabaseWhenModelChanges.cs | 173 ++++++++++++++++++ .../SqliteInitializerBase.cs | 17 +- SQLite.CodeFirst/Entities/History.cs | 57 ++++++ SQLite.CodeFirst/Entities/IHistory.cs | 12 ++ SQLite.CodeFirst/IDatabaseCreator.cs | 7 + SQLite.CodeFirst/ISqliteSqlGenerator.cs | 7 + .../ColumnStatementCollectionBuilder.cs | 0 .../Builder/CreateDatabaseStatementBuilder.cs | 0 .../Builder/CreateIndexStatementBuilder.cs | 0 .../Builder/CreateTableStatementBuilder.cs | 0 .../Builder/ForeignKeyStatementBuilder.cs | 0 .../Builder/IStatementBuilder.cs | 0 .../Builder/NameCreators/IndexNameCreator.cs | 0 .../Builder/NameCreators/SpecialChars.cs | 0 .../Builder/NameCreators/TableNameCreator.cs | 0 .../Builder/PrimaryKeyStatementBuilder.cs | 0 .../SqliteForeignKeyIndexConvention.cs | 0 .../Extensions/EntityTypeExtension.cs | 0 .../ColumnConstraintCollection.cs | 0 .../ColumnConstraint/IColumnConstraint.cs | 0 .../IColumnConstraintCollection.cs | 0 .../ColumnConstraint/MaxLengthConstraint.cs | 0 .../ColumnConstraint/NotNullConstraint.cs | 0 .../Statement/ColumnStatement.cs | 0 .../Statement/ColumnStatementCollection.cs | 0 .../Statement/CreateDatabaseStatement.cs | 0 .../Statement/CreateIndexStatement.cs | 0 .../CreateIndexStatementCollection.cs | 0 .../Statement/CreateTableStatement.cs | 0 .../Statement/ForeignKeyStatement.cs | 0 .../{ => Internal}/Statement/IStatement.cs | 0 .../Statement/IStatementCollection.cs | 0 .../Statement/PrimaryKeyStatement.cs | 0 .../Utility/AssociationTypeWrapper.cs | 0 .../Utility/ConnectionStringParser.cs} | 8 +- .../Internal/Utility/HashCreator.cs | 18 ++ .../Utility/HistoryEntityTypeValidator.cs | 19 ++ SQLite.CodeFirst/SQLite.CodeFirst.csproj | 73 ++++---- .../SQLite.CodeFirst.csproj.DotSettings | 8 + SQLite.CodeFirst/SqliteDatabaseCreator.cs | 23 +-- SQLite.CodeFirst/SqliteSqlGenerator.cs | 29 +++ 47 files changed, 464 insertions(+), 111 deletions(-) create mode 100644 SQLite.CodeFirst.Console/Entity/CustomHistory.cs create mode 100644 SQLite.CodeFirst.Console/FootballDbInitializer.cs rename SQLite.CodeFirst/{ => DbInitializers}/SqliteCreateDatabaseIfNotExists.cs (100%) rename SQLite.CodeFirst/{ => DbInitializers}/SqliteDropCreateDatabaseAlways.cs (95%) create mode 100644 SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs rename SQLite.CodeFirst/{ => DbInitializers}/SqliteInitializerBase.cs (87%) create mode 100644 SQLite.CodeFirst/Entities/History.cs create mode 100644 SQLite.CodeFirst/Entities/IHistory.cs create mode 100644 SQLite.CodeFirst/IDatabaseCreator.cs create mode 100644 SQLite.CodeFirst/ISqliteSqlGenerator.cs rename SQLite.CodeFirst/{ => Internal}/Builder/ColumnStatementCollectionBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/CreateDatabaseStatementBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/CreateIndexStatementBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/CreateTableStatementBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/ForeignKeyStatementBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/IStatementBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/NameCreators/IndexNameCreator.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/NameCreators/SpecialChars.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/NameCreators/TableNameCreator.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Builder/PrimaryKeyStatementBuilder.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Convention/SqliteForeignKeyIndexConvention.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Extensions/EntityTypeExtension.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnConstraint/ColumnConstraintCollection.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnConstraint/IColumnConstraint.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnConstraint/IColumnConstraintCollection.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnConstraint/MaxLengthConstraint.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnConstraint/NotNullConstraint.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ColumnStatementCollection.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/CreateDatabaseStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/CreateIndexStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/CreateIndexStatementCollection.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/CreateTableStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/ForeignKeyStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/IStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/IStatementCollection.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Statement/PrimaryKeyStatement.cs (100%) rename SQLite.CodeFirst/{ => Internal}/Utility/AssociationTypeWrapper.cs (100%) rename SQLite.CodeFirst/{SqliteConnectionStringParser.cs => Internal/Utility/ConnectionStringParser.cs} (91%) create mode 100644 SQLite.CodeFirst/Internal/Utility/HashCreator.cs create mode 100644 SQLite.CodeFirst/Internal/Utility/HistoryEntityTypeValidator.cs create mode 100644 SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings create mode 100644 SQLite.CodeFirst/SqliteSqlGenerator.cs diff --git a/SQLite.CodeFirst.Console/Entity/CustomHistory.cs b/SQLite.CodeFirst.Console/Entity/CustomHistory.cs new file mode 100644 index 0000000..51ad92c --- /dev/null +++ b/SQLite.CodeFirst.Console/Entity/CustomHistory.cs @@ -0,0 +1,12 @@ +using System; + +namespace SQLite.CodeFirst.Console.Entity +{ + public class CustomHistory : IHistory + { + public int Id { get; set; } + public string Hash { get; set; } + public string Context { get; set; } + public DateTime CreateDate { get; set; } + } +} diff --git a/SQLite.CodeFirst.Console/FootballDbContext.cs b/SQLite.CodeFirst.Console/FootballDbContext.cs index 6f0ed9e..e3eabcf 100644 --- a/SQLite.CodeFirst.Console/FootballDbContext.cs +++ b/SQLite.CodeFirst.Console/FootballDbContext.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; -using System.Data.Entity; -using System.Data.Entity.ModelConfiguration.Conventions; +using System.Data.Entity; using SQLite.CodeFirst.Console.Entity; namespace SQLite.CodeFirst.Console @@ -16,8 +14,6 @@ public FootballDbContext() protected override void OnModelCreating(DbModelBuilder modelBuilder) { - modelBuilder.Conventions.Remove(); - ConfigureTeamEntity(modelBuilder); ConfigureStadionEntity(modelBuilder); ConfigureCoachEntity(modelBuilder); @@ -61,51 +57,4 @@ private static void ConfigurePlayerEntity(DbModelBuilder modelBuilder) .WillCascadeOnDelete(true); } } - - public class FootballDbInitializer : SqliteDropCreateDatabaseAlways - { - public FootballDbInitializer(DbModelBuilder modelBuilder) - : base(modelBuilder) - { } - - protected override void Seed(FootballDbContext context) - { - context.Set().Add(new Team - { - Name = "YB", - Coach = new Coach - { - City = "Zürich", - FirstName = "Masssaman", - LastName = "Nachn", - Street = "Testingstreet 844" - }, - Players = new List - { - new Player - { - City = "Bern", - FirstName = "Marco", - LastName = "Bürki", - Street = "Wunderstrasse 43", - Number = 12 - }, - new Player - { - City = "Berlin", - FirstName = "Alain", - LastName = "Rochat", - Street = "Wonderstreet 13", - Number = 14 - } - }, - Stadion = new Stadion - { - Name = "Stade de Suisse", - City = "Bern", - Street = "Papiermühlestrasse 71" - } - }); - } - } } diff --git a/SQLite.CodeFirst.Console/FootballDbInitializer.cs b/SQLite.CodeFirst.Console/FootballDbInitializer.cs new file mode 100644 index 0000000..8aa6199 --- /dev/null +++ b/SQLite.CodeFirst.Console/FootballDbInitializer.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using System.Data.Entity; +using SQLite.CodeFirst.Console.Entity; + +namespace SQLite.CodeFirst.Console +{ + public class FootballDbInitializer : SqliteDropCreateDatabaseWhenModelChanges + { + public FootballDbInitializer(DbModelBuilder modelBuilder) + : base(modelBuilder, typeof(CustomHistory)) + { } + + protected override void Seed(FootballDbContext context) + { + context.Set().Add(new Team + { + Name = "YB", + Coach = new Coach + { + City = "Zürich", + FirstName = "Masssaman", + LastName = "Nachn", + Street = "Testingstreet 844" + }, + Players = new List + { + new Player + { + City = "Bern", + FirstName = "Marco", + LastName = "Bürki", + Street = "Wunderstrasse 43", + Number = 12 + }, + new Player + { + City = "Berlin", + FirstName = "Alain", + LastName = "Rochat", + Street = "Wonderstreet 13", + Number = 14 + } + }, + Stadion = new Stadion + { + Name = "Stade de Suisse", + City = "Bern", + Street = "Papiermühlestrasse 71" + } + }); + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index e91b289..4c517f7 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -77,12 +77,14 @@ Properties\AssemblyVersionInfo.cs + + diff --git a/SQLite.CodeFirst/SqliteCreateDatabaseIfNotExists.cs b/SQLite.CodeFirst/DbInitializers/SqliteCreateDatabaseIfNotExists.cs similarity index 100% rename from SQLite.CodeFirst/SqliteCreateDatabaseIfNotExists.cs rename to SQLite.CodeFirst/DbInitializers/SqliteCreateDatabaseIfNotExists.cs diff --git a/SQLite.CodeFirst/SqliteDropCreateDatabaseAlways.cs b/SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseAlways.cs similarity index 95% rename from SQLite.CodeFirst/SqliteDropCreateDatabaseAlways.cs rename to SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseAlways.cs index 91a8c19..b022345 100644 --- a/SQLite.CodeFirst/SqliteDropCreateDatabaseAlways.cs +++ b/SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseAlways.cs @@ -30,8 +30,8 @@ public override void InitializeDatabase(TContext context) { string databseFilePath = GetDatabasePathFromContext(context); - bool dbExists = File.Exists(databseFilePath); - if (dbExists) + bool exists = File.Exists(databseFilePath); + if (exists) { File.Delete(databseFilePath); } diff --git a/SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs new file mode 100644 index 0000000..a0672fe --- /dev/null +++ b/SQLite.CodeFirst/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -0,0 +1,173 @@ +using System; +using System.Data.Common; +using System.Data.Entity; +using System.Diagnostics; +using System.IO; +using System.Linq; +using SQLite.CodeFirst.Utility; + +namespace SQLite.CodeFirst +{ + /// + /// An implementation of that will always recreate and optionally re-seed the + /// database the first time that a context is used in the app domain or if the model has changed. + /// To seed the database, create a derived class and override the Seed method. + /// + /// To detect model changes a new table (implementation of ) is added to the database. + /// There is one record in this table which holds the hash of the SQL-statement which was generated from the model + /// executed to create the database. When initializing the database the initializer checks if the hash of the SQL-statement for the + /// model is still the same as the hash in the database. If you use this initializer on a existing database, this initializer + /// will interpret this as model change because of the new table. + /// Notice that a database can be used by more than one context. Therefore the name of the context is saved as a part of the history record. + /// + /// + /// The type of the context. + public class SqliteDropCreateDatabaseWhenModelChanges : SqliteInitializerBase + where TContext : DbContext + { + private readonly Type historyEntityType; + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder) + : base(modelBuilder) + { + historyEntityType = typeof(History); + ConfigureHistoryEntity(); + } + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + /// Type of the history entity (must implement and provide an parameterless constructor). + public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder, Type historyEntityType) + : base(modelBuilder) + { + this.historyEntityType = historyEntityType; + ConfigureHistoryEntity(); + } + + + protected void ConfigureHistoryEntity() + { + HistoryEntityTypeValidator.EnsureValidType(historyEntityType); + ModelBuilder.RegisterEntityType(historyEntityType); + } + + /// + /// Initialize the database for the given context. + /// Generates the SQLite-DDL from the model and executs it against the database. + /// After that the method is executed. + /// All actions are be executed in transactions. + /// + /// The context. + public override void InitializeDatabase(TContext context) + { + string databseFilePath = GetDatabasePathFromContext(context); + + bool dbExists = File.Exists(databseFilePath); + if (dbExists) + { + if (IsSameModel(context)) + { + return; + } + + DeleteDatabase(context, databseFilePath); + base.InitializeDatabase(context); + SaveHistory(context); + } + else + { + base.InitializeDatabase(context); + SaveHistory(context); + } + } + + private void DeleteDatabase(TContext context, string databseFilePath) + { + context.Database.Connection.Close(); + GC.Collect(); + + // TODO: Comment + for (int i = 0; i < 5; i++) + { + try + { + File.Delete(databseFilePath); + // TODO: Throw exception if 5 tries.. + break; + } + catch (Exception) + { + System.Threading.Thread.Sleep(1); + } + } + } + + private void SaveHistory(TContext context) + { + var hash = GetHashFromModel(context.Database.Connection); + var history = GetHistoryRecord(context); + EntityState entityState; + if (history == null) + { + history = (IHistory)Activator.CreateInstance(historyEntityType); + entityState = EntityState.Added; + } + else + { + entityState = EntityState.Modified; + } + + history.Context = context.GetType().FullName; + history.Hash = hash; + history.CreateDate = DateTime.UtcNow; + + context.Set(historyEntityType).Attach(history); + context.Entry(history).State = entityState; + context.SaveChanges(); + } + + private bool IsSameModel(TContext context) + { + try + { + var hash = GetHashFromModel(context.Database.Connection); + var history = GetHistoryRecord(context); + return history?.Hash == hash; + } + catch (Exception) + { + return false; + } + } + + private IHistory GetHistoryRecord(TContext context) + { + return context.Set(historyEntityType) + .AsNoTracking() + .ToListAsync() + .Result + .Cast() + .SingleOrDefault(); + } + + private string GetHashFromModel(DbConnection connection) + { + var sql = GetSqlFromModel(connection); + string hash = HashCreator.CreateHash(sql); + return hash; + } + + private string GetSqlFromModel(DbConnection connection) + { + var model = ModelBuilder.Build(connection); + var sqliteSqlGenerator = new SqliteSqlGenerator(model.StoreModel); + return sqliteSqlGenerator.Generate(); + } + } +} diff --git a/SQLite.CodeFirst/SqliteInitializerBase.cs b/SQLite.CodeFirst/DbInitializers/SqliteInitializerBase.cs similarity index 87% rename from SQLite.CodeFirst/SqliteInitializerBase.cs rename to SQLite.CodeFirst/DbInitializers/SqliteInitializerBase.cs index 25b571f..0f13684 100644 --- a/SQLite.CodeFirst/SqliteInitializerBase.cs +++ b/SQLite.CodeFirst/DbInitializers/SqliteInitializerBase.cs @@ -3,6 +3,7 @@ using System.Data.Entity.ModelConfiguration.Conventions; using SQLite.CodeFirst.Convention; using System.IO; +using SQLite.CodeFirst.Utility; namespace SQLite.CodeFirst { @@ -10,17 +11,17 @@ namespace SQLite.CodeFirst /// An basic implementation of the interface. /// This class provides common logic which can be used when writing an Sqlite-Initializer. /// The logic provided is: - /// 1. Remove/Add specific Conventions + /// 1. Remove/Add specific conventions /// 2. Get the path to the database file - /// 3. Create a new SQLite-Database from the model (Code First) + /// 3. Create a new SQLite-database from the model (Code First) /// 4. Seed data to the new created database - /// The following implementations are provided: , . + /// The following implementations are provided: , . /// /// The type of the context. public abstract class SqliteInitializerBase : IDatabaseInitializer where TContext : DbContext { - private readonly DbModelBuilder modelBuilder; + protected readonly DbModelBuilder ModelBuilder; protected SqliteInitializerBase(DbModelBuilder modelBuilder) { @@ -29,7 +30,7 @@ protected SqliteInitializerBase(DbModelBuilder modelBuilder) throw new ArgumentNullException("modelBuilder"); } - this.modelBuilder = modelBuilder; + ModelBuilder = modelBuilder; // This convention will crash the SQLite Provider before "InitializeDatabase" gets called. // See https://github.com/msallin/SQLiteCodeFirst/issues/7 for details. @@ -44,7 +45,7 @@ protected SqliteInitializerBase(DbModelBuilder modelBuilder) // The own convention will rename the automatically created indicies by using the correct scheme. modelBuilder.Conventions.AddAfter(new SqliteForeignKeyIndexConvention()); } - catch (InvalidOperationException exception) + catch (InvalidOperationException) { // Ignore it. } @@ -59,7 +60,7 @@ protected SqliteInitializerBase(DbModelBuilder modelBuilder) /// The context. public virtual void InitializeDatabase(TContext context) { - var model = modelBuilder.Build(context.Database.Connection); + var model = ModelBuilder.Build(context.Database.Connection); var dbFile = GetDatabasePathFromContext(context); var dbFileInfo = new FileInfo(dbFile); @@ -110,7 +111,7 @@ protected virtual void Seed(TContext context) { } /// The full path to the SQLite database file. protected string GetDatabasePathFromContext(TContext context) { - return SqliteConnectionStringParser.GetDataSource(context.Database.Connection.ConnectionString); + return ConnectionStringParser.GetDataSource(context.Database.Connection.ConnectionString); } } } \ No newline at end of file diff --git a/SQLite.CodeFirst/Entities/History.cs b/SQLite.CodeFirst/Entities/History.cs new file mode 100644 index 0000000..f015639 --- /dev/null +++ b/SQLite.CodeFirst/Entities/History.cs @@ -0,0 +1,57 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst +{ + /// + /// Represents the database table "history" which is used to store the necessary information + /// to detect if the model has changed. + /// + [Table(nameof(History) + "_" + TableNamePostfix)] + public class History : IHistory + { + /// + /// The postfix which is appended to the history table name + /// to ensure that this table name is unique. + /// + [NotMapped] + public const string TableNamePostfix = "82c009b41631-48579635f1ff64eb62d9"; + + /// + /// Gets or sets the identifier of the record. + /// Is automatilcally generated by the database. + /// + /// + /// The identifier. + /// + [Key] + public int Id { get; set; } + + /// + /// Gets or sets the hash which represents the current database structure/state. + /// + /// + /// The hash. + /// + [Required] + public string Hash { get; set; } + + /// + /// Gets or sets the key of the DbContext to which this record belongs. + /// + /// + /// The context key. + /// + public string Context { get; set; } + + /// + /// Gets or sets the create date of the record. + /// + /// + /// The create date. + /// + [Required] + public DateTime CreateDate { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/Entities/IHistory.cs b/SQLite.CodeFirst/Entities/IHistory.cs new file mode 100644 index 0000000..cbaf2e3 --- /dev/null +++ b/SQLite.CodeFirst/Entities/IHistory.cs @@ -0,0 +1,12 @@ +using System; + +namespace SQLite.CodeFirst +{ + public interface IHistory + { + int Id { get; set; } + string Hash { get; set; } + string Context { get; set; } + DateTime CreateDate { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/IDatabaseCreator.cs b/SQLite.CodeFirst/IDatabaseCreator.cs new file mode 100644 index 0000000..cf3797a --- /dev/null +++ b/SQLite.CodeFirst/IDatabaseCreator.cs @@ -0,0 +1,7 @@ +namespace SQLite.CodeFirst +{ + public interface IDatabaseCreator + { + void Create(); + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/ISqliteSqlGenerator.cs b/SQLite.CodeFirst/ISqliteSqlGenerator.cs new file mode 100644 index 0000000..06cf528 --- /dev/null +++ b/SQLite.CodeFirst/ISqliteSqlGenerator.cs @@ -0,0 +1,7 @@ +namespace SQLite.CodeFirst +{ + public interface ISqlGenerator + { + string Generate(); + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/Builder/ColumnStatementCollectionBuilder.cs b/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/ColumnStatementCollectionBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs diff --git a/SQLite.CodeFirst/Builder/CreateDatabaseStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/CreateDatabaseStatementBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/CreateDatabaseStatementBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/CreateDatabaseStatementBuilder.cs diff --git a/SQLite.CodeFirst/Builder/CreateIndexStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/CreateIndexStatementBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/CreateIndexStatementBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/CreateIndexStatementBuilder.cs diff --git a/SQLite.CodeFirst/Builder/CreateTableStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/CreateTableStatementBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/CreateTableStatementBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/CreateTableStatementBuilder.cs diff --git a/SQLite.CodeFirst/Builder/ForeignKeyStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/ForeignKeyStatementBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/ForeignKeyStatementBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/ForeignKeyStatementBuilder.cs diff --git a/SQLite.CodeFirst/Builder/IStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/IStatementBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/IStatementBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/IStatementBuilder.cs diff --git a/SQLite.CodeFirst/Builder/NameCreators/IndexNameCreator.cs b/SQLite.CodeFirst/Internal/Builder/NameCreators/IndexNameCreator.cs similarity index 100% rename from SQLite.CodeFirst/Builder/NameCreators/IndexNameCreator.cs rename to SQLite.CodeFirst/Internal/Builder/NameCreators/IndexNameCreator.cs diff --git a/SQLite.CodeFirst/Builder/NameCreators/SpecialChars.cs b/SQLite.CodeFirst/Internal/Builder/NameCreators/SpecialChars.cs similarity index 100% rename from SQLite.CodeFirst/Builder/NameCreators/SpecialChars.cs rename to SQLite.CodeFirst/Internal/Builder/NameCreators/SpecialChars.cs diff --git a/SQLite.CodeFirst/Builder/NameCreators/TableNameCreator.cs b/SQLite.CodeFirst/Internal/Builder/NameCreators/TableNameCreator.cs similarity index 100% rename from SQLite.CodeFirst/Builder/NameCreators/TableNameCreator.cs rename to SQLite.CodeFirst/Internal/Builder/NameCreators/TableNameCreator.cs diff --git a/SQLite.CodeFirst/Builder/PrimaryKeyStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/PrimaryKeyStatementBuilder.cs similarity index 100% rename from SQLite.CodeFirst/Builder/PrimaryKeyStatementBuilder.cs rename to SQLite.CodeFirst/Internal/Builder/PrimaryKeyStatementBuilder.cs diff --git a/SQLite.CodeFirst/Convention/SqliteForeignKeyIndexConvention.cs b/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs similarity index 100% rename from SQLite.CodeFirst/Convention/SqliteForeignKeyIndexConvention.cs rename to SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs diff --git a/SQLite.CodeFirst/Extensions/EntityTypeExtension.cs b/SQLite.CodeFirst/Internal/Extensions/EntityTypeExtension.cs similarity index 100% rename from SQLite.CodeFirst/Extensions/EntityTypeExtension.cs rename to SQLite.CodeFirst/Internal/Extensions/EntityTypeExtension.cs diff --git a/SQLite.CodeFirst/Statement/ColumnConstraint/ColumnConstraintCollection.cs b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/ColumnConstraintCollection.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnConstraint/ColumnConstraintCollection.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnConstraint/ColumnConstraintCollection.cs diff --git a/SQLite.CodeFirst/Statement/ColumnConstraint/IColumnConstraint.cs b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/IColumnConstraint.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnConstraint/IColumnConstraint.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnConstraint/IColumnConstraint.cs diff --git a/SQLite.CodeFirst/Statement/ColumnConstraint/IColumnConstraintCollection.cs b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/IColumnConstraintCollection.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnConstraint/IColumnConstraintCollection.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnConstraint/IColumnConstraintCollection.cs diff --git a/SQLite.CodeFirst/Statement/ColumnConstraint/MaxLengthConstraint.cs b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/MaxLengthConstraint.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnConstraint/MaxLengthConstraint.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnConstraint/MaxLengthConstraint.cs diff --git a/SQLite.CodeFirst/Statement/ColumnConstraint/NotNullConstraint.cs b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/NotNullConstraint.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnConstraint/NotNullConstraint.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnConstraint/NotNullConstraint.cs diff --git a/SQLite.CodeFirst/Statement/ColumnStatement.cs b/SQLite.CodeFirst/Internal/Statement/ColumnStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnStatement.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnStatement.cs diff --git a/SQLite.CodeFirst/Statement/ColumnStatementCollection.cs b/SQLite.CodeFirst/Internal/Statement/ColumnStatementCollection.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ColumnStatementCollection.cs rename to SQLite.CodeFirst/Internal/Statement/ColumnStatementCollection.cs diff --git a/SQLite.CodeFirst/Statement/CreateDatabaseStatement.cs b/SQLite.CodeFirst/Internal/Statement/CreateDatabaseStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/CreateDatabaseStatement.cs rename to SQLite.CodeFirst/Internal/Statement/CreateDatabaseStatement.cs diff --git a/SQLite.CodeFirst/Statement/CreateIndexStatement.cs b/SQLite.CodeFirst/Internal/Statement/CreateIndexStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/CreateIndexStatement.cs rename to SQLite.CodeFirst/Internal/Statement/CreateIndexStatement.cs diff --git a/SQLite.CodeFirst/Statement/CreateIndexStatementCollection.cs b/SQLite.CodeFirst/Internal/Statement/CreateIndexStatementCollection.cs similarity index 100% rename from SQLite.CodeFirst/Statement/CreateIndexStatementCollection.cs rename to SQLite.CodeFirst/Internal/Statement/CreateIndexStatementCollection.cs diff --git a/SQLite.CodeFirst/Statement/CreateTableStatement.cs b/SQLite.CodeFirst/Internal/Statement/CreateTableStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/CreateTableStatement.cs rename to SQLite.CodeFirst/Internal/Statement/CreateTableStatement.cs diff --git a/SQLite.CodeFirst/Statement/ForeignKeyStatement.cs b/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/ForeignKeyStatement.cs rename to SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs diff --git a/SQLite.CodeFirst/Statement/IStatement.cs b/SQLite.CodeFirst/Internal/Statement/IStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/IStatement.cs rename to SQLite.CodeFirst/Internal/Statement/IStatement.cs diff --git a/SQLite.CodeFirst/Statement/IStatementCollection.cs b/SQLite.CodeFirst/Internal/Statement/IStatementCollection.cs similarity index 100% rename from SQLite.CodeFirst/Statement/IStatementCollection.cs rename to SQLite.CodeFirst/Internal/Statement/IStatementCollection.cs diff --git a/SQLite.CodeFirst/Statement/PrimaryKeyStatement.cs b/SQLite.CodeFirst/Internal/Statement/PrimaryKeyStatement.cs similarity index 100% rename from SQLite.CodeFirst/Statement/PrimaryKeyStatement.cs rename to SQLite.CodeFirst/Internal/Statement/PrimaryKeyStatement.cs diff --git a/SQLite.CodeFirst/Utility/AssociationTypeWrapper.cs b/SQLite.CodeFirst/Internal/Utility/AssociationTypeWrapper.cs similarity index 100% rename from SQLite.CodeFirst/Utility/AssociationTypeWrapper.cs rename to SQLite.CodeFirst/Internal/Utility/AssociationTypeWrapper.cs diff --git a/SQLite.CodeFirst/SqliteConnectionStringParser.cs b/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs similarity index 91% rename from SQLite.CodeFirst/SqliteConnectionStringParser.cs rename to SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs index 8d7d12d..b87f8b3 100644 --- a/SQLite.CodeFirst/SqliteConnectionStringParser.cs +++ b/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Globalization; -namespace SQLite.CodeFirst +namespace SQLite.CodeFirst.Utility { - internal static class SqliteConnectionStringParser + internal static class ConnectionStringParser { private const string DataDirectoryToken = "|datadirectory|"; private const char KeyValuePairSeperator = ';'; @@ -12,7 +12,7 @@ internal static class SqliteConnectionStringParser private const int KeyPosition = 0; private const int ValuePosition = 1; - public static IDictionary ParseSqliteConnectionString(string connectionString) + public static IDictionary ParseConnectionString(string connectionString) { connectionString = connectionString.Trim(); string[] keyValuePairs = connectionString.Split(KeyValuePairSeperator); @@ -32,7 +32,7 @@ public static IDictionary ParseSqliteConnectionString(string con public static string GetDataSource(string connectionString) { - var path = ExpandDataDirectory(ParseSqliteConnectionString(connectionString)["data source"]); + var path = ExpandDataDirectory(ParseConnectionString(connectionString)["data source"]); // remove quotation mark if exists path = path.Trim('"'); return path; diff --git a/SQLite.CodeFirst/Internal/Utility/HashCreator.cs b/SQLite.CodeFirst/Internal/Utility/HashCreator.cs new file mode 100644 index 0000000..3b4f366 --- /dev/null +++ b/SQLite.CodeFirst/Internal/Utility/HashCreator.cs @@ -0,0 +1,18 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace SQLite.CodeFirst.Utility +{ + internal static class HashCreator + { + public static string CreateHash(string data) + { + byte[] dataBytes = Encoding.ASCII.GetBytes(data); + SHA512 sha512 = new SHA512Managed(); + byte[] hashBytes = sha512.ComputeHash(dataBytes); + string hash = Convert.ToBase64String(hashBytes); + return hash; + } + } +} diff --git a/SQLite.CodeFirst/Internal/Utility/HistoryEntityTypeValidator.cs b/SQLite.CodeFirst/Internal/Utility/HistoryEntityTypeValidator.cs new file mode 100644 index 0000000..459e2ee --- /dev/null +++ b/SQLite.CodeFirst/Internal/Utility/HistoryEntityTypeValidator.cs @@ -0,0 +1,19 @@ +using System; + +namespace SQLite.CodeFirst.Utility +{ + internal class HistoryEntityTypeValidator + { + public static void EnsureValidType(Type historyEntityType) + { + if (!typeof(IHistory).IsAssignableFrom(historyEntityType)) + { + throw new InvalidOperationException("The Type " + historyEntityType.Name + " does not implement the IHistory interface."); + } + if (historyEntityType.GetConstructor(Type.EmptyTypes) == null) + { + throw new InvalidOperationException("The Type " + historyEntityType.Name + " does not provide an parameterless constructor."); + } + } + } +} diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 0ce1922..a7bc256 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -75,6 +75,7 @@ + @@ -85,40 +86,48 @@ Properties\AssemblyVersionInfo.cs - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings new file mode 100644 index 0000000..588c632 --- /dev/null +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings @@ -0,0 +1,8 @@ + + True + True + True + True + True + True + True \ No newline at end of file diff --git a/SQLite.CodeFirst/SqliteDatabaseCreator.cs b/SQLite.CodeFirst/SqliteDatabaseCreator.cs index 11e5d62..ea1aa15 100644 --- a/SQLite.CodeFirst/SqliteDatabaseCreator.cs +++ b/SQLite.CodeFirst/SqliteDatabaseCreator.cs @@ -1,7 +1,5 @@ using System.Data.Entity; using System.Data.Entity.Infrastructure; -using SQLite.CodeFirst.Builder; -using SQLite.CodeFirst.Statement; namespace SQLite.CodeFirst { @@ -9,17 +7,17 @@ namespace SQLite.CodeFirst /// Creates a SQLite-Database based on a Entity Framework and . /// This creator can be used standalone or within an initializer. /// - public class SqliteDatabaseCreator + public class SqliteDatabaseCreator : IDatabaseCreator { private readonly Database db; private readonly DbModel model; - /// - /// Initializes a new instance of the class. - /// - /// The database. - /// The model. - public SqliteDatabaseCreator(Database db, DbModel model) + /// + /// Initializes a new instance of the class. + /// + /// The database. + /// The model. + public SqliteDatabaseCreator(Database db, DbModel model) { this.db = db; this.model = model; @@ -30,10 +28,9 @@ public SqliteDatabaseCreator(Database db, DbModel model) /// public void Create() { - IStatementBuilder statementBuilder = new CreateDatabaseStatementBuilder(model.StoreModel); - IStatement statement = statementBuilder.BuildStatement(); - string sql = statement.CreateStatement(); - db.ExecuteSqlCommand(sql); + var sqliteSqlGenerator = new SqliteSqlGenerator(model.StoreModel); + string sql = sqliteSqlGenerator.Generate(); + db.ExecuteSqlCommand(TransactionalBehavior.EnsureTransaction, sql); } } } diff --git a/SQLite.CodeFirst/SqliteSqlGenerator.cs b/SQLite.CodeFirst/SqliteSqlGenerator.cs new file mode 100644 index 0000000..7f2a210 --- /dev/null +++ b/SQLite.CodeFirst/SqliteSqlGenerator.cs @@ -0,0 +1,29 @@ +using System.Data.Entity.Core.Metadata.Edm; +using SQLite.CodeFirst.Builder; +using SQLite.CodeFirst.Statement; + +namespace SQLite.CodeFirst +{ + /// + /// Generates the SQL statement to create a database, based on a . + /// + public class SqliteSqlGenerator : ISqlGenerator + { + private readonly EdmModel storeModel; + + public SqliteSqlGenerator(EdmModel storeModel) + { + this.storeModel = storeModel; + } + + /// + /// Generates the SQL statement. + /// + public string Generate() + { + IStatementBuilder statementBuilder = new CreateDatabaseStatementBuilder(storeModel); + IStatement statement = statementBuilder.BuildStatement(); + return statement.CreateStatement(); + } + } +} From b33fd00a96540025772686222a41f9429d32904f Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 17 Jan 2016 14:18:50 +0100 Subject: [PATCH 006/144] #16:Added additional framework dependency. --- SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec | 1 + 1 file changed, 1 insertion(+) diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec index f34f826..6236557 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec @@ -18,6 +18,7 @@ + From ecf89c3c47c85851798a3bce5f0d6a52a4ac3c14 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 17 Jan 2016 14:21:12 +0100 Subject: [PATCH 007/144] #16: Removed unnecessary dependencies to SQLite. --- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 2 -- SQLite.CodeFirst/packages.config | 4 ---- 2 files changed, 6 deletions(-) diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index a7bc256..92526ab 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -140,8 +140,6 @@ This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - \ No newline at end of file diff --git a/SQLite.CodeFirst/packages.config b/SQLite.CodeFirst/packages.config index 57e2eaa..cb3371a 100644 --- a/SQLite.CodeFirst/packages.config +++ b/SQLite.CodeFirst/packages.config @@ -1,8 +1,4 @@  - - - - \ No newline at end of file From 43cdab0920d0f6bb6b2658749385ed66c5ac448b Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 17 Jan 2016 14:21:30 +0100 Subject: [PATCH 008/144] #16: Updated to the newest SQLite version. --- SQLite.CodeFirst.Console/App.config | 6 ++++-- .../SQLite.CodeFirst.Console.csproj | 18 ++++++++++-------- SQLite.CodeFirst.Console/packages.config | 8 ++++---- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/SQLite.CodeFirst.Console/App.config b/SQLite.CodeFirst.Console/App.config index b7d5048..9fa9559 100644 --- a/SQLite.CodeFirst.Console/App.config +++ b/SQLite.CodeFirst.Console/App.config @@ -11,9 +11,10 @@ - - + + + @@ -25,6 +26,7 @@ + \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 4c517f7..c1379f4 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -53,15 +53,17 @@ - - ..\packages\System.Data.SQLite.Core.1.0.97.0\lib\net451\System.Data.SQLite.dll + + ..\packages\System.Data.SQLite.Core.1.0.99.0\lib\net451\System.Data.SQLite.dll True - - ..\packages\System.Data.SQLite.EF6.1.0.97.0\lib\net451\System.Data.SQLite.EF6.dll + + ..\packages\System.Data.SQLite.EF6.1.0.99.0\lib\net451\System.Data.SQLite.EF6.dll + True - - ..\packages\System.Data.SQLite.Linq.1.0.97.0\lib\net451\System.Data.SQLite.Linq.dll + + ..\packages\System.Data.SQLite.Linq.1.0.99.0\lib\net451\System.Data.SQLite.Linq.dll + True @@ -104,10 +106,10 @@ This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + - + - ..\packages\EntityFramework.6.1.3\lib\net40\EntityFramework.dll + ..\packages\EntityFramework.6.2.0\lib\net40\EntityFramework.dll - ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll diff --git a/SQLite.CodeFirst/packages.config b/SQLite.CodeFirst/packages.config index cb3371a..554add2 100644 --- a/SQLite.CodeFirst/packages.config +++ b/SQLite.CodeFirst/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file From 4c9a70bb229ef60d46bfba33288f791507784464 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Wed, 22 Nov 2017 15:41:25 +0100 Subject: [PATCH 079/144] Update README.md Updated supported framework versions. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5707e85..b7d208a 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The following features are supported: ## Install Either get the assembly from the latest [GitHub Release Page](https://github.com/msallin/SQLiteCodeFirst/releases) or install the NuGet-Package [SQLite.CodeFirst](https://www.nuget.org/packages/SQLite.CodeFirst/) (`PM> Install-Package SQLite.CodeFirst`). -The project is built to target.NET framework versions 4.0 and 4.5. +The project is built to target .NET framework versions 4.0 and 4.5. You can use the SQLite CodeFirst in projects that target the following frameworks: - .NET 4.0 (use net40) - .NET 4.5 (use net45) @@ -38,6 +38,9 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.5.2 (use net45) - .NET 4.6 (use net45) - .NET 4.6.1 (use net45) +- .NET 4.6.2 (use net45) +- .NET 4.7 (use net45) +- .NET 4.7.1 (use net45) ## How to use The functionality is exposed by using implementations of the `IDbInitializer<>` interface. From 8090504af096b386b27e247dec32e637de56d98a Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Wed, 22 Nov 2017 16:28:28 +0100 Subject: [PATCH 080/144] #96 support custom collation. --- .../ColumnStatementCollectionBuilder.cs | 2 +- .../ColumnConstraint/CollateConstraint.cs | 7 +++-- .../Public/Attributes/CollateAttribute.cs | 28 ++++++++++++++++++- .../Public/Attributes/CollationFunction.cs | 13 ++++++--- 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs b/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs index 06ed94d..93043c2 100644 --- a/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs +++ b/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs @@ -78,7 +78,7 @@ private static void AddCollationConstraintIfNecessary(EdmProperty property, Colu var value = property.GetCustomAnnotation(); if (value != null) { - columnStatement.ColumnConstraints.Add(new CollateConstraint { CollationFunction = value.Collation }); + columnStatement.ColumnConstraints.Add(new CollateConstraint { CollationFunction = value.Collation, CustomCollationFunction = value.Function }); } } diff --git a/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/CollateConstraint.cs b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/CollateConstraint.cs index 2fb664f..74068be 100644 --- a/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/CollateConstraint.cs +++ b/SQLite.CodeFirst/Internal/Statement/ColumnConstraint/CollateConstraint.cs @@ -8,6 +8,8 @@ internal class CollateConstraint : IColumnConstraint public CollationFunction CollationFunction { get; set; } + public string CustomCollationFunction { get; set; } + public string CreateStatement() { if (CollationFunction == CollationFunction.None) @@ -17,8 +19,9 @@ public string CreateStatement() var sb = new StringBuilder(Template); - sb.Replace("{collation-name}", CollationFunction.ToString().ToUpperInvariant()); - + string name = CollationFunction == CollationFunction.Custom ? CustomCollationFunction : CollationFunction.ToString().ToUpperInvariant(); + sb.Replace("{collation-name}", name); + return sb.ToString().Trim(); } } diff --git a/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs b/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs index 187efcf..2dfc272 100644 --- a/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs +++ b/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs @@ -5,6 +5,7 @@ namespace SQLite.CodeFirst /// /// When SQLite compares two strings, it uses a collating sequence or collating function (two words for the same thing) /// to determine which string is greater or if the two strings are equal. SQLite has three built-in collating functions (see ). + /// It is possible to specify a custom collating function. Set to and specify the name using the function parameter. /// [AttributeUsage(AttributeTargets.Property)] public sealed class CollateAttribute : Attribute @@ -16,9 +17,34 @@ public CollateAttribute() public CollateAttribute(CollationFunction collation) { + if (collation == CollationFunction.Custom) + { + throw new ArgumentException("If the collation is set to CollationFunction.Custom a function must be specified.", nameof(collation)); + } + Collation = collation; } + public CollateAttribute(CollationFunction collation, string function) + { + if (collation != CollationFunction.Custom && !string.IsNullOrEmpty(function)) + { + throw new ArgumentException("If the collation is not set to CollationFunction.Custom a function must not be specified.", nameof(function)); + } + + if (collation == CollationFunction.Custom && string.IsNullOrEmpty(function)) + { + throw new ArgumentException("If the collation is set to CollationFunction.Custom a function must be specified.", nameof(function)); + } + + Collation = collation; + Function = function; + } + + public CollationFunction Collation { get; } - public CollationFunction Collation { get; private set; } + /// + /// The name of the custom collating function to use (CollationFunction.Custom). + /// + public string Function { get; } } } \ No newline at end of file diff --git a/SQLite.CodeFirst/Public/Attributes/CollationFunction.cs b/SQLite.CodeFirst/Public/Attributes/CollationFunction.cs index 10a2519..1bb7f30 100644 --- a/SQLite.CodeFirst/Public/Attributes/CollationFunction.cs +++ b/SQLite.CodeFirst/Public/Attributes/CollationFunction.cs @@ -9,8 +9,8 @@ public enum CollationFunction None, /// - /// Compares string data using memcmp(), regardless of text encoding. - /// + /// The same as binary, except that trailing space characters are ignored. + /// RTrim, /// @@ -21,8 +21,13 @@ public enum CollationFunction NoCase, /// - /// The same as binary, except that trailing space characters are ignored. + /// Compares string data using memcmp(), regardless of text encoding. + /// + Binary, + + /// + /// An application can register additional collating functions using the sqlite3_create_collation() interface. /// - Binary + Custom } } \ No newline at end of file From 8125edcb213d5a94e381e6aed0d1c4e43f0adbd7 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 28 Dec 2017 09:23:39 +0100 Subject: [PATCH 081/144] Fix for #109. --- .../Entity/FooCompositeKey.cs | 25 +++++++++++++++++++ .../Entity/FooRelationshipA.cs | 18 +++++++++++++ .../Entity/FooRelationshipB.cs | 18 +++++++++++++ .../ModelConfiguration.cs | 8 ++++++ .../SQLite.CodeFirst.Console.csproj | 3 +++ .../IntegrationTests/SqlGenerationTest.cs | 11 +++++++- .../SqliteForeignKeyIndexConvention.cs | 6 ++++- 7 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs create mode 100644 SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs create mode 100644 SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs diff --git a/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs b/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs new file mode 100644 index 0000000..76c4ec4 --- /dev/null +++ b/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooCompositeKey + { + [Key, Column(Order = 1)] + public int Id { get; set; } + + [Key, Column(Order = 2), StringLength(20)] + public string Version { get; set; } + + [StringLength(255)] + public string Name { get; set; } + + public virtual ICollection FooeyACollection { get; set; } + + public virtual ICollection FooeyBCollection { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs b/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs new file mode 100644 index 0000000..09ec0cb --- /dev/null +++ b/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace SQLite.CodeFirst.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipA + { + public int Id { get; set; } + + [StringLength(255)] + public string Name { get; set; } + + public virtual ICollection Fooey { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs b/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs new file mode 100644 index 0000000..907dcdb --- /dev/null +++ b/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace SQLite.CodeFirst.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipB + { + public int Id { get; set; } + + [StringLength(255)] + public string Name { get; set; } + + public virtual ICollection Fooey { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/ModelConfiguration.cs b/SQLite.CodeFirst.Console/ModelConfiguration.cs index e4815a1..30703ad 100644 --- a/SQLite.CodeFirst.Console/ModelConfiguration.cs +++ b/SQLite.CodeFirst.Console/ModelConfiguration.cs @@ -12,6 +12,7 @@ public static void Configure(DbModelBuilder modelBuilder) ConfigureCoachEntity(modelBuilder); ConfigurePlayerEntity(modelBuilder); ConfigureSelfReferencingEntities(modelBuilder); + ConfigureCompositeKeyEntities(modelBuilder); } private static void ConfigureTeamEntity(DbModelBuilder modelBuilder) @@ -54,5 +55,12 @@ private static void ConfigureSelfReferencingEntities(DbModelBuilder modelBuilder modelBuilder.Entity(); modelBuilder.Entity(); } + + private static void ConfigureCompositeKeyEntities(DbModelBuilder modelBuilder) + { + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + } } } diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 93c7b6a..355fb42 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -74,6 +74,9 @@ + + + diff --git a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs index 8668010..a8e29bb 100644 --- a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs +++ b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs @@ -21,6 +21,11 @@ public class SqlGenerationTest CREATE TABLE ""Foos"" ([FooId] INTEGER PRIMARY KEY, [Name] nvarchar, [FooSelf1Id] int, [FooSelf2Id] int, [FooSelf3Id] int, FOREIGN KEY (FooSelf1Id) REFERENCES ""Foos""(FooId), FOREIGN KEY (FooSelf2Id) REFERENCES ""Foos""(FooId), FOREIGN KEY (FooSelf3Id) REFERENCES ""Foos""(FooId)); CREATE TABLE ""FooSelves"" ([FooSelfId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY (FooId) REFERENCES ""Foos""(FooId) ON DELETE CASCADE); CREATE TABLE ""FooSteps"" ([FooStepId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY (FooId) REFERENCES ""Foos""(FooId) ON DELETE CASCADE); +CREATE TABLE ""FooCompositeKeys"" ([Id] int NOT NULL, [Version] nvarchar (20) NOT NULL, [Name] nvarchar (255), PRIMARY KEY(Id, Version)); +CREATE TABLE ""FooRelationshipAs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255)); +CREATE TABLE ""FooRelationshipBs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255)); +CREATE TABLE ""FooRelationshipAFooCompositeKeys"" ([FooRelationshipA_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY(FooRelationshipA_Id, FooCompositeKey_Id, FooCompositeKey_Version), FOREIGN KEY (FooRelationshipA_Id) REFERENCES ""FooRelationshipAs""(Id) ON DELETE CASCADE, FOREIGN KEY (FooCompositeKey_Id, FooCompositeKey_Version) REFERENCES ""FooCompositeKeys""(Id, Version) ON DELETE CASCADE); +CREATE TABLE ""FooRelationshipBFooCompositeKeys"" ([FooRelationshipB_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY(FooRelationshipB_Id, FooCompositeKey_Id, FooCompositeKey_Version), FOREIGN KEY (FooRelationshipB_Id) REFERENCES ""FooRelationshipBs""(Id) ON DELETE CASCADE, FOREIGN KEY (FooCompositeKey_Id, FooCompositeKey_Version) REFERENCES ""FooCompositeKeys""(Id, Version) ON DELETE CASCADE); CREATE INDEX ""IX_MyTable_Id"" ON ""MyTable"" (Id); CREATE INDEX ""IX_Team_TeamsName"" ON ""MyTable"" (Name); CREATE INDEX ""IX_TeamPlayer_Number"" ON ""TeamPlayer"" (Number); @@ -32,7 +37,11 @@ public class SqlGenerationTest CREATE INDEX ""IX_Foo_FooSelf2Id"" ON ""Foos"" (FooSelf2Id); CREATE INDEX ""IX_Foo_FooSelf3Id"" ON ""Foos"" (FooSelf3Id); CREATE INDEX ""IX_FooSelf_FooId"" ON ""FooSelves"" (FooId); -CREATE INDEX ""IX_FooStep_FooId"" ON ""FooSteps"" (FooId);"; +CREATE INDEX ""IX_FooStep_FooId"" ON ""FooSteps"" (FooId); +CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooRelationshipA_Id"" ON ""FooRelationshipAFooCompositeKeys"" (FooRelationshipA_Id); +CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipAFooCompositeKeys"" (FooCompositeKey_Id, FooCompositeKey_Version); +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooRelationshipB_Id"" ON ""FooRelationshipBFooCompositeKeys"" (FooRelationshipB_Id); +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipBFooCompositeKeys"" (FooCompositeKey_Id, FooCompositeKey_Version);"; private static string generatedSql; diff --git a/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs b/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs index 9e907ad..e10205e 100644 --- a/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs +++ b/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs @@ -46,7 +46,11 @@ public virtual void Apply(AssociationType item, DbModel model) } string tableName = item.Constraint.ToRole.GetEntityType().GetTableName(); - string propertyName = edmProperty.Name; + + // Special treatment for composite primary keys + string propertyName = item.Constraint.FromProperties.Count > 1 + ? String.Join("_", item.Constraint.ToProperties) + : edmProperty.Name; // The original attribute is removed. The none-ForeignKeyIndicies will be remained and readded without any modification // and the foreignKeyIncidies will be readded with the correct name. From 709c90b644249c29dde0679ba68f9d4d6575168f Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 28 Dec 2017 09:44:31 +0100 Subject: [PATCH 082/144] Fix for #107. --- SQLite.CodeFirst.Console/Entity/Stadion.cs | 4 +++ .../IntegrationTests/SqlGenerationTest.cs | 35 ++++++++++--------- .../Statement/CreateIndexStatement.cs | 3 +- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/SQLite.CodeFirst.Console/Entity/Stadion.cs b/SQLite.CodeFirst.Console/Entity/Stadion.cs index f5d9804..d77dd2b 100644 --- a/SQLite.CodeFirst.Console/Entity/Stadion.cs +++ b/SQLite.CodeFirst.Console/Entity/Stadion.cs @@ -18,5 +18,9 @@ public class Stadion [Key] [Column(Order = 3)] public string City { get; set; } + + [Column(Order = 4)] + [Index("ReservedKeyWordTest", IsUnique = true)] + public int Order { get; set; } } } diff --git a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs index a8e29bb..6db4301 100644 --- a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs +++ b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs @@ -17,7 +17,7 @@ public class SqlGenerationTest @"CREATE TABLE ""MyTable"" ([Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Name] nvarchar NOT NULL, FOREIGN KEY (Id) REFERENCES ""Coaches""(Id)); CREATE TABLE ""Coaches"" ([Id] INTEGER PRIMARY KEY, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50), [Street] nvarchar (100), [City] nvarchar NOT NULL, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now'))); CREATE TABLE ""TeamPlayer"" ([Id] INTEGER PRIMARY KEY, [Number] int NOT NULL, [TeamId] int NOT NULL, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50), [Street] nvarchar (100), [City] nvarchar NOT NULL, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now')), [Mentor_Id] int, FOREIGN KEY (Mentor_Id) REFERENCES ""TeamPlayer""(Id), FOREIGN KEY (TeamId) REFERENCES ""MyTable""(Id) ON DELETE CASCADE); -CREATE TABLE ""Stadions"" ([Name] nvarchar (128) NOT NULL, [Street] nvarchar (128) NOT NULL, [City] nvarchar (128) NOT NULL, [Team_Id] int NOT NULL, PRIMARY KEY(Name, Street, City), FOREIGN KEY (Team_Id) REFERENCES ""MyTable""(Id) ON DELETE CASCADE); +CREATE TABLE ""Stadions"" ([Name] nvarchar (128) NOT NULL, [Street] nvarchar (128) NOT NULL, [City] nvarchar (128) NOT NULL, [Order] int NOT NULL, [Team_Id] int NOT NULL, PRIMARY KEY(Name, Street, City), FOREIGN KEY (Team_Id) REFERENCES ""MyTable""(Id) ON DELETE CASCADE); CREATE TABLE ""Foos"" ([FooId] INTEGER PRIMARY KEY, [Name] nvarchar, [FooSelf1Id] int, [FooSelf2Id] int, [FooSelf3Id] int, FOREIGN KEY (FooSelf1Id) REFERENCES ""Foos""(FooId), FOREIGN KEY (FooSelf2Id) REFERENCES ""Foos""(FooId), FOREIGN KEY (FooSelf3Id) REFERENCES ""Foos""(FooId)); CREATE TABLE ""FooSelves"" ([FooSelfId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY (FooId) REFERENCES ""Foos""(FooId) ON DELETE CASCADE); CREATE TABLE ""FooSteps"" ([FooStepId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY (FooId) REFERENCES ""Foos""(FooId) ON DELETE CASCADE); @@ -26,22 +26,23 @@ public class SqlGenerationTest CREATE TABLE ""FooRelationshipBs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255)); CREATE TABLE ""FooRelationshipAFooCompositeKeys"" ([FooRelationshipA_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY(FooRelationshipA_Id, FooCompositeKey_Id, FooCompositeKey_Version), FOREIGN KEY (FooRelationshipA_Id) REFERENCES ""FooRelationshipAs""(Id) ON DELETE CASCADE, FOREIGN KEY (FooCompositeKey_Id, FooCompositeKey_Version) REFERENCES ""FooCompositeKeys""(Id, Version) ON DELETE CASCADE); CREATE TABLE ""FooRelationshipBFooCompositeKeys"" ([FooRelationshipB_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY(FooRelationshipB_Id, FooCompositeKey_Id, FooCompositeKey_Version), FOREIGN KEY (FooRelationshipB_Id) REFERENCES ""FooRelationshipBs""(Id) ON DELETE CASCADE, FOREIGN KEY (FooCompositeKey_Id, FooCompositeKey_Version) REFERENCES ""FooCompositeKeys""(Id, Version) ON DELETE CASCADE); -CREATE INDEX ""IX_MyTable_Id"" ON ""MyTable"" (Id); -CREATE INDEX ""IX_Team_TeamsName"" ON ""MyTable"" (Name); -CREATE INDEX ""IX_TeamPlayer_Number"" ON ""TeamPlayer"" (Number); -CREATE UNIQUE INDEX ""IX_TeamPlayer_NumberPerTeam"" ON ""TeamPlayer"" (Number, TeamId); -CREATE INDEX ""IX_TeamPlayer_Mentor_Id"" ON ""TeamPlayer"" (Mentor_Id); -CREATE UNIQUE INDEX ""IX_Stadion_Main"" ON ""Stadions"" (Street, Name); -CREATE INDEX ""IX_Stadion_Team_Id"" ON ""Stadions"" (Team_Id); -CREATE INDEX ""IX_Foo_FooSelf1Id"" ON ""Foos"" (FooSelf1Id); -CREATE INDEX ""IX_Foo_FooSelf2Id"" ON ""Foos"" (FooSelf2Id); -CREATE INDEX ""IX_Foo_FooSelf3Id"" ON ""Foos"" (FooSelf3Id); -CREATE INDEX ""IX_FooSelf_FooId"" ON ""FooSelves"" (FooId); -CREATE INDEX ""IX_FooStep_FooId"" ON ""FooSteps"" (FooId); -CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooRelationshipA_Id"" ON ""FooRelationshipAFooCompositeKeys"" (FooRelationshipA_Id); -CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipAFooCompositeKeys"" (FooCompositeKey_Id, FooCompositeKey_Version); -CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooRelationshipB_Id"" ON ""FooRelationshipBFooCompositeKeys"" (FooRelationshipB_Id); -CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipBFooCompositeKeys"" (FooCompositeKey_Id, FooCompositeKey_Version);"; +CREATE INDEX ""IX_MyTable_Id"" ON ""MyTable"" (""Id""); +CREATE INDEX ""IX_Team_TeamsName"" ON ""MyTable"" (""Name""); +CREATE INDEX ""IX_TeamPlayer_Number"" ON ""TeamPlayer"" (""Number""); +CREATE UNIQUE INDEX ""IX_TeamPlayer_NumberPerTeam"" ON ""TeamPlayer"" (""Number"", ""TeamId""); +CREATE INDEX ""IX_TeamPlayer_Mentor_Id"" ON ""TeamPlayer"" (""Mentor_Id""); +CREATE UNIQUE INDEX ""IX_Stadion_Main"" ON ""Stadions"" (""Street"", ""Name""); +CREATE UNIQUE INDEX ""ReservedKeyWordTest"" ON ""Stadions"" (""Order""); +CREATE INDEX ""IX_Stadion_Team_Id"" ON ""Stadions"" (""Team_Id""); +CREATE INDEX ""IX_Foo_FooSelf1Id"" ON ""Foos"" (""FooSelf1Id""); +CREATE INDEX ""IX_Foo_FooSelf2Id"" ON ""Foos"" (""FooSelf2Id""); +CREATE INDEX ""IX_Foo_FooSelf3Id"" ON ""Foos"" (""FooSelf3Id""); +CREATE INDEX ""IX_FooSelf_FooId"" ON ""FooSelves"" (""FooId""); +CREATE INDEX ""IX_FooStep_FooId"" ON ""FooSteps"" (""FooId""); +CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooRelationshipA_Id"" ON ""FooRelationshipAFooCompositeKeys"" (""FooRelationshipA_Id""); +CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipAFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version""); +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooRelationshipB_Id"" ON ""FooRelationshipBFooCompositeKeys"" (""FooRelationshipB_Id""); +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipBFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version"");"; private static string generatedSql; diff --git a/SQLite.CodeFirst/Internal/Statement/CreateIndexStatement.cs b/SQLite.CodeFirst/Internal/Statement/CreateIndexStatement.cs index b153ad1..8eb4e63 100644 --- a/SQLite.CodeFirst/Internal/Statement/CreateIndexStatement.cs +++ b/SQLite.CodeFirst/Internal/Statement/CreateIndexStatement.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using SQLite.CodeFirst.Builder.NameCreators; namespace SQLite.CodeFirst.Statement { @@ -23,7 +24,7 @@ public string CreateStatement() stringBuilder.Replace("{index-name}", Name); stringBuilder.Replace("{table-name}", Table); - IEnumerable orderedColumnNames = Columns.OrderBy(c => c.Order).Select(c => c.Name); + IEnumerable orderedColumnNames = Columns.OrderBy(c => c.Order).Select(c => c.Name).Select(NameCreator.EscapeName); string columnDefinition = String.Join(ColumnNameSeperator, orderedColumnNames); stringBuilder.Replace("{column-def}", columnDefinition); From 72cc287249d1d3ca7034a80ba480fd00a3cab1dc Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 28 Dec 2017 09:53:21 +0100 Subject: [PATCH 083/144] Set version to 1.5 and removed zapier webhook. --- release_appveyor.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index f265b7a..f76af29 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.4.0.{build} +version: 1.5.0.{build} branches: only: - master @@ -40,10 +40,4 @@ deploy: artifact: Assemblies,NuPkg draft: true on: - branch: master -notifications: -- provider: Webhook - url: https://zapier.com/hooks/catch/b3cbz0/ - on_build_success: true - on_build_failure: true - on_build_status_changed: false \ No newline at end of file + branch: master \ No newline at end of file From 4c5e31d6626c96b65a6723fc358aede9d6c8f512 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 28 Dec 2017 09:53:47 +0100 Subject: [PATCH 084/144] Updated README to express the support of custom collate functions. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b7d208a..9da7611 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ The following features are supported: - Auto increment (An int PrimaryKey will automatically be incremented and you can explicit set the "AUTOINCREMENT" constraint to a PrimaryKey using the Autoincrement-Attribute) - Index (Decorate columns with the `Index` attribute. Indices are automatically created for foreign keys by default. To prevent this you can remove the convention `ForeignKeyIndexConvention`) - Unique constraint (Decorate columns with the `UniqueAttribute`, which is part of this library) -- Collate constraint (Decorate columns with the `CollateAttribute`, which is part of this library) +- Collate constraint (Decorate columns with the `CollateAttribute`, which is part of this library. Use `CollationFunction.Custom` to specify a own collation function.) - SQL default value (Decorate columns with the `SqlDefaultValueAttribute`, which is part of this library) ## Install From 43dfc9c27385c06f3bd82c6d8cf0606a2da759b7 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 3 Feb 2018 11:54:42 +0100 Subject: [PATCH 085/144] Set entity framework version dependency to 6.2 --- SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec index 6236557..b5c4561 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec @@ -14,7 +14,7 @@ Copyright (C) Marc Sallin SQLite EntityFramework EF CodeFirst - + From cfd50f60044995017690174e41ff57b547efbbea Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 3 Feb 2018 12:08:02 +0100 Subject: [PATCH 086/144] Set version to 1.5.1 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index f76af29..7bd4d1e 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.5.0.{build} +version: 1.5.1.{build} branches: only: - master From 9820fd8d3fbae71f44822b2d4417fc240be707fd Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 31 Jul 2018 20:06:49 +0200 Subject: [PATCH 087/144] #127: Added 'InMemoryDbTest' to show how to create reliable in memory tests. --- .../InMemoryDbCreationTest.cs | 64 +++++++++++++++++ .../IntegrationTests/InMemoryDbTest.cs | 48 +++++++++++++ .../IntegrationTests/MemoryDbTest.cs | 71 ------------------- .../SQLite.CodeFirst.Test.csproj | 3 +- 4 files changed, 114 insertions(+), 72 deletions(-) create mode 100644 SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs create mode 100644 SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbTest.cs delete mode 100644 SQLite.CodeFirst.Test/IntegrationTests/MemoryDbTest.cs diff --git a/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs new file mode 100644 index 0000000..c707341 --- /dev/null +++ b/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs @@ -0,0 +1,64 @@ +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using SQLite.CodeFirst.Console; +using SQLite.CodeFirst.Console.Entity; + +namespace SQLite.CodeFirst.Test.IntegrationTests +{ + + [TestClass] + public class InMemoryDbCreationTest : InMemoryDbTest + { + [TestMethod] + public void CreateInMemoryDatabaseTest() + { + using (var context = GetDbContext()) + { + context.Set().Add(new Team + { + Name = "New", + Coach = new Coach + { + City = "New", + FirstName = "New", + LastName = "New", + Street = "New" + }, + Players = new List + { + new Player + { + City = "New", + FirstName = "New", + LastName = "New", + Street = "New", + Number = 1 + }, + new Player + { + City = "New", + FirstName = "New", + LastName = "New", + Street = "New", + Number = 2 + } + }, + Stadion = new Stadion + { + Name = "New", + City = "New", + Street = "New" + } + }); + + context.SaveChanges(); + } + + using (var context = GetDbContext()) + { + Assert.AreEqual(1, context.Set().Count()); + } + } + } +} diff --git a/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbTest.cs new file mode 100644 index 0000000..314b760 --- /dev/null +++ b/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbTest.cs @@ -0,0 +1,48 @@ +using System; +using System.Data.Common; +using System.Data.Entity; +using System.Data.SQLite; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SQLite.CodeFirst.Test.IntegrationTests +{ + /// + /// Inherit this class to create a test which uses a SQLite in memory database. + /// This class provides the necessary logic to run multiple tests again the in memory database in a row. + /// + public abstract class InMemoryDbTest + where TDbContext : DbContext + { + private bool dbInitialized; + + protected DbConnection Connection { get; private set; } + + protected DbContext GetDbContext() + { + TDbContext context = (TDbContext)Activator.CreateInstance(typeof(TDbContext), Connection, false); + if (!dbInitialized) + { + context.Database.Initialize(true); + dbInitialized = true; + } + return context; + } + + [TestInitialize] + public void Initialize() + { + Connection = new SQLiteConnection("data source=:memory:"); + + // This is important! Else the in memory database will not work. + Connection.Open(); + + dbInitialized = false; + } + + [TestCleanup] + public void Cleanup() + { + Connection.Dispose(); + } + } +} diff --git a/SQLite.CodeFirst.Test/IntegrationTests/MemoryDbTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/MemoryDbTest.cs deleted file mode 100644 index 19d7096..0000000 --- a/SQLite.CodeFirst.Test/IntegrationTests/MemoryDbTest.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.Collections.Generic; -using System.Data.Common; -using System.Data.SQLite; -using System.Linq; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using SQLite.CodeFirst.Console; -using SQLite.CodeFirst.Console.Entity; - -namespace SQLite.CodeFirst.Test.IntegrationTests -{ - [TestClass] - public class MemoryDbTest - { - [TestMethod] - public void CreateInMemoryDatabaseTest() - { - using (DbConnection connection = new SQLiteConnection("data source=:memory:")) - { - // This is important! Else the in memory database will not work. - connection.Open(); - - using (var context = new FootballDbContext(connection, false)) - { - context.Set().Add(new Team - { - Name = "New", - Coach = new Coach - { - City = "New", - FirstName = "New", - LastName = "New", - Street = "New" - }, - Players = new List - { - new Player - { - City = "New", - FirstName = "New", - LastName = "New", - Street = "New", - Number = 1 - }, - new Player - { - City = "New", - FirstName = "New", - LastName = "New", - Street = "New", - Number = 2 - } - }, - Stadion = new Stadion - { - Name = "New", - City = "New", - Street = "New" - } - }); - - context.SaveChanges(); - } - - using (var context = new FootballDbContext(connection, false)) - { - Assert.AreEqual(1, context.Set().Count()); - } - } - } - } -} \ No newline at end of file diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 480324f..4e081fa 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -86,10 +86,11 @@ Properties\AssemblySharedInfo.cs + + - From 3af12e3a0f51722fd865b9d695cc467f858fa691 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 31 Jul 2018 20:07:45 +0200 Subject: [PATCH 088/144] Added .vs folder to gitignore. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c8add9d..1ae906a 100644 --- a/.gitignore +++ b/.gitignore @@ -183,3 +183,4 @@ FakesAssemblies/ # Custom *.GhostDoc.xml +/.vs/* From 443710d99194c193423e5ce8fd744c2d6d5d89d8 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 9 Aug 2018 21:13:37 +0200 Subject: [PATCH 089/144] Update LICENSE #132 --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index e06d208..44b57ce 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2015 Marc Sallin Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 5b333e2fa8a4f2d310453e510a9d47248ca04c19 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Wed, 7 Nov 2018 07:15:51 +0100 Subject: [PATCH 090/144] Update README.md Added 4.7.2 as supported framework. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9da7611..d24d114 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.6.2 (use net45) - .NET 4.7 (use net45) - .NET 4.7.1 (use net45) +- .NET 4.7.2 (use net45) ## How to use The functionality is exposed by using implementations of the `IDbInitializer<>` interface. From a5f2217bc1d757bb86a56a4bd06a92e66b594100 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 8 Dec 2018 11:32:28 +0100 Subject: [PATCH 091/144] #137: Migrated to newest csproj-Format. --- .nuget/NuGet.Config | 6 +- .nuget/NuGet.exe | Bin 1664000 -> 0 bytes .nuget/NuGet.targets | 144 --------------- BuildAllConfigurations.proj | 24 --- Lib/Moq.dll | Bin 664064 -> 0 bytes .../Properties/AssemblyInfo.cs | 10 - .../SQLite.CodeFirst.Console.csproj | 119 ++---------- SQLite.CodeFirst.Console/packages.config | 8 - .../Properties/AssemblyInfo.cs | 10 - .../SQLite.CodeFirst.Test.csproj | 170 ++--------------- SQLite.CodeFirst.Test/packages.config | 8 - SQLite.CodeFirst.sln | 73 ++------ .../Internal/AssemblyInfo.cs | 19 +- SQLite.CodeFirst/Properties/AssemblyInfo.cs | 13 -- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 174 ++---------------- .../SQLite.CodeFirst.csproj.DotSettings | 9 - .../SQLite.CodeFirst.csproj.nuspec | 32 ---- SQLite.CodeFirst/packages.config | 4 - ci_appveyor.yml | 23 +++ release_appveyor.yml | 27 +-- 20 files changed, 110 insertions(+), 763 deletions(-) delete mode 100644 .nuget/NuGet.exe delete mode 100644 .nuget/NuGet.targets delete mode 100644 BuildAllConfigurations.proj delete mode 100644 Lib/Moq.dll delete mode 100644 SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs delete mode 100644 SQLite.CodeFirst.Console/packages.config delete mode 100644 SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs delete mode 100644 SQLite.CodeFirst.Test/packages.config rename Shared/AssemblySharedInfo.cs => SQLite.CodeFirst/Internal/AssemblyInfo.cs (59%) delete mode 100644 SQLite.CodeFirst/Properties/AssemblyInfo.cs delete mode 100644 SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings delete mode 100644 SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec delete mode 100644 SQLite.CodeFirst/packages.config create mode 100644 ci_appveyor.yml diff --git a/.nuget/NuGet.Config b/.nuget/NuGet.Config index 67f8ea0..3f0e003 100644 --- a/.nuget/NuGet.Config +++ b/.nuget/NuGet.Config @@ -1,6 +1,6 @@  - - - + + + \ No newline at end of file diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe deleted file mode 100644 index 8dd7e45ae75d1a55fc669f09bdef4a49b16a95dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1664000 zcmb@v51brDng8G0Gut!MyPIS(o1G*}NCG4@y95#t*xf)#h=BYPBJw9HV!#jrhK3m; z!n(u8h=>>v5jjLu0*Hu+h=_=YxyT_RXV61L%mE@s!U)~PGbIx9YR)+sAz)z+RhYxP;P-g@-0v)07#U%5wD zSGY^U`j~?~@5r{CcWrIXJJZ~r_WZVvwxZ{qIL-4yhhBCb;aP-7`Igd2*mvb7q~(`y z?+3(#%U{l0e39o((tl&$$)h9j7Q^>Q3B&h{AOTyyzBJA2Y<>Pa!=HyQH5mJw<#}%# zd-C=;cjbr9<@v@Fl6py9lX9nIBzfN+wR-JT04 z@;c>BbO*I0)1Z{e_u9P^U+eUKH{7YZ@Vk;1yyud<_uuD?tHJh3$30i(_joshw0T~+ z{y>ixgh6iPsCF;!$3S6B)xyEqlG)gE@Oto1P}b4EFoLRo@bo4@Ff57VcA`28H6qV; zNUcIJqM^dLz(;;)XOa|R3K|yT5}%HLA;|{q3F8idUGj*$0zXDdVV~EA(pTnpdaET@ z%H18-AEZ1Th1|&7w=4N!&4Ou7f}t+S_VwULY5Bt-f<=F4ad1asidvweD^OurxJ6{v z%o#ap-jlVzQKoWI-U$?}0i*m-88+Ro2M8djPXrwmRHLL0{b4ZlmS&l1wDZ|9iXMhR z?F0#vIt=2;d?LN`L}YK!s4>C|=LWS)g`}HsXR&rQ;oNpojiwM+yOo&g21?Y{RqDxY zEJZz_m3*-_vCTWXoR6zK_PKgY^gd5vs8YH9khFbkZ76NCHndw(8$lcLp|$BK4AI11 zU$A{~Mvg{wg?K7ip)EfaX;arwgo&(OqE=x$(s(*FL(&ymHABmKxF7ctsS@jrcOcm3 zjl-fDitXqRqf`05o&4O024Dt;hB-_F4nxNrrU8ecat_mg!zho#G~h7Q$YC0A7!r4w z1{{V4I7|Z$qrDxb0kA*#5yc9+BUCUP+zG^w$Ulf?@;rnx@GJxg`Y&iipFfN!^L?Jw z(}lA6pg9?Q6ixV`sR;S$<_o)Ov*A_A7aBBo)3odj&pLGrM+McW24P>>0$X6w7VS?v+67we2K!3DW;p;*pGdy-^e^XqTCk&BlS3}iIxCx6wI-ud0$ zp_qEGaxVHcU3Bm~5&v4uUR#*+yJM1v9b_Pq=`8llTzDNKoDbO5Q^^l3gt%1B-yr0b z_FVL&aJUoZ<@VYtZ30RhR)TUcWl;%QBwG&Ry#y+qoDDUZ}zR5>i?t0ziB zmM&X;;Jq}?z}4iNi?)jV&Xu5QMzj#p2!qmJ=_q$JkaAPOs8motKyndOqZ){$8BZ;f zctJHP-ySa#eyCFaq+G7M(&@LCJL3bv2GCLuq|0wla{dJ+DR*h)R`lGP`}*{`wR);> zQ+1%OOejz2$!{!AsJ8Rrw64!vg3!~y9nmfM&(JHjkdXTmY&QSti=GVmmH7qlXu?#r zoQoGzB0L;Xc7|$6)Xm5tcAyX=NesXcL#bE0AuUeRZzyamxnlUmAi{_SMQ2mb@CO;1 z@CKK_I^`H2#6zFgJAZ=r5|M}npRBv1PB+0-$&I{~?_z%BVELMmA320?zxaA^DBtzB z@gbvIe^)8O_Vi;;Wbo^E9rK~_1yhTHh}vD*N>wr7{YpRhA#yG`2M^vyrM#(rm$Kb@ z0t9m-gcH{On6gd8Pq*qR4okT<(v@lxeedj2L48G79V4uk@zGI;5OIHWtfN!Es{Tfs z7hF)r;v#%TAlwv@Xnu@E_(b`>3UZ%96jBsl_@{|4e4O->Vfoa7Xs|3C zUqKrkSU-_`E^sXHh_{H3wj3y$NF6(iGNkqo%_dEjb|~9aMT!xuX}Drl2H$>7Id~B% zi%oy~(Ud#QQBh({?lP79cuD^%xFc+W1SNvW+I(j+>zC&c8cmtJa>&lh1*BRi(YB5)6o)5hMJ$b0xk~D8=t1Zs_fjO2>jBdO}jwebTD73^hqH zR* zUqOrb%f4u6Fj(c$k1$d=g*1Dha*hwjmh|}%z0moNZsOe?`VrXU>^C2>5cw05iFs~Nvih=k?4{riJMb)cxx#XHkZ0e@7j`+BJNJ8s$B*PfNkqn zWeh~O`_B~$>aBfIY$bDFrt5g5t9igzIuOg|6?%&5?_h;dwooV9h1!K_cdDaVL0>n; zNPYKt(pKmrqnB$l4G`Zuf2KF5O~*^hC?XgV%U!#($xAz%A00+iL{s(C0*E(=7~J~@ zFNM}U$7e`k2N0b%xh*8>F{DB#m5a z&y9C^We5xy{o+})D~%yUxL8x=iBvMS`QB3RoNtMn;d$@%BZ?B%&*5W4B<)9skV53W zXDV+EKr0N+$T^W9b`S2zD#*n(63>| zza-*y^>p^|JmN;A{HZ;pUh~s>X#loh3sOu2V0-9*7JrEJeZBLK@^(hIDPh^K9VY^p zZ2a20n?YX+OgBS}i48cPlu@i?Yg)*ZfWihz+{G<%+q1Y}jD>hIF4H6rY<$XMtUxaN z84{&k3&ZHO7C1>O1nFezUdi7T^S)+LB3dknhsi!1xQUhy;tvz<@N0ieNgBuFjtspG z{0s0b-3Nz(6+~83|e&YnmVIOknsqF^$ zG3HgBcd#bb%B~b$NYZFj*hxxFKDFGf6_JzWEzC8}6*3jwIm)KBiz#&l~D zv2K_c)C}fC7>Z!(`;@7UK&aRML|RQqsd?gw7TRfN)b7ZVxESdXk!qB8%WeBNZ0#mST_^&aT{LG&74O_*?tyC+C2Iv)&5Q_Dz$ zngl`p#!fZBsSmM?NGi(sjP3+sE?>W_tV{g$1K@y*Bh^&b7db)+f)POM}3A;Oal&Em|_}m*#0S|0f!xsVj6H5VsZMV z0Wj)&Ddl1^Cq8!c9x4-E1t8^mJIk6FPvmolz@q|J=1=v$LR`1X0y{+PKk&)MNPIot zIECV+#2-gLbcW}id*Vv~2HHv4I5p1<@HEk`VstuROtde8|KJQF{c3a>$qU73BVT^O zFUD6Bh_2y-q6%xrN}LK<2D+BkJs^X$1L|9md!^kkl=EoLb&^inaIc(ZSzkv^Qn$+d zY2H@8r)WLU^`s*dl#x7>-Mje;{pgBjETbOT$g^8FqpvhRK^5pOyYkg|7V(Na@p+3X z4q1+LZf>QW?vQ#ySqnkL?Bq*+UWYS)d=M#mG?7HmK~ z%{hM3mc6uHANIIPUFtt$CNF!0Co!M|{>XduOIvQNDkJX#jW!^Tj(m)Mg@r}f25)BQ zo+4xrMxWw?xx`5#gr8v|bOsXC5pp>4ZqoZQm<5CHBw;@OG-&6*?u3i+m4v(47nBl| z;&V{2Qe5XV7?x~VU9oLF(T&wow*_ZmctV(u_+Tj=C$?(kO+oK!F zMy)d?n~;xg;IR--BeHQ%o0reGcSnChU)51}3!%C$)gAq1GM3p)y^MeKXYLC7E^y_LR*edlel%gk54tW$;U|b{8 zDZMs`d}f?GTp`m32`~5Fdv_}DY2GivXxwsAXw3to*Pu?@N!<@9^q0Vgb`n0?scKJ- z?;_Zr{6=aheIw<#vrZU?2-o z{j35=FWp)p{ain;La3|JuTS3!;;9+wEa=wCu{_Jx3d+|jHZDe?-9DAi1Iiwri^L>M zZw}*~U^PG&L1$v>9S*AAB@e2vEn5zIeYw~;sHN^-X$neEjZ#5r&2?;GGU#~=ypH|7 z3MPZ~`ib60K#(TBju-)LoN8ZAyJJ3jmA2r}fDcWzsdIbq zr06PXik`kP^%FIuSEkM1)0d-1Rx9m+43qJ0D45y|?ENA)c28={>EaRd*u3bIM7`E(=Q>|mS^`oD~Hh59Kp z$OU6#Y~URVt65Fi4M~s7wMTzN1bq|o-O-<=x^o0vdq0H>gZ2se_z2|GQOM7Ey>JIr zsiUu9v=chj*W>m$-r=i?3>8S{$F~qIG2$O;UuNDA{ZukYpZAcpr*Kq^o6ITRA>Xnu zuL066@^ks_`d1~J+h|~Xy3jinoK(n#DNM4AvW$eyZCnJ$Lo+h^E-C%!arx{XIa(rz zg`{>q5{z$!M>79#E0IC{Ym(hJB|G)if94NMB4^uN(wM@8+QQv_MCk(cl@i`U?CLyB z|8e!vfXZQ*QQ2V{a2QUF!!+Qq<5Nrn4m%;mG~lokQ%nO6Tb^PX0DHSX{C2Qp2_jmE zPp@(oP|Dgnf1Y{$SN@=(LbsLF?m5x?dI`%$D)8A-7X?ng-kY< zVip90V*O)$j+{o~;;?)sBuCJZwtk5G#MKmb)!H-T*{LU$P@gUg>0rXqk*}q!zPOiq z)C1$rB26%L@f0|+tk2lKh$KC_FX&Ra+@pUYD>ZI@0{j4=g3GRjW6M|`i|#4DjO=t$ zP+e4kaSO^``Pa!{uI#}5P7Evc4x=BDxaIjBU<&9mR9L>O!(O3MCINRvW+p3KzK9z3X7(wZ!I#Md=tR;|r0B$guC zB9a|!rP|2ebsBK(rt(k;L=4XTy4=(vfane?6Vo-2LDGKPGnc*T+Og!gu^d*FoVhYnFY?tBe0Ec?UKlVha8p$iGtR=_G3pNitd-x@<#DJphZn_Q!E@k*ZE z#G^;V?HHV=q!N`-t;wPiq2*$UN~mgCRO^+OL?u+G2~`zIr6#02maz!I(WU!Jfww2o zyEN;W!>PE7O6hqKXIXObw*hcF#DW&$yLpgN-_0c=Z(W=2S7ZB#2?qD!ktr|1?&v#^ z4(=n_Ys>W1t|tGMok0eO#CY8U<;I}u5^fB%ai-O=l1zxyGR8vTM|=hea4$g5hH11` zcl~>WI}3HXFZ1E*h9jj3Wx=lgeGu)xF#|?eX0tgT|A0_w%S0&^Q;;y;Bp;ZQFy1UN zh4_aOen7&NK>8{BbH(^UzV&DddLLF7%a~nzGObR_?q5rBb$;GFcjEiyLIl?!qWc9~ zG520UCou)*{4skXe;1orn}^71h_>-+?Zt5;tDg99M0A++gaNglM6J9Ny(jl>>mnI8 zwCr8Z_graT6`pQ#gaar!3p~2XkqDUS#~QNJw#JF@TZjo+78g~=o=AhpSR}eGXH-8(csF?Ga`DHpW^;5BIX9`>`Dxwe z=zKDPRdJ(7;TvBf2GEW3Vl3P^535fotErM@5dAwo&K#YM&8=MtM_rMLFNK7HxN_w6 ztTd11`tulMR^vuaXFy{bznU+Z3jaau^v|T0w0wW#U0AJjj{7^RRR1|qqk?Kwgvk4K zo#!k+qVoqj)nVp<{snzGKYk2y{Kj_ialC%X_ZJ`>PYWV+z|G~xEi|jlR2KuUtCG&& zcJcm7diq>B;h6~IS`pmiaEyN`YzHtmShFVxvvqi%ME;5}>s`2>;m|)2TNHf=hBgq) z7h{IXFrvx(2R{tZEvrWPO1n&~Iaw~<0RuyZ?NECc)RZj=+tsSjeoVyu=v zh$N&t=z|!Z7<;4-V%=oO;Xw=sU%9;Wh9FsemyP=@mpbX6GrWg?pZe6ktc!Z{kcr=T zk1Xx|E9J#|r><->rFsfLbvhyIH5|aAUe0FF@gksOot*mBv0kl@_JzlCO~#zT<@5xCmI=Lqy1FblX8 zqgY|3*j*_VD;Ugjv0N&LD*XZJOxQj;j-1yDwC(g{p_EQmKzyR_K#+S3arU&VQQL3y`I7kw3w) zA0B6^y}A7F5|F>%`BOZ`7a1GNIn^9l@@{Ge;if(WssZX;b`*m6b~1?6rxaduS!($w z5Owqj|9~)9w@5IUTTmlX(EhJJLo^c+)F<-MxfQq3>vBiHe@Yi<88vleW8y}o8P2Mu z_<0x7lO@uQrFt7a=mm1di^;h3*z*2f7efK4l=RI~^dO}1Vv5hP zn@>|Vbn75_qMJs4kN};ysJb^;C)$r_6vw-^5Z0B_fLI!ag%=>!{e#+}4xbFJ;UL-t zdFrxqrBq*rbA)<^bll?z5-5??>7-VQ_yh$j9exhgda4TEMmRdTF zt@pmt-==ESJAVi7DCD|;>eOFQ`&|DwSd5$@lMamYzokyJy3oO};PH!4G~V4}r|AYk z{og@H1=T1ye%2phfBQRf1)qf!A^8tTWTfnmFzP{fXRa7M#dNmuo)%v8kD&gN@Dfy` zw2kFlZGV?vh<*k^{AUO-3QMIO^6_8fiB? z)!P$U?~Flcg$QL0>i;c7f@+kUFy`c4{5q(vcz5Y>+LEq#(-8(wrb6tq=$bcQ zvgjTC7fmN!SSL@pRLXC_Vu*f<@oks>Bik9SUCPc}R0=6A>x+dt9X*WO_$aw0^GkIw zDyg?wN|qWES#I<$ob7x?+4rOKi4VpZv*tWTZ4zxF(;WxbKaGpR3iD(?X4l`XdIx>Q zcr6u}qYG7YQ(xt9R;6XItp5U?kAB66oGUGR_mdB1xtwbtgr;jkC+0OISdI#+QBF;% zI)`@Ruc9H1_q8OTTO|nu)hL&MzSmD%w!^D)U?G_mW6XZo#d*5|-;?ukkuP^3OW7j- z5(sOLk_o4)>Q7SGI0Q?!9qxPcignue-|roDhZ{N$*E2iVQ5wlvls@m2T=W>N%3DOg zkm7d0GD2VVtoeKW_$cJ6wyt&+YMHzYBW-au#okBsI{GE)!a%pmKG{Pjh&ths&hCzc z%ne7iTVW7)5jQwj!TU&8t!+-V-Az(h^j1O^zTF~*jAV)g@dVPUA9zU8nQoJ6Ji;MU zI-mIGAA#?_V`cKAuaj6e*gCp9lX))j($;*qC1SUc>5h4+2G;&YiIO;7;tNV{*Uve4 zx?);Ly*;tx#fb4aRI^*G4{&Hr4~DtspeoYCIrqYUWVmp}&A1b97+pwoy0yklF4dcq)S?wxfA^(I@ zR`NNt^m(z8_p6S&b)8))k~MkEpBY>_dptt*K%cRA(#meK{xL4N||Euh;)VKam;8Suz7r8_itl6Mk*2RPQO6 z__d4Dpd69u&&hiVaQd;+v7CDTjZ<2>HKSfo@1ZqD1=T2dS%EaY^LOz+=kp#7d2=@U zW%6!aA5gom795vY4f+W0E+%WMV-vBidKKnuy}3Qq4^o-Jun-QONpS3#^Iu_Kp9(1r zh*tMEPHidVAEl7jBb`w}HA?qI8t-o*VsLgN^r)a3<;H3hmd!~gf&AFqr_w&~1%@+> zJEIX}YW)?8Al^`64sc^^!S&f`>I`-fo{+CEW#|dmm|BzTQzxGgCe79mM=3-b<#qVSQ*;uG1Psi(1 z^c#eg@N-l$lJT<0+i8?)?S=8YIHA|dt2mBVQN=@@+}cCCtj~D+Q+CH}Ev>;u%wRWY z5YN-K@1lg65fAW$ZNVPM+5u_210-F13}p;+&MtHQ`QI?iof#&#OW5d$k@(uh#O_Y; zx_X_R@_936?mQQky;4z)MdXo-dC`p*0&3MxhQu8StBp^d8Jk$V2qI>$N%<=CyVz;= zyaTmfM=aV^6Ny7NQKf&ri^8B zf0~IqkX`HVN-}jjqOB*j)VgbS$$7y!Z_2NgJZ@&&m)4PW<-@3@JNUJ|G;jf#C$Afy zzw5KImP%X6oB-J#3X5EVsWL( zCFs%Pky>;-JJBoNi**?a|K`rM*v=iiACYjW_ETv>t$-i>mEyVO!LJG5VU6n0EF{XE zaMSkJbqF*a#de3yRZ26W&Ic7Fq4kw_N*g$M##$e6LJ79iDgjHh_T9xU*?3-*p}80 zt1r?R>`}ppE~^My2x_m5Z=W$+&pgFDm@;uXM)%%#5gzB>&j*86d$RSO%iMZT#tV05 z;1I3XpD6AiUG@LJGXuSxr`(JFkFu2gYM4vTTy>0{eqx5&disgkC5v}jkc(6vVn+rq zAlTFC4~vPJ)5W_QpGWxqu*MxpT;@4GU53j%$;X*9gw5)Svnluma+nVzAq-m_@RB?4fsw4-ulH*vqN~Q<0q}eAh@sD?6P^ngmI*E}rGt_4c2YuB}Y>4nVeVL$>wT)KAHcd=QTVXMe4JZGTR%4*LIiPH<-mK5{PUlXHTr zs8RMgK`FubbApm>Ff56qJk9$*oD<{}pjN;Uvmy}8bw>yPTRg7M&}P|32e(V4>tGxm zTtgYtZ55{E$f9ERbMLh86(1!<;>f z<`7QC!tG9!;&Qt4q{)#v;g78r-|3x%j}V@%;{*do!YMfuF}n%Wj%9sg{4kqKMp!@J z&FW@^zZyiW)wq4?-uaXDJpwvoS&vie{$%~Xr1%2?Z0k=*&{?*Qf*N-%t4=UDPRtDx z5Y$=YXII3Pl4%!EyjXf_e&B4F&=ize`>l*V^jjJ4hUh1$L~b2lY}qF1kxgayp4C9V zFll$@RnKW(D(rZ--7R{vn9ZB@u4;H8{p3eug!3-WTq5Pfud6>psP7%;t^Z|uCNL-a zxpEc@dDBtcsh`kSSD}ML^Y!)kkFs)5(!;~j&$XQ9TQd-NygHm9$A-Rlliv}FB2p^Uh!$DQp8$X>K6FJ6fy54IS-n|mQEbk z{>(re-A4C*Y*#7CuplSEl> zk}yMDD)ZW^Fq_~!K#(}2UyO)(8PY;B5Zz+oRuF%3BEycE*_ zn7n(#Vv~2w|JF9*#lGoaOHf-dDP1-l+yORz#QFh~wd&%6J~6V0Dq>>;E;c%os{#^7 z+C?)#6P(j$<8h{Rf*&@9hr+JPx+K#{i8^7ss2-Lylc-f=QDU4p1t>`fiM-`*k(UTB z)B3U?nW&L=xV5BIyXbBraGDgq6*DAvUf@%+?Sl~u>bqjeBBs=Gbe36l@^1gFX>zyL zE8QxR95yC*pA_OqEZ~6TRf=~bEM815?%{2mWUt`&I+TptD{!R<;)5xMQ_9?stY*|+ zPO}>j;nWT-kL%R3kCEoz)VOp^I?vnbnsiL+*1gtu{J+WrQMAZI<@A3NO2EQXAEK!D z^AYdP$J{s9xOVmU%IO(H6>TYbxx(4lUA;4~Gspg2b&=$?Z7JVq9yt%H7EGDEoffc8 z-Kr(WWyb%Cm2qdgF5f;LzmS#_ySJS#p$>`cST;eIT>cM^PcKS`uCx%cX08S0IP-XQ zm4Z5ztM7Y96?CvOJ41|y7zCv=8?4|?Wl|zk(utippR|zf4cek7!!9yZ*-LSx-6`Dy zN>}Ew*%b27Yzuj4Hiq1d6f>ntnxfFs>1*7T)#|jV_mkKcJRlu=sGMtyK=!}!T4cPH zY_%m|D!FPHM`eX;nR`;U&gPBT$zJb!@Hk$1G<8=kSUB);Vgj{b%{Qi|P;;Fz&wMK@ zj~rA#Sa-`}t|MXMR3TOm!8!{z^QhLy@^+C&k3}Zrv$jVH+O#^eOO6PvNzb2*TeM8x z=_q^GeLb~z(>+EP?}YL7O6mP*I16*;u0Hm^Hri+HZgEtNLzAvkl^ z4)wihKe++rb`g?O&Ms~hspMzQD$XqJFJscw0gB*Nl{B5G*4Dsuy7MyBv(0~U1??%9 z=%|xBwWQj`^R!Z|($-Pn%CsnM6xftLid!s7kyPYG@Wd5iYT8rSST1mOMfwLJCDe;g zf|$cj;eiJuOt%ijn&lx>qwnob)pA;fUUxy@{{fR8m(%Pr)4EFt;rAvwd?5O=^CvZc z+`vXtOaoxO^H1=m=eRDFcCG)O?KbXA>c;b9KyeyBbS6~#T44gp>;R|Xa8`0Lfx5Lv z=R1JM_-a0y$bo{;`@{H}R`_6nuWLn?3UVtS1GkVB$25P8^Erg{fMw&*tpvJb)H-6n zMw<+D65qN;*phjzV+w1)lIsBK>bb)^yci|SYE_9FD`;)DJYU-^Pi;Y(HlaUQo~3lj z^9p&E@)zgmYYuZA9)A|7GubcxWV7r^+a0wheZ!hYpGnm)9wyQ>6bN?$`cCT;o6(O^X)u zDf=kSHptn8lc8o!rCi&)$2)seTBvrZgrse1&q_#IrM6F%khDkbFbRo-YxhVzX8_`hq#g7OZhWx>M@1)6n>4&m9%SD`1LTcO_(+Orz+p_Z9i0ZiD)VRSnfZ6A z{YS-uWZt5!mz$c}b$L&pcN;M$Nxw}dpRTJ`^_6hOJ{cJO2(9L|4SIXpH=ZWj&SK-Y zeARvYc094y1KJ>{FF|rKLlLXl5lt?ypz8b){ZFnIYgqysOpBA8a38B8+2%EgT&EK0(nCM>E_vHrz~ zUT987YWJiGTV5w2VM!7udY@$RQcCHDQ%dgql@6JYc}&CAccg13Hrve-<+;xZKF0G1 zr!JC7zXPUfOQdH!91b6L4Fjq-_I~7;u2%F8>i1~-OQR>tWBWG6I5Vuxn3j%~bk%&k zH@!4Ih?e6eiR5XiKE>0?B-ukK>Ha5Nl9IVIwqx63JuRhn$|MJAr2gnG)pB~O0eFC2 zl42SFlXFS^k^z78%eRUu9V{P*@Uh)v<9DQvh)wobKkfP|Jq9b5_wyqkm9O@Zi{*=Z z1V6^N_b&o(a}P57=<1c zRHLHB5OtLrjIB*x#|Rlx4MzplsA!4IH&|;&o~(%u>`03+3LYg-fzNpj-Y_IpOC5+M zO*rp~tWy#Gur%=C-f(eA+}UPcFdH{oiLG#?O)DYdKr!4}_O5LUPIUVdq9<>I+k3~_ za23pQI+E7b3ST4?x~7p%6d{IywwnUK-1HOEc>}9v(g($j)_%m9JhX=WcN8v&sBWMa z-thjzLEfzlNsKd`eUK)}>8+di1P4Kxu&Z52#?J1ww00G11#Ve>~ zO(;fjct`L)I!U6M_fnMYxw8qfp+$?9i58(s;i#Y*6(O7csVBFeUYf=kT(KUV z18*V2qS_92(8b=$NnDW&-dR}NmNtdcFBcVwkx%xwe)#77tz=$(x_3x2ukK|X`988) zv0c5cXesh>&3XyikPodFeV8h9NykbU6k=)?cGhtrahrQ>6$^iydxy{ zjWAw`k3S6zHf^1s+$N*E7~i+Q|C4h^Vzcz!b?k%wIkTr{nObb0KA)KK zIlT1_T#f4UE@-_6H+4V7Nl)Ufytl{YJ$e~qV`83>gj>fjS|G|ek-~X z9n1$#rtlxcIYd!DF83XXUz*8YCahbgK$4w-bJblAflQP7WplQ_bKppmA%pLh9+RPX z5SZraKT{xzl|3mHFxl_jr$1$yb#DLzGJd`+GyN7tV0^{G>o?1m*!86j#tL- zg^caLV337b+M8j3<71DLyL)}6bKvVDT(?>8I(-jU{GtRc<1MRR&9^JY!}_kbj1;AK zHEFsdvI}*G&;cMkQ48YCZ=LDdZn2c!jdM!@Npve8uR4!ZF{*t>)}x>P%yi5)sr z1|{k<{!*Ugt)Qm&_ZLi0dY2qm)<;j%5L$<7$N%X46^5oX3tT%hEvlM(ZO0vCj5^HQ z-09v$@x9q?3*O=UJnl2ziCjmdvnSJi?;Wn2=xT4yUEd+sok+j`V%oHmLrU8e2ImI;Ku$xm%0}lI2ifO=Mx1^W` z9QJv^DAQNdI1RYCTT@H}4*Ob)X#lLk-BF^or>X9*`ulYMQ=yUgxckKqM+m7E@2h)#pZkA|D1(vRJ<|KTrC=;(bYyxY@yF3mC784aR~ zNybLhWKDA}5AL{JF}jR!I?r=^%d51WtDE_hNyDp20*t+1?GHR4m@t&QoFfHs+NjXf8mCQBsEdu zo`cDJ`x#mgA0wIH-op1P;hU4p1=XkspP)ac%Z9vCi>Ja%ATfQDb>f8enXqnMRMs~? zLVbB{Ba6t=Xe3!eVdwqO&HhV+qQ-zRV6s-MN~gN2bCOy9A*Z=HNo9T@dxhR=(a&Kq zxmCT{gK2y1TCyHn{l1Y&Zd;%)5;5bhQ5D@gC^Y_oL=Mj3FI<$?u^`v7^X5?MD@@XJ zwr7w}ZY`b_=UCk!qE+b&^lb|Eg4KMz=`{bYRAsx@@Z4)MU8N}tcPEbmd)#99oY&m) zN`NZ4dno`N=gkSohfx!lhkT9#YCyu%#FP!&fA!B`-J|ufc|a`7c;t> zEE-pf6fUBe9lEVkXmE*40{9X7o30P*HWa@yps&k0TPbZ2QH~FYZ1lAPPD#s^1j%`s zB5|zweH%!IoduVe#e^UksPtA1!ejt9)r@PiSgO)4OZ<-39XD6voJp67!ZdN zhbjkhKpDb$SGntH{MPGfl5Q?n1IeAYa>`v4O#EBXu%R49(5qsb17=d7!;p2WHIy+T zr^heT;h|8~J4MFjz<_{{ESJ6LbuNBYUeV(nIMFB!E#c59mE44h?A1md;jR6FH-Sgy zE7QD}`94Q=fSC*LP`Qc3?_?y>A&j*}UisZ{Afm%1tNTnMZj^_DbhUoY$45`%us6Qh zqI>@Uqx$Jcd{j`45+f8w$B;sPsY2diKNFy5(FJgK5@=bNs@;?d!}VWAen+n>bQ?=m z_v$#KzqC^^MzV6=whS-YZjC&N=%dRi2Y?PCzsouhJ0_D&-Y(CjXJM<}U2v+YOtx#L zp0M_OTDFd+RJz+iok8s zPXtp_Ej`Vhbav|#Y&Ttjz*^H|U_6$axJTyBmgc=in)haUz^I@a6}>}R_E=E}UaW&J zhb5OEjCUwMFDE~1;tkLW6ycqa^aYJ?wXpk~useq|qk?Kw%plAwV#>)Kx=d2mu1F=} z3^+Vxy!b+L58_i4YD9+mmU|ILWM-30@>rv)a!{6ej-GvxZ++)2<6By^?~ulIn)naW z^?%C;!Z|$S{W!U!^9{mST9=tqB5*MCYd#xEB75`(Z zCZ*@qalI1bPm@f_gjipTF+KGUUk_Jr2aN7V;Gm6&g=d_{6;_LF8kB zqAwFO)~`Cmws_}hT|Q4ty3bn?ay_Gvy73LI5p{ZcQ|v(bN>e`B$O%#omV~LoT}6mEj>$4IVG4gm!yD?oC88R6R%G zbf{`t=j4_Fu36k|b`qBuXAzB)%vk+>Zx+nX*ZMz7rehu^ZpA79UW;{3q?EOn^;Ge{ z7%ABAp%c2p2YPJz8XBQf+lE75$^&T}VCU z&!5>Bf0)=Qi$!Dj)g-k=iBh~rpxWIqcYxc@ADe&7?9(%ey8kuF8?CkQ;Get)~%pW}U4^^5M(uf5MX=bO^1xuJ~tSh}^)Jgn(-)SaJTCQP6I z0@ZdSqx$Ij+$TqJ#Te-MiE7J91b31p?N?n=Xzf?qpP#63Z*i5_hUC%1wS%}o?m$uy zHwdP80B(QI0$Ecg^$pzBtov#f0{lOnv%ogqgJR42+jo=i`{Y~pA2a}a;=Z3^8gSVC zDW(C3{UF6O;IK_8rU8fjV~S}2Ox~OLFTO{$es?4D!Pz|e(aF@T{;xcXhpzR0ng?Eq zh@auRkE?U}N^NcjNurPBN%02g1>=8HLZ^J(0x8L&hd5nS)Oq2!O&&UV=-#Q;cfX46 zO`qw)_JpE1qv`_5ODmi~%cs9WSzktf?Cy>pa3wmFBDbbIaV(`Q^pG<7jmV`{M|+T?dUWE}{*@DODT zw~C^txBIA0iRZvyCo`*EDV*$0G6s6n z^_@~TzuC=_^cC(lyoT^a(6Fj42A5Us_^XU((La%5lAqUW#KWNeNe*W-z6bR|UM=b5 zrc%+uV*PgJkX`L_hNf!LYz>*jQi1CHhEzjaEP-Q`uJ-z+px9n28~!;;yO8z=PosT7um%_V+`UR=eypQ_4z-1qS#(x+oyUf)l+_)UC8 z7u}EB>AGUBv5ijRE|qF>aP1)P?7tuCkE^U_(ilT10*R#+xwF7sTD32b&fqAa+$NHX ze!*wziQG0`IMUsdPM+(lJ(os0)9l9CysQCvmuR_Hkr8Zvf?=L2LuS9;yU@W;hq~VZ zp1E^kZkoo#Z@vg7cQfn&r`oaOiEyv|^p{`@?qUYD)lP1`^LO^>>E0*Ezy5~46Fwn7 zfvW)YXPQPn#5>sXJb`ymKd-tofuCd`z;#~SYs2sz)Gwjm#-9Z%PAK?uy5d{VyHflW z02U7)riIdb2;0bq1%ba%Nq$0`l@r}dm)`;y{2c}FuHd0H81}F?8pVhpKUsniitdGt zx<8mAx!XVev0Yw`=XN3@2St5IC;PC`Y?PW?ORLP&i_FdwZronVBz+U*8khkw7n^og zxqhg~6+;O{XSs`ehW-%>XVfMpX3lvTEkD$t z`imjleR3ql<4^kZdHkP*+{DPvQM>1G{1WeYaB&IckD*e}OIN{|7Bz7>Q}+>`FGV`J z_!6uiUfVYjm@{`r5>;=b6)_4e2OcgK6*_@-?JU|`{<1El`~4-i-H&(M@2;LnjS=E!MRyM z7OulBlA$bZhq8$nZuu=Kw=87LkmV_NhNHTHwZ%5w7Agl>)xA;TIpO>%QY2?R^yEbF zrjrvPm*sMM_hs||StAPSTj=-}*_f zYD&^|>fH5{v?X_7(TLTB9g=YPUQC)!Q8`?%5mS?h@1+q{BE)*P9M_D?*ySOn2T9Jk z__xgC8D6Ho-Zml}{a_j)VG+3BOUk2L$=>}v67RP0#b-{p@nwDHbVOXci`H|OEA?%6 zUy%+ueP4Dzq>=ob=tEG~>!iDYajW@m?8raC8JXdGYiN4?)3m?^Ui!UbPTyJ5yN?jB zw*k4-bLf=(9NqJXr$g?nk_%^a{1_P)jf}Su(RdKfsk`_qfI9nk;i#Y*CBJpmkA2IF zg0gED%8=OHb7DR+o3hFsPcM;H?|70qpbQq5Ng3Lu3|y-5VKU?n?-BVL)`wvUt8oil zQ0>*PrK|<=3nV{w^TKE=kaPp5FQGS!@a59(@g(Zw$J62zy4XccDY;NbMe(Y3`~KfB+V~>ZZRch?KpHdceyKmnl_zC?EBwF=-vX-q{=$qTh(voXn(` z^KCpy5z@2Y!%{9q;@xnLI;#BGBX<>a;~7^se1X#F+Hvg&xa9Q`uNws{2kut#h)dDc zk?EJ=O7n}y=O=IZu*r|-t9z>jJ?6k2d2Yzk-~DkD3r&1)n%J#CBrIP_(Zu!AH-Q|7 z^tA{WPDdn-pHQ1r!+%Hh_4>I{K{YCR9||ot%ALj7bxtB1=b7Yc>~y-bwC?8Q_&Hc` zUmokQ5^xnfKTVXZl8D@U=jXhgXhXbrfZ^F->J5JNmJ@ZdHvB>GbPL?)vTd zeL4CAwHuW-iC&P9$UFKs35lGe7bPT8L;$q!V-gaZr2*;=_KOtL0GRCU9>Vw4V{QH~ z(D3sWf&RdSI*+XI*6yS=pZ^+BwkcvWqiUrF0G$c=Rw2 zB`-(+NfG&Z5oajbz>!yYq`RD3p$l|2&ljX)xvWLjNP8`5xresEK-^KtjWigp^Lpwb zaZMLNlXoxkbWy#6vu$M|##w$A6`G#NbVH-kl|f<*7 zA4m4R^z<%@pR{kAysxHzwTGzU=#yktYu}B~uO&1np{)|ST0;LSp_e7}l!VUdBlNU{ zu9MI+5_(lazmd?yenQU@adQL*;NQk*uUT<_B-KON|xNNS3qW7|R zFWYeZ)|W0PVQGdkC0Tm432^tK07-Gig^*nd`{Q zZ~Os><9?TlpPTv#d42!w3ld*V)}Y;F`+0=XawY&B@;7o5J5KWjWBT@Cc*~zV!>9HXzzCaJHVQ6PrVjk^;) zx~BI$j8if}Gx$S=75t-4Blr?$P9M@puk;&co%!Qc(*N%JB`D4Shh4EaL`H zu-AL2O0obbYdkcf&#dVSn{hJv+oSdjyho)$wT<5b_9dyiy5{u`G=o0L@@6=)4($nK z9vY5(M1rq#lNNfz+EW;Pi;qNpZSvd4-u3X11%)tKLhK3YZ_JxS=cNqt#}&xMPw=>7 zF8a2lm-R<%mbX#TvVK9@P9EpZqBa+1r|(SCe@D_YhP)v4ka0x=BnJDp6w?40cX-c3 z`>G3Rbx-DvVPE6B^2y`AezbtNT+B*|0L|y`x#w@@b=@{EN6Y(li7-u|1j$1_W>%^E z_Hs!4{q6bRza4+p>?HwxT=UPzn-tiWi5#{vjJO6*gg3-7TirN_7Amkv_AJ7gomh+| z0*Flz`QIRI$i0spj=B@)C_2!w(7r9d)tE3+Skg(e+?b}zk0o(qWPlabK3U7j+BWXHJ%c!*&&V zyA!(TgwKzaf$Oi~upg?z+FBq&myo$>+Ua@V?Ylo0A@e8o^`m}@5-oLdnj&?P`{>K< zxkXHsy!PDk>hejsfr|(u8|-nLo=0TaS5GZ+5{HK1DDy}8>fy@cA5wyj!jwhQk@CEQ zxEFY*-r&tWWbO$UWF}N6`q6IWx|~i@@14Q+T15&hNDSiMFtq(uhB;2TyN1b97Y+c*a+5;QD7+}IxnDdmvZ;ANANbj zzuKhFMQ?*(>wLhuEO`*-)e+s}W_I$B6biwy=p7cSCo-W|q3rcrwII3pVadqZkihFG zd-LZY8o87A6R^9LJO)-1Ut~YI*!9F$3Mg2d+QkLCZF?Pt#T97azgqgq<9zlRRg3?Y%DgIRPp!@~9;ZCH<>5 zlFHg$tS9mj-)~>Ozed?}VQ_Gca2x+aiQ|7C8XgTGBn>Rmfa=iNB`0PVj}prSoBKOzkBtSN7z=J~20Ny2xEK+17OPXg zP@G!*LUG!(FBD~JU+-cZ;H+Bh8EAE+kM<^uGPk@+(~hiXv?#X^%a;y~^B!g|ELnwq zJ(wVa$T>($Mz#1~B*1C(DGR>L&*pqa#}sVhY)VMU-wr#u+hX{|)TV2II?H{xTloIE z$gn$l3^r;rY7_TJNAGs_YG{BefEIE<p|{RyNj${o>Ir% z&^j>Qg&=2dC3WqdaRl{WP!2l1M3v$>eAXXNYFdncNr>N5iJ#DKS(iydAVG^Yp;M6>a6*N>*To^}@+kdL#=0eN{idWXYg(>e5SJzxmM<-z z0=`x~LEl4B;W)X;kv3?qWlGskf#;p@Y8=vO?}CU$DSl0e*-{u`L;KTTd#tl+1$X(K>;2(<7rc`N=hB{O z@A4y2sFt0)M5}lM2wO&1Q5Dl-x;7}v?>uXc_LN4ACkC9yb0+zwu|DtS5s4JwK%H5XP+hg~_6+qZxx!ohr$1?a1%w zm7{G?$G_(zbYoilJmFxWm>;f55V7oC@R{CAPIcl-j6kZX*q=@F^g&(r97RZgh7_8413$jR?b$laIa`iw+}uOQp%hJ&az zrn&wBTI)u6D0D_U!J#Prj_fq-D2mNmPbkOdlm0%&w_W$PzX#uBelt_K&)hkBi6kSR zmVN@0S;B;sq)=A#!jZp-;3 z#Qt!(y;z7@XW}P*`2k-Ss2@&Ol~LB|Tv~RSJBMkf^1Ha$EWw9wsKVLQI=Pk~rUt!=^ z8Tdm6{x<_(up~R*l?Hx|fj?s4Z3kuZ-^ajL8@Q~>Wy$k8gMO=l&sdtx=OhEa&cL@C z_>8w2{0;m%1K(=kGY&TR8~AkwE=x06^4x0BPdp@>o^#WgeCh^%lYu{O;H5*e`7bo^ zH3t4g1Ao-Ob8pMecOL_nm9s2)t}^IvG4K}*eBNQ%{9^;Z!@&P+;QJh&&Hp?DzsJB| zGjNV@Wyw=Ht^dF{3!!3FU!t%seyCLN2YvkHt-Am zZ2Bh*`YG?ore9{@8w~s*18+YzoBt96A2INI4E$vSU+~WCeAgKGEe5{Z>})>I8T3<* z%ceirz}Fi1O$Pp$fwv!@o$o#dzS6+2GVlis{AB~5b3%4`kWLff#*&(_#60o1D8ATv*fwipl^R)HvORneu;rUY~WohviTov;8z&<&kcOaDcSr_ zFz{;({7D0s!=PF6lvAczxSWX1!e^YCjh|!S4;c8g_h<82W8j+%e9FpfKC2DRIy0M({C0PiJmmyV7Jh=k=PCpLxq+8Ikj?*S1Lw85%J;H5R$^oJVwMFzgv zz}wEs=6|4p%Ws%x$#cY@zsta1H1IibHvf|h{3-)~#K7Cn&gOrBfv+|2+YJ0U1D|nD zcE0kP_gV5h&Y-{3z{|C4KHS)z$^Q`p@2_XmUt-|f4E*48v-#X$;B9NO=}$KB`waZ2 z#cV#kAI!#=8~D`*{+NMR&dcV%%)l=<@J9^1<3ri}4>RzK4g3KE&z+ym|4u&}Ut-YL z4g4kpf84-J7i8zV(7@Li_!kZQQ3KBnXXm?*fv+;~YYbd|YB{UFKWxyKKAcT|sDWQ( z;F}G+Z6urjfd)Qe;P)E%s|LPbBRk)<27af3KUv7;^O8Zo^M%>;#~Jv=27Zr$zhK}q zMzixh+Q8Qt_?-s+oPk%@W#@aCfy=4hEd3ld=i@JKrS+ zzSh8RF>tvVDoa1N8uV`%`0R_b`7AZ?l?HyXf!|`_4;%Q420roQ+2ved;Kv&HS_7Ax zv$EuQwLyQcfj?#7xl6M7?`q&j7&yN!m|4y%4g78cf6~C;Fz}r}k)7|M1}?AvWy$kQ zgZ_R4uUwkVXO)59Yv2<G|bDM#8U6)P2 z#=svj@OfXz=EEg9nfmjhfgkn7Z2H>_yz5KZ^m`ikasyv);I|q0;|AV#eRg^J4g5F* zztF&MG4P)o_}>hC*NxfbTxQ^_4g3-Vzs0~GGVtdOymUi$Id?Pg!wh`2fnQ?aw;1?C z2L8N(*W0qoU%D|HUt-|r8~7at{=9+Dz9~E3Z>vw=Tp;1j== z&3~zZpJ(8=8u(KNUb!th-$M<2*uZZ$@MjHNZpq1#XZ7pZ_yPkz!oXJ=_=N_3je*~3 z;Ex#iHUn?FJ-c4L2ELDhA8p{b?Uc=bwLyQ2fj@8HyM4ppZ{W8W`11z7+Z_gf1HZ+< zpEvN`zG?6`@coSO{T74%83UhoXLi2J4Ez!U-(=vg8u)^5W#_xvz^^y(Ck(uNS2q8{ z3|#K1&g$>-^DtTXI)l$m2L6zNzi8m)Z)fMbkAW{Y@DT&Q-oPI)@aGM@>+bAwE--NU zje;zB9%s;x82C*F{)mCUY~VA#lU<&J4SbD(UuEF;8TfMs-gQrQdG;}Id9gi9o+laf z*BJO?244PdHvgjx{1O9yz`)z?&E|iAfuC>ScNzFg20rh5+4;&3b7#qOwLyP_fp0bN z>V4V#ml^n_2L6D7zhU5m-_OpsZs4~W_%;KdeSbE8E>Oyp=erI1YYhBx1E2DPZ2rd@ z_!S2JQv>hXl+FJL1HZ(;A2jgxf6V5;)WGGJaH zN3!{R(ZF;6oK3&Vz}I$U(?4v`@A}hh`t=6>lz}hYlFjF81OKyuAN^=HpIZ&Q@Uv|C zQw{un1MmHLHlJQYp640#PZ;>Zf63;5oq@k$;42=>=Cj$r=lmj@{$c}v-oTG|Je$vL z20rnZ+4RpD_VXNr{s9A@_Cz-SH3q)Pz^D8wo6l+kzt6zSPiFI3Y2f!5c-OD9`K&N- z`H|qP@#rpt{xt(%vNfB}#RmR}fmi-Do6m9s|Du6EXW;!$W%EDB!0$HjzZtmvTymB? zmp+}1uQ%|`2A+E+o6k}MUvJ=>4LtW7gTH~VH}K5{o_p5dZ{W}Gm`%Ulpuf++Uor3n zzs=@_Z3h0D zfgkq!Z2ngp_;Uun_w(6&)*1Lu4SdEQviZDV$n#8tev^S$U&!Xa#=til__Tk^<`WzE z0|wsvVm6<14E#X@pYiY6eCh^%lhNNFGU%uLF`NGi1Ha9{Up4T9|0A3K6$ZZ5z;}Bo zo6lMU-(=ujf6C^w+`#2W>$AqAn+*Dw4gBCgXY;wrz@Ibleg2Zo=OP1t%)sZooXuyg zfj?m2Q~sLGXQhEJ*dd$#E`$Dg1E29qHlJk%evyISW8g0u`0W48&i6P2zr?`rGw_!T ze9o)c`7Sr`bq0Qifj?v5<^RggcZq?YW8l{t_@f5i_F8tn3k-aPfnQEoBvS;ezAdXGVs?7d>=nM--~8v%Q-gaZ!z#^4SYr}JKqxw z{0akq*udNK+58VQ@beA)P6L0@z;|uW&Ucw1&lLv!bq4-~flmpHd<}eqfj?y6?S*Xq zOALI(!0$2emkoSDF+1OFfHeBy*`KF1pP)dv2g zf%i_#=6|Yz-)i80Ht>a$viYw!@P`e&QqJb{ZUeu;z+W)%y(ee$A2#sUy0ZKGW`lm` zN;d!X2L7ypFYV6ebAy5BrexEfYT%mjJ7@E`+`wNj@I!aW=5wo|pEnrv+YG#aPB#D8!0$BhR}6gN+-&|A z8u(@dFYKDl=LiG8+`xZs;Hx{c^|Kmf=eyRxe{SFlcFX2-xq-iE;79aj^SQ;q3;o&j zD-C?JfzRGOo6m&?e!n5ltp@$FdD;9QFz~@WvgvO#@Y#E2(_dxarTN+PBL@DGfv;SU z&F2XNKWeXR`eTj$zR94Uy>~XBbq4;7fiHPWHlOPayltOs`V|Jg$-rmto6TpPfj?v5 zOZLm=^Q`7?pxerjPQTobE~?0psx9S z-#pJ$oqF%N=bU@)zEt&w-;I}ltOdWz!f2kGJ4=Tkx+fc<(OpdXKT-w_5N|E%=7J#>>|h{5p$2ueb28 zwBWO5$Lqbqf`4woXYLj+=OPRKo(120_joyHTkzK`_{MYM<(y){zp?c1&sq3~>=7@2 zrUgIVg5PGrKeFKC_l(!Op9R0bf<&!!5^^Tvn}KKHIIsyzn=xa+=9Pu!N*qO1@U_Kv)~t5@TV(TM@XIk(REcjg({BsMw!7=fA zzq0squ7&>^3;u=$U+2g1diS^Bms;@U7QExwc=>x+@Cz*XvlhI#Fkb#F3*K)TFP&}S zf7XI`^vCPn--2Ib!9TFz8y^=h|5yutj|ERvWF*Sn<U+>g-y$4$GB^LZO%ljSAS@=5_#p^xPg5PMtzqH`feiAQ#kp+L!f|pN= zm$RP*zs7=pWWgt&9xp$Yj&DDYxA5O)!9TL#@-7W{GxzTAS3{6)O{*%tg93;wtT&s-cY|B9CQ^0}3TKd|7JTkt0>_%{~3 z`ox51@6D;_R7JRt{ z&s`d?x7UInYQfL9;P+eb+`94Q^J5Et?`83Jo?yWrw%~=!uh@$&bu;1^i%XDxW~+Iac1Ecn?L{BaAO`*pnhZ7ldA3;uuw zPh1x-e=7@qwgrE|g0J(Nc=_`z_-z)v<@$Iz+gb4QE%+-Ie7zguJveDbaF^7}3LJr+Fi`*=AsE%?Wl_VWx2|HBsCzb#(x zRu=pu3x2N!UunTNzdc@WzXiX;f`4hjH@zcXeqg~DTjrZLS@>VD;4OE?>s`-+&$8gh zTJXy)_`??bV+%g=u6R3VSn#z!@E&$i$XTkyo6}mxXO;!O z-_m}bZ{dH=f{%PWUhiHOe2E2r#e$D{B3}N17W^s;{+0z_@5y-ihgf^&V)!mss%UEO_Cmc=_8|@KY@KJr?{c3%>DRNSg; z&Zpz;*~fxkY{6f!;N@rH<CGs1>WMMgtI>G_c%@=(LT#nk0C(yI!<@iJ8N!vdIn($uXM#o$7z|B z*h!R>RhNGJSXROd?x`mZ^Fy%5^rm_au2?-sJ^1KbtsMcTb(_@bRT4? zBM~!rh0(preyHvGbZld~?_%Ykw zGfSFt>6oVs!TCM-eCIx2ta$(vA?noKNc&cxqP*D1IU^ zwIiqsKlrH*L0K5FxD8p^nkl(UGi4F9G^0vj2@b$zp|87fTXqh36v{y3(2yJOS7DEF;z$zTZ&$L(Jy!fUmp!&^C>$U90RhLPLvlzcS|u-$do## zEGcC4BI4OnG1qeij4xyhIVpR^ygC%t7hAnTzH`4b8L7~!c0f|qaKzAWf*RY0q&efj z(ZGsrg*KB78`ykN98wqpZxn`<3wd0d5>ZI&m5^JSnx-jf?YJmXg><1!SD{)ZC?Ywg3O0Y~t0P7XY%v4vkAja4}R?2a1S8-As%c_GsL|tnt01wv-fZI0; z3<>pIR4Jq`GY6FmQC$i3EJB91xOyL82_u8zT?8e-fhs6LI*Er~+6^GZs0J6NoS)Dh z!&$q1H=)r;WV=j3;YsVJ49=%ZCgRd`Ik7a|F==JV92wI^L%!8GbDNUxu8bIM(vBfi30 zm+eg+v^oOSQR%QwGB37urC_TUV1hBW%c+If^L4DxryBJl?JRd~WWseDBr;Fea{Iqw zhn2*U(0Pg@%32IHNcZhz73#)tD*KdO?B=xJf>0MAkim9G5EJA(Xl}`-& z2U$El1?3O$45VSgtILN7Q!kwi5ZRM`DP#@M8hU6Xd{<8bHMWl>cN_v=rq*;Jt=VTYyDFidW3|mDbD9EwE)POUqWw7P6&6W@#a-djN(a(6DUV;&?q2;1|*hQ1D&# z0Yv(G0=Py@AA^8evdI&lAkcV%s06h_^>?9l`H#WOim!f;j4S2~`9f~G0;Wzzk_tIJ z3=Yh&N9tB{;ShBcsa+6OZ0(^BGGSER4#r}uUue~6BfN64Z8=i!6o>d3v_ljw9QD8= z0+;8h=wS3kp5*6CrLIC-mowuaqzEDCcN~`05AaV_(ch&YN-d6aEB^NaJq;C*VG)k< z;jD@0t$|Yx@pHkk5gw?Ke;t!roMDE9_lCpv3HmzlyT0( z^FzqA^5TnuWWAEB_JJexy|@G=h`5rt7nDKf)IXWYEFOMRy~o@sExrW7!3c!r(@BM9 zw>zB-(9n4b9cFhrq2}{uvfgxRY7`A?g^+YF%}bktCWtSHZ;-B*HR!V~oek$ZWCuOg z+5c2ScT7q|y!1iUEv$U``6tnexpehJaBiC)n2kb|3Cy{|R@Y%gvNo7a|ro(bSX z)!Bki=*QI%6k}M3HYp#Tln*Z|AFR_((J8Ix47(f-6MBj>Y$<5h@ts}v zG-ahYDd#K%=VP#~(#_P+<=M(E5t(y6GX_~3T)rWhzX=)tCG_qvqld-5)B`0>nGJ|n z>5ro4()_0 zzi)tb=y4|hij!Q2W1uJC`_2`?`Z7Xts~2M^#VM4W4b0}q;d2>_f zp^eZ%W8vbYlrsZ*&|Vc13vNM-tk;W-chp#jFlsz8O^*Z6%j%)VOAvK1(&iNgGsn+5xrAG7CmQB7GXjd z4E>+s6T)CaBTNXvR0pMxsudU{Yb%EWe;Q?K&Bf?TT{L?^H(0LZgI5kVsM8~YjqCKt zV6!?sD(I=x9l^Ldy+$ylP6yp6$^%9x(-pN9&peW=^R2;)3%+#PWG3 z&ti9?tB-^VQ*d1bl)4fIGD!dr^3QXy3gbM_e0ijvFMnyymqe5$57)C~Q2!s5ffpbH zWdOrTS)IF)xss?}$6L4_XLS9Yx*n?QdZ1aC8|iv*u&&6?7a8}@^|<%N#=U=V+^C<5 z?0m`C`MuE2JB*#Tu4X43Tu^_j>v|?u*Rz9lMRvZ-xG&V>J{KGJ`N45lweuBY=d94q z`;49UtY+t{)U~Xx>xo!hPky_u*Nm<`LtPIWU4N4Qw7;a?N-*l+S-c&Kiruc}L|Ow7q8DQLfxlr$$quGCOX5n#6$vr#Yr6wS{&z1=t`(<(L``wxjF9ow4vy^JUxx{ z8HS!gdaPhsKvaU%F2E9fIWSbVL)kSO4{oAzEDQ1( z$ipyKjqFi1?9E`}06&kTPdQc+0`Y;3k1!zwGj#`HDhd{(Hbx6I7Vp1Vmmb|m;s)JtaDp} zMaqK^Py-CBF9s6=*x)q%v5_W{dW+^X5vhF-0-`iMNt3puNkk<`RU2s{f0K2t5&_#Z z30Ot}-=zSeHC|NhThp`^SR_qC!2UyAbs?nG9nXgVBW)H;gk9Mj#)n`ls54=gHHYz` zDQszT7$2grXl(QW>Z+*$W{A!eWOcmBJJt&`Gr`2DbNwZrSvn2J(Pl37p~SxgoU6wt zYLB1e-k0-{#Ag}o6V(GoH378ekKz{0L`u~Oz_VU$+a|9+#lY{;>qI3;od~v^U)!#U z?XP6pmTW{NNSy>WZeDcf)3xt6@jgx7?Z``1g7o+C*qRwW72`f9jVT)*i%AeWfJm3H z4!k1?wizt9EQgp|IRBD#v7|^VQ(Alwst4+Wl${-#R6a|UJ3+(%(HbvYW@ln|Y-0Nx z*=CWAs067~O=5RyVtbBkJCluQjTg0uiN#7g6FaMk_j&T}LSCX0q<6(*Q(|Z1Q4+fw z2ubYjB#>C9^$SOWX+Bn>S9V4N)2bJ!5&b_T|drgC0~4J7UX2LtwX_3?=5>JxBPk5I@V z*aVWbtO@Wj|6F~tu$)R3W?P?hG1@#MgN(a_As{3FalDDea_2M2qXN=wW*b|9N1YA3 zvR>aLI9S53M9u7iwszJTzAZbvFGO2O`BGNBJ(Iu7Io z6XfhT6RJLeTeD4pV{^UOWO7y%Yo}u{*!N#V?koleA==o=jYxe-9V~S3S`K!}41Fu` z5h48m=#e4)H0V(w{SN4kkX{LTjgTJlVat(ghV%^3YlSqIIy*Dr!#o6ZX2XXnA9CTt z1$@Yd57+UbHHt$4ZQ;Y+3>gwWJj92g;lpcuD1;B0kMJ-|9##|w=z!1<{xFw&@Y&u3 zyqVsLvmd%OgMSW$*jJ3f|9be}5dWM-ZH@n3@Q?D~9EktJ@gLwH10@Ijk%Jb^xe)(X z;lB&>-wRMsc)uvTFA49LhWE?E`xW8+Ds$(tp{%~9`Qh4-2e5UCKVs*}cYxyTXuH_`s@A9~0aT>%W8(TzweqFnwPz7i5=P>4Y~;#rr8L zbMI)dx|Qz1U=E=AS$&3psiLP|g#v8V{t!}1Q|Z>=8z6Zc%=jAjbgR@zE~94j;o!l7 zLz6Dnh}v#VjourG6Z{B#14JcAodbK+&u|ITk#sJBntwAL4FhYtH%WPuQsz+#Q3+D# zLO^X!6VqE{I)Y3@B}if5-Cf(GiRo=JX)+O&Aay?N`8h7xL~jX}c#?QCeLA=995$S$ zjwc-$FMoslek7#A7tVH^IWM8fAmyJ!w~A;(?Kgs;OwKQeLEJEUKs8Rj)%Yjt|U- z=F-%)D6Ix0=X<(}yPp@~t(mk&Uz5!YDikOzwSAhB@II5UfJq=KLF!^A;g==}p`R1Z z0MziW$>iF;O@cn4pra{>s067ckWt&OiRnW!9YZFf5~NVzx@(vu*GC;6k?F@|A}T@Z zQkrxbO=7-xOe%1k>HLR24QCF)v51j%E5}9-)e8aSdaehbulqsgg8>Y*TGN%2$TE!m z+Hrtce|j-gqIeQ8pp^@!@wzHaEVxEN6zXcQ zimn0ba`hla~C*Q8n@5iEO51H1o50SZnH)3B(K29owP ztfbzb7`?i|Drq=H)asuw4IElDl|H?QVfA(;A?KFR{T4>m*XC(iv^LM!h8|Jjz{Joa zD;!W5dVqtlP#)G64&W2lf`mZ6M(bxS(1Cf%Y2iHO&E|Q^5s7dK^kW#8(7e`{Krw&k zbGY0|QWi92V?UZROq6xEf&Hl)HXIn)AOvgxhDm_2O9-*cbEf0&!mjpga60V5N!RLI zu*+4PS(q+XNUyIIoc;>$3|6(%;8rZ|FJ()ju87)`$QG{SvDd-arckOK4z*Z-0FydH zqLt^=eV=l^2fifu+|pDkaE1M>xl_mC!Hm;yNAYiLub#O-`mAt&EjR!*e4$ZL-b2Q{ z(yrZH`w?~4=HVKx(YTm+1ZP7308t6ji}46koUKC}kAygd;S>9u4xBx{4q++SwhV=% z=`;dPe7ug@r_V<8;BvHo7+d@lv^hmR_-q~AfR=If2B?q>&Owx7D)!zX{TGcvLhJXQ9ow%6GP6IP4G33~T+{to8l8N{?IaG7oYH zy|Z0k1m|G{vcg-;diD!EsjFFaE(R6(lWQ6%t4;=T6RH(vhoTZ#e(>}L@O93QAeBdW z-d}Jl@&ePy4#v~Jgfvs((iz3$r^e&yE`I^09xc+B4+SS)QINSeQ;k zWh{6sq0K$*;PLe(pz~f@GSk#|(-BYj=W=0KfKHZnaPXEf=LXpnhx>aOXWRx3`H=Uf z4aqU@)irPdChs%@4$~=Ej7Y}E31?lvdHVRQ(8uqC}SEa4wDi+8j)YG)EKkTiGpNT2SiIUtSoW@A&H4?{)js$s_jHIKd> z3*MpBw@%~Or|bY?eTT0GHr!4??On*dMwvX-+~*&zDFB z-;ILf&O;ZRwKj0PeNo0n)sCkNq>p+5a%5W*-n#vGX;s@#g`ni*6 zL9%)>Z>j1jxUo#-WKFpUJKBJYZ220+{0$~AhY1L?rL<7%kP`EKQxQ`XK(`o2Z&0Lx&ci3 zMqr`1gxUsN$zHClrjz=0Jk%C9$vBuYeoGldB}m;^m!W0NpuC`jwn{6Yv$>EX9lA$XHD2CnUk%Yi&B(Js9V94_tVk=wz`>04xa*43I+Uby_e~&0KQIhwa zOGO{sioU!Ok?%PIi#=$$qqAb09Td%bJcrI)3u##GboBN0IwBtJ6Qw3pJ`1J0%UneW(~dDaixNv`kghNzvQ|28B5GZGFk%_|+{ z>6?-+>4#D6B#~1%gi3_K?ckqY1mG%0O_cE_6)F^K71z_{9<`UA%r{0;j|`UEyAqYj ziD>mBo0Ruw!ku;wrrB>uJD_I5ba}+*7c(QY{?zh{sS{ZntUIv;>W%l?e2Wh=?!&HC5`%P)@ z0n6BU`}$fC26u`3(ACPLTgta3Tm2N~V@)<^oq6CLM>%S1sOn`m>WXWm*s1+d-%K4g zC>{c=<65DM-_h}ubZ>P=nrWq+)zkq7^Wa<%*a$bxT4 z@t_jc)M%AZ3r*6)^^#JTuXcrmu=Zma7=f@UN(o{S`YM`|6%U8*tCiXVO=aa z7eVRzupy!U2!~?lY9Vg9p2Go$TQlj#rhIEgvMYSiV-oF6r_^4ss+dd;lMirYabsOF zL%FtOa416cJrF9dr)Mf3BXdImT(3#$KOrovbcNio?*)54lZ62IRtVW zgG!A5+8hkqoC!=zqXfw|Qr2`>jctLP7w%v-HkD|L-!~3dGsd~IKE~nK7o;nTzPunu zIeghdXifHFWz5NpK&q?gX?w@u$#9!@Yg48#ETl5hsY(~vioHOjITQRHF`{;Hw}iSE zAigS*Fm_@B$3U(d(b1UNVw|x$3%W}7<0evYA4G6>n)Sl;Q5}Xx-p!8e2wvXz2At|p*A!;w}(6luZd@zn<&Y65Ps``-`MbM1b$3+0?vH0%hN!{ zwTEvA)!z$hYje_fp?l)H@+|lpGmaU<$V5bPEnBL5gQDxH8~LFKxHKEw4_{)G;j`l6 z?_bjt7J0M!LR|6*eF1Lb0MpL;`XT@^-Ac5+-tCOu&iKQ{8I4W$G4$GQeF@PypxG!> z!6aQQLpVb(gDx@Hv;!-=Kf}P_0p|GcFhoZk$;lXp#+tbv3fo*b1}lMw^OjQcc*7V+ z<1S+y%*oEe;7r!lg+N?jXGfS22K#A*31P5vB1{NiT=)Av?wi2Ji3R9G{JIyk!I9~LIJgt-a*5QJl}G&vhMpX}koX%>4lb8$6hKA4|ZddRKf^xN=!G-x!t2CeKj5&#w^b-Y4 z86E|LnGE7|)$5!Zgk$T3!xf*&&^fZc|JeF@w69XGjI7fmD(lqg0jh!!<4f*jJ5CQ| zpiVvpP1uR8K8`!yU3-GJWc5kjqB&jK*%kb~;18CO+tp9umMiCbc;d*k@cFbX0xf6r zfsxirMu-jEns{V(73QCy(7klHMB@|TTiAfuOY?&Q3+DFK^Whd z>{eBTMswZ^omuY~KNr!LVB6A}B0fYjSC@7QrTv4_h}L+~uj4WJCocHHSkK1HA78(L zM|>UY0kq!wA~Z?rsbS%M7v?>0A`m=GnP1)`Cto0Q^;>w{=+BO*mtBBTH zTAj6F5dU0#F;}M~Rr)}z{DcSl97w zBzjWSU@4!mH}O8~<=zByv1{!ij{1NA!uni&KX?;z-GlYRYzBur-(mijvz5tcIV$Vn>%*Sr@^-Yw)CLy6a|5%q@)6?Z&@!1eCFT48ftw@# zx6CEKZP3lRD0PL6WIH}rhgQm*zcwqzp1J`YbbWr#G4|B|-}+XY)})L&CK00w(Wp13 z`%~(AsKtIXnq>jN!8D(qln z;^@sJ3i?q`<`39O;(F)5#LbE7$GH3MS#ztOkO)4-wfY$@E_;xPun9c~hWj0CMCwbQ zpMxRz0+*~e8XS)P67;xw$MTrpPZ9dxynKZV%M;V~57*34w?bmVX?JZ&Qw{n#ObsqY z_6!h}Aa%E?3b5am_d2J;{@`l}W$*G|+|j#y!&^TeR+aDdGt8j-)U{%Xc?IBLB`%R| ze>0tJxy!9x(qz&FG|5T8B%%_e(5-hTbPGU4<~(8s+Bp28rGUHvv9wgxU_7EvG)xcB`WT%JynoDNbxk5@Sgi5O|VnT74H zQpSAbaVZuyGv)<)kRyCt

?)OXD;)-b_O(O#DTNKgz`CL63TTzY*Ubkr^SQ2As?u z2~p;Fb}>y+=_XNEK~#qk#V-NYMP(YIG7V9gk(rU9)XXSIHQz5RW+^o*Qp0y_QBG<} zH=G`1kZ>#*r{IKfT_8Lm(AKb-?8>_Gj^m}s85wU1ffyKXUKU|O0Au;z4tM^ATV|{7 zOgzd0G6(swaJ3fYgL)7~z!$-r7y)05ThvZvo4j241N(Ry=?)`1yPLQx=gX+@ydPfVxjdjt6fLOps6v4RXj zbXKxPY@F(LwvN;}0On1tZQUS`hbpBR-}BtTRZuY?iP_pUyX|Ouv+4%GFz}FQ!cqMd zV+E}gaIGXAeN#U{lm`r{PzgCt;hguotb_ez3Z9kJB=i%wdrAFQ-mojVjQ5m&hBw^? zk<#vWOq%GdL>=A=@hinIu$Y8VX*P@P&mmyR4Qr`vM-X*6tA+xR*<3zR*%4@39&`b4 z!cD82VZ9#42VKOq)mW;3h^W|&*b_!#=8rieb|XxMTnrguh31LU^iq5YV;JUDU;#M- zBv(g3nhNd9M**?f&<^Rvbf$ovhxA!<^>92w@)6*juw*%VhhfPTr7@V-n)5B@TY@Je z*u=~jKj{+1WP2`Tgsdv_DQ65zd|7WP@Uc7^mM`Noc~8N0AV)OFkszNmsIjrt*w|_` zwPgxzr9xY1BX}PNue_tpZ+MP&Fhnd4%@l^}5l~(jqDSJ!_N0)Bl9g4Xfc5RoQ?!z@ z?1~bG1X0SEEtTKHT5~|JSSS=|ZNV5b%osDw7=v$?7E6UE%{~Pds1Jm%0jM( z{KHzLD3~*Ql}1V6E*U=b8ZI_3#cGjRZ?5l|nKUI$no{^!<5_cmI428nM=<|?WxUk# zZTXLVQPvZa|9($}*7zp>)2rn_vjg9Y&6M#iMU(%T5e;%ANR$6jn{LbtOIpq=H9s|Pgb1^3b!jtqIh;;TXL8G<^Y2b%L@e%8(>yi&;#*A=KanojigKvdq3fYEb z1y4FO<0H>O#yZ=;M~MZfxmX)9Cz_k`!_#ZSmT?WgCh)aDoc%xciCmcJd>Likps7pI+fV% zq<&874pLW>x|7uJNZkc0((%`NKmG@xs7QD7ma6`dx3*;U9=WHgf0DabeHeGf?U*#x z*%0eH+an!rd-Yxhw^#4u?YR4KT`?S^mJYX6eSlE8`XFzm>OfmZKPk)YpQqmxZb6xxyu}4!t2t>2P^3wg(l` z!Gf-y02#h4>IsjYh-YLk7r4^BJK&m;lTwwxz&#ng0YViv5HKWA$S$5fV0W&NUO+fV zfP3XJuvXs21(lMs2E8#*B=j#Z)a|DieZ2`FUvJ82*f^j|eOXh~*TH&Y6+ZXbPahlW zaNOZiaR4FI!p#sh#0sgRzZ|*X6w_WAEoo;c%B zol<8q&(qgNB)6a0(aXt?JNg{R40^#_Wxg#xbj8Y*D@M8fd?;oy=;%YxXe=r@(=p`b zC}au%<5@X#fzJS61J%MZh0Cw2rBrsGLW#LyIU|v3jl^8D#OV+aNhHe@E>JYP$hfW9 zO&R^Gx;qUXIy0l5Mu3z+%x4}1-79Ofl6q<3SBz4(V45$d1bvOuB3U^l2m_>ivEd16 z^)RCwXS%*A?}dyh@L>_87n&S7L?WASwuYyemuJ7h2hC+&cg7}27C3PJ$iX_igCUeT zhysj%JK=vV;78z}x&8#|M{&}+^1K7;T*7$StW@jYK(*c+=9@L^-qDC{NIjK_!XPeu zmZfSv4PaQOOpZzYl}e`m!h}v_1mpHl#bs16T~x3(^Ai@Ah>=+IHUz_IIkQ!kJe)Qf;lwUZ{&yH zcnjCkTI9UtPE5;!eX z>K*6mgq$Z#h)1O2^bI3tNpC^(YFpx}zl#g}`eC@{^aWbd@T5T>D{001Dgs=+6?o-q zQcWW9W)u1@SuA8dDq(?*yC7lnZw^CMMnFh&hrpc#?A@rxnE464wXvc8JkvaPU@dEB z@Xdm6mYoE{8zNfwi{`q8R&B&`y!7|9@nXhdSkQww&Pns`Z zh94?3XEIuyO}B{F;gb%BcRRCQ&wm{9uz0q@dlJHe85ox6KX3&!Duaf17aQ;04PNY@ zCe^kkO&C*eM`~g)26hZEAs8R0olT*4SC#?k9o6&DnN<%D!TcKo<9o1@COhk{>GQha zPG7wM9_j7qOH(g0&M!dEhMeFf6c?`jt;2PSrm|u(317B;4$-S)xX+u=zXn~|0aEq$ zFs`~b(SC-Ru_&7@e84t(4u@m-ZY>d-niEsYdACvVEJ@e?lt8 zHO^_2oo!jML0P{24t13)Aza-HkLtZ>L~UF{?{DMuVzw|?Z+fuabdz4n5`ji9AF20c>iyGT zy`FvvXt<)l`EQa-mXZtE+IZT8MI2|e(}I@d2}EsgWW^|x75J%vQsIz=vO&EZmPS}@$7+0E8{H4l&2HRCOc5xm( z$d0_xG{9=h*dn6;1Uw3b!Rd*hi>=(fQrZZn$pW11*T zB=-M+X7jPoilONKcq$I5bx{|mfTd-a&6szd8fjK9qt#Nc;4(l);qHGGk3!YD8M#Lc zE&ZptmV_=CS{ORm&Y}ETR91-#7+EA37s%uK4S_07AeWp5`Lxg^kdbS=7=fg)%tfD? z%WJSZnrG&nZkWBhw3qvU1G^jg0C)s%cOHmaK8>#hp;N@mYbcNz`Dq@^WKA2HlJf;~ z7&oC00(U!3XB~|DRhUC{L~ZGwu4xqekPc}ST208H_pEUDwxUrn;5W zVG#E3)SC!LUy|o{wwyhgJ~aluS#3vyT|yv$l!YmEA6grHsp@%j zSt3kQyPyHsFa^$%gByl9G_U=fs8LFE_@G9rV*8T7QEF&>|_MCBD%5YlJfIO*ziVx5W2mKKDNjv!%%~agA>E05i<3 zJcvB>YA=wbfY|tG))%lTI2@J^5S1YHAeiNMT&fgiL_!<^+uy@<_cfBs5LL*yu}2 zVgXPOAwKw7=68jbeVDcnrD!Lr6H%AFeqPP@rDXb7`A=P(u^MBCk2rP^aV$kLmcwf; zjHp&XQ~h1tobz+&*jLK93_Yd1<+0gSS>x-d2;;qY#KF=QPah^w>M@9syz|6*Pt&#H zr1szq;l$W=Geqyu7`oJdZceSqL#Ad84x^FI?j^qYHr{GqAIrOGBPsM7&X}q9Ac=W~ zao@T;R7?Mi#q)mj&-T4v>)$>?7xqJ{lA3#fZxJW?PhwcCw zCL2~vMSh7M4V2*A0akM(hGrdu-LmVHKa0f=Ae*V;eE_Z>PKj6MqvT9TRnmcUzd?VY^3=(Fvw@Z zf+_`Jffqe@4J2;I}l-bOuNt|-*vj2({6D% zJH|R`8ao{L8W-!`zo9l;*%!4#PA5hOY`8k%=jA|PXV++FI*R?NP+7T>jOcTCdTa># z-`?H8n63={FTaSksF7OM>qcrTC4|fPpopy}tRgD>*p#OpML`Ku`Sj|kG<6THnd|KC zOg_t`gJ*6}g6xANuYyld_V^ASYCd+L#i0EWny7S9;ZI;s{RGOVET*Rc!6f-HD6U~F zSg)l%Yw76-93Uz|3X|UM{PGbHH_m+ezv=B}^#lUB)6&9T4>RQ*=Q`f$aJ$gj@%|Xm z3mor7&}{2^!Fe$3PN>7+K%5x=4vnNU;dR;`o!!Lu75QGaUpa^jYvRa>a$z9bI@90z zvY&Ve^Y1exi+k`J!2>CD8=o_odoaqGOe99Q^+cwbNEx9Jl_2#bnD9Nv8b*|LzD%8u zs00b0jC!gYLXp?cs~M4Sd5Ck}FQ{1hE6S9`SU>M3(uOyX5t*_7*RIs5%8^K&>0iuR zj6oOHQLc=1;2YxTft*8;R*X^afLoA%DOi|Wz4r4An3R{alW&j8%TS&L+*j~$nWYQJl_+=X{o_*A)jj045!l(W4@QiO-E8_KJLco!4LYuQeE zmA{Hd)*uu6tICIX#+&ZbK&LDDZ|Fn`oG211>oyR;XsSn*f-_LG)tR`+PeG0}KrxkO zD;z8a-nyJSK=RvJtC#lnE_|T{=as&XOZYb)KIOlMXP#?s#<6WBxTy~&guEMvIO_(^ z<9v*k2V>L5*>jE&ZbvGq3uA-?i~MFd8^}#4mE#l77-Ics908n`2Ee_m9Yf{e7~hPl zr@{+nv>v{=wNo7k$Mf^+0LI5}qNHP|=`G$;)wgkL%#mo%T$Z1H23IaaJlW1P-;8us z8!VAL_tY>N)mYat=ZAhMaj5}cG+5<*eboH3m@Uj$x1W0TdPp5$ehw;Zjb(aN#ydVD zUfO`8-F^yeh#S(P&W51qU?9grY;O)(h%v*#& z1Yqw+m=Fg0Ai{(&*oP4&guy`@A5C;1s!h`_EGXUA)a*piNC`<^$ z|5=0yVX)65ObCO05n)0Y?8^uf!eIZ7Fd+=~RfGv)u>VAu5Wuo1h^R+T;`}qt+V+1P zg$rTg{5QgcFxWQ{CWOIOM3@i;TNz1m|ZcW^c9)E#iFTN#2=8wM3pc92C4+cYzlNI3_AK7w^uequ?^RLe4p%A+$2 zJ7|ubv7cc^E}r=jiIE5nn z&qaTZJoIHur)h&)6G>QYoyJ=c&14gtV`Q7&qHBC90N><@elDrf9N|zzz&^f=sj41| z6IMw$0;{G;*Alo^eUj<`=#JX`r0lmK*=QTZCeyEc%V#Ra)r~}lB6^ZG6`}8w&VE#Y zKZ}mAtC~v5vh=jtF;lD3)M{zk7JX+*?a6|IQxsXGxC`Ge>laJ==?nR)kF;yVx(0`F z=tX{YAO-X%$$u^?DEnYv&c2y+tP)(yfibGphahTj9&0sG2~tm^Lf7!2t2)!6WICTr zL?uW)!&)DWeb0fSBc-euT`5LBmQHL~RcmdMco-%AoDzvjka`vp@rLk@2r>&FwYH`h za~VU1%0wl|41wAF@Jt970D}u4vP$i4Kd(`p>cH93pTeA@Xk)W`!_n)7h=y-29fVBP z7lBrPgD{LUbBLpspxX})K+*c@8A0dZl z-S&4{k1$*NE`I6v$P=TnvT}|=MX!k6%;0bvI75=-e79ffNk0L7GYUj6nqF)+2TNc} zl`(MOMjWEnf=&2-9{u<;T(G;$s8ZRcFez?73t%tH{~#aT38}f7i!i)7uP=dI`H79R zz7(XdE+fF9D$a95tgoJN%HwFw{JygZZZ*NJCOF_{$awU&E|Z^Q z(X)XThTvEae;%qZq&U>nzd{-(bAQcrgiAGl;7{S1iyN4}*ZJ}2;9P~QFJpWrbCRvm?NJW#@8FK{ zOr4+jnt0~ibv7QF^>Qug4B&HtN9#$W)OAQD=cujn{el4Xrj(VkI5vlI@Gp@_dD6cD zUui1)S@V27p7jm5dan{2e2{9LmDnO#r;aFVeXtG6y*S2K9fh z+Pk~#%4i^f+1fA&cJXy?3^inNsahbAs1D^#&8L!Rj58BD=1aRKf&Jt(6>=E0_cx)^ z(YgI1T=*m@sK(^M2jP(+(HOyVP|I0X3&EFMhjCQ}O0gFZ;1*ns+NKUb(}C5Ie{*%@ z7C1+}0H9WcsHjt1K;GZcgG41r{hdthO-x6V=~glkl^}(6CGf8RN~qi9hsWQgcaEv&2foHB{uZ5{=&Y5RRPX{`v&6mS2Hs6bno^Okd0vVo>G8$NdZ&ySLy@dSol43FS!Es}6DU6;uE4O;0Qi zW$Tp;^^VUNBWIlPka{f38k=M6lZnWLd^tecV($L2;7NNNmeIaM2nK(k7{1SWH?>Fg zoA1G}30g?Gqfyfva{mavCgBN**erWrSA7Z}^<@#?RiA-0Uk1mV^H(VPoWHAUNg!O# z{ruWIG=8(X6S;Couxat8X%iq0AdhctT=@Yhb1}GkU_r z_=;{Wbs?W9yZJ>a6V8|Q@nPqELtQdqk`S}K9IZ`^sE!dMVVe+#g!_P9Y>)1Nr}$|) z!-C)N`WX_suzr8pRTsgEFvby#VaD=iM)9*c01<0L3p}z8l|dIDd6(yn%(Fg4N)GqI zBwU}i%JWacXReK{3qSQs`KKtXoqdTG8;j!XD~;GXCT->EMkc`jfN`wwjjJ;f<9Oed zch`<<$W<#vta=rdvX`Ylj1u9mv9d;WzX#z}#2v91E0#EKkIH3?OR3Kw=1QVoIa1mT zs$cOW8RhJNzT^z-0h=C0-N+=PT+z?iMZbx+gu2Bz0{&Zjt=+zJdV+5^-wtQ}_? z*oejOLJPiA(Jv75RFW>i){f`l}F_g(Nl$Bo60wBVOn@aHXfwk2Nv zW)}Pi3x1gef6Rhs-FUrQSn&B4{B{feg$19Oh}V071^=l9zukg=X2H9X@p|{P;6JzE zk6G~lTJVV}i{4f7ozYaji;}2b#|3TV`cg`9j*II>IBfJFo2FM0hH@-e@DLE3NP5j+ z*rSnG)1&7u#A{dokU)MjwTgPezi@x1-E2hVfXGi=n9dM3e1sV44P0FOMybq5jo7yc znXe)UoRY7-m?|EwhmpIzhaFGn1X;UG%HpM&6-4PV?PIHqcfc9igI&d`sI-!5(0m== z7?CjVqfUA5oS@NpqKz0n zrC0~?Y2=MyNUq1PL)ia$hw5ELvrL;NK)8PBIfsDvBDbSvNYhaB}6%LFOzTP6pO@#dr%`bN)7F>zqg*O7#C$PkvI{YpC zT{#aa3BR6o*}<{vL#C-gLU(GV{&#K%2KXtYSPs6qWR;|j0UISp=>e@QlI5e%GjG4o6 z{#uZMb+1B7eqaN|fQw>y55xS5h-qB-aR{ah1#;jNV%*>Umfbynst}BfydEC?{k_`m@fKumK}u zJ;kgCcm!C#gJK*=LSj;je-0lOJ+NzuT5lDTah)CM|6q)rybT{B_132Ca_fs4vQXlte|rT>Lj zYBKfnQD1X~iavs!uOYOi@`z*B`uSz!bZ7g9zfuRHaS2{TG8Q61%>NGb zdmDnrP`}^?XUbvTggys%G!;x)-o>8AEfBT(>ZSNl)pEsFgzp0J%=kI+eq_(t z?8lVK&|Ms~s5B{4*V6J0ZOq6E!GFW~&=fcZuLEH)k*tiwhjvED2kfxQla!v(FQ?31 zy@b?ZQK#}Ao%dD4d05c>!q9V@eUg-4xYp;=Gx!?WjWiZKk-a;B zK9BtUEM0mzjKC~T<-nHngV&Ka`E*LZk2}5r|1NJ>>}UBj!;Au=<69j9+=ltGegiCx zzT21IRXCsW^~(_57&vTzfdjiXQyp0I-Ab#EhGGL5QYBJ6|OosPL?6xxTu7;Gjy8U@Lj zhSh*@L2fAuT>T5ap8f||@ZDY+BMyEoD!+VF#Kd~~WUz!U)tZOU93y^xFin}>P&a|k zlN!$x`8>MuyaAs%(h1Gm7|+vp!E>+zg@GSodL8;I6W}s=O`@1W>kl9Br)iJ-4hoz4 zXTu)s+pX|cvJee!OiKCXKZeL;5pNmM2}OUHC-0FK{ON3a@iYZ6`a*6~IOSf}5VK&} z@DD$TfZ?Qg2p>Vn=y%YfFU6)*3HMC!1_UfD=VebO{HVQt6IgrpC4M}DXK4Ay*8K$h zpM?K$Q1%3}k{JK5!86wO>U$)t`&$9OfaR*u<^|s%{m5myA-8-C81RJy=89wlb~Pz$ z#i)$DRi4ArG6t)vEvgUnHU8FI(-}kET(|DV^Mz7&_mied>Th`NAdfIl02%k=dkk!L zP5a3T#(6x44Hq#!3MdX)h$d6-QaF<8IKK$PlAhX@fegd^2u%tPo$2wosO>`gXwUYD z!@sa6F)Mo0Py(W1Np*8n%=&~zy@d|1I+akWikId2J%ezrV}dYVulFY%lcqQq!$B9r zCiAr;tfFVL@TxQ7!@FOHqz7>aJi$mGSE2-?<=Hx>?4i>NYlWuwj?h}3!x4-A>w-Et* zSnuG5j}(A<7nJ7lz4Xw_T=#g<%?>8us)E1g;+BGH6s7)XQQF{v<#VUD9iqpdpgCx?P@% z!?900Tz<|7srUq`=$lyoT2kAJ5-M4EqTKCgL6yO|izZ|TBno#73U&ll2+u&f_$t`G zSDEI(#i{#!gBIC7bF9Z?mB$xEdKgKvaVGDoM9EIy@oS_Zx|}MN_oh>d}bSc#&v0XyJjm9fKwAyfU|N z9)Ob=IfaZm(?p_y5RDx_`d1Al_X7X{YA2k5SZAEA_X6~3& zc0NGp68NNKss?{l;xt;=8u-v(OeWHL5*j;xuY)-u-N|%xC;C(5TJN4PXLLSu8;e<-Kl(RD2OXy9Yf7;Wo7C>DLu7kt8(f_?oZsBu94jr)W*%$o_`iV_;zupEWI(vncK;6gOVj@kSAjWhNs zN6H6%!TtA3q>X;UcDCjH@8fM1ufyf5c{eRHm(Vc++i@qro3cVNv1V_N63M&0M{ zxarBLe%N1<#(+SghCaJ)@E&!8iAsXT8ZYq**}55piP|HfAOBB`+j_6^z4=Y@B2FIID zmdF98x{^<(OJMI9x{RhW5*K`)z+%+?$hF$GP37ePmY4ssgcFq@^)D3eWUvPJL%C+c zV`VrKRS5EEh4?lrmq325KX%jt(>XyxVh78hE+pZ}M2iDU-RDvW83WFjTGgfRF=k-%w zm~S_`@-u(6?>C7#h+?D(BPv0XCfbOz63h*rRf_J+557afgC5=L5JUze*A@8M+Epyu zY7D#|o;Mx~&`hQH`m8zo!5{kLkCrbrU(+;u{oyMmjW@!f;V=lt*7FaI4wgHt2W<}{ zWxqfOv9W)L2onMr>l$ak{4@4I+&m*r^OjOaQEDi2$0)uKhyy)4MVJr7x%}rD75kq8u+e} zP9cmPvm;ChVC3(ZG}(C+{Q>5Ycpq+n($#UeCiG~iGlR{9I)Uo2w0lxh_?ifJ^^bw{ z;lLffOr#coR<8ioE06^Iq8wmPuLO-x*}3{y1h-;X=cMDoocs>Qsu096WKFp$=KdOp0CMq-)kTbgjy|EUCbLNeMib*{ zCx;a$0`9$z+!6+441$b?2;m02?gZS+#WcJh$2iB-y!3A|`Z>i1!P z(>F&dFQD-%q-(pu=~1_TI)nvI63quu2~wZ1KA@Yys(|?fXK(->7BWG{gFQUC`TN+H zY@?i7OHwGAggiPK(eN!)6l526?}-0h;VhohlmQB!S?{*T9fyMowYhvhKp)M62PoIs zUJk-ciY`Nn%;#-+G(=t%Sc>By!n@QPAu*%cSVi-+kaeGRqd2MPoCg}~66mv-NoL6s zwTYR8-t{VC^TG1}XnPYdxr*xV|K@g2cTdkGWRftG1xVOpF@b;}m09c zHJNtwOCN;pfc=J8S+W?%<}s}Os?Dem%KoJvoC^s|qgWHE_3?yiQX=|%Svi-&g|N`P znIEQQ7R>$Lget!B+=#>}7ZHzDnY0-}!mch&c zOnVAyQ=cY3ei^$p4n3`450f;iwQOQG9+w(SxRyXW07a{@<3CF((^9C8LeYjQCe^I% z90L8%NM4H{fO(X*y8)>9qZ2_XE!@%oIo(1Msrj9TF@JW$PFodH^W8j6aq_mh5cfT# zm*4x56V5LGFo1Z?0OI1(`&Bgy*MNxsj(nGZLgi7@b@?8h$* z#S^CGUJuMcy4m~0%Exrw4uth?_N|u&Eq@Bj#$dU#|LJXd0a{GwTeY&D-X8tU@aHxk zg~btL=8jR5BF*i6Yd;}3`L@^z#*BnYy8eeA~73%nO{cL*w1C@X)i8g*I6XHHO$87MGQW1}0Hsf{g_eK>o zA>)wWlydS*<4N^IHWHt6epENYvrwEkF10*Tg*LPGiAa4F#B5d7T5Elo`b+i>OyQV5 zzY|uY!m^M2J1BKd2-MS)_tHuFIUH~A5|`cO5k<42tq+gvE(voV>%8iI1g-r(zXE?N zay=CY zK&2S4U!Q5#Nwrj&x%{xODhSG-`aZ8rcqK>8RrHq)CCr}Y%vYaNYM;!IkS$GK zQ!D6)=Mh0IDEt*vzZL6|0&}gCY$Q>>o^RZ;noa}=(tclo+TTQNK-2`apzs>hY@s7t z?y~KDKZ-n>lT!V~cG6!MDMpmZ8d0V~ApDJJ?W92a@1i|Tv<0=G@OO|9fOzWHJr=l` z-~I_q#=g$I7TPD=#-x$S0|Ub8kix8FhCZ>`RJT@>8}p6T_3dh{VL|b*z+omoty%n} z>2c5OnpDg&gotcJx(qd*P;puloETA&fuHwyO!X?PDblZ#3*EZ5mON|o(^E;-;Zsfi zK}a$ir`J>FEN_!%?ou=eGt9zUx&WnU@9G>HFJ(IC0i_TCFG2}F1N~H2v8P3%*N|56P_noyH~av-Vg$G>z5u5Z?`l3 zn=u&kevOdBastybzz#J0+r7xOYI%GdKBm-Nn9WUy!0PfHe5~$shy|xx+|UJYil@05 zKlC!uIL-zPt2TsjI7u(O6Hl7Q*xng^0@}QjIL~6lts%Z-cD_F8e4uXa{VS5i=7v>D zwoow3Bvq=RfTXG=&ed*-FIm9PGL~i0__#Z4g=bQ{d{q^#ZQhK=!*FLI7@Iv<6L9 zTWUVzYd(qB_6$c(R4_87{a>2S^=nax;D4B6KHe z>c%(fYoQL5!b38(K}l5ax21wl)5urF?i_oPd{JF?1ef=Bt$mfOeQ|648qIeD_BOVg zhoz`VmqesHuZBqP>!RTWxei_?LKTAR%a~q9TA5}=NIRQR^M`0tob;}2>!*7nw7~;j zZe8}4!&9O=BY(tGay0v=%0QzpcTa7snY*Vow#(hq8++&O=4{M7O35yk8<&sTJ}o(V zT4}hQl@?Kp^Ed;IvvT)J;_u}dHan3LlZk3tXE?{Ej;Xm@nwI(j4KL4-PIGsFs)Kv* zr4H`NC+sEn^2*+Pn)~pR)Qpnq-t@*rurSD(qTw^?+gDh_2&nR=uWQLE`)_kNtewHk z;jl9V<9yaI-(+8sQ+(Bhi}<4V#6E66psmvhXOWCrrn#OCNO9|62BdVfz6Z9l^-h>g z{c4FW7clm;&%%)nqH_po?hm;UK`p2ny2)PaAPsKhdQjuqfnYQbQmW!A9tcy3m(^qG z7uIB?|0cX)UpR*dvM)ST1je$8Y2hKjn;U@CTdTGX6H=Fvt5t^;1xv>Ds0vNAyY<$4 z0d$!;MlClsTwe?+v|h3BxLjLanJeJIFc|7E-ySJsaeZa+5M@zN3ks;M=Csc)AZ;L| zLxm)$1?d#PoG@Opkm$GzcYOPtLX^3==mfQ(ZWrC*$`nj(D5ge>t|PN*L_3PUh0MYP zC3G^Q0hh_2TS#F;rEr*-64Zh!noM$XHxAPXWy)UfVeWu@5UEYZFRhN%| zAGURl6kC+&+r`#g4zj&i(x zyILpkjl-&NXt$p=HzSrR)QP}rab8(ARr<=SrUlAv>m-XPE-0aQDtHMw46`(FGcB6a zKCd8ww@U(ts{{nKps=b~kE_GR->|VaY}^eSZ^Pm&^e}*Q%DNP7Oa8v=`8yJF%HL6Z z$=}iX#I0la#9=`BSryzo1IGey9>)&@b#+*A(s8}V=FgyF0;R5?l%N)e#AHYe@bWI7 z6^E3(j%ZAHR^>Jy38;>o0@u`$_v_QuYDh?4R#ceHB_-9vQPs_8o$5&3;X08VH%|~! zKLTpbAbkXIM5&GGHYFvtJb%p-l?l@Sc-%g}AnT36Xr4sah@ch}1|)0gW6>%`-xI%E zr2IC;;jr~-%PU)o!IPEtR3hjZZng!(HIyqeLKYpK@O&w{mru8~hv{s4tJ>SK9dkBx zZhfAy&u;3tm56rFZHz(7ZFm-4iO*b+fPK4Kr}52myVd`7 zZmkTOr@-3(gDi*XhTcmFek{Ub%IKK3%P0$9 zVFOMARzq{bT_l&ct6xFqhtOdx+Xgh<5!xbdDQSXlm1xSKdj?2}S@Ez1_a}=8x9#IZ zBiLZo14a#KXF{lK16nn2;_nhK>42v2QgwM{Tfr8KzcnP9iwdIIRH8YRpb;-7yUrE&E+Hg8JaGBbZZbrCGj?4xe+S-S+%=_!2V5yPRhT%p9p4G1-oOq_jPV{jg!e&}YMe9&XbZd1(6n=b41GM8Vg? ztTo-n_kR?BKsLTxz_Q0-PpNQbyc`x-h~{N(`%B+paj^ZhplmEYfQ0pzCfQPwmnz9- zTh7ZYb+3{1V90XeIbBK^)H?4^h(JzqP9Ow(%H;&KczQ9dLx2bP+%50r+sAsX@4P|EhIrL zD3J1;K%#S!FOit%yF!!s9m%;${~ZiP1!kufm}P_)vwK6g*Q3@-#j`VE6Cb#}{Q9Fi zz<)t`UonGe%6_C=RXhcR4VAp7!F)%>QZ*RoY0MXgg}_S51sIsr!dzokSbk!4ef)uy z^_=-y`*;iwnUjZTQ0pIG2r|0dFrIxs0I2?@2UCGYM&GO1_V)BE;3v1I+0N7oC^8{E&-OJU5?&UzDG|wk! zL{JL~>#BPp$?RT<3ARV_Q}WT7MWGoeaWG?yP`w8322Gn16>;*i7>lDe;%zpLX5;=D z>7b|E&mX1e=j9PYtRJc%Jbu;B&tiLb9 zH@=%wGX$YAwDPoVLL*bFCKrR?h1+dIMYjzVRtL(-B?Qi{CfgG^&zI{hUvzmKL5S2b zA5+dst?NtzlAHE1?}dq9=KPnej%3p`yG7LR0bx~8H?suKXQ_Dry@M+;d)#{H7&_R_ zp6L=l@>FeJ3U_Cu15L@KW4ACRx`jy(?7l*y@jl6tkXAHJ!mI0~4#4jc$?jY+omz+{ z&5zb*tAV|bdf{#M&KQx67Z=g{*{xH#jC!J3(AHmyQ%)`fDfg(q^cY^peBb(4$f|6d zVAjOUu^!v+g0-N7#hM@keiK%9R#%!(4&iFJz);6&RU+ZPWO6rNJ#AjLvC4iPLSY}M z$S?D{-8H{cJ`X4EuZi1y0|+IXT!xVSnUDDrivz;i+>5BCQZyxb9mGo9zN*lC4^Z>H zoQNZWT2OeKnlCHAImtg2p;OPhqAAe%jnaHAO>-vJM9Hg$raZyl6%eyMhdyv$R^HfS zw&SSG2D3SzaObu^N|MQkgfAWI7T~`k{N%%c(tUfk;(Cnct$04hT0p6FtGDeXowltVDwexRLb=U)3jD1$T!nyaQoNf%IUpQFOpC7D$Bu*t-VYj93N}G%-J(S3L60SE(_>YJ1q#Q3 zIotdBjpN4Om{HiFImudjO2**mf5r20X{)`RNa_ufeTdk)Ev0&VhpIqEHLY7!v-SI( zXq;d)x>}zw8m&7O*=A9T8D3(W*z1MkjQAZX@e@151#;r>rLx;CPJ2bmy5*ZPteLIb z?@6lTJJ=NNaiec?NhOP zL;e8&absMa!vj}$Dx&p+q#y{>~gqAjH?Hz_g9)TLy6b&z^CWOa3}Ny{t619*AK4acXb{ZGZjnA+;Z%LN9p^Or zc7-$STM1|KwYI_f?K&l z-H9!!%xJ7`fKm31^}@YBN~o0RH?>>z;a!QM6jIXZFll|w5wvSrfmqM)W?11Iki4&S z-NB!gN6r+ZJ2+QCKE9UiZLYsq{!bBw_w&P2C1> zJDPHCgLg9#(-Vf8Uw4I%kTf$i!TmZ*7j>m|i;@`Dubs2N@IY=d;Cz-M%>({weC9bt z5B*(u>Z!ERc9*M7<*Qfc!xiVc*p;h|2iK0$M_f#Y8aJA23BWwKuKJXnIe1O92N+W? zaKU-HK0o{$Va%5o+b9vYK11ir{P13V@_C9*^Zs2l`oq=AWW~BEZltf!$6i&WS+@Pw z*H?lo)DMH2DaM=!FTZ~nzLno4qUK>0>vaC9FqLf=m*06(soc7)J^f4J%9}W2BNjxO z{}qPmbb9Qavp0%7`5U%ybRl@Nm5qMI`cQ%XPF|8;Zq_+Vp0!Bxn&lb4c2P)WRJ_R> zO^gPaaQzz`om^L*Y3UWBVVg@g*w|eI0$WA(+z7F8&+o=LsNDP_ojvA=b}y4*b)}%@ zqlENM=k}(np%rr02TX{%sWaoqw@YVijy_SKc%3NTB8q~x^%FJ_vv(Dc zt{2i0Aqi?hVXlxqSwOl$NVf_}Pzwqh3hC|w(v3p8O-O=TP}oRFpDG}ITu8SINl*(4 zZwD!C%n!Gb^ikcDI|z4YC9R_BE4_u4mRG(?Ju~%V@_>xEC_b+fy>`!YEZKD0lTPYX ztUmkmPU+Ok6fJ4huO@5@*DF?0v*)DT8d%zxc-X3a&5^8Srj;?}_Bhy?FFoO?j^G|x z8_34$8LY!@2BQRTqp<9?-ZxTB-yY!Uw|8{ra+o*F zc?2<^U;{}!bJonml0T4`4I`%cl3hk@-IGhO`3aa9Je3D#?!sZ6lm~?0v$Sn~QlYwM zJ-HiK@+p3NU`jrX)76Ox5Bm`d7Y&v3m^3~k@DZeO4~{|_&3jY)>*D0IIFtMM@e*AH zDsggu=1&iFl1`4NbTYr_%Fn#-)6_tl3!1}WpUGh60H!^Pe!gY(OSd6it+#LH%Y0kpRLdi!#Q+_|wegJRQGk%JAMqxxy z3o=?G_bGAZN%_{?q)PgQXNA#FJP1mEco6PscyDJWpU+K{$63UwDUabHFmm+I3Ek*a zlh5N$$N6qMgVo(h<6*+={o;D#Zq2xUrUp~xf*-z?SR#y6=KC5!TWVRH5wS+t^!De> zF}?keeYHM44ZbLezF7<&BeNJ~qVNSM(MLQ?I>{rrd#W}^<07D4mGOq%MEFGl#&<71 zoKiO1g6`YpoVDtcUD5I~b4hFh6*dB>j2j5zohKu^SO@PH1YDlspEKO~vBDc=1-SWGL}sj4a3b7&D{4^N5>vyzpr&^} zWjgDg=s42oU0E9G^!oJwI?;2%^j(A%6P?Cc0_)$>I@A+=fON-q(tYjk*+t)Jx_9O2 z#*3dpKH08nDfu!Ynr9mEWMgXb%uq@m2jue%KWSLNFCXHVu=u$a{lqR?53vjjo93dQ5#AIs(3xBJ7xPiWwA;qQl z3%8|MS--Pce5Smf0%c9VW(?3DJqdhpcFc{5U$t&RXSKc#jIr)X04$uJayW6AV0vF@ z4iX3USOzl(FzHEDkM!qj@KnGr<^o<}-SlS#?N6pSI@Ef~QZMULjXAAnSVu^tdR3}YPhLu{PLWa68gfz z-iXti^k35(5fZsWBk8xe@5>`_jc(0(gF8{ zrzts}K36ZZyu#&FmFBMqN|l&%U5VMB%unl!_M!HJuT`zCh}BZEIbrp3@@t~?%+tb@ zOU-ci@;Fs^83&(N_$0sOhZ7U(HaGBxjYf^aai#gcV9>WP`HI=an7fV7fth!jP&}pP z?}Vhi6$+a(CG1x|2^%X^uit})Nt4CQr|ae94}h1{l2c(~5gR2;_tHAsWp}6yfqZ`yg{B7cw2>%3#&f z{=t=mUtA17u(1hMh?bygav1e0-F?uRr5(uoRPmbDxOAOuH(%D9l!!K^lD|=$)&3Lu z6WC_sG5ia5dRIKCsr$)H<};$z=ef*huy)i!XPVNm$;%Y#|wgR0-#OcMVL1 zGY|HzaE(EeeZKL!e>$2j8p&S}O8aTDl1*%5)wRC@9TC)m!d9wEmG(0Qw35(X6PlnF z6c&Qk{zd_*ETq2)Nl*(4TMOx%1*9$^{ar|cT2R-KI0{PFnc6cI#4#RTh`Egz>rF{&pd~s?swl z2x>tlh4yy}NHrn-OH2uBL4nEN9KZ4K5(+oDh$Q;DWFNAe0x1MsVgb6aL;Z>Bsrs!d z<-$HoU-L48WwY>%)+?1^eZs$?V1TsLzFT0Wp7SecTR+b4vjwCcA-y4f1#RmmY!AOI zh%P6+=5m4p6W2NI?-gS8D%QUhOHd06J1Upb!Sqzk&a&zf{C*+Y_?#m_+xl^ieo#P~ zAS9EZpl$t_1P9YI<1Uwq-O0R~>g&w82@`$#?EVGX4@mcmx9GtgbCTB1D^83wWjC49 z&#IY*f2uVAV@~&OSm(a%!V}s})stzI)?oAu>t?G9OAAbP=Q$Cyt)H+HRGLwj;^sQr<>n~2q zpe9}Xq)sK-tng!F)u_DP-pSj6@yfW+o#O>re5HtAfLmK~86ApFV{~?!Ri(}Tbxq$< z^qwoy8xzf>Ao*3IO~}{kl<(4U<03y&*Lazj`RK6})xN|1G*wtcUp=A$hCY(E!<#zg zrJH6mzR)c`{xNF4QJ7$_Wb#`l0+Ws&eY#q`iVj~jvxiti^^PmL04B3px1?4Jvm*AN zYynHf5)Y@w!-}6w5D|_r%RP~wMH;8T(H?7`fRp&aueJW$$oEXO_sPK2-ly=z&}3CU z+WPM2+Z^C0?5t{Q>16R(hxaw75vF+4`4VpiAH`dZZ*z5i!Y+k)-F8pGnwB5qkMmp| zo=eHD;4bQ-1emc)B9)Fvn`_|r^l4Md=b}4xxDfua{hWzEnPnKt7YP7giw}DvYXTN) zYw^wdI>uztD1{f$N3JbvJRf!nk%lf16Zs2rNFMv zJ2_Y9*=$w0NM4}vFY&8_Qe5Xl$|U}HjeUphDI%?5PQky9UUF;s>Q2T(Cp!I0LX z?p#baJ+7xRv@HTUIKH|VYlU(FlSap8Fegm_qpl=jEfdEW^eVJ*7kp{XEa zNFkJDHWd4lw@D1U(1o+rxw$=mtqU+(&oY0+7*HCyHB#~V))mjkVhgNfEwn-IF_U9@YAx_e6tt0G6=v`aPvh^^N<6~;|}+)T-f?e(}n zO(e~_qi%9)VcS=+6paTLOFLVQLd$PPH8#uCd;pPbt}f-|_A# zn}-RK>F@f=L(-6QC?(ku9GZdcYbEc-Gt^B;<><*>%h)H?^l8}|PI@N-H@Lyh-%c90 zynkm3&F|E#m{lfx+gx^?=zUj4(%nQ?dXaJh2w^mLCVERn%&J0_$;x21@~bt)hKj&n zymXhWlTRKeo5?Pq7GN~jda^69+lA--)$?Y)94EU0ZvTw>oXvFKsd0UGpd*4>P{1xX zJ9EF&Dp6w&mCKZPVGr>9Zl}%ZPSCo@WV-bt5yd0#e3aQGV|G0|eJ zbukGcRK~7tp_&~x$j7b?;D@p6vnJWN^()x-F@v_J`nVYh>yIMY9!hBnTAc&g8;a?h z(<;cK>3){3=Y3lAJTc~4-irqqlu^1?)v(kS;y>8;yEHmTZty?w|JvX`&9*gQ7i=LH z$%U}52CTfkFGW?ucPC|Vk;*`G+e#$KZ74ZdrtKJs-BrWXCOk)<))V(uYt4Ig^eXND zdZG)6qp60+S&7{(E7pTB|44^kt3^h>)Vz&y?OC=X1bThi&@sJb+E7X-3$@hr)+|a3 z19+OC8`h-8w5+t%zftX@Nn5%-?J;rKnS#`au_IqQVik@A1DVXg&fy-g-!A_9!=5Ve zime)a;nUyKJdCMBFNQ<}**t_wSeY-__I-C+q?FTqm(XbadK} zYyG3S+QwFogP34mDWei)OGYJOcO1Pn)RXjBRW~}&m3Fo`w+xu8WL6H%ePG0QxEWK4 zsJ<`jD>Mh&WK=r2@Qk=F*id3DOEtz;EqfK8kR69Wt?Q46)onM9q+9j}OfVu#6H+?A zPt7874&5x`m&D0Nj{QiY`5yQj5wxwJu#ZN3)n)aq?|{eV{nmSwTfbHB5w~8kPi0tM zladASGzrA$KKB>ReW4lN10}ld2h`E-C&0b{+P^BKe}HiJSNeilklw@0%_35H)uY$o zg=JA+^FiaK)cRjBF|1!pxBXIq>VcwqfT#*;L3%}VPW#sdq=STXppXQ$AU(P{r~R7( z(!oMHNJxTOP&iOXFBgyw5z@gz64ZjiLCS=z9=PB{Om<8ksz~G^N#qb>B!}`-C`LzK zi4la#Q+5XTBZtjYZwf_kO~QJG0`Orh6sWmwWneSbWkiikIX7xQa;(9DE<9L?!NC?p zMkl9a-o)Ubkhs0jJl6Dpsku0q9rbP;Rb+3VlNtkCcI*(&JTuzV*Dt<~ekb`%k4kAA z)zuSsQ}u_Y;aOS#`a>ikZZSpl$txo#-E#KO9UINYhG{Wb?uYP%t zhuF#a3?c2`7HA$Onun=U32H&%5LK!QgjI(=uR8Qz5W=B=JAI3vCm>D6lZ8-ae9~D4 z#*l+`kV)3WW6l%kj>U!KQGe->Q0hGSY9|k@+nv995h176K^Pn`y^Z#*j^WMgu|0b8 zaJYq0^eacmC3}xfr{6qMumzl1Ri5bc?LKa7HRR8>`W5$R;qguHFf|iW{I)?tzcnpC zv*#d|LLWhv;YfaPe^l;c-F*!of6(#74j?4%{urNdG(VOn=CXgF9BhBi9EgIuN`4P4 zy{n{g3Ei-T3#jrS&L6Wl=5W}bGMG6W_G$(*2Qcom`5mxzt)rgZxE|VZI6*9_0Bt_q z5<;5JpR@SpaGHO~VCHbxUo)6F9QIlUGY2r8Exemi2wikvfs?*eZK0ItHw^PLq#Z?X38h5s!J!%!zhXOci`mRA7K;}Gr}XH*wMS(Q%jHut9TLIhc}@DV|7>r+_9|4^%x>f# z)Os|F|5T@yrZHoqDG_EQoRKDvUdMM(lqS^ACU~S4z+PSIMz3% zwSK;ILmjBuTXGGbaGAf;#OQm8&Pz935req7@#H#Uu=F@VzAi0DPQ*2I0#JEQ5}19l z@F9lmA!!FV`>fY)=Okw!lgZV2T4?cX&#-))HxB1OAOF@czQM2kIWJ$d089YB0I|b~ z&z<=ff;vz8GOp>WhI0Xo?x6%((1MAVR-8ap^UF~yQCJv6mAL1MN)Q= zlwBlxyU9f28OcO4Iv4(G4+}n96q<#7ZDsj8Dq8!3EPo54qi^+jr}R%+UoIqnadI+@ zFjVcM!cJ_N#cT^{3Xsh!OLmvq*1~W9omyy%s&EBGoa=iGZuN&f46iy_U1eOi8a%8D zyb^0??VWy)XK89Np!~ioN!L73`B`3i|(u9f1n315AXe75F>xVas!)XBG<|2?ui231S zx%i%{Z@cjk@um5~h)S(9uNe{d*xm%xSM_i?2;%dxbgh1Ur04 zQ8N6mGBSx%NrcLoCVVStAZ^ ze%3^m^O5P=cZzK`A3J|182(GK-wdp_ z8cq}_Zv6Wry@yy|{t_)@lhm8|#GH-`niGO?e@Z)W^B|&up8;^ARglcgNu4{JrrbGas+1lR{Y(4;d!4>>2i&sa^a5Yc%WbF0aRaC0s^`7mEDXRzk; z@`^@MmE=kgI_XS_*4#83qslhs>`Xe%C#;5+T7Og3>}vg8pJDxK|MV-;381Q|hsV?Y z*2}FFZ3HXqB=t4Fn#O-!5xE)dANnq@d@YNKzDgi21bMqiDE7&%i>P-Xv?_X4B+e5}RD+$;6~VgxPbxRqM8()caU1U-NjLC+d!ZXm`@1ex5F- z+y5kE^EW1e{+W9({go!5Y&~(oE$NKIxV(Q#zajD!#vEJ7;Fi_x~ z>6kJ9F-b*qjM(tCl8U@shISopI|t!O4y{8%VRxh&?xD=xPEz9$#|P+c`Uz+r!Ot1( ze~T?)_b)}i=ezhF{sQ;k)Wc8t84;pk4|B&$-CVrVj5F=0T@Tc;!LO+K)6aL?x@Hg6 zhpzA-m5J7V1Wl!@Y?Bi%e$Z@-&QKA;yP5IL?kaN~)>pw<@jRN|dRzjxdqS`Iq_rs; z)3_>)DQ;2kc@Ae-K1&JOO35LfTyGbR?(1rF*CVlz&}}%9O&igoKLm%(8x(d5VeD?( zI;1=70Au#UJ8ep!oO~WluQv>_y0VGB`d4d@=SAbM^f6WAo>m`wsXdm$XG|Ug;o~G| za-7e-JRM1N&g5&4WE^qH_RYhSI|-yt4$~ZZ=DmZo ztI3(Txm;Te*Eqs!$$O{x4cHyh_|geA;_3ME)fLAV=IvGoCP&*J;C=F;*e*fYZdY+< z@(Fkt{71VNa5hg{Dw*E}d_+(SYJO5)30m8o{H?PvEK=K4q43^K^C{vCqCd2@hyl<9 zgWp#&{Y2UH6a9m(r&x8+{W|p`G}P61iwUTHro9S)jF0b&k54IKK`p5HU0@^QMVxt| zuFUg`^O8U5f*sm?CDL92JAi%RL{#DRa!*(9gz|V^uHosq@I&L0w!s*uz3?A_yFa*o zoZs%f_XGc(yWXbMCuE!X68=C>$T3;#0c&@7>jr^+3v zJ93QC3A_oeIH?(h;>xlmr>^{azxg@(&4MDaizA%_6Ldp*q4#vmhdMp1I&v_(3OGKN zpPDWO=qss{Hn) zDI}Z>sIRs;gLc&MPv2a68?L;h0yfqrk?Y*u%Qi5Awr!+dC~i+8?c^RXR?QCV z`7Q0U`|GwrM!iux(cj^RM`mZP_g&tG{~*aE90L!t)8w|yl6zActFP`fbO(dBPYxE1 z#=D6(5blKwdpIl}m=uMUhA^r3OkQ&X8o2t1xTPN}nceUqiaR_R5U&Za8O?>j^+i4O zIlb|jg7TdE`)&GJ-Q=ekoh$i`%P_Le>ZTgNo7oEMglG)Ph>ddE8#Tfb~ydZLR)DPz!2_&s5)7JVUd} z+$ghXDz*B-$>heGZa`k0$1(@J05cT9GTaQtcWQ=j4#%IC!OY>X=^4x%4x5p|%mHkt z_NsugYw+*abA6;gA|Uml+wRFaT(VtW`IoYLA3|aBvb^%TeD~uEpC?kdML&N67KcA5 zQH0|7>S4E6oSsK6#LzIQ$MY z*K|!w9x}*pf%sBVRzf`SBS1or0`|*e!vsh^N4#{*T_ySik&cwyl0Os1aQk^ek4Me> zFyG#4{}xj~z%26ys!zqF@wOM(A$Qqf z-+T-{(z(PRw+dgv*Pk@#%X(}&J3B>Bz6s^!({0UfeRMUNyJ@t__ON|m;{f_pPq28F zN&TPZ0LLh8W5@TYtbAqpmVJfv8^?lMO6$jbEqr}=eJ~&8bP(BELwfqymoSxN zGm82@tcT}qm92-XcD@WHbAJAbH*1nPOy(C~Prt`5T#cl8()MyDGrD#Ex7081x)RZ70%3FiK-lhTbhPt{u>#&C2Q*cTB`pVFU;YvwKJGG zfMIJc+0x3^q)O_g96k`p;jMLug7x>him7(&?;H`8>A!&SurO@8#zqZ>I!vZ5j)f*q zQ#3QzS*W%juWO)z{f$^0W-BS)l+wrN!Li-{e!R8S?~*f4m2Mu0Ss7YOzf(7#q0jWq z)lpWaZLVFH${L$j^qDz{_qW^zM0)<`fSmvx)9}>i-Gp}qw)BwDLaAg%Gge9d4bSt{ z#rHQJR&85L91i%#wtK2!U0_4TPBnQJR%eeUGEbAgNYV>UnIGrG2`{|C&OHY(`p6Q+{ z56f(TZ1}ug9}YbDXG1@dlaf%t3PWt-6aL-7xB0SwXqI1I}{W zrrEmqh-InzhQU&qo66iXW21p+4zfQP*<++_=74M9rzbJJPCrkuv*2wW*N=v^c^JP^ zAPyuyfN}6;DafRS4S?i_KwN<|dSgciDBiDlXzqsI1Iu;-m>1W}Y)n5#Bre>}P60#F zG*Y#`Dw{@{M>)lsZxy9`vkn`*x$UsgySp|e>b70oZr@~DCf()aZXc7s#F%VX5%zW4 z@g=*hC|xbr`|4Og_tgi=Nz71*%T~jE-EIv{JJQ>$d+g?kN^`Xr<{2`c~<_e@xtBy8kI|!{W|gX}W^GRl3bFaf|8x zr?`tO?&d2^SJ1agck!6G#dO~+E^la*?GX*`o1pE6JydBZ_w9jqaUZ;n?1ViXsI!1< zu-M68%@&Bl#v60M5%rlRqr=SMumu^+91hzmgP8*u>zsE2%NEG_Th{_g7SLvq>a@+_ zu&pzgIe1nJ#8r`m3DtP+L4@Y)z)kn42i!~f$93o z6fK>HOo?`f7N$g`e<%cKEodDlb~zu;6Dp7c34)P09E_v+9#c?G=t}m-0n29rOb(R0 zCuW217`$G7I_EJA!84&x4}T5y4(oE1zH^4&0l1RNx@PkWbhZ~d}wa*0DPQf^4$yg;>*xDBH8KC z3GYPjhb@v#w5#oR(Yi8K-PxcvON{;_f?7~mOm*o`p4Y$^_9xt*ZsBm3=+fvOq_D8A zb56S_mBVZBH>CM=DLhYkPNp&|9`GVzw#gyfO#T}(T`7z17FzEHAH@fbQtiE`A zA5ne^?fqoPs^9Q7=Qw8zr`+iiR))ilk#M@Qeq%IF)%LvE7Rt^sNNX{6Poa!7tm0O} zKgc9^fT$xGtI}7cOJ7oObwgZLe{#wwzPlnB$$U^e^}{#aM26t`^6>Mre60}PXS)CM z6<*Q{x~g#WO6-^zhg>}34z7be7gp5=HZQk=;c5`;b&_lFvhUzMM#A}!uW{sGbyf4>d#SAM^R`eiNLGiA@rl=vmdEa-jlV#Z1Ofe8@-C=^H0vV5g%FWIJA}h ztUo>@CuJrctX|65xMyR+s`(D059n&OR12-dkp`mE;vD}^+Gmg zuM$mI-TUDAIs-k4ZGv!~QQjsF=i|`q)o7>XJu{d& z9JW^mGl#?W&S2(n*ghG|91eR=1~Z4l_RV1CaM*qs%p4BeKZBXWVFzR|b2#k43}z04 zh09eqtgk<$@Am0i1>B}n(K96KUkUp}it{P|4j+`!F$Z*JY_v_p21E2A)vs`&V*iL) zdK^9}C%XW1=I;TTQ)(Yf^lW1DGzfm!Pf!c8!+znvYf# z7c1x~emv+?V}d-v@I?@umpFVzF&^coG&Q_P^`)_;Y(A`z$Awx6Pw=TEza+ddtxw7> ziOD3A{0g84#o-2^$x8)*vY!0901$(wu}XeZfG!dAWC<>FX~eoad-rV zhot^njsExxnP)l*ZR4+OcTQfZ`qDn6P#>NFv)QAGuAmka=Gk_*5yP&feP{vw8#%h5 z7G&r>+|3OiyybgX0sEUdwxAYd*zBoIh<*xRSBanW0Ya)XdcpR43-Q0D_;xZ?Pz$ok znk=V#tAM=>Exe;f2Z9(%MqA;NbR0ppAMh@ch}E{AHe z5IOYBJC&?d6I9X|=GW}*#ra19;_zCR?rzt4O^5F4&{al5SwabS?a|ORfx3Jy8zrAn zqDj}*=U73FT3e^skBivAO+6kQq<1@`}c*Ru58rj1Pv|@2v6cnxz-p{vBTiuG%B_C`W#6S ziPHg;lE-k`u|)609ne0yP_>?gMsp8UEkP|v6=qI20|J?hbw|<;$or$nmZ+Kzv;Vmr>-R5jXoC~H%_k>*q%Q=78!uyb5I3}~mh z#L3^ImXA9n`4frGE>#+9(uWQtuZo3ga)Y+MV|%K0e0Qy!{GRkJU4MWo)%s`Y4nlm6F?FynRfeNWLc?{!WAuK`kf@QyT4K3rOD=((6JJ z)Plm9ASM3*Hh$g|c<4_4iQCTQ{0m2TgP(4<{{N*hIcitK%37MVXx(ViJEI9?jQbJR zjn>`C<%D>meU6TlU-m4Xj%NSC;o1xSII!zLVE!BrYaSe4fIS(M&B4$@0BhNm_Hl(A z{6INa4o@S3T2S(Dyt6AMruJVYv>blH?|k)7)A`%^`EQvR-# zC*9FU_Z{6J8HPWTA6J}}yyC|ztLo)+YiottCYq+B?7Xod{jtoRunXXgqCB6ovV68r zDCFchRt;4vFnggw-tg;CpzFnO|r zieNHSK|84ac!rJ8mSgANpoghO{%leQO{!PS@K^Oe707nzDsIScLg=hK8hq|4$hhq9{|O#&-0f ze&^qO&BZ)w=OdG6_Px?k-4d=4bqA&qE+@Ao<@~ksm_3K6_5BPP=&cbqr~5bg z1U=v&Q{J;_8w0xJ@Qye+h&ZXm5#ooheKR6s1OdH$2!fs&;124%IkVsBChBK1ra?+C zRN`AHGY$N)Dt8%QIETbqUAT0~XN7OGDzMH_rFJO(9@@>S=co(L1;5!1ibbd^LXRSR z5cur0ZCq1od~VGw`!@M54aTdC3qL1SuF@@KZ>Vam@fbYbBHCfRh+0jXx#2>opDK+O z@^4(kPjWsLu5ra^@3r#Yl!x9gFXkVPT%TvNyaqMpl*Yq3(wBtv))c>$Bafjt^H6I7 zm6_{!Q{b+~x*JmGeL^|f9LASO=08aFW|O2SE4L=QqD;Q7%9(vqj{O92@Q%vz$`7SB zn;WH8g6wVhBr_mkVNw0pJ z_<2tJluQ(9`<)7_CGQ3qF--C|R+CxeYT`I{-)yL{)2V*F2&)3_F&nU=<(mFZpRlBR znmruNl(>TV#Kdu26PK5E7sdTknA}s=FPBh?L3OV+1py2&jHDIi?F3*4POmk&%hg>o z2g3#A14D!i6GREgQMM>R^Z5B=8{jKcmT=Tp;)BoSdL-{W!T=ZAgu+Yme|tP=?gG_tge2 ztHn{wW98lbSIE^rx!$!$U%mM(37jne&yimwX3RpvoLSjd><+`*DYw$h!GsA7&3Dy> zn$5U$STC3`d*{s+%*vvYOeO>4yH{OU1s3!PA846o zzoPw4jONY49XEc9$D&S*N~Jx_+u?H06yllK;JbdNz{_AkoC@BnCH-l)y#WDLUg_OJ zzeZ?a0W&1s(yhD?9AGAXmg&u{za9<$JPQmPn0-uK5QixgSzt7sqXB!ZRidzz%0V_M zA8`5JN%;)W*IKQ~^Y3AwAdJ3YRM<|bBDVQW4HU0Xpt6A(PN=G;Up5DHft`}U%wcKz zzSLdN<+?o%)o=;zAB{xbCu!pQNe?ftEWDTSyFFa*e_HIUFQR!ypCYVmW<*?Y%!UWs zRkrZ0N)6410~I~|8`gW8t0J1-TH}#YbV@bp$FnpVmnx#F%>k?GCALVX;!5Sh-2>8Q z^RBn^EZq$KLiB0UELqS(EvF^U@DFB}J@c3#G9C^10oq!a1}(14_%qSRSM4E#>^6+G zKxECwuD;ooW1@vIz2C;%ZFkNj(}@cPE2a7dKUkRsRW-Z;UAL;Lc87oAsfHKGs$B~p zS?K0|pR+EAHf_3{ljd!zZJ!|zjcI=zcM7)2I)Uiv&oG9kgw^=^llIB#IDIyvZlG#@ ztdqSAwux9FNB2Oh`5V&b=&!1Y&T#8QRCpDkBp<~Ez;p(~h%>p?0j4-GjO!g>ii3Yb zCb`i8$MOjRtZQb39M0*W+~g?IRyubkdRyFEvevsyNgi}GQ#Jfmq;GM+35sWcTODAE z2?N~j0BIqTJKZfUL~@tAPv+wpyW0V#X0UvG)&ZuQFuH`9W5Y142G%6vpn3knxAsDvwht)ey0HW1ODPdTlxY|bRgpaa^C z0=}1ZgiW5bPGgbwp55 z3kn|+!RvB<+OZ$Uw9eTMN=_L}75cWjk)2EZto1Ds?Sx*XeQF_*x)NDei3n;zVYV`t z_N9H%<;d?o)q(JD>IP?WMgUYAf7X~aNo^b>ANnKfEvw1fh|5tBFnh;#0p94x!NmM6 zA>sPU6RAdSfhm11Gq+CvX^Q;Lt8$qx^9cGb)VwKwy>_?%{qScGPR0r9HlE+g`=0gi zTGvO$)0>;jvb35^0Vk`oI={35JUt*fL#*9a&ik=wJkp-ciNQuLr>Af~Nc`p?NrI&T zqY_HUmo7$H(%hqve$Qu$kpNj6aK z=Fx7+!(7}wt_Wv$LDw?qmPOkw7(Y*jzumT5;K$9iVUWBC+I%Ulyz~#tOW!UN@D84X zr~`~q!XJGmmHAZ+XQ^83))m!auELyuq%M?^s%7-yC;fvlUO&nDc3 zaxg;is}FQO*5y#V{2+}wmdanGWLX&%mQ5)YfBn$+7Sr;rMMsk`Q@*}<$doLLKZlrT zCxM^#vq!%?c?yg7BdV1_2%38p;2XL79Uo7dV?yi`&?F|Zn-+h28Sv0%q+sd zVQtCzb+v^!{7ud4pK_=3iIOGs1<`uVY57q5Y5}Ki_sl&aoVMd6{VPvTU{7yY@%?7e z@VXLh8A0-t%_Y@8d{HznOljJ#nT^rsd1O_PVB_xvX=IPvYismJ75CgU?y;B1+#K)^Y&e6N!(nG;FmpJpmBGy6uyzJBhr`awVCHbxNCq>9!_LlN<^ZPg zOmp|gkPCDFlI{u0`l>AKOKBMM`a+n$3;$(>@rJJ6g`cH}&~kZCjheXiH_Gn0^ITtQ z_pGZ+)3b8rFaZ)M3?}Ns;dy<~hELKLO%WfvmC3HFn6)*0AIQ~HqoDh@PFEIF9(qid zA|6UMmUI2EQQ;9DVhtp#(RsQW)yR|*5%XnfuD|sA8y_d1rN!e|iO`aDFp#yxnjnw8 zzma`xk#4LqNj3l?=LcRsrLmD{l)W*idvf={|Agdccpfnhs}d&;ef%~hP}*r2;G0b4 z2lq6&r@MQG+^e~JvfNYTwl+#S=VxVY4o~}n3}z08U6{el;joJ`m^mDFaRxJo!!F5S z=5W}h8O$6GyDWp5!(o?aFmpKUiVS8BhkZ~my?vtf&{rg{QcE!EiOrQ)2b}7&((Q}n z0?IWE(RSyl=j^wgh_EHX$z=1PEFE)rIv>tp<^aaJ@;Kte$!{>|r|^*Jl^KpXJl<6q z%p4B8I)jRW!OY>XYcrTR9Clp>Gl#>j&tT?o7~6&3 zCz-=xH)b$%IPBvY%p4B8DTA5AVK-+mb2#jl3}z08Ey-Z!aM-OG%p4A5SJ3%02Qc&- z2kThHunJ`OJO!&fZqM+{;c@TCVCDdZ4d*$)vejug2paa9HD#*vcM9~j8Mam(QC-`J zcwe=)xjrDPXf_J_s|wh~0PSogt)FcrrQ@T=|C+_0yVCfAzFGW>Y zcJ}*N9JVkN@5jU;;P>;%=4>uw`l9JLcUgxcGkWPkKlz)RYJdV^W9~Z?t!at?t<10W zQ_(+TOt>u2i{Y!Ke(b+wWQ>i>>Jc09(UZslYi3?vQn?KsN)ql|{2^TSl(+jA$)6ky znIRf4aPC7BbSMfi}W zMVyB?Q*L$MsG#Rv%$LnB(48?orZ3_uMiHADt z1Y*Tup?*;lb-@dFz+{K=`nsAM0qJ!G(dff{1LI)_<(Td4)moBK+>KtarED_nDf{6V zeg=Iu``*qJ-!Ag9(&jcVPDDx=qwn=n`S|?sXVLn-_R&M(;&{s`|RkzNL4sgP|z zw2dq6YhwrzeVwvvZbn6^r#q+2eP^D@eu27Jrb=xnG~Y>hxJpZ(tNCH8;!ZfvG!^Fv zgMPR^BB%w0kAQ|jSevb{9PeD=(Z=c{f?80x2E2s1sU5RV$Mkx11$;eaZHtkko~s{p z0Zpe#&A+i?JoZ#CKR#W@SNm-j+cwI$MVNqr1rkVgz~J1TIg5$kY~WKDXy>sy)!?1R zKV_b#N*Q=HkXeXfiyl4-pFZc%Ubbv>^(XUhRWH93$?D9W%h+LyW|ybzxy&&3m}0vh z#GNQV@3Bscy3w_cqYbTzgiZf!lX}8N)v=OQv2;93IREYUZS7}N)Qq+O6u0jxNce-2 z@RpLWpcWK92IuWh7Ld*p(gGm~YC+*zkeaJ9OZPl3h?A{AFu6#7y_5UnWFgSzDu`uJ zHuiov?o#Mc3AHb&)y2~)H|Cj@aJdC&u82Ld;g(a_b*V19-1-zOtZ+XyJ@(ze?M-Jn z?2#Wt{UHcu+XZ^Zu^{{8N+mW1c9meVb7mG8Jp*6ZPYo+YGvKe-o+6K%P^)r1YAMok z@EdQ9+j+WyeEVG3?+^N>@;>}&QdsdksGx6kPVrk~;yy>sUv#yfCH+rvzin|pv(j`0 zeXDf8GbU~^-TxGKsl~l#rRfU#R_T6sOx$9+|0(XX7WdwjrYq=MrTe`xaf|7`dECC} z=hTbuD{gaZ8UfcOe*{AS`)S^wj8KlwU+wNXGm8k8DCtj^bF||xMH1khd$--aeY{B-K=jMZsKECp|tK-!u{cs z0Bk&=%`*3T5U8zd%|ZTwJ(R)B;jqtTFmnLo?C5>Kva_SQ8P4bkDEiR(d=|$X9_O=# zIGZCCiz8qf=iw}lIh@WHGMG7lNiVLx{Rb+m!uhj%3VF+Lekh#6`LoeDJ=PaIC!BDL zBxVA$!yb0%RJYrqBGn+C`0m1!45N+EIZ&tU zsZ`@|t0INlg`q2Gf@D#qAMR@Ed`WLD4tFa|CrWDr$yxdo2-d=93AJ%U_x4`|FaHBC z|Mi*D`-q*NDcz0OnVvdfxO%}^#{ zJYyOnwpqD5N3xd8N`Bt6c*gWv63dJ|$0jL#oeRv8tPZ5{N1r&A)P}Yz@O*mCbK%4( zvn&(6QS$Srl;E`#RrnSJxMeDQoiBO;2i`AFWe5ckvalp}E+lboo`fGb@>8i?4pB@6 z)$M%BIHRa!u)pJw-_yl}z9>&R-VE5Ac0Wd5`Po&M$)Y?xWWw3iQR(>ETb9*ILFb2+ zkx{4rO34F&vNAm@Cq|iadUX^rKUoWrr*gh#Y_wMtN>Rk|WXe%eEZLePT*v$(EM<*T z&%m~sbG^V^U@?cc8Vx)AfNB+P6c|1K9PC{k{M;z;_)4-ZeeC@2BIjzdot&ugcujYE zIUm8kP<8Y%D!TJ1hQ;3^iT zyVFd4l1h!O$`7G7IV~CRW-^>5UGVO2j9U?8;0j=m+*fZiF|Q{jAf*0oiT>35TKekp zeiqlM4RAHtNxb#U!(b(v)Dw1=FD=`?-o%u&O3y9yJiQcL7WJO63o$nMnwuB*EbnLC zos#ZOb``Pl^VCsI8XtC(Z^EdIPbg%3m6Z2Y`W)KWfZ;PW50oNlz-?iYx{~D;HYIzP zCp&(5Kg--S*=5#?3~Si5quH@JixW~_R-h0Il_$B3g{CbpvK~(7#9tWP`Y7rcNgq%D z$8;}xgYN{s`V)LIKT2(XzC}29k3@$9XZ|({z8&#tK+!MKc%U#Qt{<^+6)n>^U~Q*= z%W1&7teNz0sf`~-F*Tq51>DF2%LP zyXrJcZ$gxAEbK3$-2+|y$)2N$c2CV<9iraJ<+9mhrL0=d9`+MmyE=9S%6;Xj6JXfV z>(EYn{d^5kwewFuQ5g;GNkZjhFDnq0{*-$27wq_8&|%G^9Bxt{c{4w)0W9vS!}_(G zx=OC);9l()wMDcyB+zo~!)Lb53D9}k0Ba*SX=@Ka_3EeUv$HepU!X8^zC8SA3fEjo zXWB=FSMALA&k29a^S_?z|JC_l&b%g%I4kM6*Jt{E>NYxJH*L|Z3NuR2mH+xI%jZp9 zWjjA#oD*#vZO9n)A~c%6L`1Tmord%{^gLCcVR=ly#i-Zug1@3>PdtJKJ}B^0L! zX}oNT@C8e&nozjMwg%*pBGq_0k2MYC zCy;I4$4rPC#Qha<>FItA4y&S6y(6V{xC>;PK=LHL&HWhNqS|0J$FeEYCxvC5;tUe5 z4(r!C#aiAe{zmB+JH=YggRdK3Qr|KK8_D#Zq9-T=<;&N0j`M5bl-~@e8magGjpXoh zDu>l!1Y7Yn^x=+$nfk`9)%Z~J1a&PTPlFid^2#e>Grhz?*wyfrQG9qBFDs4TrfIAx zqUF|F`jE!j`o^tUd`Lr3x5Xe0!(3kZ-$EL~9-Bspkb3kAY5e#7`iA7(C%m7?>(+{k zv+NAh5i|+*E_~>J>suafh46~EJX{78y$9W8G@&a!J@p+;f7b-k9ptnVhNEJd)yLi- zWZnA*Vbx9HZ6xouil?F6qv4wBS4-fUR_yw-b(`HY@uUjK7w@IyRc6+9PqB_AW$83X z$0tX=29Qdh4tXujUivCiJ#O+RqT=tN`#ul&U(p=!c|aO$;pl@+N0I45 z*prjmGQBHBPTFdEKMP?}Ev8{|jtY|+E)A1&RG3tQX_%ayFxkK8$dUehIzFUTS~fG+ z9l!bhpk-C670RpQ&f0i6Vr-6nr+k)7X_Ma#tWKvqSSfR4<8Hbd+nA^h2Dbh?=Q1>} z)*mwxkuEMp#@qqZW#@Q)Pdd#b=@8KwZq91N3B5&C!{6okzkJ8X5s0AfQt2edz z+ZraFY{K-0c3tKS)NyPs3F~-+i*{tOZ36`w|n4dSxZ|*8g!#T+_q;hq&5v(0$V3 zdDw$D`MaeW__6z?*Bf^6)99|H$kV-r-Fq@EX=;;lK(01rv*By78V~DtAo(KXxqtgf zJmEg{mUc!Zd={5&62`*{VXE?iB)&C6eliXQxDD9g;hB67MfM**ftNp7KA$4i(6e~s zVL6i%ktCZD<~|8GTc_qe8Fz2h%^qZx=ya2kGHJFDYXhtnpl-`zo4y>YQvErPPL*e1 zHlaUAHf9r{{lGXzf@Bk%%wO`<(}*&sEFwP$a@CM)o}f-U6cHW*p=JmulwWqaYi#76 z=l{dno50sql>h&y=iZ#VBq^i`NlSp1rR9)PD0`AZX<22bBD;WqfPiu!m#Pr%C4#Jm zO+0CL&mV@6R)5%W|#X@Bg3IE9cHUGxN+dpV_x( z1VJHsH_4mW&i!KL)ftJq@N#GuqVIz%#rH86B=h6v{QSWA`EBecIp>C0pmRS_4yxJn z9m`0n(W4VU(PbRd)~ZcYty8MYy9*TWtC@^_JLLl(MyA4XCqI0aD2FZs)97hrfTpWk2RQ>{+T7*c^ACwde2l>w;pD6M(DY+;5eQG8?;i~fs zVy8qZ{@MJ#N|{1mEMZUf?ZA?gH98iSM4)_#j>oJpZroDwRB-g?WaW)7#r#7n?PfN0 z_Hl+P%+ao5$8D`@GYx=gyU(z>v`y6tMuyEQ-ap{~n##L_?p{In6bTyC{<OQxx*!UUDlg92%p>m*(@QP|q;V9nNiPmyjc4)6U^a$*oijmgZQiR}6 z$zza)*51%Nu@JrvBQr{wKsEX(9?C;sdU=X-FHP#+?nl=lquola47~`mmhcVuSm<1$ zDiMk^=1NzaiU_*eKJG9OZql8>Zn5_|IMiN@$7btk6y`t?X3_r;JUWFyt;O&&T5el} zjBT}-@ZMet>a+3Qzd1}QWm9`mpQGW~GUfGT^Ts&{k(>GD=8cM12lCy#k%zxz%x0LU zB0)!Sna-8us0v?k^G?OPlJMa$OeURZew{>y-{3Q;;7mT3O(J;ANu!*Oz)e|8;Wx#J zW^Aq<`O+dMJNt{=IgiS6mGb3Uy_;iO?(VtT!Mj()Cz{8oD(LR(sPuV@H^(=Bd+@JQ zCOi(tb$b3$W1~J^quBkRoyC7UX8kE&_rd;#^7Z97U)Kkp{~}-i9_MR__kJeCX})d% z;s27aigzXX@*ne6@vbENf03^torSF;TzKq&=7T5#xJhNSv(zL{T9Q-dWAdb{kK3AK z@%5e?BqzkM*TDv&(ag0 z>e}X2Va4AGCwPl@qN(nj-|PLH^u3v-XR|atTBMT(x2ZgQ6;37IK5GFBjR$kh=Rc9N zb{aKuL{xJM>9O4rXV+vF8b8kkcq^OGHu4Dg0g{V#cT4vP%=PpBKcqtM_3xt$nuxP+cUJP+rAjjRRKI+AZ|0 zNgpr$!B67IjSRl}TG|vSZmHq-BRSjJ0KUw$idAT$BrSq7i*NR=IU!e6J#*Uc=xv-EvHweDLBpByxPd5In&;tR|NrFSV7tu3BFHjlae^p`GnF_rj9Y{Ejk9DzrvE}49Mb`XNDp;7G*S>S=jV^qdOb-4&nXbWiZXH6|_?OdE-u0 z)(TFdU`)DJ@b7V9ZLQ$H47Uf-6SR`_~o!8av=xM;V zLOHsFo~OVhwv3xw2GLZ$&=TE+(973WQp?eu6Fk{mzRNhGwl+Su{4sC#HJ*ZSPSgqr z6HR++O?JVIAa3HRbtf&{>d$XHf>SbWtV#}hw@_4bs;gA_jYo67S`%qUL^Y?nMc|I& z+FV&3s{Z$j&!`sa znx12Jmq^{BaICXqnjp3!5x@BQ787H&H!6eDU7#tw{#;nQuobsFTQPe-+}2lEi&W{# zGgkW~ntPC#@T=Pag6z$&KTJVI`_Lg?G_xO7b-zd=MuD$5_FLgB&s=uKT?9y_ezzn4HVe;S*lW|okpKFCAt_611;D} zJuKc%2wVE^!fN3+4SQ&u2baLwAO1bkMW4pl_fbFWMQGZ9S(5z*byI6GS8$6uo{Ew5l-eOh^`Q) z=fblUp0ziu?Jd?fu`zl$7jLwZ|4=KLfx((>d~ZPcw>x3m2+JPloA~22M_e%Ko5G|t ztnYvZ4bB){DNzPBk>xnYKNHRz3J}mSV8ZJ<-`yy`3jcK_!*>b0T6Sew+!wQ!FP44X zrbbS6#hux27e?Ii48l!Fg-iQ=ez<0~fPP9j=~Z|o?@!`b2>(JqQvb7Y=cJh0Oz}Ge zX{Wk0zGZ1F)Hf4C#;r6gvki{ywzqq!VS#$61IVgVX=aUin&^Ki(fu?i)p1c-ef-84 z8TUv#x`a((ta#je8kW4#mM~PE)|$@C{H~((4=d(@?XlY1oPNl0H2U4>Zi=O=wvE5w zBWcbT;##`~G)F`=r|`#kZS6k}7P*MpYHyQ>_HuXyqdU!Kokq;R=6G!@UN_@BB5FgQ z@V8`fg|}w~z_mmZ{zS}eS}|tz#1Ho(n@Zum_;36z$8?dH9xbM#np5}?ob326@80Nn_*rT z`-sX;5)hH|nD zsyT)CD{4E}I#Jbvjv>T((&im;g3FU$^dFuNy`zb2PF?Jk2pIl`OhtuPE55^PshIA< zI#0e_g==&*pZ3al*NQ2XWf_~Zs_z5f$&?#SlvKDekM+@J+y0^C&9*l0#M82Jv?)?d zLuU87-?7w7x9!c&^UzJ$*m(BCwTRI+o@bfCo{o$2MEe}#(b}OM%-6!Lablj}juGQb`{Z_C_XQEzncFRq zpTsZron+TISnEdJ$e>Ef-$sk{R#bIF^>VshhZflP0+eZH4SI(5swU@(nFWzr_V7K5$>VM5f(ccK_D1Y6PPF%BJM+^cENl!-x3DYWXn7zIGO^JW+r3UrxVxA6}4c7PVV`2Cbz}3&7gf( zv}yYeZo4Q(;s|$kQS0ujXsNzV>C1aBd}qMdy;tdnd*C6~qS}KKt9hbC>(Oo4YY5R0 zrDP7|_lhjb&|9mcUcxv>H&W~8#II~Rj8$eNyZ%_t>#{Z6sX@3e!ION@n0kHOS2rwm zWrjD8rWRRFZJ)|5#Hl3|C>Hg|h~AM5_p^|~QSZ;`+_3)QZeJs#`kMfuyFMp#oFv}# z&TbRMbH(hrIZn^0=@@#L0+YOJ93Dm_KFhg>=(iXiY1W|rnmD(FN6A{7NRt}mpuLwH(1bCCQGVEfi_?FC-?tOLW^m!( zNoZzpGzll291=yp|4#gv!TDK{(98gha-$?fWfG(OP=2xG;`LfyoQ5238WFnFtENzb z+?Rv<){d8~x{4jo6S}=Ertr>z%G4@WQVaEMR8sx=*8FfFOSb4363c5;`1Ja0#OCOw z=)gI|+)xU65*FI1Rbf`Ui2@e>l+FY~hX|h+;Q~8-p$Nc8}ja-I7B?r%KFj(8ELT{4J%E-djuMXc`>V;%%#PRA_kUR8DgGWF)RZ zsE&wgPBtM3*-V;SUr2!37m=`)H`kG;tzVmU<>+W>AEloud)ttg#APq&fQ$_YxScJcXz-aKJ^7|DL z9)e&) zo{@W^R*F*6Fxb@JAO0t;gi{h{M%QpNjr$%6cIQxXbOU*IHM$)~+V~c#P}25v&hPX_ zh-;R~^?u~)4r^(nrZbc`#^)qm)2M|V9U68um@Q*Vipz3(?XXH%743ln9y^MCJ=!=_ zW!EE%s$tZ9l_*!C^x~om!d{s5q3Y)~Pg&dKkkoydNCxCVF^;&Y>J zyW420;mSRMJ8fF#yr)>W!=`0xl3QK4ZxOC!hse_A8|~1!Mw=MixMP~(vyRDgAj}4| z#2u&G>O#_8+Okz{EiwED<6Ebdsi&@f#V*XTupo2X6_=E=Rvn^sgo?HP(H-OyV>uOW zboxRMPt$=r$s@gcA-(0g$W!aKwz5!POl#%W?j%%Qq2b%W`}@Ye*e0(4{UVq~lvWzRJ5 z*b8PBxHR3=ycHX$D^IZ-7IxM-ifT^bt6*d27V;<2-MSa^vmb&MV@DGq{q3CJW_thT zsC;$B@G$44k$Hb8UQ*b3o?B?auyq0Cj89$+2)Hc?FerN1IE{|@Va|7}0(mLmv;$?1UFtgDdDV`F&Qp!z$&M{x)6070bk09-pB<*HE zPH5GHW(H_Fhpbfg5uc9A^ZX*5q;$JX@lEh|`k&`oI?u(uNH6sha&p2NcWACbbPtZn z8aG)Mo`KkL+qbHBGVyJg@*3O|Yi<=dJdX&R7R^um){x)&l zhewN)h-tnFX^ZydWDVNJu^W1`c6V*Z!gP`w>hW62<0|9lsP~eVdMm)iLYloz_LlsV z^{I3|Iw5}&eHXbYE7RSJmCi!=Y5j0ZQa?zyN{^DE6t^)-mbh;JtH5d zCi!Rv0ED(mLNkN%)E`zD>PcEAR!#hv0YA)RFN6PN^Vp8WuNhn%(-N8)9IZ2X{Z#QK^%GXM&7OrJ2o@_%7*9x@XwE<;=z*@hv;WGR{M`6h9G(n zGY!>v;2At}+vVpta_!a9g!LC#8$G#{eI-qqsOFSQnY)=Cw=9=U(y~}VGHKfTKZGS)PZM4C3YJaKDD zTDGtTl(#E$p_96+u0y*dUrJd$rm>ZKTY@!Bjdd88O#ZtO4S@oxfl}Q2z)XK`eKu}I zkAFQ;$r`WwWlMv8p>ZT&@%}io*ZK^MjBfQ4T`0opBD93xkqBwux`&G*iDUf!Udw99 z{@#RzNG|YvB8{iuxEEvYuD-5r;!J)%fcCi;d2B3V2IPPy8MXE&sX1>D-hr^mwzT!l z+a>b4gq^K<`ikJEc&klk5k1_J;bCJ9LMQFZ&*Y>`9TC->;_QtvXfqvSTPTkiU)ade zottoaAcF870p{ADR@*<22u{Sj_vl~WF?s4>OY4xZ zV{Kppb|1@O$9*@;SHptxpz{cu5N?ogwdwJkWP8m?{Q7qMxcDQLZ>A$?9&{@!R#i7 zD2cbTOf&K0yxVI*2l8CdrUa<(pgeG|W~`elTYpp8vNwZ8ZRiv3N)aTFdX-1^j4zLe z*y$hD8Q!c=@vxWSa?j1BdaO^4oAq_o(AJ3gR0_%^tc;|6kb84%8q22Y6bhx{%oAM~L1br0YRd%rJalq8B{MifoLdCIG4y2(4NM#F3 z^_{F}8fK<>$5D4y%#9Bu%!q#G*yt_ah)>T5rt$sWw~MTP_*(=Dp8&1KdblSo_VdEn z&IgEUPVQZ2wNpDH=eCk_mXovo9tk$Augi2@wH(lmpzuj$gLAT&kZ$d9(k11p;Atea zNPO3c`R-zT^^F_qIHUGRGpf*-os;?nN&PD|exjOFxEu+HbzQ~!cV)@($`Zpw_g|l8 zY-Ac<$&_B&gAf@OBLm9+RWTUew+SGIyH$63WXuZ>tS#Eyt>m%2pju3uQuH)=)E`w; z_2Z*RFu1kZO&Npf&eD3P%L4b9J3}PwmKg+}8>=CHOmWMetA9>k%y!7gS=i@=ber*B zN?cW2-z~UGLk0f5qE;u;eF5O2n!Pb62iJ>&%PNwn=42H~b@-!hEVb15v^7*K;PgHXX z|KQl0Jb(1lVxVmD8-2OJuPCsMF+?>dtG+y}sPt^xR#>c*rX%|P-~v#xAsqJ4Q6g*RBONI6aE#(r1B{do)+P6 z5L!#_S^zViU|8YpVnErXAOl=F+q~yU=T5?G=ydSTotCvyR~| zdxiId`DMe>=JbiJqgW3ABzlXK)s2ebvsgP?Na}})*{Pw3o`Ytt?*2@mCzGmn|1VBA z{jy%E>Dw}SU{+G6e^=?Y1y51UDO{667d~&L$ohU;&tzWn z5PrvuA5>Q9h`gP_eMWk?MW7^yTMjNJ=INF%jy|FqljdEEM}*#cR7RIx1AYuos}KV2 z)I}Fj9Qzu)*_57(N%bYTcH>RSBsnzj+XWuzJEtNTIW8MTPi^F`#{YAU|11dcBL>>+ zidC@K!VA$xHz-!E&Ix#ef4gvemjQQi8{64nd$FrKyb>0(+-#rp2_SH3$Bk}ZeEJ=ZgpWQb83mcRIc zA8jA>tlHAQ6~CM%na@v)8zY+_i|9~2f9Yj>+R6jdu#|ZOds-nH0Rfu{SNi;=pTpU< z$Y$YT40|m%p~2MAq8lA-;k%?w3j*O>3Q}WkuC(>gDZ0`osySI{>ufQdrz(PHcD zd#YTxb@tH5V>QOdUISN180W)%HU?amACoa1GIuIve^!Nk!BrfUNy)mG_#1?jYxU#| z+iwCW14ql|x(J)rg{s#_zVA(#+6FdODb)8+t}nfUJYagG-kjZj(Mr)LVH5q8IL%Lg zcjjh`W|@=URKHnUc`~JC%dF)&fY!z|o^@NJWUWuE_e}AxM3TPsi+5g}U)u~}R$-cKF`E%ih6gI=ja?YE_V7{4qEuOI^Y z*3FaZVU+{I79zX^4B?BEQwUp%@UjRmIl@*V{9S~XAvEUYQanQ`eg&ryQOzl2=$ork z1v`iTKFQe+A3^^CC(u()ARa)7CsMBvFnrZQySB3EsR7!Tu=dtRwMctOOIga-kHA}m zpZ)L?FInlHa9j5j{=4hLosjODJjkQ}Tvz(O)65 zcjGh^<)o>-?WIE7*eF*XR#$nj8X&4U*={LAGN@ zyo14{5WYtFa1%beh2qC~Y&-fXq;}~(h5HiadeSCzcynk^-w&@EuOL$%sVR(47_Pq# zXP%yYgCDy+>8`oZ4Rw&>QuHdN{DQxd_O^cYp&<7UeDW-y9Lmvad>3fQ5gw;B-Nh{K zRBi-@9oQ@v8dTYI(z}NI*i1!Kb8<74H{sdtP81cp>AH@9V{HL~Y6KY6k3iB6&R4ZW zZxCPoNVAr){zKLeVy$!p!y>!&jyEB9P^Y(6B~z#9y2KJkQ%h0AY6~m#2dF1>$=LKW zErUuN^Nc@|wSAm^NpLIJIm<(Y8yab?9v?+Ces~YfuC;D@zJ8(NIa()^e*)R2l5x2% zcbzxvLXy$?;69lW9EeF2P~)SD?I36Hxyo6(Mtjx#>FLCOItElozFKMAU{p zmP(X?O=xbDa=@5((;SPn#KM#@h-ywww}LuxM6EG7UpBvfRMCNFr0R)Q# z!CR8}EhI*S|1fz`n0WG{&M;{|TI|gD;ljWs6gFjG>Xgn##?3oy>d;y$xQWBRh+8rz zZRmcOj}Wg!)0jFLRY-Rr$?YyOLRMv7bxO;iCcK5lW;u9frU;8_PKNNRQ&3ly#&b0F z>PW>CKijI^&2$#6ytcd6bNdQ2IEEqHzwppk=vj25Y>mxx5zbPC?~slWQOzlQ8{dsB za-P?nsOA*DBTrlAJgt*@64ji-f8&WU+zR>KD(81y`L)JNRCCHTMuq8%>LzG^ zF35TcvO+S5+R!I_S9}L@o@UF_yYeKeIfb0yQDehlySa_QoZmUA45FG-PKKddwQ}$w zwJi>J=5X;`%>8mN!7Fj%ata@nf${FioG+QXjkoLU+8n~^FTN!DCygn8NtAi}L)dG+ zi$vv&cngZR7{{B~TgJ(8P@ajH)&lc^|B}L&$NAT~xz?OMsB)#Z4TI<_$yo}Gf#h}+ zZagTix6U^JJ?o=;<1;`sMI8mx*;?&ih~L08wzd{qOoM#MUE=r=mWGS?RJ{ZQ*9HjyFc{n7A=&^^GM0AN2R$->uK-O$St`ddEnH#)4cXbFe0;6&Os9 zh-yxuPf1|WZ0npiTGgOd0g(|=&8e|X&V7O0t8y3BoWg<%)WV#nt>vjzoS2xRb+fs|sQS@kzbC zupyq@x)-Ac&c8CvOevaQb)#UIW15w4BgnDRsf{O9aMb7ak1JCa@9NIQ`rcjM6IZ$Y zW9j|a40cpM`ljfsq^-JqJqWFS^hGQ^rHJ7{wcC`c+phI;96k3;o#q&n5B;^bdu!3! zPhm}XXq|VboEXkSEDBIBcNuiP;aKBe4A+PJzlk8>KXt0(ulk`=rpLjrw%GbCzkUoo z4nyz{>8DsfRzE9(?bKySPfai^cS}vUm844g5ba$ZFFxDHe2#N`j&}@p$QZ~W$AEC+ z(aTvC$?{=%xLZF|*ywgp(*>^=h^lS5&I^w@UO8s{yBz1uDqi~<$=-g+TW5o0ExhV& zOZbl%cG1^W?z9d?s}RnIdvY>uV>|Fxm&f127cgj zPFdti9t#^f-=;!g1b4H617##n#V&B6-4@n{cUgO3xU}0{<0vP$&XFV{-Z`m=4nZbE zoH-{#YmUYs7w;8p;RgU43csT37WtnVwCd z53;sM*{t-aPl8vt1#-#G-L%>&v~jW9su*n(QFi)K+51*+ETRFG4%gxBFvKIS#$pk5 ze@;aC*B;#V{GLquzvK-;l?xUI@l)Ioea zZT@(w(}g~LZHfNl+IDytksyuj`6L@{J3y^XBh-kf<}_l0nf$eX>u^BALv6>F(3c`# zV+Xur^g_?%{0ExQPijKHqzV1*CiGXD&{vy2xjcI`p)YMh z|56irVMY`FP3TuQp}*CHzGU^u`Crn6{y-CYNAKi(wrxT`r3w9}CiI7!&`WDf9`AxC z^rM>4&uK!xtqFa#H7AdEnnT^lvtyzt)7l{;bLQ@6m*QUK9Fvo6z5CLf>TV$>Xgxq2JkrURq~zKKnPJ zU)zL!e-nCX-O2fH(u7`bLchHUy=A@0`7drlzpM%Up(gZ>*^~1>xC#BDCiDlJ&|BwB z&VQ>W^n;twZ)!sST@(6@^(T+_;3o8+G@-8+PR{3;CiJVD(C=+RpR&Q^{I_XBKcxx% zh9>j}o6t*rlgGPT6Z%O_=s#&f@0~k2|NWcLFK1ga1}xVV(_5xwmdJGfh}M4b%m z{iPS6rqMR$wTPF!rL({0=UQ-L*>fpNHacd)25R&;CvbRfkfq7ap#L6%OydlgY}{pa zuM^$|(Ju`v;>J!4*ptb`Pc@n7(quwZb7C!LPnOH3mBagR)S62rDxp$j;COg+l`yI6DwOu z=?*^(gZw35TU~Oi0NlMOkPKS~(2523mc;;)TOW%#WD5z}?a{k5?qWq>%!R91EU6h6 z!)NR&TfFvinm6_QM32yqy{XHbxp)4W+E4R7Ze_KrwRRw-4V?}328E{FQa@dVw!9)Z zC@F-t*4bWZyeF6GKO=>1ty5HUYV4A8e^BnW)+wqvxwXz+bDn-KPqx-6YC|8l*122G z(=X)7);dLP=woZ0rp;gxb6IxXP9)C(h%BIDu%kA9#Z!A^BHNN@sXVNdVzuSY%?ax$ zt~R1@U|@aaNXZ>h0f~bXB$Db_p|!nt3-reBxn%!R$+ikBsyW4ht=5)LtBa4--1ay@?XLR1 zjPT`QIS;6bD3(lr2FZB8lJR#iYArSP$VK&#qFPODgQ(^d2CODiYpraxtq4A#pgaJF zzJ!j}u%z|qJ#!qEi31NMR!2lNr?8Bt&Z$n2Sn`hc4hRB2x|IgS-umoZC8pStY{x1S z7LsOJaxBN%V?JXR`fbU%YD><87wKsNliA%>1^S5eJ{bcPO9zLZ4l*cF}w#q`R^pou{tvB{ZY7ihf~1T=JyPKbss?MU>LpK z$o>oX=RNDRjS{^J+H?%uIUPg454W?Sa~3V7|2RH$(7H*w80AhOoV98~@a=_N)>Ut% zBXMh4PVew3Y6qPo=Yi#FhYHXa`4#i2^&qV)spUS^+Dz`zT7%9pCS+ju(a-jq18)|j zVf;GOqcBQttq4KZ*Grdb>ZN0 zZvF9DxnniW${ssz%t2SXV{mN{(NI-a^$LD(v@RyM?#p@p^Ra}FQmB>RbNrbbCzcg) zBsrdj<3JZ4ec#O7u|VTdwXjHqQKy`edo< zeok3-dX~0<3293SzFS0fYpHB9L~DVMsgzS1lCr3Cpd%T-30N%|$FDHGHWNOzS$tTa z)v9c~N8)7rgr(yN8Y2TA?cW&Psrm3%Y7~wZtbRxX5MTFA)_T!afI}u*tG73@ogseF z+Qhbo8xWlQQG_SvEf}^$>p&mS&O>Zp7yGgk@sQI+t{u|Yc|DxD+~v|-gg&SSdNu*V3hk~R{!YSIF(!Kf1#dk#e^TL(vhaTWY=z&;g+E&1 zZ&9&XM+X}e=azo$aHxfd4oHPoccQO=$64^`{|JUcL|j$VI#7s+tLi&->MAz{c5UV; zxyrFZgi7%$*Y*2#Rv{?eL@k@5SJIawWqYMdhZCx{wWk-8#z}`&oncNP0uv%n3|^#t(}@@4DFMe zM+8fjH8ZD2AySM8Y{N#n1$93}`7c}q$2r6o-vxEI1eBFS$5SF#onlIc3TBC0C!Oal z4BblIjtQCpxZ&sRFwXCD*{E~q6cz0QNG(^8>ib9#0w|wW51%thbVr3&z&qFEcov#; z8f<{vlU`5pTw7Q2+Php^mxMoWO!&V4I=uP{GS)j^;kiR$0u)2CK6%5h=xv9){`_I3 zAeVf5>mmFDVeBkdZ9}5%tIg9lN8QM%8|&-RuJZI#3Z!lubWsjDm67|YFE0n6!Smfq5ZIFBkFOOM1Yy>5vMQZ1mpo6VK( zAi4%q5Q*A0aZ}IUKLrq<8?2ohCm5H#UEzHJylcm(9vU}vL^xh0V^%+hnz>xl0zaBT zJM-j3=2ZC)sme-&udv`)vCrv>>FaTzLE$j3H$RE9Xy=$ORC;PRATlyvOt{I5MOrS} zI$e0~`L2rZ@Odj`x`*mVUE1D4KeKBWiXQ!tcM<#x;fu=lLicgq(bmK?C$RHr6o;1- zn%}=07uTj$yd4O4G2v#ebwMY&hn|=2nQKLN&{(zx-KEC+C?v@Y_7wuw(BoVk5!IZ+ zHp&*aN>-TC2*;C2Hass;TEmx37W>h*_2vW)+jDKA+aLY3;$KlaQMti+<594;dhPgC zy^G*?srW@(!eD@cMT2HWoe}nJWON+POlh z8-h|ra68uzALbz1z@GAIhZvjO-RwEQ4c5qGCUE2oqe$%@bCgkMQ`>sldpgmhAvK&~ z0q5+32A*7Aw0NgrzD#-H#!9(M6t2lt`{Pt!+jR&wURVMQR}qq=QYZZf}U6Yv7l5b$;!~M13RU5C$Brg(9li?}1RemyexmaQfOL z%X);pmay@mlqxDs-X`KnTQt|tmA&@WlJ-z7GP>QBmaZjehnvCtV@XeSxt0m$bURIc z%u`gDyn?sNG_QQ8$y_y^=GPN$=wAAi5!IxjM`Thx8+t}2UF99xnHn>4s7woF(skaU z*W~&EnckJ@aG6S*Vmd;mwPiX|ro}RSP^KegI!dO?WjY$utPj(?_w;mkcdMu8Z`O~( zyJ$XYC_k-^9D|SS7MCh^a*In<*qNtW{dVTs=RkJkLxjq1blCBLXh)inXlFhn$Ksll z8K>*%bHd$pJ*}eYoRy~^j~V!6wNQ^_C4-i*1MeIw@3c@lgE4%ZnCqN{8AuMa;}e=0 zpe1^tm0UkmTVaz8dL=P(Kkg!`Ihr0myC)de9o_ApiPxGF*T!oq%Qq+;(P1Q#$6;nn z@lIUbCQC+? zSdSFdzCbMD5sa)`EvAyGNNX#**-5xC$Jgnux=DP8?kC&hxvvVmPs^%F@63v8Nz>V& z;*F<*ZWv=az9@l=qi6?i4rmNc3>N^4G8)weDwj7-U ze(jYDkDb2I%F_wd?;#6dtvU|f+XSG})vs}OrTZp2lPQt>SrD>ILdmVT zur6ky=wxYpl=wT#&WqjJuzaL`^n!{TNVw(dmT*n-HeemJrN&@38;|o=IC=a9<#7(? zn+5Y0@Q53One)PPwBTep`-Sn2vvQ8NjC0J&@LUSL$_T5Orz3VUPTWdm?iT1HqMDP< zXbO1e9q3iXuy^C;v19N z{pOL?j43wOXz^6aZc!exjyDVW2iJz+hDawNuM^cPwi1xS`AEvYjct)$*C0 zZK^Hn_0>>XZ7^R?YF!hrq8aoBLu)dKis|$zNuSU=e+}E8{fhX+dP&s#xX!$W$5R`p z(K1Fm(_vNn=ix-FgUXm{Yoml75lT0DUWo8+z!ieT`F1MvoegfZ~~gsUdRa8Ky7QEY~z`4%_8Ry0BQSq=KJDfI z5T}N@wLK{;ZH16JFn3S|xM&-0wASV1%AaLoeJ}j!PGu*;)Rw52bzy?Anh5(qz}zkK zzH;or#A5o2fX&0Xwf&v*44Ds<^XizwUOuMPTD#g%YurJvhHF5DaEJ(pim;~quEl2w z+jnXt(9kb&`$-1dqnt<>RL)8}wrwsG=}deZH^#i;=XRZOm?ek9;mXR$+W(PdK`gtL zbhISnkak;Rfl6igCAG?r)G@g+OLzDwretp9u$T%hfN(Pa#}~6b)#_v5+dXXlPyb zXk-D2pJ+2B)uY$#y@k(j!6#`4)p9bx3AdzRrFULbSPS7?epa30yWhCQDp*SvZy59w zw$aGiH!nI;33MBsYVq>E-K>@t(+wlymb{NR3a(L?F$5Ba5JM(wrwaD%)s;r)(9_o# z&Z3+WafP|+9@cYSX=RTRNmYWj(Av5a2^`)mB+|DJrHdM}_ieCn0kfW@yU$TvGtBZ_ zEV2V>OF}i3%{jP$JpbYXGGuyHd$)`cUemA3_jd16IDJQX5ks6n9_NN|^j(~)q%0zA z21Lhc4SRD8(~mp2ulqPHl&QUkxTyf#gwFv0uXH%>T|POM9n z(Waj@o$8G%1|hjFBwgL_oxh&PJ3QX)mUf{TmxdmmT9LJ6eKgu0ST1*QMJE$lbLF7+ z31aIk^&bvzj<2;u+={8zuT-5jsX798u7&l*GZMKpj1MK59vq2f6C9lOkW?L|VTCud z>+Cf*uk;+y9v=gl_gQyFWb7G`AbJrLoMe@*&T8#UN!Hr`S#fUVyq!sQ6`WlfI;u{x zR+f!Y$#`npNyfntzaCQQh zL6sJ-_3#x8i%})ydau0`l9O!uLB}1a!E;~Pc?wsMHd`nda&D2HguaMk@r}*<@--VeeR%r|W~xpfgB^5w_6chNrG|aBU{{ zyl9WA=n0F5tQt^JN3s9FhOn94t<=PJt)1?Q0N+#EtwN%LzaWA!6sBx84ZqSdHiCmeRnzw73lDFS1e(PoYWX#)dmAgJMzX!+JACX<3*!`Jt_UC1PD|4@Gfqf>Q*#B0t z=iGN5=YE*%`o#V}BD+4Z{Vdt_iS1X)u1{?LlI;4#_PfW~ACq05*!|^k_LePi--=J{ ze)u^1CFAV3$^KO4zp~X>`&Q%Z`^c_O%>T@B_OFk#|3db+GylE)W9>W3u20PGn6dT| zEgfeCytOoRmOSWV0ZK!c%AOX8($JN%zw}OA;7UU`$^NCx|AQFa%v2SmG@^CqECMFR zRwI6$1SnhK9#XNk2+NlFLn&v#U!>{316Otw;H5k7Q0&s%-O95sF=s@R-#qR zW4j9Tkcx3^w-WM9#@|ZBTbW&%KeWm~>R*{VG%vGT4(^iKl{rI4Wp>MvOH%uY))6v* z+A9Y3P%2=>z#h6S2~aVxhi*^pBbwwp1}D%Ms?#xy9VrrtS=A8z2}@J9PRM|y+p^eZ z-Rv`*h$p-#*JCf7`tPW%$?<1kV^YU~D;+Fcsff716&JW{q}U51 zk8TU%yi{W^G5--w1Z;(-HYE8u89a0s39fyGA~p0zVv1^#rgdoF!KO~1N}cXbOi8HO z3zAR=C#J;d&V(@ZN@7Z!mTaAbswbwz>DGiWG{Nby)Tyvd96k;;qV=g+42e!3_pv$W zNFCSO$-;mknyVVBKMkX6`zu;14BAFCTZ`u(fsG%2NdFgaM`^~yIAR)W2+?UwZQUC( z+C)Ew@vbAexlmVM5Y_QPU+U&EEyjx__;I{;)RctdD|5&3;;0S1q)m^+iv!1bUTkG~ zKY~~792en!Q;_W74^*>Gh+VGcjh$8l`46@1>> zJOxX8C0d_dS8S(Z!KV2ux*2ZwCig6caSGR0_|q`4ruQXzDu#90sEbQCk8IK2nTwB~bLAAal!7G)_&?{9!-~)p3Y&xT``?+XmhvUtAmr z_k=PynAmp4HivmegNRMJGv*Hgwk@{wbW#cJC^J;W#Xwv?2+Ea#>fmnarJ3T2Zf|Ghqw8wGVUaguZvWch|xxwr0ptjjnJPBF10u{OR6_735bbI(A14QQ_PPfx8$h0uIboYv=L_Lvj=sozl|fC5QE@v8`xn zp3}bsyVJ3!t4c?Zm}!;he1Z?SDG!lEpOOSRKq!k+=&C@t0TFaoD;?DdvARb|2iHrd zPGhh3RCqK(d@?!xcuv&iZML&Jo8mLuer}IsPE@w@)Ay)u&?nfL-|JPUf?@rb+|e~~ z3@NJA1}eyfsvw+Tt40^_DOu$wi_>;Ob^BiNyC~-OIq|csA@s!xeIWtEJ`$OQD|wd? zj^(wE0`Cn3`%`Xe7s=Zmn5xBzG)~(sI*=d*zi}o_Ua~cNU=nadRC6*GZD^_gWX|6~ zsXtN8$^5lXE0n{FiMVeXx}D9Crmf_igPD!Yj@l)0+HN3iD9yRik{GujpH>ntfkor2 zT!aTJ!cRjT5!IZ+xj+CWmny)eO6-OZ8fWK1y(~Y+*fqC-L5ihfCS5)R`Y@jqe@c?Raf+R;_IM{T~p< zpNTQPDFb&{W^0(OSq@nwqRzaYluxj{OjsVG-t165S@{a=eFKhKuokx;NhTPpE!Cx) z(E_uKS0#PnCmB@4O21g|VEvp^3TJ6@7w$s{AKQENTX0pi94^7;){>;lpA~?rxe%%5 z#CyQkcB9oT@~6VMUhXQ<@z~4o8pZ>eBS|&Tsdahk8GU ze;h7uJEBu*X+_kxdm zB*sZ(yIezCFktJWnN}c`6g&J9H4Nf#Q@C(gpt3;S)y!G81U{3S20c!&;9%QIpwH*% zO^q@~PP#EoS$DPU&$naDu6N{VDTBe;v{J4rSFmqLd+HXyeXDf^SNF8FWeYjtdxGul za)_GtsT$EbkwU6YwR`^aoZB7GOy_nd(sY;T^Mny@th3xKBfkDBgN}~VBrrdn!vu%*D*T0 zzF|&^BQR;BZ(^K?*Q3Jg&5ixLQdlyc(YFYa;gxZWzHJT@@%j#Q@cOQzGQ30(UPejq z`gJqBbf$#eq(rDn8WLPu<(Z!O<>>Xc8m_MJIqOO1SV~C zC&r0*Jtn+9{^BuzPw~olM&Bn$hF8Wh`hhu2#OsI9!RszXWq64oyo{3I_1hd?59JY& z@6n5Lh&+>b6_3%2bFM4H>vx71Hzv~Z^&?pL!-^)bZ*(_Chu4qINpS=wZS)h26Y=7r zUB|5N-M0V7Q@k>s(LDso@X9zw_nN~*yzYYzUiT|1!%GC=Wt0T3CvteTFU+-H@;%Be zkF*5!=3T{Ol=~g2>&ozY((w9B4zHiW!XH*NfqkO~Fgm<`W=@JDFlnO)F;2v5x$r8U z_}gPsyfU8A&k2&@m2r%IVGa}V`XzMmdPq?jULpuDqa=9!K8M$s@+IG+m*o&ykjG0r zMn9W#T^U|a8D5v?@LC27e^}83_KhCK=UcII1#U>h1aj!7JVeeE8`hG zN{|e%jAQg`bC`(NZ=i$MV~Wb~53U+{{Qz(9*oCc#Lu%BXwOF zUVk*axS5gG$KS%jA67JheWTxDba*{(PKqNiX`?4FPQ>dO;dMpfo9m@`Wjv!N36kNJ zag3Im!$iD(4;{RoQdEYQ2*S%K30{B7;dNOa5&0gyI)})Y@~+}BdQHxCWq3VncySvf z#p`KU_``}Ouy6DSj1I3qnv>!POxoxfj1%#CPI&D%`|%&8cx61JKM^FuE8`eFYYr3f zdJZ~x{aH~NULpuDqa=9!IfvIz@`%XyD7RJ867+E1RXj$ylajiw46nZ!UfkkH@%jra z{9#2C*f;tsMu*qm%t>(sCT;XQ#))|SRd}sCf8-A-UK!8m1%hOFWgMdy&0!*5FF^;d zmlc)aC4%rWN`lwla(F$TM?}6yx!sW>vhlXL-atG?xwnzJt_-i|4X>MWc>Ns~{;;A6 z>>Is;(c$%~IVq07q>Wy~I1#TGgxBFmJ@dm9uZ(B(IzckLGLF$3<}eYje?SMXHx-rP zC4%rWN`lvmIlRV{FZmw*d=8O)@_32ID0epgYrI}EyuOgb>z}ajhZRj=-{>uj4zGWi zli~>p1j+EqI7a_AhlzNtfDT^oDk{TE1mR_r1h2p6 z@H#S&hq|Mjyt438G=Y7iDG(f9zBwt5z@&`|5GLaF zs_^>eZ;#5_uZ(9@BuIu=#xZI!hlzLvinLfSDJsKD1mR_r1h3a}c#SDv@;&8Do;Z-#!#SxgaQ7guYc)cOK_WH`1Gt=^w z@r>FClHrwcjM~j%B3@IWgV!pG%J33Fco`+Z>mND1p2{O4-=mz+O%YjpQLgLN&n zSH>|~%^W7;)eRlIdK8u6C4%rWN`lv0IlQ*WBO>3UoUTpr+9&TS9;2KCOBK@LI>56h~mvM(bjnh}R0?wV-n6uT#7-p3!;)$?(cJMzhUfB3^T#gV*|s z%J33Fco`+Z>)mE}$@l1Ya)?}%$4fj$Iis1PxiY-GqSn8@m%}TBg+Hul0{ccAV03u( znUmrOOxkEJ#)){buGlf_rNTFFN%6{fMjH|&!z<$$%`=CIcx?n7yf#);hL;G!%P0w6 zK5-`Ng=5N>e2;Q+GezX9dA!79lyiQm>&oyd7+!bg@Iv7Vcqy8|zR@Na9bTK7li~@J3hrL;~8yEkPNSkW3+`iOvGzT=-{=LqB6Wh5MD+}@M_87b$1>S z`5xtjUW&*Qc~|im<(ypVx-z^1!;6yzY5T?fGVoF~fqf(PfnvN^*TzY41on*=X2|%cx61JtqGFhm2r%=F^7qGErbqU+bSxe2;R%B1L5O;@o&bJVx33 zPhD4rSDWF*u5^mmdtl)YE1JN*(JmMrUb~u;;s{LIXg7=#@oE=dr@qzlyA-dCXS6#( zGQ2X5(H`b75wAU=gV$b)%J33Fco`+ZYibU!fjlDeJ<2Y5ipVZ`SMeBSFFbW!8D6Ux zUhGV#c6_w#7g77j*f>%cluOst_$oD8a+$ka#GrZUhPVqVb z7XGlJ3G5pkh|%G7kU1%iz@&{1#yAnLPT{q2*J&LoUK!8m{RGMI$~Z=cn8QT84uuY0 zhbbz{-&>>l$rP`QXY@gWWO!v9qod4WB3?&B2d`rkmEk3V z@G?q*S5FSF<#|Npdz4+_6p?@DUBzRRz01^fWq3_Dyx4_I@%j)f{9#2C*f%;Bqr>Ys zb5b0IubOnnrOQT8rV*OlSbYk08>nc{UKEc{_b6WBL838TYn$ea{MVA4i4 zj1%!%LwK#_Z#F%}E8`iROppw(jAOLa946xRQRv|HF-2u~i6Fd;lHj#w4zD%0%k_Zr zJ<5(~ipb%4SMeBS?=p2=8D47{UhG1qczqle{;;A6>>Hhe(cyKfIVq07q>Y9#PQ+`b z@OtXCvolySp3!Lp$s96{QQaIS;?;l-UZ*Q6!%GC=Wt0T3SvkDU%OfJ+qwI*Lh+Lm{ z6^~K&E>qW);kCBm#V%xu*9a{9VMP2Av<$eb9BA;Uiz8?126U1l;+OqP^X?o~8c@ zmwqYl3eSOoi!87xqjM#IE>9-mbR=`O()hr}=boR|p)6c<9wF=|p$n6pZ8%@Ni}g>5 zqvgE_%6p?Ec|RwYwr}TiSH4Ht0Zr5PaNbosMwjPYSC;qdTiV%)O!Iye7XGlJ3G5qP zfYIgsh32F<0+Tkn2;;=O4~5IIbGQFmic7{bx|kqY-e(-6OUxn3`wXv7LkF)*6_w#7 zg77j*g4YH)yvDS}@;%B9Xo}a%dA!79l)cQ!t}`da z!EHdk(e->L;Jdz2l}6p?-NuHrGuUS{gLGQ3c&2VU$%rg(iG7XGlJ3G5r)jM3rs1#?myfk_+P zf^i~VJn&3?yz~plq~$B)8GVr;8D1I3=u74>5w9;p2d`TdmEk3V@G?q*7tcbcYg4D^ z5s~jvc0f}^F3P)#$0&Q5sq4z{+RX4`Co;wBE3oi~6-{8@=&KkVUSBgO#Sxga(QOzf z;N;;uf2_YuXaP^^8HGrZBaaPP}#SEaQ33gNAs5p;)UhZSLX z3~USb#w^+l5-wM#A$0C@70;jId0PleyXHFhg2XC>i;zINeCNT!Zk0O?RHr~5qoi{g z+o`>#`8RqWUK5>E`*wT5sX@;1+lW0VwF!>T0Vy9;&IQro3R>>T`8Q@|Q@>nu%o^8m zk~8`ae00V5yZjDpkn%eeeon8DDddScawi83BUQ(s62CV4IoK?f)HmzXH?3vGYBEUm zh2gDp3uUmy(;expNTWY2QuKYCrAT!rL`lou zrm^D>a8!BJTbu_e68`#?3Jyf$G{+xSj0K9VNb}#M$^A-1BdVUQctmY{{f=iOQ?_kIV4tjmM$bTcT#z zFWeI`hMs_fxnysN8h!Q-lhZ%agnn-m`ivbX=W}cm`khVa?K@4*XWu6D%bU=jZ9?B- z=gIk>(}ezqCiJ=QnVe6(3H^~K^clNM&gaY~^k0hEhMUlzYC_*}kIDI5*@XUP6Z-ypPR{4nCiE$LP4555CiJ_T(0lftoX;su=#Mm^ zFJ3Y^pNpE%9~n>Ay9j&Ht_-T}nz>f!i#njV>&58Y^6g@A&{yM%CHkRq3Sc*k z6~IP6qBSec+%POH`%x9U@)0XRDGjLGi9Pz! zxp?P!dzdXKh>ogAwWsd>REM|s;mQ4}il_U8TO)6GwO=!RKj0C8^9XMGFr&LkYtX~A z-SOP?>G-a2i?<7&x3O@()UVl%ud+SU(#}N|v{{A+@&+}^)cIEjY??d7ijD(`dJe2Q z&1rTYXVZJqzV)*llcbS$1Vk`_v;F^ zOBnFgc2JfTp>X^Kh4XC2=CuvvtB z8lNpEIi@bK;LOowqzC#F(4(Kjv9*5@-Wf#w0t-(XMZdIY22@ZS8s(^+5@d?AU?P0V z(L;EOE`?R45G}(@_=owK_uX_5#=*Gc%5R3LW$y|`0LjG`%_%WQK z-|`u>Tl5BdLRMu?{Pb8famBuUxvF4g=|*I!E__?1Mx9ecfG2x8gRag}E(1Hu{hKpM zL6fp_u(J|y5&L&C>3;V64GZNNRLjQK^ArJ(dIYCgsH0>BxT6&fRcZ`<9#lJvOkuc1 z8wJ&22&2adHpg9pE)Bd#uEAhdUXqxmi$@wpQ5ic^B$bf4!90~bB1Qe&QIB&eW-zF> z1=*}UveME~F?H$|q<^mbho?(G)Ka8D(c^wLH0Q?#;l=Pg2r#OOpA?11+5+{$q)P4J zkMug5TBm8{72R3ERgxB?PEhUFj{Kv#$omlg@~J=3>-;a_|CjtrQ2mMiPyTl$TeicJ z`0quR)cMf2qpZf|@d={uS-2D;3L*2AatBChDYODW%d8uXE?`_Ib(uVd*wsmgu#(-~ zzI+xxNy+`@Bqg_pDL!3R+#k&J_W!68b)r7b)cSMJaW2s8$o_=Tv4S#PR)vX`}L;kHAD#gkwWE$371m)=6ORs9}I zt6y@ZP>CwFEmtHsJ%!V}Ctae@9>uZJxV7o()AKfIAGguAE=}kauyQd6$B+8fE7#Qq z`n9LwR96jg%MrMLAz7FRSEX#)!!-4$<-s4;PfZh``X4aiSN+ei#J8iRLquMo*Z~g% zy1D31A$7O1oT^haF$E+@Uo5IdSU&p1a*iQWzABtrc; zw%oCh@lSYC8%(pP>}+lIMCZ-GxLfHi)}FgaX)$<`;0|WAm>LfVD7i()X38ppsvfS zEvDf;)rCe8AN>0M58=K~eoF_K8z1guc`A9L&uL^)aB9?sC0Fz!Qp8}U_UI*uya+ZZ zh=%q>WsX*s#Gnw}00(56LSw4+h0XD?GyDsBd`xAUL7N`8Yb)C{**H*zZCGeej=2HS z?|P`Q;=%mdqJ5bdg;8Svdu-p*xfh~W9DzBu{PO@}^r|SS`)kfUwZA^W{~MxQ=+Y4} zF6QE`v5NkILrlI|fbW#XF|`=I>G&M#XqIWQUzGFey+SAdKb^N!{^_*p6}@AW)c?Pohg^DBh;m#U`Hh+UK=JO_uwKQ$OyZj2tX__nFH+*JLMiOixC<^o zCR@=6sXGs!D8M>?clhg7k~IK7^7zuyCe6Z7ozM*LB@Nm?Eg(( z)%E$|_wf}4B%s=_b|P>iodHvX(6(G-u2|8^v&+?R1vYv?RkbQ-JUj7+#V_AJ_jt3n z_T-&)x$xV>;PeJKx&G|rG8vzf8Qe1qVf03&`bqt9Wl6H?);4X3dE1QJ^>tC5n?2;_ zjIoEOm87%jl^ivxR~DEtqv;s|*XJel9sckOih!XgafxKg2Z&4Na2Qr~d2rs;hO~Q! z;&&Ir(OCW(KLa~MbE}#sVx4gTV*}}U_QQLyO3A#F{rA{LS@)fCV=z4?J(ZDc-Imp} zpFpBKxi+O_+9!7$h6K0coM zKv{hudO|+XcVj-jiNzI%@P3SQtcUT#pJHCVka$p&fNlfj;ea*_9Lo+`T9Ly2;Srs| z$0nSKqfwUQ+gpAEpVEMqYXdjeiA6e^(D7P1LvO?u$a>`Z(_*$4{uAMk%6v*CTH-Ts zK4+&syTe-MQ<~9YC>Z-%O1m7MU1RaQk1+AvhnEz+b8qw(qVr*j<~|QT>q&b0S1a_U zY{(hATygHQV&A8=`g8ENJNeno4$2*{By-Z5+-6h1a#oYu{YqU`6wOIxYI z--(Rj1AP4GcD{@&(T`0C9)M>5Z#$YB#+90CCAsiXe7S0*htX`p#p`H6R3QPb29>4< zQ8lv}=u{q8Mn6Vym)(@nIC$B4u{y%q^Mg)~lIh&w8ELSj7P#ihmh`R4PUFdt=ykkS z`!$1fmDY%_i5Qr&7{6Q!e~z`=-m7!ySM#XJ`hBjoY%ylEjmT;LU3gbem{c(8YdHy}) z`Lgj;@kn^eTsLx3Zj7hG_`~`pJbUN&cvr!HZ!q@5y9s8Rbe+)_$=s97g`pp;?VZ>i zK8z1=l1FpxS!CJFdu$?g+qziK7+;HML8~@t<|QV~G?FFf163nHRGs(diR#DvgkktA zMM(N>jD4`TZX;Qj3p`D2mq_kHx;9yKYm+TWuo$;hyc&Mrt8!#gy9Z{A$lFTcA6k6f{;@(?#&0iWZi}%+jZ^y3~Er?GO!U}$D(J^I+$Hm36DTXS5s)Kiw*@E>rYWM zm~koZvU5qV82a>`W?1Nct@d`UC{U-Ft-*L7rOUh|6KL?$5|w1V`4GtHtKd z`$?{Xf7-ur3%8Jlq2-zrY6koQVeFAdl@a}Qc6t@HpPF~i!oI(yNg*e}(hq+__;}6M z`9GkEf5X!cA4~j`hhnO83~%dK^LFC(4z%!s+0~_C8Lb1irps1Pt9nK0PjG502XrYr zP*U2LYYs<8!rHc_DOrDj>J1Edtx8i8$3g%5IClJRYpJGnQxNrWsU zfuIBwY{McVXc7d%A}T5(D&hu$1_Xh|dxHy2M?{ukbAS=tPzj>rxS=A5EF!o8gNg_P zIsq3HL1%Py6qiwazu&3eZV1lz-uKT7-0rGVr%s(Zb?Ve!O}TNp^(v+TnKN_d8I*ZM zCfjj$cH#mM^X|M~fHTWLQPX&^Hy;Bf>j`O0eC-#@o22gFNsI63MAgky8RRJ zr0XKWQ-ev6uJfZ1L*Y^WRA$tjn8^QX@@*aj>Vzw?=!r&=7Zl=~3BLfOMwEut7>XR4 zbXNH3Rt~^asxN>Fm6m!|-0=hr-^JCg0bRq&1xEQNAehL53*9UNWS%p#Y&5{pV4f4U zBOie^?b9GYUMD4eHmvtI0ko_ekkhRKIO8Y7_E?2*RnVHIOG_O9lVZ^fq~}{jKz45% zyGsTY(FO(;5vwWCaC0MP-*EY4Gy2jL$LO^c!`lYn=6JXNNX-}FLP{KQb?1u=>v#mo z$R;mR#%>NSd6ZdPj%_gMiK`kZC_u%Ke=J`V%~9hUxl@ze;tovoQZP}Hf{~Dp9W0aX zQ{x(4Td9?PsOF$_?Pu+j6H_=Zit#}VJvsHKn_nS;HmZ2gD9~q}0IuA!!FP?7zOhpa zSSwuK<~m_J3bc=z^fv}Pp8aj;js)v3t!N^mVqkNYQc<`;E`yFhr`Hf zh?iM52x#F#minBn3av$jteDAGk{&@>@@9Ye!c4aG)Z-T-?QGp9RowK~ifQ2kzFvVY zl_8@l(4*$K!Qj`BLBN(GgRHx4WIyeO=T)DPeGu%zkw0DPk=*H6KZh9Kih&Z*o&+|8 z7TT=oHNR43obQg`1ddx2C9t79HknWf0%BgrrrMu@FcdPzXJB;mUtrF#aCC%n#d(le z`5g$3SU5Tni@!&iZ-YyP&{!T7(i$9OMy)n@6;_@EjA(&%GCURzOQ=s*NslBo48GW< za`(@;#Z2gvN+@2bIgmn={XlM=ZmdlP@oUMqD-l-Y?KpTH+La_#*D?_>feRP>vJSfd zdg=fvHN*S{WO1D#%w-Ip45V_M2}6l%JuTc=*H%r*ie1O}0pH{KC(tLte&(hgX~LBF z6$AI1wQaSEDrMuT|D0#wA8=C(2I?jU`Klv=nx+~0#qt#`!x$iChp!VTJIUz>*KPSx z+U>!F$pC49%wS03VgCe7y}(I8!S0k;7v6O6CD8OMxdVo+e_Ycn<4H*DV^3_<{)1ps1?kJ%u@Sv z%o$qS&g%0@)R9|3<2s~mOqdKoKyDoYz-RxE&IITWZsAmH;QRFCU$Tg$YlfTuA!Cvw z-DZH1IE^?WA|(J<7Q|6zLxC+{7H*#@s%=BE*MkpyURZr%eLVn8nq;rx=d^w8u-i{_VXpocvm`Eb3uo|!R@_(+KHn~&59?8eH@gP%wO z7fL{q7((fEK~hF!ev7u1Y*mnOi&HDvRYa;SZmx{LWp*Z_Q82o|LPL)`5G8NL*yBhR zt609GH_#0VD>FY!jkhs}cNq|HfoXDgLdh{h2HJ&JI0oY28*1!77G2?_(uaj=_^d8? zxCJ8#NdF_NOeRS3RY1NXRzC@axmWr~1uBICMLMeDMI>Gw#~(6wYOKv!thSG0&Xwhy zefypgyF1YJ9b1;}X+aL~?<8_<)5**NzI*2#58g(&UJ0EdJ zh#aXr6N&^hITbHnXr`Mgc){z^}9wbZ2)WYL)}Ul^)jp zV$_4H039j%=T<%{0=^!K9s!JqfmdQ4)IBCW7!QJ;Ea(}RJDXJ_Oue{Fk)g#e$T>{R_KLR3`}^7 zbo@rVOn4(zy+DGJ7TUaZwyZ3*&W8A6>~*szvxmNjA>W7}&HQ;?f3_QuL=KW+qg;%) zYqui7J+TQLT?;1)UDcH{olfc3IT>`uKS#&K$)eM2iKZUbK8+s3Izl@dfg1%zeT2?u z(>D;a-*h;~37#WBu!3+xxE{pxtX|;U>MiVZEX>rrv2q9Ss*)G5jFn@d@JH?f5hqot~eCR108Gwf-ft* z@QSn99pnrg`$6F!cL31uy~ANF)v%xLGWH)Z_BD?Oee8LX>JD#9<)!^bXo1;E{IbK! z9gncL-eV9hY4s?33%g0 z)xe9n<+}v$&{-^g>*^N79jD^9MQFun_zkNsxPi60hUtlvT4Z+}08f5qnQD(+$#rc6 zV0w$}N}6m8Lphv6Z-A7fMn|l3gi`yrqB3oO`KNOMXoL58e0y^~QH|!!56^#A4-SyhHV7< zfpL{Kth6MKnOwE`Os$rKLVG}@?+bT3xC_a>s(ajHUIKRlG!&EUZjn#S4fmiegC3)4 zW#ggJj7WZ~1z)}cdPS^E`n(ZYaL$aj$hhKcPuW?1Y^C_4J&v|0>DmTw*_wtg6{=kc z2KMbqWRx`W1qQDujg&Si<#xVE!KsfnQTg4f>bg5A%xaHKAS@UvGR%vZoqSb&^QD%H ztrZ((79dNB^MP$$fCp@?VB2D~#1@-Fp*I-x#?B#X|LG z61or%td(nbn4(35QnklGmBS{?HBxKTmVi{Vlx|UXbg=1WQ2>W-O!iAZzP}-#N;ljZ zB#lr%Lp5~*YpU9%L557`=r--IVWpD<39vtm@rV4W7E7V%A}s47@Mu^A@O10Z2yC(w z6CQ+n)eN-Mdf^1IgTBv8Mp(VY2i0M;l7!1#PW;oyPsvVfI|K8a ztTee3F!i^`;nTZn-e3BIrgp_0-aJ8`*tT1QcPVtyjc!s+&8A4SG^8Qu6b%GFnPq26 zx@^3n(u6g$U~$y3sfYj+So&_N-bKB*(e`hk%f+bXX(aF4fF7WEEBHWL#B5=wBX@qF zBF4J1ixGu!jS1YHP(i(dmG-ukc6vuw?E3Uh2J&spmu}{=%udH6RGO?wNu{aEGE@5l z;!Q-nLhLD4`V1X*_LD7{{&V-&bd+-*~VRfH~)0A z3(}P-NHsyxHUM(kQGl}aAO8~l8yEc&hKOpr0PfQidl^GTqaE?;nXX%%DL?B>d7dH9 zZg`q!;i1YD(Bz?@b)^0Xk@Pgp}1-dPj|0_0tmv#ke$2Nfl$dSjF4O@z+4F$@ zL`)rwixe8}b_ZG4RFhbq4A^Er02-5!hLKvyj>j>Q>KY_9^#3X;6a{mn$O_x3-Kj~6 z?O~v$mcG!)x+f7Y1@BAMDy+w?s#mGnSVVNds}vmuja1?aHcU#7D=rczWn0mQPQxJv zHdL^ruxiB+-9qOn65GrE4H`c|$X5vY3L)Q-GBNuCuTJWP8ateysbRD$@3C<+VXrvo@?d#o;12;3stto zJNq`eriA(uLo%{1HJM(4am-`(Ljj=+#<_xA?Oh;Eh8*2$%K180Osf(JWtQEG(5S3Z zWA}grwB8u+K7;jH_@Kn zq}Is2ybsa~3(elhrOK;Xo`yWUaD01&6$>#u3c|~_Q8BYc?RhduE$_bx?cF6 zoRJtzE^)pSLy$utW0->g(ABE0(~6cMRi@Qs?C-P$pmY&vbJqX&v1Fej3HWnjBXpbb z{r($0GT2A@2qUgPPezYS^&Klr7LJAQRP!>Zk`X@*@=z&Qg9Ol9078iXtZACr%q`{w z+J(|mKHa3#RAyVU9{KHI$H;5=YVx()5V`4F_hEh%245&jc^f z^_YBPS@MKCG673q>=ki3!=>AjKbvlg4Y97ASCU;fj2U&q#K|y}Khs#{3h4}>7!%H? z3d`unCSW`La_rr(+&D{d%_Bm})&9w3B zqZWIit@AR<*`DEO%WM!+E9f$}n~#O(YUoQ|x}KA6+HjSzqp#a63WQAzEGa*S3VQ6s zF3pKq+`6@w4J3~Cq^so-eA7MMyoJUy>Owh3H0Yjt2AZECFI zOxj^GgKr%|)G7RmsOq+7xy#*J3VK{RTIR}YylKt%wd=d3oZ1)Yy7s#GfBQ59RXjuz!gzr-6}+O)L^xKxMnct` zPIRk+6WJN&7$T`sGUITUwG1f4?}MaOe-7PHDb%GA+4Coj4u_}{5M?i7XnSR@!W>I- z`6|tPNv=+@W8H}mZ$4S}HkNAVCA4gn|5EL$X)o`!dy~ur@ZCJtfc{kEQEjpd z#$K_q-UtZ~nxmpVP*heAWcmtZI$g8_ORnavWESIHwXY__yqSJ@L4w8De&z2Cm_bqP z$?T?Oou@TceCKGFjZkB-?gj)aqE74q`#d*5^}$EQR6e@nFi@&!mdLF143sK2M|m3* ziaX|MkARhF%qO;TLY`ddoCA<6z!@NvWys)8wwcs)0R4Jv(&& z$b>@0ID`VgirqRdt(*-MKD1nTnQJI2Xb=E6#Rs6*LcrNE4})S8y8$w^jj=M6Flo}0 zSymo+vdTE=rv^NiLw>4)NH5K0!RxE#q^b>}>bPP>H(Cky&)pM?{2;1~?Y(|mIoV7v zXAM;3F9mtECsq1>N-BzGMDmng5g=c7Y~*MNZP2mNB5qHBO&w-Oy8*LQwRY)It2=$D z12SJ!sJ->6H(!)0V~iP6c5dUvE~#=F)({FaqRzv)=1YORd7h|zGY~Nlh33s&1E^j5Dx3j~xu@2fAk@eZPlBfZ~ViP!8j|hsElx zLow)g*P#Z*yFtk&bC*~AQMy=5A-7=9XSo3KIyRPb4}XB%uylpZfXD=c%KJeQhIDo@ zH`NiIh;=1WEpIInA_~u(Uj>kPHy#n|YI$CRr`1Ij8IcU@bb5@5C^NJyn8RQiSnny2 z#K00^6$)lJ;!v=z9!wm7p^qz^sbUr4sa9L152M{MPG>16k509dK(3RV133S5llBX% zwQ#}^&V&aOsM82*M3{0TgpD$^?&t*D3r*&QvbzqEW>R(`x|lmsbX9CN4({5z`6p0~ zsdai-)nbMS64aa<;G?o055`YrB5n}89YSel1pQFAyc%Nvt`PfSnOGf3N~$$78I0sq zevZ>dfu&hT=|Z3Xhb(kT&cbPax)2Z3HQZh5N-r8L+cPBFTEk^~rUW(^uk82Yl}jMk zolWFwHu7qC>#|t@L}WyjDcAKtk!f|&zo3T8_>g;lImbMQ@e;Tyfm_OIFg7e_Mb(&Jwvjd-vk{o@6d)s&BYg&^%*A1y=oj zkAXhVY_j3bBS*E9fOHq*$QGo+?kZAsgOODEw$^OK`6J?}P2%bdjBdVyIOakSPX_bk ziEgf7;35g+7JgYnz^x5(MnD|^v4$bnZM-8IV}TT!eUmuS)m7(b6#p1YJ_|gId9o!R zU<(=M84r)AqY}U0D}y|YHwFWL-tXljiB<8)%B9ET=>Nhb<>m1RoB05z~#sWt}g1;3ZZdPG)R zyiGdQo;h|KR8jrEB=5@NA<92F&js2E=r8?={Mcu~TvueldyFF+!Sw7^$=SUI#=xCb z4jH8Id5+N3?$v(W-JD#XzLje{^dT&E8?y%nh6X9XM zYc)8JsYb!UWG2Q;oIXZJj~!m?Iy}l`4nj&%1{~_Jn_SvqT^|c9_bFR)#*ev zu&TJ#>-oBikz5Uvo^Pre9_ywsO%*BV&MuE97|W;3z0X)u@bT0t2nOJx!&>Gjpu6Rw zEH=tt`m0&mf``1dGV?89@ti<6ub(3hqzYJf4<-%;>*2w~phTDy-=XippIS|JsK)t?A>#o5g?f z;pPaEdz$15%;kLHxEYhDzHid)o`_X(0(j8vUUbTGf^K4(vaQ1~bU6uEh~&Arqp4j2 z9l94hbC1XiAclchv^*byQR^9a(H&)>MXe{`LG|_(ExU}<4oP>qgfz_^6a}i5$5CcZ zY6K_vK?nn81P9{tON^5G) z_rpsr_reL20EA!QhhOQ36D9$$L0Q_>AbuaplM5Tt60_nPK|y3jD==Gy4dnKDh$k&y zG0#(}WqY^9Ix3E<1Tsig`nFWf>>BZw?X>anyTOgj?3Wti7N`OsvEq(xv~JL|`$f+Z zqrg$7o*F5(M#B}0H0j<+IEq*|!jCgEa%zCv!J_Hb7=Y5PUifrgx-}MV|8gv>`ZwwL zk}h)riE#+Y#*iAXg6=yJGov8G`VBorYdk=0a40noH(A{TcV1fA?Fi3JGvo9{GIX9^ zA^nKDluCUB9WXhtu#_3&fdcBIoIuD+Ps4$hP1q@!M@3?PA8!>)u8Yh-Tpm^M36VHp zihG^}$xB7@2_#=JfvQOoxJ$I)XaC#{n3DYxibRH76q$5C*%WPIVG84ESTD&p*P~9M z0&#BGft(+JoMmP_W|Uj-V?b1m)XbNGmKjxB0nP@zgr{Ofc3G+A8$e8*Y%G64oRzR) z*=4ig_HJb3!L*lHePNdsm2(lAE`pY+)O1(Arh#1AhdyH$EL<;J0D(j5wllL~J8FTl-DXW^|*bfdtynNf+Mk|q+?0_BjA zo1rGmCLq*hg>#w`2o(1`INPXBE2FYNnJ$G9=jx>FMaYcCpNEd9)6r^0Puc@j_s`Lm zeD0lBjmfL}p6+Tu`yhP2@l$vLip-Ix@_PQn=pM+UfHS<$s zwO-B4DnMh9s;XwR?2kamjjF1do)JM2sH&e-HPcnqe9fzx7SH-fW#oz+>LQO06?AV8 zPkvr3@j9z2rubE?za_`Y%E@eIqTP-qZbl?$74E{z$>iteQ){sA4>p50aCs0m%ej$| z#xSrTFT0E#znqMm?BJYI-f{VPjj$j<#m>pj$r7H^6nwYDRYWx7CiW}9~ zvgKqRiM#=ki{kN~HBr920zYa_fnp>N8O+N851k$g^XXp$vjhrGeiFr+PnjS5Tb3r4gsqk=|SJ>8V%(qfDyu?&z!B7p( zi$ER4R9F4#nd)egsYbm(A-mQ?nQHDx?b#g02VCvK?@>4=vg*OjKa3fqKg#t1F{p*2 z1Zclg{QVN~e?X*@S<>+z>7wq%8xMwydKvFP7rT$~UUX3|@vG@#?((Hikw2L|hy2Ox zAEUGX<^vyG_gmAn4sqVw9@e|z zMx{t&n%vDAa%~3h zTMC#!pCI5fQ|`SWp9XihL@addBf5PV^Q3m+oD_tiZH**z8Q_KP=g8E~AVK^!Kod0} zRv}A{l8B2z${~i``3{jY&z*DT;$i4#;!W5P-dFmf+*j(X#>*U-if-DG$Yz=s9Dt8m zT`{)t=eT?tr-8;2(%9nCcuCP%6QZ$|G$uoY5u0G^ETN?44sd^)S)C2x7|t+A2bC0D zwM}f#!1jP^0pM6AR>*yasd5;o7HP@7CpJTkNYqTvV~31+gWiz_ZiPWwvbkjnDDz%} z4DD>tS<1R7@vNCyD3pJLbWHk@5$ij+IU#yGVz|}o3+eTEX9F!DV6Bx2kSA3Kajcqs*s>dsnvqBeu93uCb83p2Fw<}}bZ_rk#I z=q^Z86Fm~yM#={k7KHu>mu?1x|U8Ds40$s+doIN|_L zfDx1DU>Mz+20|9@7~md?VvJ)rce;#a_!i3$D>ER5jkr~4akI)eK25hqz?~h4UYN&g#F$z=Vjy_%Jnw0hqJq2M9DK>Yg3`* z$#tPtNcvHhnKb}n!pYwmAeVV`smR>{G7k~evhq}X-Ei@QRi@HvI{WJJ9KL@h)2V`8g#{#EPt*wlK zv&E50wsKf-qEA=%p%o;)L+K$~_Ba3?KEiqXC-sE;ah^xa$0=Kzk+IPcZKjrnAD3n4 z;a9c*550+^t*F%u!>~opr{*7t{1dz;{tTs^OsE7|`v7xpBr}B)udpTIKz1jFVD{IVO6MSXM;7(TZC`YVz>4QDL2BnlVK)w!#y$Kp40Tw z?x)+g0x8w%-55FhdkS;rh4s?y+epCr6q1(KIp7)bYzg}sQRKrUK|HSMpi$PI6doo4 zO}8C9V}+T8S%uk=D2_^;Bv#ieC)KW_t*jwU^I8??@xeXSw}9SLpoeO3J8)n=cxRM7 z8EzYU53!|R$9CvUw(!qr?c++XMVa0m-Ns~HH?Ag8J3 zizwtw6&TGoUxF{WO&g-ycOYH!RYcV7DRj<)fc-v51(>`OP_LxDd_YfTOC_Buf$WO- zac)*&i8(+pao`q&r-exPWx_iodLWbh^T^Hc5zE^McrJ-xH-)+a!LaBrP=}y~szb(d z%7=A?`f@QMJq_6gl>pxk15MYC%!D(rBlP)pq|53pV5#(F+oSP2p-ZZOV=Kp@M5?qGade_bz@p=%~Mj-vC4^8;A!?g`{tjzBL+k zD&HIeVaX<7e0|M>T0;S>L0g;ZZmsJG%6hy8J@Wck=8Y(K=MRVpgGAzDkV2`9YA_W- zRVugDPv!0)6(1{PKU+|XbugsN1qg&;XEPXwv>SfNy!Hkisypr;grZHFrg0_E!b z8Z`1=BCSPWw>QB?LPA57n zYlskv-#j_Ko{wFEEcmGTA?&jGZ3?E>=dw6$KFj|o8Ku)|j6O+C4X9aDgM`p$gCHb4 z7vZvRDdbnvOWYc-Vopa)HQR(CL(I)AJIQ){r<90L>W;7w%g5JaS#fqpa>^Aq(J!-Z z@sXdVj5kL>G1Xc!ucTBgG7C%9$CRAAn8|qNXD+I46A*vSi<&3|tIi*Zq}zNcB|jmV zmrz^DI#9o@6j;z!O0@{gghMM4*nRd<<^y6CAZ1j3&+frqE&w>O3ue7QCOFJ~nZO8z z{|Vu8qg}ZByJsY;Xo(;PPIIay_1ZQBw=<{t@ zJJ*Ii0HDJMY}kEt-%EGMhP75UEK^$yKAsgDMnbS*Fi~Q|pj%qmWISM}Bn_K1tm`2T z(Ib7*{qURrz`&y73Zlh-sB=qCm3#DWN#)LE-hhOAf+ybSeHTfU@IsJ;>0)|fy67nI z`uPm3U#0>J%2XH)l_{mB#!_q-o~tL*hY;$@^g%cSnbPOWw6iPIM*wvAfJ~Rr{V?4j znYO1)xrg=u(t2KGNMMz$Fi{{r<{HQ~~%x)jXTtX7K|xk%D0 z%-k#WU#0G*+Y_`ZZo#ZLj;$bz1)1)KwNCKVd1DbYzuMlt>h1*eOG(o&E8cNV8@eJS z6CC!ZrlDb!U#Uxz354#aDALl7Po^1^wFoa%)+|llQ{akKWae%e74dOE8`STc4bw#C zD=>_Lj2=T=!#o85cT2I~mw2I`&inVC9}NuQQ3Z-! z|1Q+iTuHlwpLSC(ZC7(eI4b8onZoz@$OMiJLD0VDcB7U>OF559G4t;_NR~gYNb?Um z%$z0Z@F{?=3Y8Ib82vb3hY?%z^q9$o^tic}*3#Ewp&RJ2@Eg)&YM9dFASbRKOK~ba z_S%UT>*?nT#CG-bc{l_8q|evSbHN_<^CbWsKHy$S_X~7~^s^@rp`STg9JyO9c_*Qe zesZzz3FO?wyQ~rq=%=Km+awm!&o%HuHyBu!LPXsrNa^P)2I@9nNopYg~Qp3QW% zRG5)3mDTU)DHA-Fo(kPSPle-J44o(6ew^;C*ASx?v0)6?~c?ds_|I0HSU z&)3t7!5;N=6MzmMaBradWx7Lp+7F1((?(hZvRNy6C!tW=yBEds3VvmKSUyc0Nk_Ly zD5RsW!VBGCpxjr3f+R@k=qn7=ZN8L_ZY03wGu|YZ%0eA=jh8?<)2X24=QCNst-0oy zn(OKg`g~ov66{e| zwgBkx0rzIQ-=sUFE0+Kf{p_eV3Hg3m@=Zd}6|e6*1Oa8&;sHI8G;GqaIHZ$>?UHuT zvhJL^&{fDdgveObz0&?YG|J|?eC)tO^=)4R38)t7N#B+Zzi-Pxzf8z1+8==hG8INb zGNn|4zU_v3GTVkwS7v{OGmsg5zRZTZGJ6+5hY!f?ZMxs0J0!EKC^PnLn;_?}h|EX` z(@!1i-+ur-+EJ*b;+t?an(4ERsOI1}A}2o%aYS zaCQ=Xq(T>vO^B=+JKKq3Gpf`_-6lYFEWFMF15F&?jyPM1+*DFPRl0~2-SqG|S%l%M zt9&VsZZoaBMs=Er-P_2!%c@kjK2qJT1Jti>*TN&!Ey-4M6D@xsTTLeXa^{>r&BDfz zJR7prx=op7MvH<^`mtwN7GWNQJ-7Evo=`*8+Cp>f&F2E}RF^|@>B{bSZNYMx zdPY7QX&ef_$}+P41jJYwHvvVgyWvK*VB&GXE*5#Vr=_~LyQmEF_ za&_}wB6C6o5|BB~bRgk-jeF4(1xcz``$vyn@NqBKQRN!ds>XP0KISaQR^|-O27%YW zV^FBNy&I+K+JL{o8Q1{&d>ddvX=pe10O;@$uJ<<}5cJdJey7((PZ>F6E7=K>Z)?I< z3SA*&T?L7|!_bz%KwT$k0Xw_kf+`VPEFm4Cxf=%ib;PxW0t@t45(={FFsI5EQVws_ zlf&N;>dN5*I0HG*=gZ+1R}OUmI(&rXFkZdT`L)+_Nv{3!B%kiB0zU1P7?P)lbrWK8G>Xo zBFIpBvl~i}z#6n&4WxIkpPo$63C~1#C+I@y6*ZXN+=kL4@EG}<>8FQ1-mW-^zBEIf z9SHK*G&wyein|`h+}GC=fdzUZ0tx8}H6hTG&Gq!;Lxj3|vJcKcPw4aYLr>TU&}t9EZ!La}pduV_uE7txNwqQ@+osM)S~lrgi+q{Z zB7zZScTihVo$3V7R3PzO|#bMrsJ-g*4lENYgAyhielZns_ zdiu>o>g%__0{s?c3F$XAIGE#NAD4S*wn7gR^S}o#Gc&(M`qnIXVDdi(x&q8mfKPnD zT?Bv`Z(WUc^{@5n%V)rL>&vHb2K9wLzrM_L>&pQE9X`VKWs0gVnX-3mo75LZMt$MT z3hPUM{GP$D>{&ceKZLeTI@UMfQT4jZ8D`!s`qdOnLv!PuF(j7*5Yfc_G?x1j1(kvE zr83are*Dy@Rx_+Y<9JtCaq+=7FYzSx75YWV^!@%l1M8Qiz=E=rjD^aQ(hbUz>k*$b z-G3v~C>L)%0qe{M0XEDSS0Ms8_M9CO_+wb|b#I>GoDs|Mt$OA74KST`Vfe5wIp zaTdxZM%p4z&uB|}!T&Dugxf@Oyxt5KqYbO6?=KO5BlrvPwOE`Oh^Y^x;F~-kZZ^f5 zpWLbGuBD^QW2MjQ@!J|<&wDPg@wpY?*?&Mibe%KdG=D`6biNa=1D>G!hXFFoVM_Ns z{oYZpTz>+RTdqIC8I&u1C|5Sk1&QTux&8-0=Vv^^<@z|wwHS9;VY`L)o|G#ihwK!_ ztlBRiRF)41?3B>PM|^-~UJL%LN@UeJ0xyb^fo0sj3w`VIV%afmh9NZVj5v zD8CYFt0$>hPhjcM9ptLMqz{#T0hW+`K)gGQp!EREpL=*K2m!xt2&cfK_|_?sW-96$ zTQ^zaE3ow(l9jt8Ts-Foh80O(3bVX*BgwYPQ%_dvVi_zy3-J|Xxuevl;o;TsNn_=5 zNR7YHSef*Fz4q3Sc7|ksjCm?1cC2|Sp&8T*;Wkt+s3~e39OT0t2TL&p^Hj8>yXxs# zO2pSQ4bDK%==1e#HQ3{L%K*^P@d)eLa|o32+&Iwxo8*;|L-ylL1eD3DNfSrt;(~o( zh*mhMaFuc3i87+w`Hf{%D2QS@+!zc~t3Gro-1dJB*%Zd}Wlsh%A0@Crc0wv7JLX>5 z)@#7P?s~FW3>|dq;Dc}mvZ2qH%|q}|HV@x4eoDH9&SSvDEYqL)n)EoHN1CK#9IsFMOW?+O zFFe*0csNhu0f91h*-J{$1X)ip@M#9xBw5jiVK&*uI+i?1+KADcqZZIV#*t!LpZIEyDUQ1(pGk-$QgH5Wu4Kv*(u3*S9i zNqOItZayc(g!`8DIc(~2*n}ZUdj9O!^N7gVukbp>I7pelP<>`reVy{^^ZTLlI!1ja zUk%o0+)qoIb68;1hd?)_a6`ID?NjwyLL}>My%s5`dOgV7M`^x>YKV>6Z?HCs?&njv zxyM)>NDK9$i3byhz|`J9?rXae{tu8h!&-r~iz`(Dz5usjt;Ew>g@=1J&5HqaHJokq zNiX4LuEC>14o_&6Zm);KdJW^e zeDmL!Tr1~h2p9S~pygPJ#ofVNbVYshk&`6736GJ^75fC4=W=Nsiv%yPiHxmO{OU?+GmaVS^|4<-(Qsj{r_ zbiyeiiiUnQ9oBw~=vo|ay$s3no@9Z23>fv$^Pf@A&o~SpqVQb>l&A+7-LFA z19v#evlX7^PSwT1z6ABX_&Szzyce2x^J4^Ivp7~wK%KJjaP|t$rUr33Y{x`Zirf{5 z_D0d%C-{|D{vOQ_1?PnZahk@$8sc00s(!><_g()dW?e|7cmrSY-gjJW3a za6S>7J->^yUvMgiG(@Lad-8)gUgRH;Ks4*>7b5PXPX-HEcpEsqGb zCc$a#2$v<|VFxkjr9g#~>2(r#s)F~zZEy5j8=z73_9yo@@S()h5h`aN60cC_Jifd) z@6LV%y7ejZYW{Qqj`^n)9wlsNgJ}QXBW;w5bZ)YzG=I~fph@t z?!m;NU_CsTH~^y^=fph!JTqY8Dn&L82487r8eZ=HG*?eBPOk(Zt0jg&q4LHUi-RIu zkibAXy&ct>hOq1)jLxISU*o*^y%>KQlt#s;s(3o^yho=ua1;r-sKJX$u$wAQ7$xa; z9|RfJVhq4SJaf+BY$o@uw};(+9i=R?6o=5T-|%4KP_Q>Wm^eaddA!1oZUzog*n*eY z3#&AKKKkkQ#V}^NJpfO0D@pnLu?|2-f`%O{V+eKomD}J9`jzzgV|E-FmVRY9-VPrq zhzh#j0v3zO)19~BhdpeneT;VRbJ0f<3XSvLK)@sTm2JcWJt0Xa-+710q4I#JU4lo= zb^yGyBk#hU*n!7nLM6!TjU1bO@NnJ(%!^u#sEM5bIJ*d)^fx?@Gk+a?SvRjWE*)O$;W1fR7l*=5gEs_zItd9|-uC`SyIG+H3?lcQU z#ye6vHWRe=Gf0S8pTb$t?ICQr3D37OuHQeUQlK3tOfpU#3Hp~pHc&%{S{Tfyu-^1S zL7JZl*l$D7?q7}SWKR^sd=;GLxyY8U_v{nX-W(LY8zNQm6!ef{d$~;5CSQH`9rlKs z7V(#xtEJ;aREl4xknXh->i`l?e9qM4x;>O>Uc-k{2VbBQ29gYATonx>Z3kru_ zFJV;-`+-M>ys$+`bA*JAl;;id93{`uc$zWH+=Ofj=V&;DJ%l_a{?27%oJf0v=Yw#V z3HZ*N>a5V_&{?56E+}K>J7%3nad~yMB@`IrzBE}w|3YMT5LvcwgLnlY6SxtZzuh{I<(@$=yxzj5CkX zqw{zg68MsN-0S9Xi^|v5P`>stU;h9L5u0G^e94_}izI)P7is;2v_5oc{Z-N07NYf0 zK#Sl8X_5EagzJg&w8{H->HwHmo}Lc=Q{?FY!?6CF4z>o%!$EtJV6$zrL;?Satg+q% z^X(o?90F5qE82`Z5Qbw)Ovt>9hnX6Jd3j-er%Hrr z5@7%$B)(Ei@jjcAL7RU#;lywY_vzuLD$K9DPVRM2EI?ChEs{=}>RYF3qY&pS$R{uW zy8Q=GaND67a0cxVeSSN1IWo?+XC{CSA8^m6dzNy~rF)KY|B>#y=%x(azRdtij%Qdi z(E5BWWyAzR`*7X_av4X0XqzN$oTUJUntogW7v>iTFME_YIL*L7%>T1#y*4qXeIw=|iDH@9v4ZfU(bT<`5sNhPXs%V&zWQ3kj!S)-mrb zq-f=Jgoe0ruV7&2L(D8;8qJcJAxJUvAOm%qFU3r;$BfJ$sc4vvWCV|yDkSSyhHK%G z$`GE5yAOrIUr6Vf(~!=mX}2M>{|=R{tMh39d%rSPFWqKQ9K9Ef14(y&pVF!GcBIj* z;$)>aYxv9uGob1aGO254X=yzbtGZUAwZG7FkI~X@Qf{;n!hcY=M9)HXi#0&iEeR2o zaqE_7kE&Y}UByzR>xN4~d*QAIi@@D*k$rOAq&azA{FB&Erkq9n!qwZh@XCz*_{WyYgdn205 zsI2Zqt-oM4pkQ>Ri`5fY4duWmi%D{FvmCT>&caX31*?3iZU6n+r-kx*!yXd!^de9K1T0aGaHD9Q!a-OvE%IYiKHKFj+ON4c#W48mpZ zMAkzsT-V;GCtqzjR`DgMF?Deg64r= z2!V%Un#RRm83O+WS39`iRUvTCuYB-}A@J=1k<|p}J1_BNGkrB{bRjvmDM$Cr6?srW z{Y0sRr%8;ac7)Q}sJ%^3qHxu>kYq;^5tl{_l`QRA^!B~2Ny{O+iAZ}5FmRy7Phf;3 zAi0~wFtY@*sc0wx+5AStrRhltsAH-Lm4K*+y;MeVB49~MZhb=HYb9~YOy#aU6UWIG z0-Cc-6at?$6W9)N^Me|xxRDE-bwYyzRy0%wMBtMcX3j%>3uWLhzJz2q9TAsiBxS(e zRu|5|BcTj1hRQ&JvmS2UW-+S7xdTV}^+^mU`rdWCiUFk< zIDaHbsp3*%Q8{NaiSeu?PZFa@l)ez(HEc&-R2^`&AGRh|@y#z>z`7ZgvH(c5Lb{n? zvx2W1Ca*I?a2kKa;UC%(CJ|~2)mgrzZE)b~p|4AiAVj+{x~3L@@YacGWA(Rm1)7ZAzLDcql)%5ddm7BJ?6oWq9cUzZk$UKK;7g z3{Qoh#=KD%&jwfjK{*DMMYkgebldJIoI%@7pWk-31TnVVt?=dt+mhyW(@DR$<8c~S z|9=r(XXMbh`Dr9vR*X;-n$T60)KgeL63IZ6L<|pW0P^Q#!iClJEWQfEk@%hDSnEtD z8zE7B5)sVBs6=Q67{_{$E%tGYRwU8n(|rgeNIqZnDAsO@okqmaZN8kwbT<`jY__=r z%(`*iSTuv}*Xd>s@yuKmlZjQQVx7;*gUiV$)aJ9CRUV`%CSlffX2Gv8tc(2|N{os; zjB)%eJO!X3TX>Sz{Lg~)_zT%qvK_Lms&DpdNdBR*HDbzH+ERQE7}0)rjKOSrV+>|i z*ROqW)=jaXV>Y$@dCHCYM_%Sou&jT9ZI;3g)Xkx`DcdX|HcQX7%`8vzAxOGZ zdpRg^mYRH~%PE9QxA}A<&?)BAuM1cY`~X$UFh4-62}V$_i-06`SRCLDu%;eN90F5y z?@D~_#4xXfEyp6%NU-AUWp!s9ad>sEKjyynAw;)7#4~x$wjXx>0vN|_G2;yrV+`cS zt9wW4)xA%F=+?dca0YdcKELigho+Eq?=t`$KA1Ic&guySqVDBt*P?`fld@;z(Egm$ z5x_n1_@1Cv)&URHL7}fG%4jOS*1(3fU}E49(=QaXvd<6~+DwodM;~AyHtO;vPqmfq za|PxrGzD=`u*kJLY$HGo+s;sg>xCtjAxF+9j8-HJV6tF3FhmPccM08~UP%Fl>J>Ff)hh{+(sHYb6kKwj2lHKDB7$Kx zLrriSB2TxWzyCm(jFb%PespnywU?!y>Vd*@)fv)*-YGg6bnSoSM(Q29O$CV6)6gC zTq;caRrs6+*z>jJWtJtj)5!b*=ST0mPpJuP2?-|Y2>T00C_l&O6ElI3ekApYg=U~1 zlJTG@9F~OA4+)V>yZRydPu7niy8Qz)ZU2a;`3(0FeL;)r=?KDqlJK7!4(A$O3fE6o zA}VCSwf-*1V=D6~rWW5=D2DDiI6#1Yk%Yey?13mXPaz8K9pip)|4n*Aj0q*a|PhIuTFjBs_Gx zHQ`4hZSYE*jE6ap-Ab=rartd5^Ze*>SPJyIk5#XO;@q(XJd8(NMZuvB<{sQGQ=(V$4 zI;o2qtuxW(q&{{?>?8dGChXC#L7xSFs~9_T466m6a&5W!C~l?=?=SK2pGVJK@^~*$ z-AfN-y37)txzk))7fmWY(3nYv9CZTMIunH#==x>PZ^DwMI#3Yw1G6Eoz&K+Y7m(a`@=Q2`c9K57 z9~e;!)HW17)!`%DHvR_1gMCqFgfMJGe}j?HHezZ}RvFI1+dE4vbcK+0Aw-mXmYAdk z?3@7?T1#Tfh7USWwOk#r8SJ-XWCr$0U_m=12?beonA1}3(Zrm0s&xuPt=nDcEQOQy zjc~~a_iA9Yo1+^AX13&9DtN?dOH30t__r0?z_sSCz->(2LYTM*Fz+3aD7Z7(x(`09 z9iqq;+%CYd+Dpnz%&6mF~s1j!)BIKT- zaT1V!hE)cTe4$o3E#7+QlHlUK`6pN+S}^Y%o=S&%6}p4AVU;7kh1(%wiLN9LnqGa1 zd-brA{9w*4CiT+fhUYLI_qCFre8?xU-`$__4&vax+wFK^!yi3IBA;@DMlG6H^Aa{< z;Wl@QVQztnmn%!o%XxLXH(~{rJm8D>$6kx{_-Dv1khJ#cb+ zz_R2Bs|jSMnkgC47S1g|{l(Nw%`BwyV8oh%mu{a6TGn`$>Uc_#jS~tYEJya~&LbA4 zCsbWm<&8Rf7K<0Qt{dL?UgjY&x?WlPHunNV7U2YTo8tzaXDI-WfsugzfRJksd%zjk zL;C!2LnS=y+4RKQ!Ce(}_olm#a-U6iU%IJNZeGrTA7h9{+IcBhG?aQrqMJIIgz&W8Y(}_O1FnlmBnnL zR}1<#Blv2-3=5+kwaZDi^(F>NFvcm3G@d5ppJ72HG3ye9l%JREcP*?WbUl@V7PkB( zLAsRq+}4Rtg2Cys<6|AY_5hp0Q93p)g0XsIe6Mb@y&DLc{PRrmbyG+jnG<1tAK9<0N|dop;J*1rWHG0oofljD(wduRRPN?23fN`yGed~&=1=jg#c!0 zVrIS!oID-I>5;pTgJjv|RC(QHxQJRHOyEul9ulndWMU#n?7+cFL)u5B3$XJA|C z^KHuoZeMFWfDS&mk<`~Z8-cJPnc5EUfN6HL-HaTXbA$cVM&pO+Os#AQ9+-;|`nV(> zm|}a)GmuY?j$%$6Fw{k2s2&>bf`{80#K4;vsNxmi=6J$U&123O!iyvlrX{FKE(tfX zROgktc_FxUMs@>{QMuI{*r@Z)nB0* z)L#)&sQ$9FRQ;6@5sO=YMMA3ndh<`s>y`Bc#CFTN8qT1s>GR9_GO)+C;}!s&oAH4A zHo9-6JJfdc2O|1N5p5!beZ1tGghGAnOAt^tM3uLs(Zrbu42Yj}af7}*2`U`S@oh{6 z+k_PKV3!xD^f(D(7CIy%U2mbL@J@X;)CVV?UnXQ0V->>Y3`4s?-UHbRiI8k5ouCeG z#XbE1)J(#|+gd*u8BXNGTumlaf>b}meBG_17DuW6c!#p-jWqd(EBX-!8%`N>a){_P zK2bs?ND7T2(95Gi7(g#CT^I!V8YD@IaGkHusC!E zuijhrUpO8@sJ|*ehz@nY&^ocJ_>=baWU=RNT-G9IwObr zNm~){6neL4^fg;M@gY*_}ki4drlKFXKaI&L4?m^I0ZQxcNTF>D~|AIk;`&7hu&z(Vzu zrKxP7gb44h4HQ8p_hA+p{Der%9n$BDWUc@}fz`=7+7Hx`5Ez#)gxXB3_9pem{{#+P zeOdr#pilJq`ZNhyq&_VK(779rus%&dAZ%x$-0_8#QM4J141G!ii~OO7tUZa}SNL6w zj$;|Wa0|VXG_W-n*w&})JDdPsokj3MljNns4j?S?F&@r*h80Rgv7JIeP_0x<*EFeo z079-B2c zIp*p2l4zEk1PWh`g>1^n*JTzK+IWElx+tOx=^`~D$xht^Ktty_?`;r{KHz-_IO_Z- z;P*EK$DZSc=wRM$IHp{!>tr{@V#aI=i{rOL$>9$k70x+|he+6(LVG_6WX#K@1_XUd zjAtJvN~(E5QeTzh>b58o{u$Pls97gevi&fsJ8>@nuI7XGEI~|hs_#B<#wR?Mh8?dZ z26`M~$A@G8sj%}X0ETrnXjs?afgRss+gMZ@pN5rEH~ zC;})`3Bj9ijMEKsD1uVWMXZu&&+r+Ykl$;c_uJ79mVmJH44v`Iu=?yQr&E2S z6AK7zV4na)*6yFA1L(*Du>>X#z;JJ-`Gn*|WVM{mR(i1yYlUxa2jMmol=$L6eD+z` zZ99=R$uR$d_}GIBESM&&-pe<>V2ET+kMnvt?yuBnQBuiSJ-tZLN91RiI5y29wqfCJ z&tOh4Q@anSCyCu7@nQ~*wNfJ%X;IQuW)xeT+Lf!9krv&%7U5lX1s;l#ieYp%byE@E znpTQgkd$QC6TW6^;ka-!3(He#ic+x=ZBb&af_fLK?}duTtOgXzXc4Q#9GHf^X4FUQH4CX_DWFtOK>32w@%!-X@1HDuQ4`(KFVn?< zj1W!>U@|!0p{MLz5*I2ix43~YHnpgzL}4ox&49lz-UTl6D++wIE18F4g)CmD70^#OTrRAvfna z*ONle^Y9=*hr7Ilv0V>#Y!l5Ua^V%$98y^!5I)^Po#jDUXO&LnYk!2>qztVB?8A%c zRzA1pVHGx3!SjNK0$AUmPZo<*h+-;CBcfZEa0j2nuyi<$3AkTD&y2dgAW2%fjE1=q z;>02YIF6dD;MUE4h#-1uSU-U{dg9g%5Q1U-hd!6Tbg}8^xr4u4MBqNnJW#=jfl)xt zN;j0mrFzXrG)M!>6iU&^waz zplzX!Q)~H$%k>e>zM6L%Dd#ofTn(sv+YY;x>Es9QT!bqF+^gW^ZoK4k`?K&d0>r_V zWRe~t=;9nobWD;U(;nabborPiE<6FQ`4K-c=!ZeyUk3E3@ef8=N&VH0Kyv%5ufQ4f zSLs84l_gu?eX`Ns1mIEMZF~p1BkNFC0v97U*g{4QjrF+%;H{?#T_I$B0*;f{(@0;y z&ITr5=nz{vrgVhH@(ixu9}`&6ACrVa{W0b=kWX?szKSq=f(TojH;eN%K;3c_rz%H5 zNCddmEEsHVROQ&;+q7Yhq`iKfiL!st7b0i}*`!)GLR00FbTQp#a76BvmamSO(-23t zh~X3VIL8*NU{zI7%rS^p8kJkDq4%^Eo*oR*?KhZ#F|yHQGr1m1lQ+we2b9MnSeiiSD%q0G@K=W+8&or=J&=W_!Mxx0Yt5s>^v})|->a7if zYn*0@uNUA$ack)WZ4CYm#YeZ}c%BXX@d#)CNz*zWP2@sENQ4NGOf|j~StZG^l`8x1 zk7bnlpBuByq~Sz1fGUL z7MDUoOF^#Fe*JD&u@JgZN_i)cI|}YR zDPaq43h;U<0cK$sw53WL3G@_m(6BKRs!FaKHg23%T{66?WZZ-?V@j-e$*^%HRb$6j z-&T^Sj*l8QvO`KMg*kRYLhy!HRo_xoHLk?&=m7Wn68ki#L&|B%IKxVA7V0D7*4UEj z8>&iL0lQU6)wl^`tK!3|QSUmWv`CIJGF~;Tx+)HAFaYchDQ$lT0en{7G-247l4?sK zH%~?$QxI#3vX}Ar8kU9 zl#GvCqpPl~E{Ru-sESvOgJ~-1KjECJ>XPxpuDfyA$SN~&3fZkL85XZ989OSGfaFW8 zaeyK6b=KJN6Cj%oC1;NtHhfH#8+Cw+S^|4hZ6O*&alLiRxG~nS>k$uTu%x6f@;8=Y zqsEP};$ubf?Mf0=RV6o6SC6ka_0*A8hq0rsi(3h6M0E$GbLxm&#*7+w9merI+R?BGW6IQF$yezEf&(Ww~YV)E%1Jhr|{=m;8psr$rlxEoHC?%irpjomoqG;8COSH^Fg@+N-SQ#Vd|;N;Fz7vooY zO6RF(w(UIi(bGCl9dt(LsV#bUo_bH;&Qn*O+j(l*HJzvCUyJan&QsqW+j;6)M?Raj zPd_kiP|<;DJB~jvZ5MuzlpL7$aF+wq+Vwjyt@{P|RUMdiLCt|_*W7+!TJ)|1)1H~T zZ~9x0?3-Tq*uLpcJ+W_k|0nlNzh~9H>2JKUZ~Ez5_D%1#b>H-}@oThi-}H6g?wkJ1 zkNc*-^WN|oXO2EJW5d`(GxpweXvT_phi1HhU$46l&3J3^p&2!`hh_|Y5x?z+X0$(a zXvSGz9GY?9r$aODow$8wuUXq?UNU?8%wfy$Tfco~V#D^C+I!n){&H~p%&lK;pZOMk z=Y6w%=ElgoGq1~hcjg0cmdrZ;!Naq^ef02bbH(A=<*N?QKJmrFv!7ghc=nb}hiAXP z`S9$~ZylaJ=##^`?s&gw&b+#!IV(Ocn)B++ALs0`&zjruU%lsM{MdW$7r*wN`yZ{( z+>cZG%q`CAGj~*BpShXG_nG_n$$jQ#bm}wr?z8&L9p1gq+$#Kf{bkV~Ynr#2ckZDx z<_)-M%e+%=+cGa!vt?fK9b4wjyl2b2whwKYm-5J#d7B?c*orOlx~|+Z?}hbS=1qBd z%e-m$UA%tx{NAtbp1)@6?)mHS+xFMp^Z&Jb_xww~*ge1e``z5?7t}4@d2-$2>~?jFm!Dp@cv@NA;*JCB7N=ZNw>W~|1w-o=KYc^p;te;}Eza4K zSn^ozswFSxty=QSNvoE;-fq>B!56Jsa>~F}OFH29dey2WyKh*v*u%jWE*Z{yeT zt?Z?(c4jXvIheh4)0f#x`)S85{q>*2mt8#jhh?|j^TV%%${@a!Bb^Lbavwgo^`QTH7R=q!Q%!@OB?)y^O`tEBBX4kI$WkK!QhZfbY zUGQA(+J*RCx3YHaKi1c-J+h&8?a-~YYqP$oU3>hu@c&f1_RW-~Yim|dSXVT}SlImp=5GA%oZO8!Uy!@;?t!@*n_mw9O}QH*x8-gu zoRquq!dbZ+JLI+A)T5yFrs|VhZ@Tc*)|)Omz4fNnWvw?oeL?F@+b?dtsdixNO^@Ms z;SH@f4ZX4TrhnYtdehrePJAtzxbn44AH`q0wC=*!Z@RS0W_@s%&GWA8vbpOWT{fSE z-(37U&gimv^{g(N4=wJpId=)dmvz~^^rAo%6xH4-pCzWuSo3JIt0H{t9NW& zV(-}ce9exn&o0=pb>RIwwtnyo{4egm~vGv{ec5I#Ye#>nmK5n_~mQPx4 zTla0tZTB>3wXNv*R@)AhwA%I+eq&E=we6(RR@vlC=jqnZYcD=W{|L%-8`tL5<(tr0C@AluV@9)3+;8*>3&-%Lm?jOGc>_7c?pPzEk z?puz#X!jlXO~>!e=@WLJIW1$)#CaKe9Q@9opRwoWMHzcuyDwwU-yX==bL7d4Jv*O; z`-O}>pT3o`=lks$dzSA7{sTYk`LfHp4;FM=_rd1#*M0DQ|8*anf9bjpMqRb;gILwN z4_+O=?t{Y<*L_fFulwK}{JxyL?t|N=totDMvcq+Wp@-{U8hyC#W&Hkl#Pv5oT zv-iGfb6|DP??1otobNv`9{m01JFfcv^NWXn|M?*NPOkd?^T)@0|M?mVzsJA-{LW{; z|9tbt?>~Qk)AyhE`sRg$U4MGv;INF92gk=&9(<%^<-q}6Rvzqi*2;q)_FsAM(8Vhc zeudvBm#jQE`i7MUD{uNg>|J+26j%41O%xkoiNQh=SH+H~V6X%Wid~e5D2WtX?m{c+jq_tZEkt4sAKnYMQ**$6*cdD zuBbKejr+Nx-^QFP3JN?|RQqPF;{4bu{4vyuDV@Rsg(8`)sr+5PVIA?|nY4|l(7`=R^YZ*&(+mc;y7a(Zb=$>(cJN(y(B zl>EKBq$FT}NlAy3B_)5HE-Cr?`;wB&Kb4f6{-dO1>|Z4%s{17+en5A3@!pS~;=Pp` z@!qIl@m_A2c<&;xB|^N{cB*)8^x}t zKUdrJbbHNRPe;_+^>k^&T~ANEv+Jotn_W-)wcYh}08rOy*V7|zyPobGv+L=ayfi@w zUasiXEK~9R26MB5ZRTcmcA1+s-D_?ZaMIi?>1%T{;jFpYsUOVEqJPETubG?um2YmA zc-`D=8ZiB$RgJ}$tZMlEZdGGqfmMyi){Sb^ey33l3qZ7KRKu@*qZ%hWH>#2HZlfB$ zeHzs;b8b}Q!1v8-=6n)cvr9s3&6Y{AHCN1wt+^W5K0mhRf}OE79d^amY;q{J=HM)p zIU8H^^$W2z8(fO5dHVNeb%I@fsx$pkQ}e}_o0|JwX=*;Pu&Mdux2(-;H?uak0K`_- z=6)Tl%};i*HcxT1HuvpoZEn`j+T1+nj>X&O?^tyD>5j$4t9LAF{B_4--rsjDb_jPZ z?3>-SNCc(esccR{xz&)#`intyVw8rCR-DpxTgX_3wCB zs~_i6t^Q2lo5*VQr^ZyPUmTC^ZRh$qX7Tl#IGH#6EwOvUeaYP$_FCV)VV8~F8#)4g zQ@c0(CB1vYZ;y3v7;~X}!(BJJH#}O@z2UXT`2O`C4No*_WtG>ZmDN4_R#wOQwX$jx z(8_9DL@TR+s8&|NfZr#rtS(G#Wp!d&E2~@cTUli-Z)LUWi&(4P2V<@FpNqA!zYuHn zF7W!LSgSQxVy&JQ$66%|aaP;kh_lLQ7-zM{I?ig6O`O$2m;A<;J@Xs?284W=-#Bc1 ze&Z{u{Kn@a^Bdp!IKT0@#rSSXe&gD!^BX(w%x~YB!n*EO|Q>6$JG(=~lOPuDbTv99U1WxA$Uw(6SR-i|VRbWN?-q*}iPY+IXZ zePDg6b*r>g>x_z9r4S8&J~xdtl?>lICkClr*>1l{D`y0&`264^J&=K4D8q^BVh0n*SWW zyoGb~mNqLL-E5X`JZS>$$yH49&{^GPvkHe>JI(&87X5op`HcNm_r%v1SeS+_+ zpRuW9amJ>pO+d(B{EEg*G3X-LM%_>xRt;;G4QPY^F81 zVKczyhRyYMH*9_ke`NCu@L9woo27Fe*>wH%kch@J+k@fL51>)1AZ+r+jR1QglEwu!QfZPP?k(6+iFt6js_vfAa>&T98tgRFL+49sdbdvI2} zxxl><_;MxA$YM$+HntQgl zs^{5$Pz%rYx(=T0Gl481rJHAa?I_RoPeyyTk8bbUVOb~F4)q*dJN(eswL`!F*A9OV za_z8asB4GCK%T2>2j^M%Zh>ou+RI%#Sg%0&wRLQJZmwgyVtXCi$NTHp?mbw?w#%1w zY#o6bnRRTFPS>&ZxmCwD?Vmcf2cM#xnYr!60nIxO$@J{B&U{4Y2B%hZ={Uj6-pR|% z-qPR9{z0gjz4>%A`<+1Rm1g#fHk#RQ*koqE8L-@IX0JVHX8+bVX7-Oe^tNyQUT^!( zPQC44a{)qn+xv*U?bpWjw%?lA+kPidFR8b^u(7xOhSc8n?GN|1kLvB=APn?yXzA+V zU_Zjc;YzrN!@?+h7w6&d_C^nf&r&@cwgcv2FJIi;JaxX98V-~aGd!d$MNAmIgbAT zHJ|1N#?6m;vFQP3^;ctN+irwY0?`@Nvs{ObkXRD}iI{DAHE3c6YRQ_$_lh$-EL z8B@B~pE;#_%Xz@TDc$!Rn$o@Bu_@hqUzpN8>Ee{`^ME=xr*u!eGo}0b`%}6vONr?5 zMV~o6uGQGs^RJp4d)BD8vFFjo8+$f&*w{1BabwRQVEPz*|KY}-OU7^P*;=)+=bs@P zdrs1A?CE9h?4+yf>~y}dvr`irXQy|7KU+CFt?2FS6zbya)L@vi(=az@r#LTXrv*MJ zt8sR^J;1fkwo$Hq4tu!vIThmC=Zwy^&-zI0&vfnc(=69M?dH1n8NJZ8Pm4vaeOdwj zYh3$yoU-V5<($%`fm5`Lr(3kkMBvu@(Jm$K(JrbFqFvmz(Jqriqg{TQgYS}~U1l$i zcKK>^v`bD}v`f#zbpt-@v~2K^I+nw`*0UVGrj6zBC%r9)r}VQN{+5g7@ZEzfhaUhG zL-9Gpa=2ZDy48~e$Xs= zwoM-C(K~tMgFeY4Pxen9d2wL!Nb}LjBmWwoJW@UV*O94B2DyD#oZ;r;@ZtMG&F_!; z_Q(0|zy31c{monR-M8PL@1FHwzPsHU3*3h{T;Sfj{Q~#xoff$7>9WARufqcOLBQOB z3*4t=wec8uCVi~>YWi65TKd>N_tM91u|7EVr#1)2-e`Yt>`frw_Tbpjoez#3=y-5! zNWX()U4|VT+p5XQ@n*`C;~OJXh*L@Pse&?0CNOSFRMD9UXfOwUJaF=Ui({ndR1%h>DAlG)61rp zr`NlE@%I6qUVplJdM)3+#_PRZYrN{GukpH^vBs-M)*7!4r`LEb{C17k5@6GJYrOiJ zt@Y|*xz?+W)mpEnjn;Y%+&@Zn?e17rjfZ1ZR*%N2Ce-m%J?!YIO6u&Xng?X}^HfC) z@>E?L?y2&7-%~Zs-BV@m>8Z+zTCLg|zgjhW#%k5dS*umG)~!~3mbzLM|JiEQ;63=; z;nk|c8LL%YPpnqGc5=0!CI@?m zE)Mo~UJ~p*5J+AZ?A>f(b@aRB+0oC;yQ5!9a7Vvl zAS}6~Uji^4_}^lbS<%sN9Xz)ZLFfKT5~5BSA9Js@g&dO*#j^nkj+ zfEDQh_t&Hc_-;xM$WKcTsP0vjju=0uR$I`J<~jb=4|r_N(S2O z^a$Fw+aqY;K98Wf$322(W_tu}KI0LT)h;~f$9He(&WBorS?-)BYF%%M!+mav6Z~$8 z-v-?2T z=d`knT+!At@^7W4_BdY;#9NH4~!HF$V z9|4_CZi!lVZcEhO+$~YN^R`5dy16ClM@3rH-r8wVa~h;Yec3WCDz|l7RO0v5qdVWI z9=+gp_2@_cRF8fFm_Mx^9aYmTdePfv(RY9}d$Z^TJwE-sl*)aB2NyFH0E#8c6imRDD zaR+NGQ0q_pYB08exGwe=up78iEC{QBvA{P)cuEx8*7*M8;ev1sFmn|IS70&l6VPIW zAZUQyK<|-w8zQ#Tu{{eka8?MJxQ|Q(R`gZ~g+O=wHfSq+zKHEi;3>-N22{WZ{Jh#- zJUS8z>;XCfw{X9;1Maihf$diO_)#0c9|*$d4!{lUTj2NNEL$mr3BY!sYfFWY2z&>G z+9-r$KyzSuYlScrc#JXy*a{JX&tj z`D40dC{MY!7VT#P%a#3y|0jZ3phO6@)ZkBG40`*{?!tf&IV=TS0IKt^iN) z*~Lx}<^Wqd;VwSlJM4R5n~fJzHAI=89^yeAzy?qO!G8-v$pb;yhV6BrGq4|@qW~x1 z>3u;Mjaxp$w&4cGR6$6`4J>njF2F~?rPa8-0o!fZP61j1Zoqxq7jp_&1ynD@`2-df z2*QWJSs)UhTin38#?}nJQHbqgd>#jU18DXM!k0j!{rL4K!1oLE8_)pX)%+YhdvRWY ziP+x{Sm19lXyf{(3gHIefc>txPqwJBLYRW>25dh7>H#P4*%M{z0)Hhcgx=E>f)BRa zfj$We!8abiPXK%urx12vdmqTf_f7HlBy6>~y#LK_IM+4dQ*{+W4U`)WOo>$p#{tb$ zg|u!};l!!{k5i2Y4KQ^2gVLWt?45WWJw$Nn&2 zKA`TP5blkEua3nVRse4x%me)kI04&$D?kRyj0743Gl1z<`0-Pq5%Bw)@O?lBR0F&+xYp-~jfcfiBpe z)IuR_1FkejA7J~vQX!ZFr@8f{RfW>5-hi>2iHUjT-#|`qpS?sq3 zo;pG+*cRctcCHdLhSDby0wAkuRabmozkdW=0O~$LU6S!5(ItYA z3KRl+?;(Z&w!kNU;hqrSFYLSA$L$5cQGA|>tpo0}aPfza1E+EC!FWH!KHwto20qUP z+<>F_dpz(M=&nJW%!F3Y3W6F)2ljk}`T%u+ZRap10M&qv-y&WBPq2R<+jlQP$3SiL zOD49rE~0ONEr84S=)Vgn3(Ud(cR&+-|1EAUnU5F}xe7k)gu99wqx}G0A1yp;gxCjk z!hZKAxb+fnZi;h&tvR-ru-yRIE=CMqC5U53Rh3c!xKlSpc@!zk(kYjl^~s`+-s5Q(ziyL%D^&Zv=W^|Li!7bHIndA|T>J zjB~&)pc-)I1BK8F+lAPE04RYS$Dm1_Lg))Ue*)|We!*v3;12dTVB0thu>eQ`+<|H$ zVlI&Gjq?iF0b#%<75o%v3QPosd7-a?uO_08u>Bs0d|wbcj>30tg5U?dh0ossz1{Ip zJHFpGS`d=3y@$`sfsy#!G7z!lXB^8O@yHGF39xxzA^bB6F&W$AKz;0c0lR=z?h3&b zC<1zpMtgQZpK*v^4F%!njtXH3Py-kN6d^uu0_<%S!k0i4um>-p`x^)VS^`&lAm;Z3 zC$`Ig=G}1~yD5Y@Kwsc5N5oIy0KN|bUPGA>_+`cd|Fy(+32+Xmf$tCN1mO?(>R;Zd!(sH_ z3Ox9>9Q_G2#r}QZ81O#OaV0bc)LMmp$95&q7yFLm;Z{A6o7}~C1egQvz|=d?*lp+n z+iYMf_PqgX;KHARFc(Pr74-+Qf5G|2_A8vLIN&vWo(A*>hW#c8$v|!36v~X6i`bHk z;{%t0v-ms@coV3VA_xP4C%~6LBG40kb@B}Ijd9T5hv39^J+^K@9`>JpfPV0V?tuVc zCq7RA%mLL&)MKI`gd@h)Mm#?CjzSm&BmrhX_S?`B&>wgW`06c%5C`-D{;^gFQx%8@ zz*(RK2o~_fAutd)3?SqPe*m@cx3K_*ePMM!h2S^{^+%z{z)+wrFdf*A@2>-sf%Ag} zVHq$1XaT%a6L~RmoB1DMoCj*7-h+TVoS#4-4VX9qWr0<|4}d$$SpjixVeA2J0L|XU zd9=p&*dGR1V1Hv%^fk~A`;owQpdDiVqT_<_DnOI;Ta0jT4)fnU_f34uYt|9p{40DeG@5A+ULW4{*s=%^o#53~jP9);gzK>tV3t=R4a zoU#8m>N*?SxA55)+WQXWW&zgNZ(9Q0A`ZUO7J9`wd~YP?96$!}5AbLNd{gyASAw@9twe6yH6;FCqsGQwTo+K7$p4^AOBY1}TK;fEDl^zDq%wX25Rzt^EbG z@jPNKFdwM<9rBZ0#8aRx@KX-XJ+Kwuj|c7p6Y493G@t^9kE9V%m5Aosh?pi-G4mb)5+%}9@ z_e2olfiHn5eBb*Y-{p8Amjf(R&;+(WBW8@jb|^k)0W*PgjQhO-1@H;* z&Pnv$3Dgnz31|Q$XCpVyLVd9P7Kp=sFW^xoVktg1euS9$Cvw_W(6bF<9`G&j7CvhL zx7HZbfY*U(ZJaY1!8?72yq$PYxo?E zZ7M#G1MUD$@VQz@Mm_}6$0&qJK(+_;jcrS8zr#2uV!H<8hb!V1D(!> zPhooj$WKB{237(mXF<$3Y=M40JQJvn@15aSmP3%ceTsA67cm;>xHbU3?}NT5f_{;Q9Qy?I#r9onqk$Cc z-;PGifv=AOmI9yQb92BCSk?%A*b@219GnB-Z2%XGgdb;PjRhDD)CbPZLM#Oa1J!}! zNmx^U1AX2Ax(1d5_*qHeYv6NyKMn8z`ZmOR2T&jQ1E24O!&f8Vhu9X1$dQ45*iXfG zo{@;B*dF;9Z3b!sd+?ohC*lTh1gNzOzfT5i1ZM9>-LdV3?a@8ZBX9}(ld(Ox9(@AD z0NLv>o?)AW?Q7T$!*=mn5IH+f3#e7k>aMZbygR&=hLiIDF3Y*}ECuURv`n=*MXz*B#N;qFxu>c%0L@27P zSRkse6Ck*X4;qT6mI4L4%8QA3)aw1pis{g6VS=u*Vj^l5C@e*>zNJsS3;cpTPvnhS zsRcLev7Td3nW+IceA2=p=)oxsdSR0A1xNsFEaF2(ao{{3GKv=c zsv}P?Ep+zCB6~8G4H0S~2?cB_DqvLkiK-P81qD)&N*S3t@zRXS3X<}sR9=u&l~s8` zQcQiMMwQf&)ZkxvLGpCGub?tU@?s@2w@MC89vV}Xg3S9aR9=ug>+M>V9-6#n4+`3r zb_zDC_+a>4v0&-%U3pRZOaj z_50FJ?hgNFPkFQK$^{6+o(|aP&X~v|K zBx%N^mW$GiNilEKm(*rb%_wQcq?`rPj7dFgby0$okb>By7D>iz>=+}>n3S|wnlY(K zz^vVl2_r=CgH|RXCn-JK4b#tLL}V#OW%YuIqiH5aB`uI@DhijSnKBjOS6xl7Fli`J ziYY0mNQx=xXY892DopChkzz{Pv9*$LR8r1bDW;?w1(v8x_9hy80;QOeX1{jTQNqJ6rouA@>OCiW>kh{6BCMyf_>GCGX;#PYH{-VIaMuAo_@Tl#mT!LSG72K zbXQyhs8UCg7kgE;IC<`psum}2JyZ4KEUuebSF!Hol}=SHPM)}^;^G7F!&@r-TW{D3 zRG4rY#qG=Y$d`*7J=5VW31*_O%5*d4snxMqYEmW1V?#_eBhS5Lsu_7OyHsLQCCQVw znrcQK-JqF?M@vSj%!opyRtj{U3`|WB%!c= z!cca=E?wB@^@mJ15`{laHDVs$wuMR6BY#ga&4|4HvS~)->u0h`f6zGjc(M_Jaqrw=jzOIj1o=v%ma%{pM>JbvM<>=E6JEt65mmhu_5EJlVnV)8PG|hF;kCQ zXGzASBKDA+1m7k#ZLl|}iRJk0&6X@HdVaS;*=kC1FdWeoBcqzOOE(sUZ>1VDH5E%U zCN)`fmDFZZldUvkQqu@&#-t{#G-FcJVrj;trnAzFNlkxCHD+q6k2|0Bf-ucJNll%l z8Izhmf^lD_nX-?}uG!Lk9Q3x}vegw0lEHFGjA~oPk4zMH@gietJjI8M)LFuZjMUn~ zk;@4n^$y`fMrw}cLq_Ue!-tI2ex45*slP@yE+>HIU2XV~QFQ3Thm4}dY>+vXFZ9Z< zO0EQfiyQ)Dl-SRQNEFWTAY#!WUp^5th$6r-9z-k`_*p&?DgUv2B2v9w4?Oo#zGyx4_kgl@%Cj>6p2-e@c|YmqM#azL zK?A+Zr(tTZ)>CGqNb5u8(vZ^E%cUWm-;_&3D)0QB%)TLwhsmWOh3CknA$>Q(!(Oty zn8tP=xiqBh4RUEn+0A<4Ca9`N^W{rrDi~If2s{r7FB=-wyj327DBO`lz!co0x8x>} zcH^ZJkZMm!Cm_An?<2Vhq|^_j6OcyNOD7<87D^`|U3Td!xerK@QPK%Wi(g46AQjef z#+AgXsL&m&$Iq{WybrS~4a=p?j0&7C$6ORLq?tM3}!dSijm8`qH|wGgiQY zg#9RBQ&9njLHj=KR>FxAbIY{ft5Cfd^EQ5 zg5-@iDlbTW=QOC&LsLADtGpoj(y_`5lGiv6##0GpI|Yl{|DN&aV9?bR1EW`cDa}w6 zY7CKZMCNtFOgAJi+-SNXdF2Ds4arMghnn0*^4fi-8X#{q#83NZj@$B8vIq7F{!V~7)fm=-Hn!JOp2Q) z&6u=yTADGbtom36t&u65Vl7_}gF(n15q?nR^f~1&|dOne2O4^wr#gvq@K#D2pW~DS!rkXS< zrlgtArI?apvSDgJ1Tz@+L+JEoo2uMxcn)SgO*bqG$$3= zj+baoO6oB|qB*Il|3?zdNl~LFN;D@`b@P&FZcvs=qB*H+skdZvrm(MkB$|`TvVA3* zlhSvf%m~DmYU&%8DGcO$m zOnME8OPLGguAm&lm(myk(q0ucUN9B-N@~p_#pqW-P0=I!RZvqzu?u8qfo z$b(Dh{GE@Yk>9JJrU-TQRZttER>&*p5V{z5{8dm>bnBpf1+}J#_baF?O#4f}%FY;i zx`j$G!x2q4V>1|NH&j6 zH)DgldzgupBzIqFsu{U*ClNQ3S2WU&#IP-5p_Kj0-sh?-=Pus4AR5kt$f%Y_d={BfEuiNNRhS;Ag*QLJ61=HK#^|wJy0IwKijjC^ z78N3-85<(N6iG)WwX@%Plh9$LY}Hgr#)gzRR+2F(mi;W4gldyIec~h;lM*fBB^oo; zZI@Byv}&WV*6kAiw8W5i~oH9h~%R;bljrxt~SFz#ECswy%zs;k;G*(9Pc zSS|@u+YEUmq`F)3NJxDjPM6guq{0k&B&5bhGi23-RH>CmLh8IPkAzg}Hd9t}Xrj4A z9to+oc9N``ka{fU)URto`7PYJPMYBQGjZcs;oaeN}m_n4E2SP?4N{c~Fs@_wk@2Ip60&MRI<3 zE{AR>IS2EgB02BlK}B-D&4-G~xqS+Uz9KmX@Sq|&=Yq{}qaMid2RER;<|F<|r}*+dipS}c}LMEXA~ zpNQ1|`x4nTBJFSZlmih{{wGUi6B#Dr%VZOg>X$Faosd;i{mb_jyRWEZM(|wkFPj>b zzFjVbC{$l5s}@Y%AIYI0T_2D`L5i-oN=8FS%NjWpq~hapC`iB7t7SBVlq<@iAkBUw zkAkVS^%@xsA)Us`p&*4`21VDZDYWz*%U#x1c|b31XjJDoc?6;`O%4H5<__ruq{|`839e;j)P%ohYo}N5`VZ4PJBC9nQbLibW~77m2TklrQh~pzW~6}?rkargem2#N{Qu2ECbo^n4_8yo$oFTP zYDS)a2WH*NcIC=nQ{MV8Cb3eDjjC{!Pa+Coa!HtCK9xs8`uS2G390F}JQC8@+ec)b z9a7p*c_gH}2zex=!maX1NRvOvC1K-J^$b}ZOL}#bM?&hI0uslv1^E18N!fW_DolGz zGc_vrgj@l*}3exBTITWPOA3)K$GMT-6IkU!>Fc^wW2US|$0c|+&mM{~s;ca4(H%79 zTsbg>#;B|mo^*K0K0i99z+zr>q{?>LocfNG8qAB1)VqTh9Vz-YFFI1W;|WfEN6L@p zMMu%#7(Y4|AznMlsj(C_`tqWqNU|ApEk@!Ic;f>(6ZKajjX%#k5LYMJk7NFUV(lw0 zW{d=*zc!(`C>*JJai(PJQ&nUqr7o#zaZ+M~(^X_Ar7f>&aZ-}q>no_e^d#mN(+&;5&?y=f#wV7J1spE}mzC4}rTF^v#`Pr|oY zhb`@q6%{vnW@jm8qVR#~X3SF)Of@5qJ!YyId2aO_6T5^w*vV8g^5hg#&B&vVm}*9z zT`SkbwvmT>m~O^AeUYhVPH6zb|{X0QWmUiVA(=XQDQ9>6KYFk+$qnAfjy|5^p zsA^&6(Y4N3sT$|Cg~?~{R;@63YPSnjsx$d#c-0D%S01ifVe-W{zpqj? z=z395)e4i}eNnZ-=#7q-BpZuDfmCDWtt&1| zIx>0h@E;@@lQ;h(&6vD<_m7f}Oy2JOlO$vE{)RtGGA1>gkY-Hk`1lt|M<%tj|5cJP zspn^D#-yf{-!Kz53PUBZAA&7?Ctp7(jm^Ya8N4LFoO}5C{*Fn4d>W(TKITa$3ZL<# zW2(H&i;i?!{|cwRBjvjCq9ZLY=0!*9{)HDE>Ak@pocfL;zyw}&6cbkRqhnd!WnOd? zHyT{!)OQp~0zro#S-)Bw;VT3Br43T@X+H{bcP%5V*)8Fh-9eK18C>@*0O4 zv54U*pNL|`YWYMIC5q$|QGDo|C%ca*GR&4wL^0und?JblUGrr(jp9HG4p^5+k!Z`-dJ)Wenr>!PxI=*qb5Rhbn=>_UmugNLu2v|q@}%6cQq4)P zTcw(lO7BZGCvEn=A+hbG$URccNr!cdBp#iz^odfEx7UTY|iX_8sy?Fj6 z_p)_21tf#zk{DHZnje`c)W6B8W=x?Te8@1K9dg_#einFxzvmz!csnD6d!)!LuQ!Q->D?IFC8rg;Jx~+Nm0nn>BW@B7usp` zxq30^MpZp-R7PivAf4{M0$Ne{h(9fhD${t=QhfQAH!Ve)rX`&FmST<b)5-{p(X7s6E<|`61P>w>sXmcUL~-e$d?JcM zum4YWA5qM4kxxVsCQd#P#gk+5i70wBej>Y%C{}p!AYwVta`{9Q2hPhUBGo(mgXfVd zN=n%6U@p+RAFif^L;Ipodd?Omgo9$BJPM=of96Fc3ca3ksTEWIr#z@g|4jsi{Jx?H zu#5*4#eh}{4z;2vaF7QT#esUSai|qVg8e+GC>Ff;I)_?Oo{-6disC`fY8+}s5utu{ zh2U73oJS!Rgb2<6`$_94%x>8Gmlngc(qK}ysWAc+$fXbkdox+JV2Y2DLqSTL|=A?aLW&aKI$`h0$b6azl6;8sJ52$%Q~ zQhexP$*qPIEw1t-q}UNqms<@flH~Ctq_{G+9=94&l&M|6l9YnhH$yQu&|y|US7_Kw z;otXEg@LNV#nh@(86(Y)yeUPYbpx)oWYI>)lak`ik31zDS9wxW)bVS` zv6d8fzUN6vk!Q@C9BWCj=R3ZXY#m~d6~|gq{P~I}B}JgnMv98>HF1Z;g3%oIV`$~Q z*Y$UhRCupRRY;6c=hMdA$V9=m2`4fZX^!wAqZkv{luOMhy0}|&A)~lr{T3H8iYR$} z$S9U1zRjg(6h&sd!-b6E$H-=!$XMiPuH-^SG2;h5WE3qLv`|!hGv{c;2^J~J&QZRH zd4-RlRBUdH5G`ABpb-U?d>R%NHpr!+c<{Ge8j1uXZDjTh#enT{X-NI%tz_1QbnhjX zh7|v+TpH54b8DH6qS?uExiqBjV!1S=?8r8Xil6Ct{={WD+6F;|S0*bXFsl2Vwp@sy zZyrQU;Y;Kbk;ZSxCnA;iYbU#pNasuB6Oq!d$tNPM4{R^HX{7dT@`*_APk9iraeYh& z*-azOua{3ms<*LK2wf{$oO~|Y(yu6+48sZ^0V~hYsPcL82t;AK90I25ucZ@^nhT^8 zkcw+`l-!A=-qz9yNVP7~2}rHJ(g{eV3DOBjotxwkFjamjoq*K%n{)zFp_N@FbMP16 zv7s&}w{`?cg>&$#kQmkJ&5ukJ=I|n8sy)Dmj1+u_4;iVsQztGbfRwG{Lq;m!#)pg) ze}NAfso$zImp-FNFqRh?iwYa~kWqyAnGYF7iveA#6fKN*43?d($AhE_(V}7!W3<@E zk4zMP;YG%xMRj{F&7^2y&xeeng_aK)MT^aR$S7J|6ho$-&rLTZrCc%H zkW^vcO@AT3Y$s=T*{M)1_BPRe5Q3lKsUvo0{-koU?{Of+TgS>Gto&zes&&_o=+cah z@|z={L=>9zkXaKZ%T4k~NTTjNWz~e_+TuM~BqZHm<<#S3Ak72}%0hUb09?-uLB^ zkkmK#mQ@p40Qc%6i-bZzqrS38C>*qR)?d~tOMs(s(@ih}ffm{p%Mt%CFvn#rspdun z_v*)iMiiFGr(r5Cl1oE69^GGNqe#hT<ivVro?MpusXJaC5Fa z3Z~@W6FUz4I zl{yZW(GXJT4p87FzZJ{u<=>k62S(+j+s|eFvXN1h#jcW#Md8O05{;P>zaA;cm^8TG zO_DLGZ`1pdj7fJ3M@cd!#l^WxGA6BsjFx0fDjV-1$(Zytbc{q}rmXH`B^i^ZT6;<| zCN(wuKq1&wrl!)Da$ozf3PWUR6Qhz^OEndRkUH2 zjdE)Ks;EU_@T;L_G7NeZ)FjchuY#K7d+}9JleDcSz5)*+*^hb^)D#k?y$Wgy7sp=( zHH8v$uUF95w6N>^DyS(0MZOAZ3Qw0nU11`?-qO+^0m%nfQq_Vn^fXdQFcXDQrkk;l zG22u#3I~@=H6y7v^)|6>Bx65Q%}An|rkaubEPPC?BuOjLR5OyzZ>F2Ek+++#iIpUG zk2TedT=@+(mSrj$X-nVo%O2}1{VLcfVKOKN%A+tUWC1TKQP|0ciYe)99#o{RJRVe} zxTid*NQG_uIGjOJ<}e;qq}E^_RHWdIJg7+3r}$7YrRVXWBK23F#NiB5MCb~t?iIZyZYHW-GtL2l3!WFqBO!>|HWi^L1KT{qFsl7xV3F&-{ zMpko3;k)ILkhW_F$f^mcdVxF=(sPkq5~k#SfwG!I8r~$2gw)$7sFLxV-D4C4^%{Q~ z`QPLD8cxv`RB{O~D!f22m`kmgs&zc5NZY4*P?5qrhHz*g>3k^?=`L~+38 zW7$L$1?-|^6HyGXkCshD5y0*f*+iuO`Z2PJNc~|`WD}A06Q*(?V#=QqE1QUPuZ@#U zM5@0Mk4H4BCfd^XUwo5L<#18j(5Ui%i>-qK8sN^CeoCWR?b`X3MArY4e6W3Z~B3IWlTN`mB{KgMt)#85I30lUe1D*?G@Z2t(!57?nGl zC!Hwl;z!36eTf$xsr!u-PJKs8cjZM#s*mGEM-gBXFFJ|_r+Lv)WcZsG9Yu+j^EjPZ zS}vQ&i;kklTwZh(Ns2+&x3UmW*<8EXe7uH0E{QRUMDZgNg>$^fSOjUkfJ-weekAiD zqv%m*A(xs_>zjA2Ny?Z5DB9CPj^l<&4#8&Z7Zl`?5a>)YkiFqQXRC9^gLeaodGW&5wj?J!kWcIid5 z|H0UVB%-vjQPuU=$R-hmwsJ|BqMhWCkepp@RhI95N54tX1H8Z1P_scOC zg?rM?nM$44Nvu5SGfk>FDbsen#G{iY7f3ZHHQteGPC6X2L1N`ef$OE3llE$Flz4QS zPe)2MC%ye3)tr{ZKjRzH}_X-axQu3fJ92!Wf-pqrF6y7L}L#;^d^Y~D)@%AwfDvAQb zwsL47MT8rms&Eh;fmpy^nB`LDO=s@g^wWUy14_l_#z^4LgGLmhfylON?rGLhgP816H(J|#W-p;A96aiGc=qM6=%ZrX8LcJZF z8cUI394|VG5UY66QKTs5MMn{%<4#U}N3(*Nyyz%`Wb&e;NYZ0hC9{SX!$aA5LLw+C zoHbNVVT>Rfc~OZ%1|KRGIWF;_qNq{AgNh0Cblk2;g0;aC6F z;V5Db`Qkrn9Yxj8{;R`L?l)iBKGYp-i7#gE>%XC=;c)C#z0gI@6r4vw$d?cNKqMq|X$$da^Y_@a)icC4u z2`JWB9g^GxiXIcB6Hq)zl|#T3en&b1X}0@e$$da7oC5;fnpFNG4O5{S`Buftu{ofr zaIL3mG)9HiKf;j?uh`;8$J9HQ7aeIij~5*&+arTh-;vHY@uDNuKj1}2F`(yBPK~9A zFq;=0#fR_t(XnXp-Z4&%rPvYAi;f~moiFh)q&uFQQsY$vrC*%utY0lw<7yE5Eu|>D zz>{4i_Ah7M_#+Sv=RstQCR6wlio!acge;h8CLfVhvH7h2$>p+~oNlTr|K&g9zR_Qzkz#68N}OB@ zQP?7nf~n`M917CWJvkJls8;7>bSG(Rgd7S|S(F?K(%VKk6r{X7ITWNpt8Zm=Cyi;n z29_(V^Z8XX~v|r2H#0)GpTHhG-J}&3aQ3yocmRpF=?vBc}Z<1HTl8V zt}E@jT0Hp8g9 zsYXWC2;WOK76lKf#!NX|q#2WTnq8DsZBox#X~v|V>X#%PnG`f#nlWkU2WiHnBGqL{ z)g~R~Ni}9la{EEjkx5HmNi!xjh5v}Ow0vO<#Ji)|Z^qNh)BUio!I~(0s}%cJgR3ne z!gWv#lt*Dy+VP(_QHjFlpSe&m6>5IrKt-BN`IQ3|DfGc_9H>aIO|EdDBK3Ox!GVgj z?0l626)8LG8V4%U`I9^@R7~})u5+NG7|^bO0~JMt$v3ccQ@)&sVB9TxjNMX%E4We& zjp{!pk3bZDmP5dleqTBP>HCdh$$dbo?k1gpw5*a&U>JX;6Oe9Gr4x`^Pe~^rjoy(% zz?9kSrsUH|dh9QqfK-?S0=x3XhXwsS5Q>j4&n+HuH3N(=7-2uc1C_1#(m3=U=oHa@<>R%W2(t& z4ykvWJQ7lG)9SKnLh22WM?&iTMIH&Mx1X7;=8$@q$|E85-j+u~>P@ckT15+5FFtEf z_V{}R1TGbgzt105D4W2j;x}q?Argf?JcyW@{pAypqSwhMB2^d4Cn9CHt|hy(N!`Bk ziAdpVJP&T*1yX)G^#va z9)TzvlS9B%{X{wesrfx~$$da7j*?D5>OCNxfK>aJbOKVVgN5WiAeBy*PC)A1C5M2` zlW$5VAT@Tdl-viTLJbHixGp^gb6y=P%GUGBoBeJ9MFrQTt3qK^=2>1;qVOjlDyG&3 zbvZPUblaB)6)8A^2bE!l%!7(loyUWU^xd=`hi)gOkK{o`nxDsqimCq`4=RcSuh-|$ zSB8iHDuwlEf3?!tZHO{Z9i{Zs>XafrhpBZDYMq^;Y5uCYd9&B&El<0?Vw%2G-mV#i z3pZblOHjOh?Z_ea=jVUB{>6s8BTEYB?qh#`b68O3j;y(QqfnjJK&fcyqSmqRI=cJ# z2W1`!3sVOv{W6c}l)mZ^rMuy<*8PK25mc*Cl}@EZ8CD~WuNHMu4p%Ar2W4*6Gy7(4 z_0?oxnnG{2l6&Ay>@ti-oejdQLuaoEEIh{R0U?P z&pwLU;53Ws5K*fP&0e0lBTyAh6;ua>WbRN#hw4;5+K9~c?1Q&T?;U~JyX+MGUDT>T zQ4^t2>)->%CgIeLL4WGJ)fzDz&5F>5DBVyFMaW+?>M-p0Q~Rm?gX|OoT-0IyDsN4Y z27SaFhI&L5tf30Aj#39{*+~giO%7L!=pFK{Fj39A2fd?ZG?`n&R6eMUT8aJ@bt;Xh z4hDsxUYTk5)>m(9=;BaqxK8P#7Kw$?sO=Pk^e2ca1EMzSAeFaPr;65SL!O^B6^Jz8 z_3`nCIrh+G)GQ4B_pCl+uf{Ker(R9?{A%KwtBLq`7W){#_G&`>)%ee@#>HPvTyQlp z@oK^z=EVu=`0KUw)V!pnc{5XScCIEYygqGx-t2>{aQxD%@kg)5FK6d=Z1L(ZlttU7 z7p*(^g2UfTPGkPQB~DrN`GTT#+m*$8mldUMFWP)WS)8!Fc*WM6OO~;}7B87yG;dnb z`qj$fX`71IExEa5t5G4&W23SYvZg~My3EfbL$pEaN!ba^H=@;Iq)Hd93em7G2-K)W z{9Wk_>4@q{a2b^JQHN-tpx!u_Dx3nGNP}Oi*eO7nQfJXe`@%^Kd*LJo=d8(1$T>tJ z%h?S{B`9-_{#s?UuTC4FE+u`a_66ztlIA1TA-+uUOlJMH!J*-Z zwfZgyQ>uc(lxnnJ%|d}%gjx{&>=eV`Fr~yF9;R11e2W=ktnfudP)`omgzB}$Dy0d= z(X=|vBm@!mS3^{=Q+PZN0nw0dxCj|DcSQX04L6(%M3JC2TAi;ZL?x=3{t;f8kE??< znQ1t=bXve`JW+Ov;iW=?o;4a`@YN~}wPbN6h%xCK%yt-~CRnAfCG!Jgs6d?Z&tDan zm$aJ2g3|g|UQNi*M*=85O|SS=7C90QAb8+!80$9b!v#KXMsT3BPUXrD6dxAPSyeoH z)6MCtl*NbUbP0uVUR z%wSE{av$bOzB=qgho}RX!1Vp1GB_0mi^#BO7C5pGA<+0{C#Yb^qDnXmzs~|lc$mJA zaoY7F@>MB=GuOirLf{(OV675X%oQ}qGW5<6Y&dBww%92aD9Q>Y=@_h!AqKD@a)5;h zeJn`N*@w`OJ2y8eXSXp%9Lr6{K%YQ^x{}3`LkL4N@i`vfVz6hihQ|G)IiKeoRpx-3 zg&CB|$Vq3VUy4R{3U^mD6W)-yKg654f7V(SR5U?>to>?H8K{a1QDw2vq76d43{(b& z2L&N{V7q07o~%6~c8U+&L)AVSKa8nLF)9@QB8%|T1hJ1uU061w@`DVS3$n}t2~e1b z%tJ4Wp30E$Fqqq78yYx?ZP>^6^q-)o{N$N=J69B>#^>At-Nt%C%#w z5u=b=awA$pLc(ZQUpqJ_?`SeR(6qe<&TWhH z*C!ROU-JTInbl;BJ|4QPx#5UV=z%CEVGP;XyKI%nIdlji7-51{0f=^pA=G>oeAJl8 zge${?v@9GNt6t_|>=Yr+A(PbJh&e2uaY6LZu>KCQRr+FB41tg09O)>!z1YV}WOJcv z4aNbTs6?L0vgI%>&VEQG$BP`mx(#R6N2LtX;&dVehA|&k=`grNXj#U=nl>q1rSnzk zke%U=VWHtjgIFoVre|%<{Jd18tmMFx-9t0C>Rk$nl+mleh?@9AykW}BbxL)JPCZEz zChE{+Rj4jAEev6`RI?Fr4K8^@Sw$ce10@a&1fK?giKq`@r-^Q`%>i9r)irIX0Ik3yqcKAf^gzz@JD1`uEdTo`}Tc&d+i*Jv2-Vl4AiN!SF#k1Ng^~z6R6MGFqW%A zF(@KiV`_+2(K*vb;v06t49T6b4KGQ-@X=1;^MY@_;FpNb5%5uccCJ5T%sDbY4>NjV z=9bKjhD4sFfaM&;c$%gua+V@Ke*v&O5WzJ)=UDC>W$rY5a}dcO;k}5lVqJJpcyM@# zuZjsc1j7#EwXfP2vDQb80Idy+LT_V2tWO{jU(`Vwov6{3!%wYLI5;bjq==>Few2gg z19&(DPE-3*Q$a*ZWQ*4hr97JoA`Cx^%}5V1jVM^3#$sceXGJJucs3Qhc60^`=BH23 z`*bHO*v(xX9ij@RWG{Qyv-pTz%#`%`Vg`a7vc}*S=85WH#qa@aP#ca`utdlZ0x7{W zM8|(m`;=IuVA&!@y;3pJPVpWiViPQk>X|!`;~@m$L+Pm>asxJ^u?2=wlfYiaS{U*; zgQ;P{hqy&KAsY_Mn*8+|fUxWX57ihlw-+aQNI;CaAM(VqrhEg-n(}QiCTbKyN=^A* zO!+YRiz`Uo!p=mG(lb0`PR4?Qags+F8>WFR(ehClBPULC?eZK!?*fj!Nn5Uoz_tBmx=7~atx zzKbsngR~keGy@8bEzVoHrf~Y)>lr)q;*QYtt>D0}yra`_UTK^l!~CWD|2&eMw|hq3 zv5f0WHnWAAxLJkk53l%V5CSPS_CS6C+HW0FyHqZr12IZ&k*G><8fGLg+bGze#+M2tu2%)q*|10u~K%502g%xW{gN?G10o1&7Mmr$crd*;pv9sJYfCH#Luwa{6$9TkI3^MyJ7s_Unv%h9(8qL8w$_P? zhcOeq^RT~!8B(pxt#*nJM`=W@4%$>1+GuPcYZ;4x%q8Dv%S^0Al=ft%8CrzzCR3aA z-1z=kyF|=7C$p3X*^O~#nZIRDe$xEBxJ}4k;I+?^7x<3e{)MzgAGctK1uMgf*0!sO zOZD^8Ei7k>--YRCLF%Vh<&d-969O<1eRfh<;-j)vPV$YSFSV35X>k_dG$=|w z;m>@6of>T!-bY!D-uuFXFzFE}7u#@wyQS%}zqAZIU2 zX>w;7k{^7LLGw@j?2^q_Q7QwePGef&g#X)-`y2A3AYToe2SZ`r>_R~17L53Tuna`b z9|c-)V)1^ET0|t)p#Zic!tv3dehS){@V6*PIe?|F{G?9{b{<9iHI#Z5j9FA{!Pdr( zE@fr(!PQXaS)^rU96rq45r$=PWr*5ai;)s)izqLSMiGIX;@wfSO&xPBeC2ag5`P~QWJ~`CDz>4N;;;-*rkTD4%E*th6?IGy~fu< z_|$PP1`kD7GI~k-yD@i3FJ89k#-80p3CsSy^xVTu>y1$WiAT7%G8~nPM3!QZHKyv% z1~DdUnxupqyP_-lFmr3Lz9-b^2(&D$%swO`8rtTOvlgCz7@j}VsIYXs!$WA#ryQkK zhig6Ms?I?BF10?YEI}Bi1uEvzNPjU|P(`V9NKNb%lS0BLJ@;sR03JMgwA)0tQ6oJ+ z=;bepp*=fw>SEu`t~37YLh^ZDz|O;cz^GonxDcWV8IK8r&Z4%S&(3fXo|pXp1HII@ z|KD}b;^<2~^Z#D=|2q2r5LBh0+Ib`!bV4vi!cdBPF*?#bGE{}@eQXiln=R8~62N9C zY@TVSaG)i1%1y4N@1TqYD>HPR5BW*nrWLs0SGbr>BlC9Yr-j|fh{jxIq)%bUh%9ia z@7awUo!G>2ADeb6J{qd_Me3^0XOPMu#qf>L255Ygf%+@?ooG&oEZDGIPHW}fnHi!X z{ZWTRDI<=rdo~K|r;@>jb@p(@2v?TAVI2muX*F8;{Qi)RV==Sq=%!NXuu6`3HJc?N z3o4Z%=~JOeYJFxzlfC}#Y#oWMv_DIVbjt7$Em9U-0n#roB0ch9H=3}nMplTT&$1o; zOwUf?>A_A4mNbKKRTfh?W~R~U?J~DAGySwqi@OCdi_6@Gh3sb(n5bbj8#6UF?PHht zUYyz@*BkOIZwlAX2tqX-aCK1|8j8FQD@Xb&VT#A@%6Z|O_n|!MYWx;s)})^qRG2}@rgs(@fz=MTVi$TuWw zI(iKk^57}Bcc$aBd6u1`NjVvYvV|fdXARbDFGguDt))8Fau zi8b7p(~%}DO5CsGhs)r&dBIN6*hxPgVm(ydi{u=Gt_fE6{{O#l?}IFbK5K5n^ya4u z4>G1CSlBVHylK5fB)3?4!-8dyR)wqgla#HTLql;HPSt9>-kkn5^?VtlEu*=$H;+euCcb?lxZOm7iq^hai@4%gw9CoFv-rublK zAj(d0L{S*GqTtxfyxHptGBPTx9+v*DPuq`6s8sga;grIyd-7(d(H(jD>ki_Ut-OpS zc}L>%w#>;(+MSoNC~wwW`ci-Y*9I2$494VX?jevCMC=Z4=*d& zxrv4#HcITJv!MUey7`Dv6sGd#?J77jD{uPd3LB)nc6c+*4bimxl+6VTmXZ}!GVkb` z>l@>*Z&-__L2 z;tU-F98JTpx`#i|WFG6E7@%VI+#U><7;1tL12Z#%q5Nmo5!vh2xC&yt#$39l z`XROq$Fjw8JG-|A!4(;THhZ}`1S_Z@R{3H`!Yz2q)xr9Js}%#Iu=L?(o#8GuN^UG+{3qzo?cLw4~9ZjP|xr24g(}^}{N#CYbF6v%51GRk$D4h6BU& z2O7XueeieIPIf;;2)l1Enq4ao!NR)Ady-lg?x)5*4!;CbQb%Tnb_H|hV_d$%a5t~AeYj^@F3d-bv( z?3wPV>8@x^^$1mo=(?&dqN@rCRZFERi4wZZNKJPKnE?cOiR_FFsLZahApr>lD$pGY zBtV4(NJt=oP=XM$D`DngyvAtxGJf@-OhCX|_F7){qy77T-`@M26B(IEH9cd`GF@Fo zWW+i9oU_l~-}V3fzjoJWBAQ7OVDf;*CvAqZRFoZ)inKmaDuYg8(}ww%AY|3>3(&zs zq{c>?$VGd+I*<21l^!qT>q+qkX^+hm_A6;O;FJo8@#?@m2xE1fr)v_mO2-me?Qb<| zt;T10ZA$VeKg%-_a5rHu5P?g3vL3#)bPIzl&Rc3DdRMaWlEnYNGQV$(wdt2$C0U~n z7FZ{I9z$gwJ_j&xgb4av4?{BW*-LM{bz$8{m(GB3{zw6LFr(`a8RCHOI)Je^4V$p( z!n!RN#y4Nwb_N-0-#>X_9B|m-3*$!&zwicMUVahyDVH4=asm9pI)eYN^L=@0lG)jH z6?EQFitYc4Y_2B}&P=iX=XMK<4YZ-c$15+NCY*m|Vr%8fuMb{(Y9iRN*LG~U`pV(T zmFJ(ovUl^f4M)MOetL4NG69&erImVR$9CDeU3OscdONPZbl8`Z2KaR1=#^s=l~3P0 ze09S+mW2qB$oC@Xb<<6YnggRCB{1caAXVVM6lV0~KznSo)z?tQ0O;9ReT<|T;I&=@ zPmrGhW6{3Oa#iZJHF9?65GHo{Y({DJ4;q}-#wk6zqM}`%`!1+9%|3*W?R7m^?5{ilEBJmCP1`S-#A%kJs|&`<$;!Mhwe!rcO>2Cv)q# zK;6b6O+@)Y8jhzcEu7$ibzM6lp)_Its*J%Ni~J5S8X>2Z#5WWpIVC-S@=6~PE}sx; zQgsiyDL~ics3vrC{LWW`X&WH&{OM|TA$z1Y>}ec8GcGL4vGEpQ$GKKdWpwg%AC>_b zi$3)9FexSn;8-fDXYzEVZ}LRn`5OCWamNf|1o zs)VQns)J>xz#p0YVE@=-LpweG(mpxeuZI#N@eU^`Uf=BIeLQrhUtse(trjf8VC z#PaxCSNEbxQrh?LKiq1si2}MZraQ!@1dZ?qcmKSnzul;ih2=#6RuSe!cjnbQx1ImB zfypS^@okxaC|dm5M=btS#`6zs5*w9PTxkZ}1nk9A{=-EW1vrP)I1CJdV3Mzi?NFER zSk3-Rf4M+BKACuWdfWDk`%mc={+_?n>7C=3-rO>^<)i$Ud4|Af+8aK%DHhrc*2kL5 zs61%`e5~LtjIC~G^Y7#J)++$6R@9c&F{Z(WN#f(OQf)I(@kOw@DZ7_D`Q!V+%d=1g zb4RX|oORn7dk1iu*28c=Ip;sQ|CZWvp*vA&LxkyiL2|C9dL~7|K)Gmfs7wiP2P^)5 zJP8am;GkT+9y8k5UD#~4Mu>6xTjp_Ph5#5?PdJMz7(Q&0U9s<=<|P!i?7A@ioaX53 zSM6n2$n#gO9C}^=_5*9R2(CS|n?Ldzma9)C4gQCBa@zwkLc}(kuh`bt zz9)y-^?%>-H*yB80B^p2t>H0!u>jCSW9n-exA|uHLILD^i~U^K>c1CmA8bV`!qXVl z?AG%Be%nUob#`E2^+12?vvNDx(fG8?I|l@ojgugmVQxRt-gR+c_`|Klyv zMz)y>ud&%Yna@;K}kE9Qy#%xbpC9~UefSg?EL0QU-?sKqW^roN4Wop8Qw zbTaq~5#=wpn*FKI0a5zyvc3S&REXo=MU|;%w_e=5X?pizP1iTm=`-~J$Ga++an_>8 z@a$J1=@<^Q67F*W*d8MKA1Z8Kv3S1An8CBV220B0;Xku*`w|Oa+gOSN2-l87Zqp#= z-2@_9PM}V9Sgu~sw*5i-Ac##)0&uTpKh77S74|iHs}wi)B$hhX z>%z2NRocVT;(f-EcuhIlT<)q#D=QN!Dlmo!NH0VduNkO?Kb;Iz-AAs_k{k=(q4tdg z|KsK5FZC9cSr>Sxye;ljpsRAJPxlRTcS#4jBy=cvKz+)iVZ19xw^72g;p*NEUH8?G z!@jCCcoQR|%Nv;c#5)@T+O}2^%nzQ8RtHA%D3Ju9a$}O11pLVY6g29e#y2R?T1^+% zKbp4S6$Cv?V8g{~S>ygq*rq3B^-6+HAZ8J<{4rtBCAS&R2#bW3X}T9ZY$kS6&gYL} zP(K+&FX-kv;+3-K~4R3I53c&^qrOmTTOIP|D1O0|OBHoV`WjcNUGZKR` z$OVMxkIXuZ8~&%Gi-UFdwdz-Y_jfA%UjSNkJ)$!I{^nw{4{nSTL}qCQZ_Lk)_4EI+ z{q^+)QO)1m`~6D#BWQ{5R~{ET!F~17rIp7W+}m23-M%0>afnCGN`Ja)4`(^~0w+4m zdujIVH2fUbO4)p!Xt3|4*>@Kpg;VVs7v%PE1Pk9h?syprGMoNq2jKBvFN{7+Z4;XRUA=MEi{yfphWW~QiPgJxxZOxH#qwav+vK?e^& zSUIszFp@yV^`+T@1=u4vtFBJN{FYQKL)=y1rm$0q(Y>enZ7i5eu@)350~eGmQJ&Io zk7H6Nb_*_`UoobS68xns)7 zf)*j^H`H8xb{A%2ALb#sKJr$8WZOfQ2aMzx=Z*|ivjq#=Eee}f5@k}6|2>WV<#+{H z65#jA6R@@TW5qJUC6Vg_+o|2MvIfeWK#@?sjB8#SZCn1zs&YM(HPYmwWUr0=Lvc@h z@2Gs=5^4g|0y>9`5*DtKwc46IK6%=q5uWGTEKvgIbxbhU`kpu_c zIC$l`y)$VruD${~X2Ooxw&CiowO0;oHzWDwiK|a;D8!KNd~~#TxZT%YRcVd&P>eo# z?A&;Bjqom%miHL91x4zkt&u)nt}Out?MM0SY!~M?;PBwd`K7L`qm7uw0y?0Y}0ukIn8XyH#IzaXL)_%CXss*@Tq)O`hTGU3tz z0<@#GF$GSY31O(eHrm4DBP2^0$#!pJkTBGMgEizk&-`*(lPfmymYs0HH}>7rJI)XT zQr+98!@h?<`Dowtx+7o+3{UWsHvGn8QyWiw^1+K~&liu>;<)qjz9VTE-`DCH3P?XRMS2sPdW&a z_-0h;Z?DBeeh7&uXiTtB{#RIlmK>KK70Rx! z9D{O4Zuge`S6<_{PWGM7gNq@{6t{jD&Wv4a;JF}f(L~~q?u&DX5#W+%lp+_%m*T6- zzb14Koe`1X#$bmSdid_2H-MOiQ`{y%&R1$Clu%&6C=~FW?T8jjUr@=81<_~x8IfWq zggc#cXLF}0GSUnC5<^5qNqF?)*-=T75%nONEd6zizp2eu`Yh1!aL`83ntz5o>5n3Z zyk!3hMO0NognOR!pD$PCmv(RO$E?lP4%L8brKVsQxP*=7y|{AfF(G815tQ z3N4k1uWD9BWK@0{zn$KDdg}DHqV>^fZge}oXo0w*%T10y?KC;g?&A5*?dz)#myHh| zTK7Z=XFJ^`ar$l+2T}ic$Nm@vBV$3*P$(mcYi7udXmcQ1{N!c@SWUZ!gh|qGW@Qu% zh;B9q9B$#_@m{dol06|aLW~V&SFjAzwc-oN?l+DsSg^n^ti3P}@y)TR522*P48Xd` z!3)>39AfR^J+s&WR}O5tw(c;y`0B5YM{b4Pr>!UvgW{R(R2+5~3O}0LP*~&7LXBaC z(AwB&U#&tBJ;XQ8w-6r?nkT&q5-4WWWBc}-p};n^H$yr-?$+Xa7_;~A;Pnj!EPyV? z!Mn-}$E~RNTmEvsy|Ae2%@)Y@J+*qIR0r5rKw`-fahJ&iSh%>>Ql>K)kp_wt$X%u( zmOjuE3L+|qa6yxC+n3eBlfb{!=WZ3EyI7^w2)mJB$JMiH!-+7)*=)fo=d-zz; z`zZJk(S+fk1$sPkFAq=dURDQ!C7`+@=Th&{(r*bXOq`rdWOvO@Y#oa{aNwcV$J*fD zP~8-!Gr<^SWLO8A1Cq?lzAHhwhiJ|LQ=rrm&e+YlhF6By7^$!z*vXG9sWn;+7#ndI zFlb0z^xo1&`-E2_-9wRc$N{QKvAc3Fdls0m_h>PMd@!RHZWM7%!VQo|1F9?@g3AU4 zoJkSb&mDfa--ypC)Q>%C5(EFJtl@vSR1Wjq@ z>#w8jz8K#@#C&Oi=Tey@u=AJ zt-G5`GdoEdWNG%hipoZHQTnAcvP;^f*?;!|E1Y~^tg$IrP;sE z?saCmB91C&)C_O{0)~Mdsam;rITAAd2{w#8o+o(gy$E0I{K%sO&=}ne*$AW^MCu%e zmXMAHw-#fb4MF`h!ET1ukzJ07muMBPjh=6zGId78H2XD{*F_6+H1kNAC-|{W#LrY_ z)5AuYdVPHQmEF_3-|)jY2BTI{Pb|&Ua{endjgWZ{i{z-Zq}d{ALX<(R`JN0 z*>bR=%A;S={Vv_k#6a#j?@Q(BX_$&YhXuM-9lKK!K`44h$Bd4@PC4ag$kHpU-&?M+{M2B zaINgAo5JoA*G>T=NS($?3tSUu!VC?pJJ_*5^NNgW53GqgP~#+B*3Ax;@}I>_NM*&b%*TlC@J?e(;PNf`^FP z5T#Il6&z42kkK|&Jl=1onmrjNqlAVGbfXHo=fq?2E%bo$hS+Bbg$05kQHv3wB$Yw1 zc$2393K=2oZTeM1$**Im@^Jo$`kooaeoyix#prB$>_XV@k?7G(z<|s4Be{#~-hwW$ zyiIxv^S*nnOf}mYmqmnh8bv561B^&YBbZB|e@0X+qAO>GRC%o3VGWjZoCyEDGI)y$ zR0;=CgGW$_0pw1^K>}F`-^7BEz$(e5^64m4z<|7=G$-)3rAs5MXFX51ln5+K_jsG3 z*>1rp5y6${M#%Fl?{EJ+?vj5Kbx>Ft5fBvDhN3dm2}M2A!@6ZA`2Wn01D4E6!FotX8a7hbi8W3CMTi| za~-6(Di>C5Wi|WPH@Ucud`%FNN8aJ_607h`(2`Z6lvpw&fKvg~e4KS#%aaRipW42O9FX5!sFo=aYrcs}Ls7)rvvbQOEX4~2)luf2>N;%ktn1!hs^BgXtu=1k(#zHMkHCvbKp@diuq6YWg6$+{%2^CP6E^ZV=T-j`+(z+kT+~^RetHjU| z4Tb)9Ql6niR7)aYJDz;SUXNRY&3690lIp*5qX$+yDp}MSq4_K7? zs3=+-&vwFi&Q7%6;UVqJesx!=W?xyP?l#su#YbewbXbXgUcqC(c&C*SyP$NjHD>FG za!+V^;sfT$Ep<3Kxx+N=XKZWmwb<66+yW&|VA5!+G_k8yvu`rp{><`m^j=gu2`)?0 z)bU)Au`oibFQ@#s@4XqgpGu1w@w1I z5g_CNOOX+0a7YV~v;#W4rWDtTfC{#!csL+C>i1%ah?i8l1Hx=dq7(!{FImyRV0(ZJ zN%p9R3h?ut=g8w4a6e4%ebVC?Q~OVf3U}KZv@e?4{${?tVshxx+O5=5gyIGcTVj;GqrxBIB{*ruoW5a;5!`b8u>IQ0*5I zPJ_Ue#7dGXH(I;|`lWCooL8=q+=tuD0j&)Wk&I-R@Xi%a)GG<3JW+A6i>)<6Bt;CQNB+jjiQ)6dK9 zFNizKZ(TXCm0wA29TYj#p`)QxBxS$W=D*^ts2^0JmTn*z;VcQKzfFd>lXAj~dmB!s zs?2$>RQfg7jM4{bXYZJdbXYrasv#X88SSTiP|S#VZx>QPq#s$0Do{6gY=fmj(3RCO zz?fPf3IO$T1tI8=r1_EwD^lyRM$Zk|vEemF%&f}H%?#y-xF}Plidc1{5$GAKVqdAq zW@}Z>Dg*ow(@vJ>M=~%Cm&Z>9`dwLt?_e%b%c8yn;yTyIwJHkq>TZ>qC$6iIYD>1P z3R)Nr;GR_#sw;tRff|@p0CRpKdvqcBF-n#J;9)i~DJ!Y9Tn-agtp&n`%@h!~no^WE zrW4ZzlWzZQB-Z*dV#cW6b8N1Xa7d|s`qC+h_S-j{y4{T&_kQPUIAwLq9W7bnNS+Lz&(>#(1M_B8SRSbCQq!r_YDz++++_$MS8O$o|aPqL`S9W^J+AOU>pC4|An2T+<^)^&H9dAn9VBt53&8! zk60OoU$hu5fP67l*lc&M3-*@Q!hb;Br~drT27o$qISj$y*=%Z{OLHomK5IdR$2DNy znMs*$P4N1bgxp)mgGH7c#r@Z;6o@+5iY+%K4Y6omOvtyPffcy*UREUVQcA50)!L&T zzmv^KV=Cam%7c~KQ(+1^T^i!2BeUk_r!U?jv6=+c&wOApZN3fkSiMu-a^wm=Bur%- zh~b$MQyOpclRjP`G_#BQk=anGep_5$$WXLqf{e3bDh=wHZKS?xa>HT2jVtybIg?m5+njk-I9d`>ne%CZN3tZ$fLHQHcLk;|axR|1DWrQk z&Mo$1h=~?15UIOLM`Jt1RLkhyDSFkxeTCtQY?a-|g9OLPnpi1i5(MlVDHr%aW3HuR z;7F>~P8Gv4Ad9?I;y1`0XwxEbaT4mfMJA#pGh}4?TpQN$bw&xkab)w+(9+_ON(C_ zv^%ls^vG;wdLZh_yJn?0V*08OL0nN{_kr9hC@HMlb=ksxyb?qRt?3AP)Q~Q5a}x!} z2?>)-?OAB>v%J5yLY;gRz8F@k(bVGyz%HfpA_PrCfawd{RbLwkMEot#2vxJesg3I{ zy*=S7>GG=^rnWsZHL*TLHP9c<6bes78aQ$g`AOpI{AkD2FZZOAykQVQkjuMi6GbEF z{X|cuK6*)7t54TE_>P_W^5wnTr#5c7xbrl9o|F1=l?Aax_v^ikseXBU1J`qH2Wg8` zTJd5BcTSz$ql@jy9#%=|xlPLNr^Y5_qDM!HW) z0$>!YN6(!hyRPoi8UYGGD)A`6OG=Pns1;>#Y}g)H*rGnNHjl|(Zl&peC%YTy{D~E+ z%kx;sy+v^^7R*PevRK9)8lR0hNkDHyd!qXQJh;*ntqu_wgn$t%4dbNZ_-a@o9)LyI zV#X9Vj?Hipv?+3fLchw*9Sh@TEFbaZPz6O#NChgA+RdKL7K?8XyFEN(axyHAXt$~! zN380=kP%uN;rpR!3=hDBLgWA$B4~054Y@=OBDcao15g23O&}^IPGu+_5^rV4?Mlb! zrbM*SsW7FK!t`-VlZX7C*f<@^luk%osTV3oV~otzs_iquBNEGYykE=x%dv~M!;r>d z8UIf2+2_o9E!B!@RdZzfo-huGdl3}*(<+7?Iw+Bh(ymw7hgL~WWu*4qp*IgqM#BvZ zdd5Z)!A>eY8>F zDRD(UW!H{;Ob0TtF1@tl+SWp#shGOnLF!n|#IL=y$$E@OC7j+~n3w`<`AJ$o&CG>g zIriSwUE4)u4##7m{nNGQw_bT=$EWX4IM4ZptG{}_D+|=_?6LaT8iMc0q>^e!Z@X?+ z%%11iUf##tEas}M_g%&Y}YI*QNftz1-ppzl<+QYOuIT`v?7i*LHeU1?%wu=0toOiy+*lrmwHK)N5d^AR zECZP%D*yqF09;#ENADyNCaXhnJrg_C>`pnrW!G1|ls7+(S33RcwbOfEo8EC`YWwRX zU#7Nio!+pm!>o`-Uoic~tNDRpya4oMBu<_F<)%+gZF1Wn*a##bsy2|Uv@zYj6eT-lVh793&9ZB|*i z4cq1Pa&jWgWf+Y0%43A38v`_DU7;p}{BgTq9=xBzcx4Jp|J)5GZS+oDQhCQc;%V%C?=L zqprQU2{od$$F-fHrQiwJadpdEVj0}ApMtI>L&LQ-y<^1MVbwM1u66B`;3U6-=~$B2?Xt$s;(uB|aKtw@6&_3x8+|t%CG}CPbc$N(qw)OQP%Ck?bor z2WV(m@MA0FS!7i;`_6*}?s$^16yuuV&kmN=J*&Kdd-cIU(QYv#ooe%AwS9#%I|NHL zyQMspBL3(m7J!Cy?B=+Yv1UP#V(fal;C;`1V)aJ4awhMNZoATY!_O`zThzk?w;;c8)!x9}9b?n%(BxpkOM<*a+oqT>ZqD3T~at zm^Xqo?rS&b_5ydLibwM1-r>MAPq_1+9DdKe<;}fspQE`q%hszJ)Gydv@Sw4J8rcJP zi?kwk)t;-jcjexalO03AA+W58N84AkA9#am{%dRV%BwW8?X|mjHG;fZpqBOMu^3x1J02g2vk8RzX zAq5tqtR+=P!Ysn71!>BAds{5j7;a0;Ki?mY#0AECsNCE8JAUg4GRsp-7s;=|8FhGV z?z6;MTZQWW{^#uJo#x#31u^aOfBRj%JDiO36YSD|YGmJ116KAK!+M2=-X1yZ$1%4q z-fw3fZFe+M!>L=HJPdrCe;eZzGnrg{iu$eGOUrG9?)F$kX*C7k)uH!TsTji>j?W7iCyu;#(XF2JQo_ufg-b_X^P>W!DwdC>Tamtd zuH#-`PST}xmz8-?(@j73Qp##9l7YW5Q~1Mjd4#8zL3J9gv1#rP5pZZTr1V82pp10b?^@r)PbAn9~D z)D`OfXNfX`^5&PqXjUy&s0VXI*ts)U28WU@K$ob0m38IXjceAt8Vtrnx(f?XSf&HG=j6BOt|X8_JRaxWKwF07aDctFdpR zn8)c}Vm_BtfEw(TJGyfq)CjRMDsH*B2e`-nwmMRv6F3asLQ4|*4VQ|tN(x82Rc&YV zG%0JCc!qDQOde93K&yz;^BC4Fij@K&R`4=cf>@|}3MLT`3ylH=w>AXTnu zKJU-m)J?z6&8fV0U5s14IrY)*3+r}R2(*O1BLrH=YKEXH%f5)noAEpb?AvGe10avC zJI@fqWu&6AF9cJKpTdt>_hyda>nK_3^nQ43uNn6O`-vV~-GUTPULC9j(jxR8_`s}0cIiRc(IDluCV?v2$!vVjoW=XSxz zbM7?IT!!izkR=M$Jq?_f5xH?iX>Uz!FI7J@GK$Bo@NP9bmxP|exlW8tP|6rjgUl0( zQ8GelUEPK^q#&S#b?F;}te0&v`L66T*>D5EjSv?rb-Yjo^hOJ%Ih`-BKEUYKVoY^5 zGDE!Jw2)KQt*LN8yG$L@XXco*|KXDhA9kv(kktU@>cTi-m@9+RmTK`{JzcT>Tav0m7*;a`A2z zL$Ro{8U=;sI%R;T+TGA#!2CZ8Ws7DpJ>fJ8SDN0G zCef&tn8+*liEb6f6os5~Lo;fH85)?!Y!5)UAPvx+8hmHEKuzW3+Lo6Q>o-cDDi|8(6m?*Hi-*UYpamz37JGnHw{(*tE z{ma)IvB1;r!NPkN{X$+Hc`b__rn+T|-xlcEZ@u2gZkC8B{IgHMzl$TUJ6Dlb{ktXm z?l0XEYyTpdb${901V`q^Z2szuNWFS*FVjH?_ZN4$A*G5qKW0&#b1dx+>pFogqfYGqsGr8?qK4zY^EV;zlyq_f4(A>UfwxFAP)ZHEI zD7jLM=$2U=r_ePgPb~b=qk@CTrS+`dOxGj((!$SR#%Fh&f7ViOYF-0VULM^14AyV< zhuzG@WC>E6slcydGI1$U{zUXKnzYr*ouhd2M(=?W5^FO-J1J)z7I-{W$b!Jtsd(f= zqN{!KREqnt=wdHB0|brVYQdz!3CC~fyw=o zdm1Y&kmj|SY%_WSj^R9-1m_aA0`uR%a1A_gjploEz! zojfC1)X<(-)pDd(1RJUh1YYpjf^7(b78x&mV?uJER38kjnuod10##4A0hS3Ip>g@h zQElT(GIno$c(5^fkhpeyph5^tE6#aD)rtToHny*>W=roT0c5CzM2Qmy5cpTIBbKTK zhj5Dl9uj{HOPVNDPA2M)+kXpOHY#?C)0Mq61D>F|%A7j5Q%rQD0FSIMa1N_afv?99 z0$RWR!uUIe=bIq2S&lO4N~++DO%2O&oE3qPCB;e#-Mg-g1BE+Ypn&m?#o{1$UgE3o z(fDw0p~}-`m{oaNPsE(oC0ptVq8P)V<|d%sf_MYr8pud^J5zb)-p9O>+iYpMYkU}qXa8xhbLcu0% z7+g|Ofa7F;w|S;lzzUb{xwC&BfJ1|_DxTd~8QifBlH0*$L~#{!XI_e}aD%s>7i!X; z)(44YoirjVGMNv`JO5W1{0iQG0W5%Y0%{=0_m*SPf%?F{Z>TDAqrV+T;+*|>mCs5X ziB3B}e2JdXRLXem*5_bGJe9d3x%k0ONT0}Thcc^!Tc%EJQwAs|x;sj^IMNeZ9+Iuh zdB;vYI2%b~V7Lj-kczrGuHZ^AFqiO~jEsMtxz@V)-s>V^Jo5zKqw8GhrObQBo%>Bn9lO_J&V2RbX z!$=QZ=%MsniL1C5PA05?ZhVP(Qf>x8VcnU+J;7E^w2>dWd9G)_*(Xc@MYi_OoS9LY zFI3ri8t~@gZoGLWW#i{zNc`WkXqYGiCs8B4kF2q@ok1?p*P$@FSek^LFq0!uM^3(_ z#w0CE#}VxQ4E%_5&4^v5_`F^Lk$CV3DwIeWmBhky33P~dVuu+euA|ff#UEMgv{;5< zlmrBZjO60S9L&GnZW$t0+>XCqLHu;fC~Muuzl1*TI3v!k_!eLn4va7nl~yPmR({ z7j-;OweqlGcu0&E*v2p~gMU=bev{}A0hJcG4?WRWu<`2S^`1SR`# zPj^_F6ya`jz5_ z0#iCQ@*Eat$f{t{4RPzDV=OT>ehz}e|1I<0L`qQ>l!!;+1kvF8f-CC^Wx!>M@}_fh z941G^^^mlZ6Ud;S2d*PnyxbPK5;+yibMV{q8Ls=gUHc}LU6_=-2pU=cv_&YFm$eIrAqgC26CwXCM!F8o89B7P!xIuk>X0F12 zyim2zvTR}rWbzJGOoNfIl6F_s?2o)a*`2Sh1~i>ED6LyC1V$3?aX1c1kb3^1Qp%4Q36y4A6I zY^uh^I5q~#E+EQ{Hzljq*vaW5-dynBLz+Vc;U=Yi5u}^#bqrCOIXdmM0#a< z`))ce<07Y!c5vxq7{c;295r=xOY-zPk@oXuN80x>mCcn94*(XOd@HNot$Y26#1X4; zma>@)cw5;7C#tIc@9CtRDJTW*5(e+=l zJP#*ZpC#@_dcLwT`YDj+SfK*5uTAgQECoKiGOTSD%zO3IcOk9YT*9#x%*Gi&_b>Z{ z&H{8-)op96O@D(1!NNcJOwjhBdJA3$JcDX>_xaC>WskHOg#FG~6cRm6iN-=OjM5rf-uP-^;ISvo7cfQ~NMTdH`s(cY%I`Xt)On>A*CV;j7 z&hndj>!nMFUeO_c{8+8GzKSIjk`U=Vg zX7w4(k0)BpK0eqQJ1#{_*R{&pjz&I=OF794;@rBozwoB_j6z)8m z=d0}Mi^sbV%M?(O)ofnihtZ=r3Xuee-HjS{X>B#24A<(qtvDY{gpTt0h$|{ihdTQH z$l})TAo<|(qZhBOm=9!~VW*{fY4U^{Ekj6zS!lBfubC^Xt=rBXMJ5!{VfewA%3K{B zm@r_86omy{bEv4c7aRD@(KQ77|Q2=CqWj;>lzQnWoTQ$nZzPEZ1R1lmRTNUQ|KA1RUA+$;2DU zfI?w;(_HWDof10P{E$2uKQ(=1+tk`E2`g~PdUt!H*OW!c?no&LI5~!?vNddrVF6-S zMN$o_z@-`EnO=SkIgENABngFZzCV?5-bLFB$AaQT%dPu*ktMc@9D5+jGtKz@ZUJ#4 zVMisRALCu*#k%wiQu5Ry=GAOr3@)o>ju{8ajBAGbl_^&-f4T#L&MIB(S*err8D7*i zILiZ#)ZjX*Va#H@g<)(}S|ww11==DSbC7}FIkkO5M;$L2?$8%|-P@_d?i}II?5zM2otD_=#+z%-ZnXI!k{0I_ zz7{pgRGZCSh11-V0fxU|W_XEL5mHYn9`42zZQ0(-W{O2LN_N&VtX5Jy`Z`B6?9Hq#)RbBi6&f8&~^s=n|30 zh6Eq8K!HH~Bw2xR`}SjFhUBh#E+x`TYZ5efm?D%hlE3dVWVYO|R%{)YQjIA&>bX~n z3BBZS?ogZRm_OXzF<`dTuai2xb-f6EZ^(8-eTWI^CL_LD~h2SUZHeHc5d!ctj_)Eh0U+Ky z3|rHPz>z{Gsk&~c4KxY^N;;EqOjr`KfzWb#+jfAfXpHGi?_c_87aWAEt5$D)ypwAeg z>Jhq{oOOSz4^wn?Yot8{JL57;m*&W7;#Ug)ExOO}B?JMb18VK%JOE)p5mp&V%$@bY z_6Q_n9Hj#QQ7A}wCkV^Q{UewHphyvN-@2a|CN=OqjS({WSV;iutkz4Vy=^+M4>yd( zJWNH893ny$i|@b1L*djAiso4M=V}V+E!NXgw|Iqdto*n%inFkE+Zb?1M)JGK2doK zlOnA1aMAN&6H%ZDuyj7C$Wr)YC(^k33W;H)+TPbHS9WYSzCdGnGOmp)hn^SD(}A@L z4y7o%sG!OnFc#d&j11t?8LtM4)OyF&SE=}*xd#2G64O4iC=JR>F|3;-YI@PjD^^Kcx|+kK#Hj`Q1l0@*?o}CY1=$`3T&ObeV=^r8sPBh7mi+ja$ASb z7Y71RYa{V*97>yQp$21X*PrxjRw8+ z>8VVf8g8zxpWBpN3BFrRsC4o}ZOQf=W8RA$2NNHtYx!t!@mc$5?ZAcYmi8lFp=GTG zzgM~0XX@tLDmU8`>O*|Qn`t-kQ)-Px#A=)pJtAW3WjHjE4kET6+rhSoeD>DnxT(AD z2iyrWfKGMiQT@0`U9~_%!@%oXdh*b3_RcZLf`S_h~X7t>Q}oAE7`{x@?#J01|SN{l5Rf?q0x zGGahtgRl7KT|8BnDDTbj7!OQ7dG?(?oX=j(Omaml1C2h^2f|{RP+Q82heS4M?8fjM z10Kmd`m8We9(~qd=;J1#X<1TTe&}hTCRfe+LuLM*?M8oZW&V=Ufn`k`pZSZ2n?v9q zrIzk0y25|@ARskJzPk+N7q85JB-CAez52E4SF;;;T=mJnF~?Sob7NJ6y?SF+^xTjY zzxzA6JU0n`V^!Q(6~A+1Rgg07Flzq8mld}wyRZz~iARI_5JylfhKgwhD6O#_+LytU z(r+Mu!e1W!FO^rl_~a)aoWNz9+Cy>hVW$|BllPT)ibeGO6pETWz+X7{86EuX$0qmD z=CD`QMb5+Lk$0+*^1`8gmDM>ppN~%KVg*QQEsEqIPT*k0g6tnZV7~L>IZW7#Y3v)t zQSSc945m4o8Vr0v3`4X#OpFMb@eK=MbH4yR`|dKnHw9Dz;Tr?kK(+SIW2~BACl3j# z%m*m>L=zXI*ui41X5Y9Mmb}Qh7VZRSmg3TW|D^kH+5DS$^?UsT^{G^#CI+)vDhx`; zyzMU`aGmiI7KEX$CGM{rb05CLJ@abSKq02s%a%=7wm_wQ$GKlc3NG@spw`yFpKYO9 z!^Qg(h*H~JFlW`GW?Iey49E{87A${on}3U?rupY92>YUIhnFnA`>y#h7OE`X?f2WgrGVrh3jjp%*>?sAR)Q?HK&6FS z2%*%L@r`Jh6mbcK+H5J<{{nN zC&h0zk!;gRcLjn?r|P%+?He%~iDi=?if54bsTxzm`KCWb{2%KEdGep!Ex;}jP$EYn z>nFyD3%9DyNMheta{caMB2$7k@>eRU$5+#ru``ZhoBh>nNu0+>$lqJ1v-IR!mWvu{ zs5Lx$fmesaAOa@e7~ysF5L^LJ z=ZyOrjlVqwn-{&SXL_v1XF5c&&p@Dz1TU?r>2S|*y*4t$x2jk#aV}P~{+Y@63+taV z?(EG48hwj|(pGrcFe#?D>6R@>h}64_W)l2=Q+< zR`A~t0%xD}iSL6Df!3`4N<@@L=EdKL@|lF~6x=5oO)#xZn5FQV!S1OA=ei8SQ1H7-Sxq$s z{_B{EcCv~+@t~B3NlT~Gn%Hyd!n)UJ5GlIVwd?%iokC1(sk_lnCE@euG10s`UM%Km z3Nk0qk}B#e>*DB+K!oAfNuVPWO$QKPZ$+Eq{)g5y>A<1AM!q6nT)_Y-=9UdaMBX^9 zuKxD2V1(F=+tRxKE_G5%#1>&d)QL|s=0}*;;>*@cD;OreK33H=;lDV)4;k^kay~A3 zQWaPjI)-v3h)xsWg=n&r??pCwSy-oml5$ANWRZ-rP;n4h)$IP5l4a3_`?frhJ#TK; zAdE)p12Sx#kJ4w|#220UqS!(r-M1v5jz|-tKan&8GGEpZwWUs=m$!ht8^*Y0eb#^8 z)8A$))=<{qx=;p=z;OXPc(<=b7duJb(DG1O*k3+-dFOs)6@WC5g-EKY{lDS^EffVR zI{flcV4Ux ztR7T?kqJ~5!`3urJln$q^fW?Rk@h9$hS{{N-YD8iN*X6?2`&O!3HGeSMNzWK$pwPV z^p`ny9dV%~un_?9VkjqP2wn(piYB&XYXt@yX!cSn5DTniVBz8D&7oG2DY9Y8EsRzs z@V~^7q*Z?#ncJqNpT;^UKT^hzUBn23R!knEYJRvOSR=pK=q#E-7r^fJ)snE-s2lJn z8EQo;E*_qHdSal>GaR`YbFuxFGoXvID@Q=aXw zTzO$D8L-_~cLJo`Te-S(E#%9XX;)7k=YI`$x#74a#W2RkNs+yL{ObC30mPFt31zFJ zL1tK15u-0-s?P50sjsT6VJ-K_6>C|3g?@NyX2fdl8IwyU`nbtsOyWRImYWqSW2LPb z?V}ydnD%?@j5i{gtK4@GyQt(v#dSBJbzz)8Lp3OY;M}Xw&s&HF_J3Mk0A`T2tggf& zl)asucV^=EEwL3urZVOe>KGSt=0IXF)C6-8l7)XO*2V4}gGEbR0+8{%S+T2}mCSx@ zjqBb=sH*cVM~2eVQw;S>5H(!!{AoYPQ*2x)if`51TE;#$%{^Mp{@l%uBqRIV!+q?a zl>jg%4~PMw?QJZSMKsCVTU!Z1LT!vyx~kd7j_+fmh_;WN$!0DWc`RH!j0LR5aDyyx zOI#4Ise^lg`YrUBR&LBhtQ^XjKIHt%JKmjs>(!aABXTx$TR3zoHBHaH6y3sgG-O~$ zfQcy{6}p?>`&ez6x^`pN(E)B4#0sA%7~D5T_(l?vw_a~a3`$H&EV}z>{a$lpP@LNL zE@Hawh87fY)@~^(f?ygJsUUgwo|QyP@CZ7DVZm_(2Dwr)b(mnzqI(C1=ow{rm@r{Z zVVKVq0ff~xAOealh(zCiWc$9m2Zko!KwMZim^kf-O{_WPBAd)Rqd-TLMl=DG2+8++8V30;AfQ}8Er=$0&sG9@{NC9!g^CJ@v`*a1eXt|^R7 zwe>!kG4vWBX_1S`^><&()hs#cBC z(dB_4cd4s(5HfidKKhZK+Q)>;UBphA@ty86V_Eau9-fRMRx9?Zs5k=zk0HeAou(M< zPw&+-(ps!9XPc-yVYJs}P!K#qX-mh$zlI${Fb+G-z5)ktpr2BF>29|6^p?Y@zfUGk z;o@C-PyQgLl7Ev-GB?96uRl1o=?R5-PrrZ(m4}kQDpdas6^#{uvE`f_!0sVhMM?rY z-IG~ol1PpE~DCdQ*Z6K{Nk&he1w%mOASHx zW{M=Nbzb^~2x7)joZ2?d8}ID*=n%hRV2iHBK|H;FVO?1;J$Uu##MOOAuWZK*D!7dD z1+Tuk@#+&#U)}Id!v3Z56v2qFpiZn6J~>LPB%mI6c+J>~{;b z(e`h{y2u69OWFD7b7|xetPYnD>&W^us;?veQNu?Sqo@oecL1%I!Az*I+BP8O)JS2% zJWd%&?SQ;)VUowC1GS9qXgPfSvy`z((Sy%;k*U+8?!714BnLP zZRWvDin)N+GqPNdcF#{BgByf8j19-@Ul^XRa&zaS-yGUSa!`zm2QFFIty)al5AG%w zzpNiRO*37>&EV;E&LIkBmnNL6m^hvIu(H%e zrEp%iD|2g#h(~T$e|cQ`(HJ4J02J+V%3K22E;H{Uyg5;3ycI*+Go-|iAV@Uv0>|4(E?n!Osii{0e7toff<@M2-&ww4Hc9bOtCB}+ye+o{@ z42FWp%QwNv|#vyDR(``NAG!~T==J~^`m!b}_8*a9967cd^`sXgyg3BVvz zN4E)W{J|@iU)*we?^_HNt{S3AmcFJx-zCE)PwhWLDO_P>iIlZj?h=7B?pfJ{qI#fR ziVvlHb_xrH%aHZ3A~T#NKK3{1AJ-?otyMTc=g!dnecxDpHJ%nG&s+RKtnTd7eNE`z z2WvQ2aq|9|JgFstmYNVz^r*zIV{gbq950W%T=brg>=4W*X(hfAhK}@j= zM5$mpR2K2T)B$paXTWfm!u;dZ2qTvdSsrpNA*}Eq<})6;l_;1IWWV&PN#VC+tnAI0 zRG>g(7Uyz2ySjIKB)6s_n2NDdsE zC=g{^#Ef3Tv$&%3uI||MJ>UP;Y$KaAcS{FG&+Y1GUAJR|i|C7@nTev z(BYTnaBU2mL;{VUL(oi4?O<(ejXH;s2pzNtT8p?_r4I;m-`S09)}gpM+tI1@g(;`j z;$-~G_6YC>xp92$ta))^q~G)t!qf~)O8JqtX3JYFjnx@9ge|^ikgoq@cLz9v(Px&2 z729@oXV#Vx8AE5WZY8B7EDjf(U%AJyco)=?&nw|KLUEX!#P|4DDENtwH)4KDu^B-( zzd>^6$9b;AdWEe`f@f{m0A_J&lfthpRJ#%KkUt)5f^x?g5hCZ@o_T5BARt-%V}*C0fWK9tzT(dj8T!+fippQR1slzhact zG0$Qnr8B0V+154HG3pw zK@k6(i&dRJi$FB2T_VRTNZ2T3sY~!E;Yor6&;9U%iiweG_Fr`daOV%AzvH zslt2Zf@<+LD`YssSP#ns@BQsPtUgQpx(X;`Qno%B4foKFGwaP|zJpCF*LH27{WX<* zCrNJPL=%-OCpKK&@Uj`}TlQaj5k|2NRLa$t4$IG1JmA3EvNiv3NQd0!@RX*UCRHBm zzeCM6STdAt4nv5g9+Mt6!*nXjz6l@c4i)A77&ZF7^kuJKg1s(Cg3H9-iZbRDxu)? z+fgB2&c9!lz)F%JzyZcoV(n2OYFW)z+}9i+gCW5MkR?w9_xH9DsoHFVxHJBvPn^;h zXd@y4AYH7Q_j*7VyaBo?yKILlwMH~rW9{*M2j2^zTr;`>a4nS~+$HPcDkadJ!!gO^A z^$y3Odn&15@CSKb_(t+SbxOXt?F=?X_mtGSS%@n(WFeO051cEC9D;o1`RA|f-F$7s z(JQYX?k4!>Vz;=qW5d-~4$sJHc{zC@5;U4p=^!ujORp( zNb<9uR)}aV#N<*MvF5A)Xcvv+vE!8UijpDF!Irk zE_Kqi=vUJdzEUc+W$anf1H$>*-WyfahLL*c$VE?&JJh(Nzd_uDShYC6tY1%F$T}+? z>c=w1J(e9?;gF=4zS(w!D3$Lpg{w9_F}3Y|yAU5Q|LS>^goj9TqO~7;a61IBc8<$e zFk%bF3QFo7g|!*r(#}1Fv7CHOBR;hUj!nh3mM?C$`bJ0ED2vFuCpALlxuy2IBc7NM z@7ac1H8M!R80FIJ?LE7Tq^3axS|fm@RPE76XldRZ1W2}KOB@8Qu+vW`Pe5wfRQf(448`q-X`OVQ?P`I@6*J$D)X57TX~ZpxCfOA{)spcco)Oq3y8cE50k$| zN@6Z()!N` zxMHxXLPQI1#3sEf#A7WZ$3aJK{2k;%_T@~NAgOl*}#vQ^m}U&*TSW+1rKtI2vw3L zs2L1HE%xH$+dZgF2#0DWXfij#iPuGC{ns5z2z}woDnJ|LiF|NjJ&il?M8pjeUiQ>h zj5(kVPnm)-w7guDCoYWtIx*Qr&18Kf*F9&+NgNe&l22PEbEnq$SW+?xVj3V>a1$Jv zxccGlEBp4^0t-PbD3I_=l#`4J$i#UUoe)r5n@B>wvPq;QLbX2inmI9hcYk{9y@H-; z5tXV#EmG6=I^EwO6}bynBq$7nS?RUI8F_BJrmUk5AR9T{9P1qug3CKK?4m)S_(=vD zm4CDLl{@~;+Lu`Yy#Oz;g=gZmey$gcGlc9)3tK@YC5-ZyY`q%N;`X=eLEP|meWA0Q zxt8+DV%d00>n$wrE*P)FN^b^am$(bww=mNQoD^d>5DGtaMKA}(w1aenLP-3hlTKQO z67&{164m~Qn9mxxi@fh+n0CEIf}A5U`9;5Io4)58RlRCOBTA@rW&-${^&b z^~Q#SK^U)RHmAZ^=1MhjrCPjXgP6r@hC{2_b6IDtk|{DrhQOyz_5{!_YD*4H)NX7% zJScZ}B0Sl5YtVZ>#>B*>12H3$&P~Z404D^$G^~$b7(9DAD^@~scz88$-`_+>$9#SF6aDi`(7`)0L7$Qq9|*()}ELnrrzjF>D$$`){*S3~kwH zWdMZ;%Qgj8QlpkNj?P=XkGNQ?wz3^qZM+SeYz;$ij?x=V$U1lE(5^#ZPQ-rWE?@$= zhjIB~+1Xv^&KQNNQyS(`I=7uL3_FN)!V%nwU-R6NYIZ&&k4CaeYS(8Ug#NgiPl zkW3B<`SY{Tyi7T#C3g4tkAoxNaQa7BrKoEZM!n*^h$-VV9A3bDOH(ntaVVxHYGwr3 z%AMSgHnL|ZdZD_QE-r<>lE|)lP58y#NQ@3_H9MEK9Fr@oBC3%Pq4tO8bb@=SV2?H- zFa=@XLvu6Kd5c^hge5dZsN4lh3|2W~-I21#+8FxR}PlW zDB$z^CjEABY9mZbZ@S2gAa&*TsEe4In7|4OLaF2W9ZvnhsUv5mKH41yDBM5CmG4_F zx>xjg!BC9e{`1TmfLWpr+veJi38m*8XJtsO2*k?mDLDGe)r5K6_S1Kdmg2Tyb;X3C zMRhgmr|*7v^;bs?*mZPAc+_OMg@mE!4qrHaWy?ufUEEn7OHMbF>WBXOEPDAdL`+ba z4W8id(ce!cMq@Q`zbV1jGn)7Kf)y?-W&|30d2E!F9;HS_D~|5ECZx}93}r{*y?P&B z*=U$@m=Ypj>?3`5;CV8o) zgHqxa%B2`5%FbiFd>eVGREkE}hEa6ecRh!5w1Wym(7UVna_M#Arq5owX~v)xRe6Xz z{!T29q##%`%Lx5OA_5Klpe{vB{RA=&IPF=D=d)3?`Z`jiIAY z&!`qZ8ZKNY^is#+Eo3hPn{?#ZoS6d!c;_e{gC(m<%r6vJ!9u5q5K_^R>881rcdOZd zligP%<4gimTwY`z5L7E1nFq>8IN^Z8D+lpETM=sIP7)Jgomvhxn6ABs5b7m#5@fr- za#yW|_>1lbCOtwXep_0ub%Oroy0V{?ZC)9iPD*D28m#1ORrDAiI(VenBt~jE`D!Iw z;I^nElrh7cwJ-$t3&r$P@4q&+@%>;)?mr1ZgB8NGH^Y5$_7iD`yL5KvXk@jzj+Rd_|x?>@1 z)W#ZfgEuIj8Q4Rvgz|^*6fiEg@+GIC0HaxM1;rH>G@F*EudL? zy<*=GEfM_!Tzs%L3=*0s1TW)frI!KbIe}I5s*NJi@}Ksqm4#njM>*IsB7kOa7MXBh z(^)}UK-Fy1EY8itT6!hCAaZf<@#)QLac^Rj)j66irn)3q=E>~d9|xX`0)Uw5?hRK@?$B8=mYNDT zBA`R%H+^U);C8D(*~wN;D{W?7KY|L=+c-!@1A5!ys=>OZd?T(2`S?I(*n(u8^F&)* z493E1+mP)S7DGo3D-`N- zkJRng*wpDCVRn){~9 z*Eah=SNBGATzl@bEBU31+L{4ko2SBa=g+3LbF_FWJeU18(zGjkznZ1lx5D6wh^q37 zk^Tj(+&hI@ z1Lsui>Ezb5r2dzkxZC5KQVAcvEqnRUv5Uu#x>4-5vyS~vV(TU;5n4F~)7W%C_X1%B z92a;WCj|&2&`*iMdZOeu-hBORt3C*N5$dbA;lkL#Nv16kY*A*TxDlk@#>qaK5gTA$ z23j|R*Q0*WfW;FD4%1mS>)l@A7B^p zDsg6Ht?`G|!5}vwC#x){Erop_M6FbEHT%bxUVq}^t{0>BbE^w?k?nGE^Cn0W$&6^1 z=(wpPZ>Hm{@+2Lk6veBjb=+47{nv*k-#WLiUQtyD9;0pqi=6*2Cjh+0ZVXF=SNMqE zY>S&6;AYuRMN`V-?6o#Eufvu5hRK#!vu{3FR{=wf*cGP7;N&UJlkx7)?e+B_XhT~d ze`xmXgLabA$2bWXg@+0!sSZN~{T7ZcV5<@f;@`>c3bWT?ZCqHtT@Dwn*?O?3$1c9` zhUN{^W#XynT|_@g=oajcZ-qe$sG)Z^T-^)E^xaKF1E!FE@>|ly17j-BcB?f$%k781MRdQs@YG@@3GL-d+2nzCEijj z(3HtF5tx(M6%L91v0x7ndOWTj8N zR#?YhUEFSoz&?2o@+h>TL8kEpNKZ;F+sjBj>!=26;j1+NN?Kw1mj^FX-n;4O^zNsp zp4vCH^WfCU6W&~9YTGkY6YI53zch99$*I>~f*zE^r?x-y$!QoupXS(4CSJd|^YkYl z8uj39TFtaaj>bRvCS**!4Zn##i6%;-DD$4&%|@fOf~qN%1PVpl${SHuN>5u=Jn7*A z2NCX@~DJR?2wG6cW?Lk1WgzSf=6p`?QySWQt^91h$C9i0XUpJ;4bbeF6+5ns% zF3tJ6_B|KI-?Q+8?Fk|dWgWt{ut)|;2=WuJ+0GDi*VM+tl)05Q$~UiW*nNeq@zVBk zr2N`56KY5fQQ)z?gxAITD*_vq*lWiMJjM!n^)jIBbHT6K|nPQ5kt)1}J{lNxzm zIK#>y)1;zXbaYQ`KGl#9m=e(DFgAuz|D4NjbKn&QRfyMii2|tXru7gw2;~f7jNc&n zvwjNLGbZfW7udBuZK^#G=6L7y31_F$dgO?-18mCs#>(L)< z5Ma;uJoM1wc}s4MuZ1sr>vFP)S^+2%s|O%EnqyY(S15dBB|s^|d|Ce$H=JqD!ot#} zASD2$LpNqCZ6^0Xq=h}%W+M`g3W0!u#)_3AhH@rJKx@klna2yn?@-vW4?p;mZtVe$ z+q>EvUZJakjqYWc5sGWk<;03PwOE%}R!}Jdy2rt((a)0R=oV`>gji!p-wtrCwj~SM z`X~V^+yUFZD`J{rvCA*NLeMlM2a3G`(S%;g{mH2(y4;l?I<@w+uyEU7pW3uDVFs|> z^<wD&Kqg8bSsBrp5O7*ZQV&& zF6|juY^XC!U~Ez6Nb!V6)31H)UJ)OsZfa+rCcZ**6U*bb!-P_kN&I9`Wnt2-dG|Cs zy0Ws_3rxN?b9$@Uf0sGb8v|j9Ny_=U-|L{bZ%%i3vlLzcZdVp*O@db90W5e+q8MY{ zBQ`&x?Tym+O83jcD0cK{Avi`VH_up-H*5XrXj^~Xx+@wKLHQ0)30%0Eoy?*$4|p7# zT@NFJK8l+vHTY~M{x0O`Z_}Rw$EL?ZF%rSSKahCmbT$R@AIryA0(>(uW;An7eQYbz z9}|MT#2Vdo2zxxWh)aw6TeD6Xp6nXIfV-?l}8 zikum?DtuD{vipGDIyS!95Z%fozR>=0B4yQG0!9JICa+a1p8+Ai%(4pXNC(N+gk2jZ$(di5bp6Uv7=_QB##;@B zc@mJR-K3}SwS+?=USQreq|)JG_1%JH0$O6)Dd)!i+hr zW=FFnX7OnnZZR6IfV)JJ&a43NT{256N}@Jh_Dko%^|Lt6yfR>2#+xxXP;=;K%mYF7 zsq|}6@Rgfe{zciY8-b;XP@R==6m3w~2-fGIRcAf)0z3;7fI---eB-NMyDJ^cddA2DY*B?mw9tqsosjI8>D zXZIMj#?R8wG4jl!B-lR5p}Z~a{CS&az)H45iaQM zudl|%B8))Mft*D*cH&ITTg|6F9K6YWJu7dmRvw8Q9LXTUHo}ASnbCo1VwjfIsnqSE zIOF)xY(V$qpsrt0Q#=thDu**Ul)ULBc2&NTxwHs7Wl3P*Fnfko*K5~Ihw+3zwbwDo zb^oSdsGzt=hNH-&oa;XyqS3M27mTg)UL1o6*@rEW9uXF(G*`7GoQ8mbN4^c@k3VoY zJ+6hO)%FF+jWs z3r>z+T);=-VUz+$iU zg8LjjWhVptcGcWG6Ti*-7UcxDimObO0>>tj`c3|JBj)Wv zl8cl@$bQmM7X3spEq7F^XlXJgPAlf)oSGdj)nY{Dm2vL?8^|!*O)Fdr(L{^;$S7GrCixW zi0oRDO8}`D7=RR_TOf$EXO^5)bS)YLeY`_jxkRRo7C}b2}Hp&Qs#p(|< zMi|NhLPSA&EB6{}1oJk333QK>r(v5FAB5ot1RnPz*>2#3_{)NddSyuk04>1p;tNPE z@?B#bw8QXANSK2mt`o>ZxWzhU5aW>l_2Z}eqi9c=P!EI@@wgxl6?m*>wIr{>7_j`T z3X({#W`kWKl${~WPO;s2il}XIoK6CTwr9IAPBj=Afi8|*_E14C z7tzQutXbfSGt97_>e~2zp{~FgBZ|8M5F&i4q8cm;cKbjdSPDx)&^ED8W6QRn-thAJ zDqb|>-bU3Z^;@GuFdCoTsMaSPF;nI~t{z7q^njupgfk_CN`N>s?C(f#By!_ zU?!#5tBFV}dJ1BanP9!DaT2J5upuCmSjko}sX0dWE!gesu`8K*SspO=Ub91eD=Odo z>Q}$f`|a=CKEJ2u8{eMKU*DX+YdU{o>>IU0uUKv4&v$ZVeyg%_ zWMt@jfAS|iFxoT+h`mvP^(V6pI@|YE2Z^_4`@J$hTA<&!{i`>g_Qt!tv65%qDxYQ3 z-`KY|q?C0eN0Q98kZ#E2k~+Mhfo@nAH*BdJmLv2oH|*rOU5fvAtc#l$Ljy7&s&f}7by@Co{Z?2jjC!2fZm^FD*t#vj;-~$Kp2Zy0b@nX_tzK1fIvh<`TWp2 zt0NfTk0mVl`~}g?Pas&vzN_Hg+p!TFe#Zi#oH{CA&mZNK=&s9I=ag;;@h>xf(bEnO zklbueDWS!G??GNQjs02yS`yY96@9;d>7yM}zuXhPPist(yT5mNd_(?|uPS~2dk-ud zr14W;+B52BSF`#PgbRPUcTL}S1bI_@9&v1t(~Ds<)8dslaDFMvjW z576l78d5g#<)?@I2k9B?5fq+D_xSbm&sqdJwkh-WLldCd67o5e{Zhtex51?O?bypS z?itW_WF0G`lc&W+Q_cSPBJC6D_yrns-&W6;SJI2}*QeKV^VGWC>V$amSbmtlG=Gme z=4+4D`sm_yhU~fCp#h8(TI#QhERq7$7o-HwJ6*J3q>Sck;oiGH&abck5F4-mR-bnAk!j6T(V)xoN8iQN_0b{7T|GF)S2sK0Gfv`i=q#UW6 z3K}0z`^nS4D~2au1zbjw!EQ)nQHDJX85FqH_Av476(onnFT=>Rsv-+L(6H{G9w;sB zK(+fen5{M(Fc~pYC|#ik)xGd}K@ET%f|lJQ9(2Q zp(O^CDG1nS<$j@$>%)|Tt@9aYx=X8qle8E} z{5w&|fL=DDPl~IWJwr+MOhHg$@I(YifrZ_E>f@)?ozt;Dr!io*!txKXr|{hf3VkpB zf6zmG3!Gc>!I9nG_E>ER_{F++3f%qwu=nQiHC^lfxGkoNA%>C~;)p3BJyPSX#*hda zLW9PXs(WN|GLnfuTK7c;${-18MCP zJOdv|F;}ruX(cPwQ_>_R!$Um_->e1f#`YED?^6KFWQ&2O$VO3>o1dR2$CRKjxeTA> z?di|R_QcC&$_Ev;1||m4UBVS>fY65k^1^i>)de^nr0vjiC@X+EC=$1wh!kYcvhuC5 z$|iH?NCJ4giGOwLqSEy3oJ54GkF7{7jY;PEm~t{r42RO4pBhgT?QP;S2rc2#(&bC< z99^nb)_7xdwGYds0V~|B{4L-sAecDsDpe?yrx<97B0vU*3J$2^185t7QQ@4Ll`!SA zNc{>uZBTSRB(w$33Pvzjxn3*zu`C=EFUa%ZJaCj=HjRos1R{Ufmr=H|QCF#cSbX#o zfZpDE)R3AR9zs~Sncl!xsgm{OktIAhRc%D%n>NFcaBrYJfno+u8?ObWFO}B=I1FAA z15O#WMmaT2iKXN1F#weq4mGozR+=)2DpdR683-rc1N#rw98Ed7K@Ng4Ciy@+g|-xg z!q#9!qkYc{HD1}2z(R%ct4xV0*x1<`qv?blE)wK>Pi*M2@Qt=q;$(trRD+%M7az#`BgI0221Cmm*8lXI2@7;no1Km)ev6Ka%!gfL$1aw29eKuY$ z`I+b&Ce;&^JJC#_8{rw~{o{Kh4Yhn5K3f#|iJK96iHheK=Yx-l-a_9i4zYuWsvN(nA2)Qjk6KhT@B_L}AR>V%(S^%1q(vG17)lyxX&n&f} zU+cv+O%>=+vItfIRTo8J0y5`;3^Scmxnxbn){M&7bu~*D)W`-=PBjtEvfFAMW26>b zio(|**s4>PRK_2yNLX5t00A7NsAzHp1aMBz)fdE4HE$$xsEH0$P6twmWTyk+Q`Hx- z$~%nk5Yr%dCb$gIS~w$9gp)xvT`@(CWe+e{=ruEmjMpkarSfFe1uNS$R@eRcFpSv{hqlvz$khDA++W_1kd^3QU2AT@# z4%h`K5nR;k0qiy5avp?qeq8>c`IN(5Tk!(GLopEicTVfVq&DQQT5t#HL;N8je3ilm zWcLJMOtn(i^3S5Ui3 zFE^Buc5UT$@uE2?Hak%`gF!yeYpjrG)S6Bu0l}OJWG-@)BBPFlSq$b_=`CUVGy1j~ z){oJt09W6l^3PZ~VXbW2s{w`F@+T}|1t*5z94oJ?w|Fp(vD!JkG{MGlTs#4XMdPf*r1tK7z?Cd zHRGB*a;CEx>Dyz%;grGt4^k^w(_BShMmDFMWSRkW4(#SysYF6SCcf&JET=4DZe~)h zGs}S{7ZI@w@U0)aj_lGFFO8*4GksTR)Lu}6P4x-79N%F_MIASkJ%?gO+~`metDOlP zIusF9fu|}Tq>|LQxuSNkM=&-ZcbdkSsEk9kxCv!P^W^6WNu)Wm(q_mRRx2QssJwK2 zY1Xz9UcN7TNlhgM`NqOjRO-ztYZ2FT9JabqPNt4E%BkBpeTW!4aXN~*w zO^Sfq)gMZsBq9HG+)=e)pp~8>o|ddn_P|_QQr`sG&}v0We!NXEiG^ylDv`55ne?1X z7SZixaeTm(wx~C_p53x$pBX(0Z%t_i?98LRjg_uc8W-L_GZUes@zRA%PpcW2qLQ9q ziOAIWL88Ep5Jm@f8=~htZBSG=Omlo>a}ZY`9725Uh?ejIC-@0CQP_CO`AAEGRXrOH zVW^6*7N{S{kto>spF0LFOh`)f39VA?71jW{H#0ayu}S3#s+HpEGEQ~1Vu<`Dlpmi7 zX-hUWa)OmoD-aw=hhvo&**dHlhy#f`3}fh`LQiGLc@o@SIwvt)Os}I2Z7Qm_yT$II0+|sC=@+dXxz@E05i!If^kGTG`Z?u*^xkO4nW}CB=4_|b@)vZ3HrpPhstGu%soFO3`}w|th!sw!{Cz68ZF;IOM-kDO zODuJ`4x840=)l}aavc-G2#qOEfvY*uSGBRyNT^(WL54$X@;&a_zWI| z8O6+mU`-e)1yr49{t&gUizlwDumm83645uL zBd6>!^n-Fm5s@TEs$66DFFg`HjB3z0H8piYCU`wqU0!LWyAo0ED;B=UeF~5(70yIb zB$eegp22(oUfy7S1Exc{PJFA0B<%_28!bBKq-AF^?=PZYvgO5pLR?hsLI6*Kqdzv! zFr7dA1{AB|cb2;Z-KW|LK}ZCg*hD!87dcbKuz#`B#0^ZFmwJ0R&>l*L;t&v>$`C(U zlVzsX5Qc%HQ-A{O=i#6>iE6!wn=*8n406G@^x8YTc=n^CN@h$%NOdqW68rAd5Fv!0=V(68kru>I{2vFo-z6Bmb z+2(4!1!rKSXP42ExI`u9L03yJAAE7O4Y453#Y<6KdF*_d6Q$Z5q}v3~#yU7iuu*3Z z2a^?lkX6BmIWYG5Fu?$V z0Z~Dkl|T#vii)MGB2&XFCe|~5Vh>@%1O`hKHic7(+riu>r+=BXTU+B~Z?oZga|{Y> z1_b*;l)|dvozhAxq*39z5J+9JZxjSI=C=sd(A0u`C1(VyO++~IMb$D)LDrE0!T zK|zL!T{I+09y?!r>M#=Bw1zRKu!zMdRvo|n?Pz4k1I&hEB(Mncs3MrEeb9?BNg?-1 zF6XsMlC20J)fgElJ*$dCn%V%~okjQ!iz+v7H=AO*|yJowLM2xkoA`x39p)jgGl!#wz%c<8;XbBR40B@!upa#nrP;-zJsk-)M44J1Q2QxjBlXR(@AkW@z}p*2vC+U($}g6M_%UsXx;9L>@^kJi6x1ci>WV_ z#sC{1OV&XQB}oGmcqe$!D^~qn-I=@~s8V+9v5ZR==odVsyeg>=cvfXFrsHhYGOD(S z0QnKT889FjhL!Bp{e%Fbdc~rKF=B93=bo9lWNID*J~ocV3&BXbpE7ej9);D8gYF-CLZn=z_<`TM!5CYC`x!T0bzRL=hN(sVRu&InO z++Vz@(hyZENt_fWkT|tVFsK+zYavt))d)qU8G!bvhA2~vOeLW|l7YZc4o?jzc0eLW z^Sjn&wUUoK!Dx=iG7#dBhL2em{4LQ-63UD+!`RO%F-k3PHOCtkn~CbAmA1;b9Pqu7 zFf^JA^}Qsgr5AB@|j$R41^rtT94K@b*N70vZFgXeQ@djqi9>cT9O9rh_n%_=!@z<`?yg88}XJmpS?|C{@{P0FNEwDH1hmW_n*WZ28{XI_q z-8}qzocF;q;@4>AcNW*|W00IYv?c#OzCAYQky&UsusXABY z@UV0+S}{0P6}xIrXRC}A{AvtSwQ*1^3wC2U7FBC^OurN%CDSiOERXjPnlc)d<3d*G zVNJ&zzbi3jyy2i`$6(*fk)Ey&YU5dh-)f8GbY#P#C~i2*BxWUOq1&JA|ME2HK3oURxd}Lc0(;FK+|;HK49)n{;$9!Ne-|cV9J&uF@41nu%Dwk zujW-3Xvk_lx`Lyzr7_$@QLZjsoA)2DR%5lv?2b=|^+G1Mw;MBG$*n3+0On{4MKa%( z2%@t^!RNqmo}>;Wx3Q$}abPZhKa^pIuj)ULchW=!VyGFLf5?~WZ6N>x2P>RMle|Na zyMoYyFYpqk=lb@u*38@4zAi2kxhcOcZ_=v7yIrXQUV`zF>?yNd5>9c+Vx17xOqTKtGq)^q5aI z$zzc-pggtSLcYT)>GB$an^5I4B%8pP&BMQ_aSpQ=8SsUPge8&5cacZJ zzoNRr1oLMQm0I!q@XsScfKylk0Be$xTgX1n!<}B;DgCRu%o%(!1`5VRofW_*J)pms zh>^%H1fNHMH&#a=(gc7r2}F8}Kgy&l^$5qaT6$P`!Xrtq4&2$aMztD8aA?m4nlx-K zE29F?<{;Dspc*xY4BE^IX=$?;{`ThJ0UTmHewbs~7R28zY zg%{3CW6g%uS}S<~1*ZdC188bYdi>+bAS|>Tgs?+Q*^%BD!eIcc!Q)SCQv8)6mjwPQ z8+DxuuV7nvDV;*RBangPHL-_IuBr$pBPC-~k5!GMv>u-i^wz`YQS;y+LB=|6pcLlC z=&-NJQ6<-)u%#M|xQ!3FHT8G|@eBdD3Bv=kIm=rQqrSsw#rm#S&o)tQieJDUgX;8z z>Cn1HOuX3?edS5mQG3L!i`sQJDwAkMR9ryvaBFNzS)mDd7o*~DN25-~e%=&5@6q(Z zzuWK!m6JlUU^3i}D^X;H)sK=RxDhtLW6iLMR8drC{(a8O%X&XC}WDC-)M@N0zw^1S=r=Pq`AzB zrP2aM5~d@j_UtfHH@v_FAQxZq#E?#$?+Ln+{QZEC&hM~4%E^I{rqqUz-3K7O0TMK+TvV8By0%CblQ<^{uc}C4Oa4q{mHDy- ztMQHu0GEznOP9kxl*gxWj3kQmFeGNdjfm;4)ReF#XXKcIeJE!~rHA}A`FZmxj;RMm zP?VeS*UbzM(6H#K)M}iL(!70mAc$$UTB*6n2V9X;I81lpu4u^nROZZ74q(SAKNYony!E?o2G-8^u+8?3t!0Nd zV5gz0GgHg6mIgdX*-H<)CU+$GvKX67G9FpsBU0@_Qd>GaQRBxWFW zooZ`v8W2h>k`;cv6yOYHWeng-cyz>YNOhS>iRkY#{wbD%P8vJY;b$VThbTR$9u5Ce z9tj^k;;q?4GEflC!i&Sdga?WUM(T-pU+6RCg92K_-w-v#%B-?1 z81)OsoMHK(=n=~c0=E#L0-orxw=e4)wroyFrSyda$~bUilxO6X=0bp@%8*FD`O$Dob=Zk*{KNLFm0D*SEK&BY~1tE55c~vY6WYBv23vK8F-sj zurSSQEnEy1i81=X06mhRu}Ku9hlB$Y&8xE!aD*wY1?f5-m7!!;mOZU-M2XDT5HL!C zoyZNmtFoFZ(5E(`w#vG;|o*MXtV}N5$NzCgWd03#ABtV61?< zg}D+8$>ctQ6=f)l;tlwtbkp{d*r@V7xj@#IL}$QZRJP+-={D@P2_;99k^D>k zpt!8kq&+lW#t<-qGkCHsfVV+g%Gx6(dCAx*N>bA44h*S_#!A(T zd4kR?B_+)Wk)XW-Tu^7W1V`vR8Qo|8Q7@ezTtb4s5GPQ9TG=v zsd_}*rU%WwFvb?8GI`|XsU-R;!$8ercCs}~ekv61<0PnrvB0WDekA#(2#i6es&_}w zASr$&BAE&d)cNY>&j;xu`Lb{+d;a-&eo`5Ul#%auY<4rURC-cMU<98^n9kRiamvtn zwE2?Oq?ML2f+{kD(1z5KxK>({`G?Ah6BeB$Y zOS7O;orwkokR!NWu{o=zG)yFUMneymiSJn7dpgdr|XGjjV@00rszAeJs2?Ph%8bG=NY)5Wkj8GdGNhL9{ z@RSeIN0PPDJU1Qf^O`g1Sj6zK3Wrr~?2wFJ5;>3{o5W^8@KH>E?9H-1K_FGqIzXDP z5AcPv3L6Rb-%uTxGlCS}NsbZ$@^pj)nS38PdU<^`!8;Iy%OCMQ=p#;;>iv=XY%hcx zhG^boc9sXdp6N=s-Gd7X*#y(Xm+*+9~jr@xZAxi^h zrK%ye-Aw<>qeEk)YK2>*fBm_Fm;tM5h;IddeVEaZs+IrsWuX=IQ!%Oh*T?2hX3k%I z=iCTaJr$RV(A9^9i!c)Y(RIp`{;sj-;hA+ZMiN{?M z%)$kjnmM&p1}==F@oJw0DpO$1QqmK1R4~45?6rTg&ytwa;QTJRWeFbvSEzEUrXzWzov&T579V8?QCs*Bo$}U1@^!Fs60h=C0*No*S?Wb8E-aEYmUjl$ zjwy|tM(#P-(nbV@>hKU`fYn&W446!A5z%%q*wXCeYngwL`xD97#2O{@4^j;Sz{q}y z0$sTixt94t#C(Byr3{n(?Zsdmfe{lYtQn)Tk0>5*Q|0kv#M4Vw&Q2PVz7?5k?k`?c zk(7-s^?pn?3*Z>TE^7}|#xAYMT|>!p#yl6>X*7;=Nre|oaWsi%2ZzCIfFpwUhq&aB zk)u4J(PKx7Ke9vlX$aG4rQw&iT;2z@c@fm+>_3^t*`zOvv=+ooFzK_6>N=`zOSWS% z4&?47bytKfO#NuEo zOZ1`?8QN(X%yScm1yZu@2v$(}$rUKe!t=39_AD;RUQ)7jW680j#J^^UE8mk13mTWm zz2vu{iIgTGuNpn&j-IkLpQ5L)>Sp=UI8Mq|x^vB|#!6GRF&6~Ud|8)lJApoyq#qW2 zTo#9XZuG8fSAypKV4|I@);-3sK;1hmO^OVQ2qxw;a-V^|OnwBs8l=D@qAh!py#2Kr z&g4ekeipyrv~8iY!_RC9E7%AcS#p1P`@sRFVJ!M^VzN>QqGdJ@{85xy9{*bBK!nnv zFzUK~KHOcDU}w@jt#qExRmNvVp$^e+PV1oLe`DSPo4_5kBIz5*CGwFAiZujMd;^%T zD@gMmr}d|(C~MJ;vqzALr`OmFpXfH>z0r1>NlyH~BiUy}_`^eey&(!`34U}q0Vr?0 zW}oDsOrUrtB7Os0#1XOXD7QxD5EJvAi3EHd6b@Q;tU%^ECaNw|S{v*P-e6uN&okaO zjO9RmD7^iiI$n+d@{kB-;D16R*l_VCA`uus*#A|lkyatV3$^qL^fmCkBHW{qj!C2P zGlN)Z5!Ov6GnlBRkHH|yGgd-p{jSDs7TUvm9uk_MNU zk7Vp(^islJ-ErJmK3yxukNH1YNm>}kn!`w&B6&iFx+QAjWFk!?+L4RV*iHz(&k2$ywDJsUrrRWqi zR=5I5^u3TEO&De&rkXd7pb6r1a^^9Ks0KIOj#`aVSk0BqY_nU2(`s^o@tP8Xq3c!S z3=~8LM9}T1b=9j-MC~ZqlMY!Vxb6)HN>+gG8{S05flrKM`^n=NC6H`Nuc?@YLJgJ( z91mo=e3lHXI3ZOoUTXCF5ki7LG;{VLWh-W%(X~gKtwIHMKyzQk@+FA2Ua}JO@(|$R--6tNiIv4 za%OaGW~-9$|AbtNxVVTtdKvR?5;Ya~jiL++c~zr~L{rQm%EP4xQ6q(zx?V9Aq5GYH ziS2+UNVz0v^$gH{o^Wq251VURzMmxLeG zfnIs`i~9f{qx41U@*cF-xgp33mM0mLrFtLI6TRobH47cNTlr^8$~LZ*&kzb8*Z(MT zmzH5micXjEgzfxe$+9?HQnGiKa*3i1b$3GqZFYVZY6+OC8vsSq?XW<=WDA3a6i5!luUrZ*S!A>41f0Auh2Ki-)Ieg_?(Sw}qb> z=XrAYMDU1ds30aOItu zUo}+cV=-0?t#~Ee!4@ic5V2s7Yo%Uey(6H4VDlC?m*+jrYF|d#9;%3OHJr((Ka=V zQaXy=K);&a))=y;*4pB1Na;u)xLAQ}!G)}bl4wQ=2BY4x2O=N@f;|pp0U=X-qDp;K ziEj~CGI#~PZ0aH3=vk-}0ITWJR3505JIOHpsE`92hN@-h0~m~ka2e1hL$#XsXThTb z&54vY;4#2w8qNZpa-m$PaM*%@90729B77mrNS1CqK)#Np*{B0a?iofe0taQ;vZbYI zyRi=|6!_rZ=O+ukA!-t*0FOz#wVP-tJF0x^COA+Ce1leq&xf^Jqq#dr(&6%WMT-%R za6AA!f!Zda_f4H0K+b>x2n0aD?JMm? zK<`1hA;pEl63(=EB(3x@n>cV~h5Il)fi8n_NLw@Afs(Ff0^$)w8CW#>_)D}L3Tqd- zg9e^fmA^vuBi02rm-G6lPGUu#&o0oYlA-Uqma^%I(hQm%uN1VT0WM^TgrL2v2@ zyER}4dRPKM`kC;uYBeL!NkwxHg98_A-{_s(p7F)uDdA%bgU$lO)lc@)idoN_XMS68 zACud#A7%#t6bg$Ruph$3X@;}(Dlq|>BNtpIM7PC|GxAN8r`1Xm90~9e!oV_O=^>o} za6G`L@QlbB;E$*$#xE1gogrm#A<`{~y+qY!Y%S&7N|sW_0A?fQ?nUk7v+?%g70j)i z%gYf_rWRWUY7MFu+dB%yN}`ne0ZJ1sU&hU1+2DZYl&!gU>w8g5F)f!Z2gWPDZv%~a+b0MZ6v*4i$V^eC+>Pj?}rSZYC# z4r>QRPKo`QR*qaN1sqSIei-cc)t0NV3D8ngePlh5uUtV?hCwR@JMtR=;>Eb`jm3k+ zOeG#sO`wi^&LIBaW#8De&CiPP*4H*~sknnqtOC_j0}Dq5Qud*OD!lC6=;P$ZwUkAM z=mkv_1GX?~r~|klw-6Ou@IC3AlnX{^8TyJ>nIkmK5txh{7`O!{nudfm8I{NYtDTz} ztSNFoWd68Z#bh-0Tr16HQib3vu%JnEC9hv7l5#@x^H2gZkO5mL;V}Ro4-yo{@ zi4#NpQTa~%h=@cGu;yf>P}N8j)R037uww&f6T=ZKFQO|)u-FHgQY=}3E~c6U<$F$) z9p8h}b;?G@ih9?p!mi7(*_0ms`1lft7dbM_WcMAaI*mjYCs?` z{|1B_cAHsnNwX3)5obWMU_!B&NTeNnRdjD`h)RyOG79Pz#QCg^P=6F0 z*CS=4=CyoakW|Pzt~80=A5Vw$RDg5gE}0)Z6Ri29R-o(o$L9k!h+YHBhHet$Ae+hl zD#b%9mDY9j_T?Uli6UPRVwcvc54Jtwm|&p^q{btvf#3y;RG^j&^9^xYGpyG@%{0At zfEXmBD}&J#YH$z8n~6|7pu4hkMW)}Vr#rtL+K#=>Q2^E>IW00>7xk1pZf&+Z%ft6Uy2%LhAmmATGAx4a2e`P< zpolCOB_HWRa_Z1P1!=~JaV8}KX^jvf(5uqxLOmk2*^`9}pg)M5OOrfG1Os@&3f%ds z@C!Z(T}%^+fDQS6Slk9cWsEqF%%D$zF+)rt$fCNHPPO`&%QeL4S%M~ry1a;%VCNKf zyo{h~HY^x~{7gS+d~$4v z%}7+WCmj_TcRoG{V^Q;na6>-?KtNfR94`R0HS?!|!ZZ@af-(ud4o5RnBne9(Zj5oN zr7d~1NTt=YeTM@Oj2DeSu&sw~CJ?tgVMDHULp5TkmJTI1>4PH3g&EpI=R+5g+nmM6 zKvzpHZ~4*jWD&uX-xNl{A3l_rXx~dNfgm!#&Iu!e=eQ!6ByYqbABsEskS(E#91$3T z6$Fq2SjKij!_~ut2@GK;yAp95;Y`$OOsW%0p3KXFUqE{7y&Wwoha&#PH!HQOUXly<=Pr{TM6Xi0MHylQCq(Uq{%)LY zxTa=X)motxdTV2V7%PYNu@1AquRC(unHV*&3GAhKFF|M8FpO zfin}4bPsKzdQ9z5UB$$pc$(46ODOxrQ6_OShJ-<`=U$M#s(rw8Ag)=`HVURG1Io;pKfnCmz5^98ODi_Y*YWYI^&(^kpcAzc zVOJi?tVm8oRsk!(nvEw-Ohmkoo)M2u))jC-RQ`I$BC@^iuY{?UW_%oJdtG;|OhWtw zM#8ln1aur_TNkWXeBCSpH(%IH;k11+*SE$G2qC484w9|V1T=Nz9RzAMyiH^JwK671 zUp5=^-cNO|2rg28;r2!kl*pn|cn3NN zg(abIlvpnQXr5rfzl?FejW&K0)$vpU1x7>1=uO% zOmUI@EhluE#{KXKRy-^}wfCR)B`*CLghAOHMayhAQbr2bL(Bp?NBd!@2r^)^6TwA@ zd-Y|qXrpWNB&;$_(k(m&Ri1UJoqtK%+0{LaMIfg=8gTI9DhwNHe z%291{q+`^(oGP$cM_>uEtO^zBFhe8OnuU%qhMKP!7v>;IgMl5@S@JmTAmSNR%iI{z z%)NZr#5st}4p5j-D6(d_grb$;0O!=lB4tAzp**OLe=22kcp8aGc0Jlxse-U}MRlFR z1nN3?&0z#1f++$s=tymW89XAxa26(_ugQPq*8FV(q^!O#ivfvSF@u~H`QjRo22#27! za@PQYTH%qtlwQk{W>vHVGL->1fI|XUO?fN}3d9EJh{ynKLSfgz30y4%hTmAOjEE!~ z7adV|=_#RAaK4lGQq`W0WPWQOc2Q935kRr2v8$?JR->c6k0~NsDu3Rc}yG1 zR-|q=FN|A2IY5Zsh0R` z{nB0)A3y@8zwES~58YU@hRc>L9hI*ZZWX)`_TmskK-k*G#UzNp3saJvhsPpgLU!6B z(-yaaup^1cN`aA+6&O(};(@=&-Kv#3xe$dGtOpscL{M1SwMk`^JIlUBrgT)x;^Pn7 z-PHG|E}rb-tU|fkxu^pcFqe(B#fkP<_z79o8xYFY7LRGOLWCK>y9Ga##g7pEk4DgQ`QTnU}

s0HCb|zhvuu4HkXyo61ZE5M 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%0A%Zp1 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

f@-- z**~5{OLuxbr($_cO!g?e50Zr6B4kV3AUD4K*yEjwd{W;Uv#)M2&+R+B2O{-F)Y5If zg}t7~rdOr)-ji@YaWgeHR!fifcq94M@!L^zk9Q$rqSVBiKz-*=zQ>KP0WQi;bJoV_tQmL5tCRzZX6_OaF%W z7?)Dcwa)i;=3{Qv=6vMK(D&EeRH3vbL-uaD^SRCZCdW436<>hV)$Va!F~5Ww zbRU42{EAz^byTcO7k|_?6?aMTZH=UmEWRX!|zMVQ}`l|RoMTiUn5_Sl3%2k<79Eh z;l<8-`o$UYKgJY&EHS-(i!=0Zh7@N+&Wb$;%UB1=cjt;T8jSQe!-_LrL`;5Bq&QcLJM^%RY7E?urjGN?1 zdUeLRNR?mb2xYvEb?U_QuXuzL-bU2<3z^e=H#@|Ol0kgvgf zXCB`e#y%tWMe$7#)FM4+zCEwn*^d^+k0K^}R4`t~r*bCgPEL(|Bdt4m9wh6pJNf1e zXL%bl^taR+GxQtrRmp95$~|X1j&;d;t9B&ot=f^Sw@gQJ1KyXHEz^;FPJ&X0;2rv^ zV5i{{~ZK!zSWmilE4 z$(HFz)?2?KS?)>8HgC<)N2IFczhiA&f))&!?@Z{0H(oj5a{i8t8&0lkO1 z0}sW{R{nr)vo9cfw~Ty!0evou*z!LZ{1Lq=V#{xiirj%Gk*^KQ>ksJb3V%R)nDilc z;69|Dhq>*|=MG$Wu2S#Hx(_Uaq&H=yoQP+_e8L;h-=)Y3=-%Xfo6;leFGcsJp%mSl zhEmQt!0AJ?J%@&sdIGJ=W(%ah45e(xJccp1p%njl&fJDlvLN}!(oo7==o_YbA?Z0o zDSBHDrJRb^%eEX!>A*Zh0go5|+hRNBF_iKxYW@mk@8&m=Qt&;Ip%lHJ52c)j)Llp| z3>=G^U3gkw7&sS_<*lE1W^8$j*;0AaIK@sy&GPHUE6s1w6bE!q3@6Cd-3yp+DN9IO zN(2ACNU2|7Jy!(uTa$awJ*5Hp|McXWbrk{q{$y$3ZTycbf5m#KGHWP(s=g}9^XhA> znt)b)K%WQe1Lis^ApKtYZk|^pqnrAGe%@0b(ECT8SF2{9ROuVC*VgP)i^OD!YRs}V z@NE{EN5j+yW9w?nyeHFV+U(<72h11H?{qW-^gA7G0o`BP0=mDnaURk;+XDLCinhS1 zIC^(sU9|=DTNZ7B)fYJDnYO?NNZz+-3p`}BdKUgCSM=<*z^k!*tpWYMKwIEl#6Dw* z9niOw^fk3hYT1L>O*n701*ESzIyTekVQm53hepk^jTnti(`#d7nhR%G*=IJJcYiy$ z*UCu2`Sn(LPqjOspO*Fp^fTtLM~`S%nJ48Dm9fOk8Q};<2@Ah$@RW- zH((I4C`Zkbx;0T>$5*=YV)Jd~w@j;!#v7|aEK1aVh?;?}BkdoFf zGO;kV3neN|Y#GJ&nOKDS5&2e{m{V4kZ8c*uw>2iU*=Ri_>uQ6EZKC2%!SX;Q%`f=m znX%~JQQBS=?tPMO_K$H2KMj?OaR&bPp|3f8N?FIs-#%*&rxUDPPW@Isr_-!6I8C?C z;WWbvbDCu><@8`{HK*CupE#Xoy@)Bs#n!=?dQ_*ih0|{9ZKh|~|Kc>uo^+g~m)Qq$ zT45i;=@NS$r``6EoW5=!%jstOL`=u25xbCo7rU?Fbb-5?@sN83rx&VEpd*jhr^b zKhOAm@h@@O7=JjP(2v7A;gj=a`c(WJPTS*)IL%I2%IUm>HJs)obYSXHc?lnJnx8Pl zX<@=Jr>7-+h3Po8B;k8bZ%sH67jNU#s)S!~dUwKIoHispz-ep3228PCJa2MZ;rR!r zOFZv#TIKnG(`wJhoc_x58K|%Lqn3KV<`PI}@soOUNxGv1%Lg43bI22QspZsOFRG>EB3U6AA}l=|wEQaF7o z=~zrXD&Kb#|NfP)o_{y`p5(O2*Usr?-zHAC`2Ngkudj>KcYUv8I!;YU{yV4sKT77 zr@rxvIh{Oyi2W#U{B``he*B%B-a7s-oUR(*hv`K1<@j&VFK{1a!Y=lY`U%5KFHDKY z{}Vq>ot82QQ>>4a12`>BIf&D;lx(I~q|E1ZNy^=vK9zDWr|l_EbNYNr7pEO5eVlft ze8FjVitALV|MiqOOwoTQP2@Cx(o{~1C#7RLQEi=cIJbYkKfrjQ|3FSp^B>~m^UvdS zf&WNOL;hnqy}*AWr=|WvPRsm7oL2bH;&h3>gwwnI7jW9(znIhe{EInl^k2bgtG|lV zNBzq9v^R{?d$N zxZO{i^;^b^XRYFN!K~GshGzYN(+g((k<-#yO_-woSvQ~@#u&4H&FPT`yn*RNwJp=e z_QI9G>{XoZobwsCt9S0#oF>ox4pWc1c-|PN;d%1^{bCGvcm}2u)v_ZzsDGmR^%2RO z&!H#$2GhfoQp-!$#dJf-Q!&+*q!l@-x0gH~Q(ehMqZ3beQh#6ac1(XPc|WF>lA)L$ zEBP{}jU_&e)@5!lmZZegRkA3izm-(PbVErbrn-`kFm{v@btON?Jqpo3N)pa;^nS^* znCePujFQgQCGLx9uw?cE9h+^^ARC$#YJoBsdlU*#k3;#?(+~!^ zDDfOr08O+ypfbiTEGLoH0b3hHER$s#NpR9A8})CDDl z9*b$B^*5*ovCL4%g;-veh(ZI@YtSHse9$oSJ#-P4+?FMO1hS|$$c83b8z3)~8G5i3 z+mflRP$pB?L$jIs%*9v-Onm_=VCu_I5pRL0oxP?$Oi!taP8^;D>qvFo4+RRc9q5vZBE1?r@3 zhoaQoP!DuS=pJZ*u_nlhlUA*RGN?a60qRLe?u0G2+M#^LK7oSN=TH$-cR*prrj((j zj7^7DQXweH)Hr3GV<7g}stVYC1`By?s>drB^VW;69-r~pa|-3b*j z_Apci?J0R5s${Gms%322Vyr7_22=+ng${t47&{4SrcQ;{Lz$sssFSgUP?S0k8lWzM z2B9NDWid?;T^7@xl7}IcApQ9<$c8qSSt;c8fNS@2>&fQ=Igr*fEHURPzGaXK(iTJ0Od1w8&t&DT~HZg+n`FuK7?u+ zn{v6lH81r|hng5W4_eRIMNlVWcR@XjH9-B0ZG(mx`w&uz(!Q)K&^~CfH5})8X z3PC|?5mX2r61oH`f)-nqP#IJ2hQic6PzCed4^=YXI;fVZTcHT`4z!Y~??X+DO<02M zOHGE>Gc^tBWGndeOnnGaNwSn%Ad7k%vZ3Qb??GN@v9%M* zU}|(S|~{U1}b2_+n^%mYk#&}td5-6X#0BWKxhB~Rm zP(O7AG(c5BYJ!wq23gcEp$zHQr4bW_+J`3eD_A(Ttx}h?v2MSYfLbcRCpa}IY)I@y%HB%o$oz!Pglp2Bh zsh!XO^(}-;6SR2`WKsCx9F;-EK>;ce%BRLdLCO!6LvJLLbGnr(`Im>7ijL!hCanffhmK zp}9~KW9LK7R4LR+g`p^QIn+;G1r1P3AvIZAbuDC3*Fyp7CMch(hl12fsEoQ33RAy_ z%At)V_dyZH)x~@DHRW?snXIU$f71d8PsGb zpGt!Yq2-}jP#I%cP%SkZYNif@qSO&kKU7z83^c%4FJw)Vxov|2)Q3=z8ic~sb|^x9 z2{lt+LtW6ulJB4a#>SvVHNsyhU)D59WV!|~T6hI6|`D=0Pgz8F8 zhYFZ)BUDapg6gQ3p=M}L$*WKcV}FIBjBSCs7<(HkpDyitAF8AJC6+F+PoPd{Ps!&{ zKeYo=GbA<&Wl+1JeCkK2jIw`;rKCJiEtL#KsEJS$H5F>6(xFZ&07a<-p?>NRNX?Y_ z&Vw?cjU`7y`HUS46+m?*CqiY6JrC7VFF{SzD^Mr(7pR}w43*82W64&i8QN3w4iu%{ zhX$yA$jXq^PaqpQF7!DRVC*|66RHc1K|#i>>(DCb_E3CGzYnFG*u0o-2n9{-RHKWb zFl)IEicmFB3shGUfd&}sf~)|3btm*X6ri?3wa}iD_n-*%5!6HtLCw@K)Jc5>MX7I~ z0csay9U!&*0A*0FUtx_?2~Zj3gKDW1s1Dj#G6ia4Y&z7!SO(O|*w3IY#^yl%jLn5q zrpzq|vY{hFxiL)-oefgo4!Xp)%?|C`_$|YN>~y2=xfm zOtnER(8iJtP?WJ}p)ST=ga#PvgbK3cc=ak2hW3>F6^c-QhnlHgsFT_TMX3*=E@)%P zAk@#;c4&b55*lRc*O2;|)chS}QDcxzSu3y(sCXzqB|(|g1Sp@H3 z31w2(Km}Aa6sA@{<JF%x`W@6l-3xV6jZlNyXn=YO z8l;|q)IrkH7a)sz8M3KvD1+*O0@RyOCiM>}pL!PxQXfDC)W=Ym`V1ZEEXy$yvZzeRrVfTOs6(LubvTqs9S!AE zc~FoFLIu<*P#JXw6s8tH<L_TCIu5dC%d+J|Hgz%-piYM}sk5OV6@m(=MNpW!1d34QP&2gz>ZGoQqSP;- ze(E}CfU1Gi9BDxWvZ!024C;0$K-~>xLPvz|iD^&C{V`1sJqYD9Uq2M2K7q=p&!I52 z1FEG)p$N4bYNCFGIw`vbZKgcX0F?}>L!_k>A&Z&{Wl-r*fC@nQ)PYctIs_`C=0RcV zNT`-N7K%_OLQPa5)JzpYolsrLSx}U*r=S7q8OX|(R=oh_Q!hh7sv9b!dY~}%CR9uP z1By`ZLQT{MP$%^<)CFA?`V8u4Yy?t=%G`EB8PvB>KD7s`rPQxc9~B2RQ;AR~H6Dsm zeyE>Hh16kE^Gqm%%7pT%gP}6&P^gwV9IA(whmMAt7|Vm2sUXxzodQLvGoXHI0W?UR z3#qv>-wPp|x)jQwDxgfN5-Om64wX^Mp>pb1P%ZUqC_>!~)lt8Nny6J!3$+^Rr2YVP zQGbN`sU~QUS_i3l(!M`I1=N#JIn@r;QJbI^>d#OY)ddYwuS52HspSnQlX?p(r~U~= zs6MEU8i1OqPoWm-3n)tc3+kf&4GmD=Lxa@+K-S?hH}{R0FXe>-)Ho=UngkV4)1WeH z1{9_afXbi8>Byrt+Z{>SU;sIvt8qXG2|72&R~ zsUu`LmOvJDHDpu2fHJ7-pa4|^Wl|9+pSlGKQny0|)ZI{+x(6z!?uTlr2cbHu6>6f^ zL(S9^Pz$vY>ZG2BqSQ-J7xfC%PyGcNpf*E;)K*C4$g;fyS=9TGP4z==XnE)pD1))j zp-gHAluwO91=Mb+jQSBOr|g@s98g_}2Wnxg1?r+6g$Aj|A^S*a%hOOM^&C_{bwK4* z6sn_MgIcJ+L0!}qXpnjvQb$RB??E>85tK;{K?T$>R7QOTg{g0#a%vY;OZ@=VQLb7X zbD-s+1gMEIAJjsnK%LYSsGph+4N@79I$B!wGsvdqKyGMxXfBk&SPqm)izzJdCw zUCUJ)J**hYN6&pQED#KMdd)<(DG0& zG{D#i&>&R+S;t9RPJ?XfOejE|17%X@L-|xGR6vCxd3Ouj11e|iDyWWH3bjzzLQ(2^ zsEfJ@>V}qw>Y;wdRzd^RozNildr0L;`|g7*YAs|_4?zLy5h#;tg9@k(P#IKL@+?#V zEe{=ZGyZ03Hq=7RhdQaFpf2h-s2f@y%7^+HI~f|JPKVU-(yFr|n+idh)FLPgS{}Lt zDqyS}3R6p$i z)FDt8H4hq~j)VrOV<9VFT6H31Q-x4~DuObpv!DX11S+R4fa<7=p;qXk&|;{Iu`8fK zstU>s$~=}q1=KI0Fm(e|PSrvY>Nij`bsH3=?t;3g255j<0}WCSK=w&8j}|DCdK4<4 z9*4rz(@;6}92B8CpgJlFHB+xaE!5wjD76LZqTYrEsrMkeK<4`qlt~Ri<Fr50B`+Ds)t<&+PKP$^IyH3e#>rb8`M1{9@!26a($ph0RbWS=ba z$bmAcT&RFL0V<~opgQU_sEIlgYNpPCTB!4(PO21&Qemizx*Y1Ku7U=srI0#BT5v67 zQ`bY8)J;$URS%U@E1^2-PN;?YJrt$xgSx1-&>-~?WS=VYcm&F%+Mohz15{2u3)N9C zLS0lRG)TP)*{4Y@e}w|n-=R#Z7Yb6_paSYcC`=7P<o;f%6%P$iNzfoQ0kVpuRg)o`N`nH_EGU!8f`Zg+sDL^Q3R6cw<ip(u4CG(Z(f zzL3;XB>AYbBp+2G`KSvZ>s-lqF%+N{LqX~aC`?sB5o#IKO#KpyQa3=s^JL4^N-$-}$1GpeS`J6u3ZQ#iB)`g;0<>4+>KkK@qA9YNjrOqSTep0Cf#yT`09wLjh_9 z6r^s1!c-j;p>BnmsXHL6RLcGi%7QKm-7EPRYm|IcGZdvBh6bp|AnRf&`xF$Qo`HhY z3s9JP85*FvA?p$;(E|mjH=!W)4=7B%3q`08pl0f0C`x?>4NxPJ?^3C6r{tr)m3-75 z$w#S`m`9o9i-W>cA{3#a_7&7jeFH_QUC;pa17t0ce6HJ2mP&wvln)A1DbN5l1+pro#B?Y?Wk5md zXHb}$14XF0P&1VSMX6k9fI0!Pu9W%;pa69m6r|3C!qhoXggPH;rb?kG6@~_=%OUG3 zsqZQ%KrMxW)U{BUx*m#9H$lx*Jrt!@LIc#DkX0r1{T>QX_d!8wEfl66f+Ex-P&3sA zMX3$Y0QD?nT`l#!2nDE4C`i2ug{i+n5$f+yGt~OnnJO zsIQ@B>N_Y(jX?vHbvx?2M(T@)f>aU|rY1lUYBJPJr9n|@7BoO*LDo{KWi}L`4wHP; z5t5HOM)EC_e8)>Z>Le&goeG7iVkkl_gqr^kbN3w|Mftvqe>SufK$;W<+)$K`AVm;i zBfXamNM}Otz1ImK0@6ef0fi0HK}3R7!KJ8(fCy5gZV(X=5$O`ZbKUpsT*Jr1@qE9p zbI$Ac`{Uwy=PCEh&d#=kOjIqPU8*)vipqpM1EpRUC|1=Iic|H25>$hsMAZl=Ni`PQ zrJ4Yxs3t?6K~irz6swvI#i`~&391jFL{$=$q*@N`QmuhfRO=znV5#>x6sy_>#i_o8 z5>$JkMAf%YlIjq&OLY`VQJsW5L!{nWC{}d=ic|dxB@LC)YtSy$pHPbGF60>|qp47= z%9w_=s&r6-DjG^uJp(1FazMLOd7u>$R861+ zRdXm&)f!4tb%1uMIzzEzrAiMdPSscX#!25G=~E4d5>#WLMAdjGN%c0gOEnEjQN0U! zEUEH76suYY#i;^Nf@&F*s9FsrsXm2vsWw8MM5(eBidF4|;#7NNo@yVIqB;n9#>Ax`JhBq0VqlJ60}QI0!mSpf#lOos=opht9lKJQ~96-RZS>SRS!y1 zHHLPn;-M5(E69U)u=szLP^_vG6sPJAC8+v9iK>B6l4=;VOEnrwQ6)m2x24`BNZ!?^ z`rm=#RI{K2)m$i1wE#*|ErxcfmO?42RZzlYsj^N+Rmn1{+5&l|$mk9zR<#?7Q+)#^ zs187hsvn>v)p2N->a>jF6(Q9hg5(upg8vs0?#~JS5i?N_O7&lX5>(ekm@&bB3zFMB z!9QRYDy#m0QqZ63@AEFI;Hy;sKqyu<42n~Yh7weXP@-xQl%#qG+NGKWrKsjY9t1xL z#=i;3!uZAbSJp3#Ux|N{RG;DBU8-&PH$}Av|9WQ2yaQ0I>KGKKItL}FeuWZMH=rcd zU(ha91pZA?#o%Ahdr~h46syVy#i?F|5>%z3MAfTMk}3|`rK$&|sQi#;j?`-l#j3hM zajL#hf@&C)sIs6W)f8x#YBrRjS_paOO1-5}tm+dePPGY2P<;s{s`f!isvn?Ts#8#k z>SxIFzSO%0#j5T=ajM5qf+_=UO`<9bl%&c7?NSwhQdGqu&pfGD4vJO14#lZzK?$nH zP@<|Ol%z_4cBy(oDXKw`=L4xX8j4lD1;wdmKnbdOP@*aTC8<_HyHp#X6xDXfGhgcM zg<@3)p*YoXC_!}|N>p8jl2m_+R>*n!0NSPc8%j~7#r@-1DWg$P;#yH=C`pwaTKc8D z)6XrVyJa+=jH(Jq-yZ3EN%~YJpk1mmP>QO8jD92YUXxLkPexTWrEi~%){{O}W61NZ z^u^2Q_o7xZs%kHNC#A2G^r^Z-o}Z+z4-~5!2qm1BzF|OZ70D>;5VbVcXQgrd^R=z_44L^ zz5rBLRVu6r{;E(9^iA-87FKe6p=H$~{hp)2Uy9)ByW zbAj$FLprTNLmeayYj-LzF)zKAU6==B$>Y;sKLQ_-+p;gcX|B0}U#y7;{ zS^7@L_o3#5HNn4ws)$GXx4L#dl^WKb_yMc1&pJ9Zte@krg>^JO&1z>fFBBCidoVVv z)A6_2_xu`rv_Q+bVI7TM6xQkZFT$GOzW^20DmCzYV{3U>d*btcf?FOX=SFN;+vAHv zQ?ze6B!4k|f`2YYyAhH;A`A( zWsv-WGXD1tWJ0&%KZSy-jZjFnRp!OX=uRl`hOF2Fd8>=|K|a+%$W$GHEY%4ppgIEu zRVh$NbqO+RNR{7YUTx70nWwrV^HdLHUL6_z8}h2seunL;q99Y18M0K_p@1qk6jbGd zLaG9gQCI4{B&sJzvIJy7ss5QzKs5*Q)|bBdkWaNp)Ij<^7Bv>FgiO^ZkfquH1yq}% zkm?J_Xd)|iL0;9@kWcj;WT_5A0o5@ms5%9OROcaYQ>k(h@~N&srs_Imscu05)qNLX|sR6l+R^sQ-H?37M)rP*AlG z3aJi4fmX8ih>WUE$f)WJgkL4cXbR+2U4ne7-yl zCPG2g6ey&c0eRa?z4suW>I2B=AblUnsA`Ffs#ZXzYOVB{GVe1epxOilRog`gG8%+J zs;{K4ll1L}tgdo^}qfR4I_Dx&&FO-=Ki% z1{74?fkLVWkTFoI{0(_kX*Z#sDhe`HnITJ+9STDDo(vRH<%5ht(pLcTs$PP8suGZ? zDg%Xv$-D}p(W2KNV~ofLc~vzbpQ;{Ysv1LozxAuc{y9Qw@d!Gh}oG6jY6c zLaGUnF;hk-LtfQ%$fueOnW}j*`mXHNhmi5UtVp{ZeX1zPr^*bOs_de9GA}n|sq#Sq zRRJgn;Zv%Nekk)g%BZTFjH-G=A=Lm;lFS<_^Hz&S$vl-MqpG(cV~vbXg}kbnkWV!S zGF9^-OSK3Js6K{*P_lm|6jFTx8Ed6)1LRe0hI~+}{|m@e?Sd@T*HB3H9b|kW^A1B^ z)iKDYIt5v(^H4x_5ellVKq1w2$XF*;Zb4qveaQEz^gV)1Rm2zg>;mC`{6d!YWrPB% ztk7N^%?YJlFY}&p(tLL&#J$gE~Wl;@^ZU?Q09|)xHEM?M4~x3V9*CkAQrt{*b8}0(I7TBOy!s#z6tq zL@2150);k9l^Kw+Mf9GG?i76>qpFW&^h@bmBBMb$Cs#n$E>Wc&m0LUQRPeE%7;pb7r#kaw?W$WF{tJ%o&}q;JBPxRp?(Znsx#zM^$;DD(Y`WzNHj?LRKp=tH3qU&gDll*D0o8H@dALP8swhRBuTa^ncbVT~{LK9W7P!PiZMo z)vu88yUe==c~yTxKGj{wRHZ^em9YnFRp}t(x~z?cysBp)pDG7rs`5aVDnArZ6@-F+ z$l4;1_fJtt$fqg`nW~DAbyG&G$mlImoQ$e!$*8J66i_vRf~w|FNYxrLZp+#ZkXO}N z`tHbm)I<7IeIfI%oL7S&OZ5l}LaF|@_hK9OWON#2JdnOCkfpi~nW-{*OZrsZzrqUD zS;%@QEBb$pKGhJ&`$+mmLO#_v$W%>)EY%b!pqc>%RqsI|)d!IASgL#k`TiCyflSp3 z$WpC^f<^>x?`NVk_!}?&O;AX+9Wv5NUl8)DzJh$|q;EfDs=kNhuNoQV-et(E`W-S=Hz7-PPevnU-b2Wz@_d7Ns`QYhih%;EEKpGOEab!A9ZK~- z2broDAWKyU3aE-gK~*UzqFXkWs-BQf)ekaNgCR>b0t%?cLP6C8D5RPU8QG-XbjYik4f#~_AXD`r zWT}#%fND7uRIPzRs`ZeOUFv-fc~#pWpXy7`V}%&*C0#vClpZKg@US7D5Ns>q29AnFCFAnMMFN-Gmxpu0a>a%P(YO*3aSc1 zAyp9>%_;Rt%BZR=Isro_z)gUOS8V-e2V`Mb1)Eh6Os<&lSH4XCSlhJn}`Fk384+5F0g^;BRKmo6e zE`x%q)lf+FDP+XT=tjt^+6wtpJ0VlG2eMTApn&Qi6jU97LaGyxQ9$aQfxIgDS*TBS z2{Ki`L6+(U6j0rPf~p5lNcA@)7xlzvx^GcW6$SZJnITh^9kNupp3a$Cs!BjURT;=sRe&tjYfwPtgMzA>P)Jn|GG3H=jUlfp9`dPLL8hubWT`qq0abS> zsOkfSR0AR7C8;+I@~TEdmMRens3t){)jLo~H4E|ihG$`;70+5!1gyCGBc4P>bfKmpYcP*8Oo3aL&*Mlq=ug1o9%S6u2vLS9uS$fwE%nW|inrOFEhRIyM{^&%8f6^D!xQtxHR zt11uqRFxr9RSmLKHK2g1E)-NXf(-mUHC%}e@~T=wK2RrfGy$@Ncg-}2h5WONRmO(+)YAB@o6vCgc!stfGtJ(_rR6C)7Y7Z1t z?UQ-sWyL|6r#b?esuPfbFsj?I@ zRjVLNwGIlXl4Z1^9Q!Sh(MVM85c(kez5!&Z4nYCcQ7EW7358T=A)~RZxBz)ozd}CM zHON%`2?bSmp^z$7`kKgE<9qa}(m_U3>5GQEs%K~p`fY>6jC*Ze9fg^Ysge}fGkyKD4^;A1yy~e zuZ64_Bz>ykkgt{Wje$(nc*s({4Fy!wprGnqC_4OyyB zp@3>56jW`6LaLpR(MIa+fxN1HkWY0GGF3+)OLYPYsLnt^mHaQKkm?d-w3T|lL0;7j z$fvpknW_hnrTQBRsL~!rJyjGGQe}p`?d0st4*4K_?+Y?j#~@2}3JR#sLqXL=D5Saq z8SQ25b;zr_1^HC>Aqz_OKY{|Ph#yczl>rK=GD1cNnU@vvs&Ya;)$@?4@Is+^FidLFV=UMQd{ z30{hJ31}kf~Y)S*mqVK$R?g-DSlV>4WgUpCDtn?7@A=2TkxlqN*Ho`i_N_?9X)^ z+t3wxAxjkt86%|fi;!1U9P+7NhD=p?$Wm2?0;+0IP*np8sp>+;NU7II=8cxU^2;cc z?Egka$A}In-8mm#0(cgR%Tge=uPD4==>1y%AtQ$x_L`1Fu( znkWV`RaqcQ^(+)nJqH=nW!?*rS5*k|sft3TsuUDdy#j?)uR_KQS^GNVRlNaOs@hOM z)c^{rnnEE}3&=N9*0zC6l?hp@E>J+#6EbGWync{ZH5l@#MnI-&EEH5tfI_Otknygp zoep_bvmr}04+^M0go3IhD5P2r`DV-7HIS)V4_T_up@3=|WV|QyzJ$E0y^v4!Eo7<= zK|$3~D5N?G8FOUqS;(up09mSEp@8Zd6jc2Qg;aMT-&|Rn3YjY76xOQJK><}XWV|o) zo`Jlo9FR|y2QpRpp`fZD6jBv|jCr!QB;-|Kwed6$fxQ7nX0}}P&Eh&sfI(w0$Do-@~Xx|mg;RNpqd5+RqsL} z)%%cdp{!j9nW_L}sg^+j)oRH2Q09FKc~u)BpK2>)s&+y_)gCCM+6NgQ$=ZXES9Juk zR41T->I@WAr9dIoCCIl(*8T>WsvD4{x&sAN4dMOSu)F5Av!CK$hwyD4;3<1yyCBkg5XYO_H^*K|YlaGF3GpOH~gFsTxDZ5?K)s zc~z|-pQ=3+P<4WWs_sxo)d!M4=5i~3AY`hBL6&MX6i~_ky$`A;LEfdZ;vLARngyAv zxsat=0EJYGA!C`WSPFSnt03Poc`jZDnW|*SQf+|(svS^JwHpelzJZM6vi1PvRsA43 zDSgKw>$K=J6i|gA?W+1ffwOuHprC3PWSo<}(U4b_2$`x$kfnMD z3S5wRv!I}AE+l`@=2rXy$g5fmnX09brCJ3AF3P-hP*9Z&8NW#17RamG0hy}Zkfr(t z3aAc1LDdhCaY@!5hrFuOkf{nmmg*Oo_p8jiD)Ur-$UN0;nWy>-3aTDMAyt~QSaDg_ zMnXPSCdg7{g955tP)L;*l0WKmD?S$Tsa}LkRdFbwdKn6;%0tFgSy37Cs;WVzss?1K z>Ow(PBPgWuL*CzHZA-|fY6qFBj*zA51_f2Up^$0-?qheAHpC@28ostl0vyNu>J zhk2^}kf|yNS*jvXP*oBNsmemeby-^x@~WyprYa7yRJEX>sy-A_HGzyjWNmZEt7;9I zst%B)>I?-{J)n@PFXX!+YX?E5YB&^7je&xy@sRPS%zGR1s-{WbP3e1A`c&^jrfMN% zsRB??wG0ZWRzt=uS^FvERc(Y!)mF$-?Sz7=Jy1xs4>In^+Jlf+bp$e1Cm>681`4WD zppfbkNI4j zLQqik3lvgam3c9;_79n-x-Iimf5|-6W5}CP=A{W??^TgdFq8CUfYB?sz#!0vRyx9sairo zRXZr8>IiwW%e-!oPt{vSAza@KGIEH9LSEG<$fvSI&&t}jAX7CJ3aDm6LDd|{$SL#Y zLtfP)Q7-BG81kuBLYC?iD4^N^g;bj%Be$&hLi%11?UFvP=xfNQ`VKNxhoOM#7!*{U zl6i$?#d(>hx+wEhS7e^*I%K>k^KL<2)qN;XMEV{1 zP*BxYMoY_R0_0V7g-lg1$Wrx(LX~9R5Xh)38VUJS;~-Nt5elfLKta_ED8d-g>OHg` zBR!TkiSX6)7!(ST>Jw|z?7SaQm ziF}UiLT)1u5KkkIkrBy@6hJy5eUL$j)Et9$A~GGBjm$%&U-n7%Z8^T)iu{0FM5OO3 z+BA(lMrI@rQV1!5G(ZxNA;>IbF0usKjGRK`cafyFZ0i=Bxe1OZQXOfDNPl0navbNQ z-Hz-<4kCXb50Lat?HU=;=0akTmymi$ZzK_!ioAy`L1cTMp#2=#h8#d-JJNqF?9*tk zATiDCdD3P@oNX0=iz2Te?U8B7Y-AxKb(WxAgKR|3BA1XqkgR?jA4J+%q%`t65|7Bb zE@=B8laOiQ%t9-X<2(=TN61oS9kK!0g6u~2A-^IIkPPu2BNLJxk-B-ptyuB`zAl8w z?JkD)RirA?0g?N>3))_YoCp2U&OqiPi;=^K)R6Q3Jp2HW;}X@}V`M>cB6$(nf9WfN zltyG*<yI~$R0e1LWlvNW7kXun79guhNj z8`T2)i9pY^FFnkv=TH(Aw3LwRiGDr{PePkK3 z9g)Y&F0_Y`lSrD@_TxMkS}#&E9C@t00>6fILk1zkkTJ;H$aLfbWD&9s*@$dI(ze0# zBH~A+Mh~>(kjaSbuk5#E0lr=w?vuyKD)Tus?w0b--cL%%&*&mMF z?jx`~A4;UYJZ4U!PkavTMdVN9E)vzjV-!Y8BQ=r6NH=5vBIl4~6#N!44OxV2LG~fX zkt@hUB*OF3*Fk}|80FnKX$nVFkL_S4MBNve0kz2@LNcsf4ULks%v7fnMdA!Qn zd~hM898wwaA#z)qqHT@HF>}sq6JN`ko@o1rBVWrg9s0!AW8kUCEMx()1lfSd+%0H# zB3~m1kzcB5AiWSdkL3A7_H{76wvegF zEMx()4EYS%jQogPKrSQEo$&mF6hw+6avaN`t%TG>+9TbO0mv|9A|l(EgI12y613}) z-H4nw`_QH$@|+^^cDCE9XvZQG5n2Bc+U3Y+$ZljGavV8_TtogwBD>ggpF>+PoT6we zBQ+7ZZ{&DMj$vP#p-HPP;eV4y7*E#~ z&zndNBrj4JDTUNT8Y8U{ndf9AzLv+BAV`M{eBZZN2NC%`BG6IpuqC76%f@dOfoadumfow#6LQ)Xtn8|aVM9!V7=)Z%+ zbjLOjS^GTNSfnIU0jYx2M!F(>5a)5^yynU4pHo}fk(eWKURR~H@bw4CK}6=rb|nA1 z<9-_Ro#QFT{tCX9V}1v%9P@NNJVqm=HR2rW?yx*I`=i~D97dcPzrfd!TZo)TvL>o0 z&IQCdf8;$$34C1^X@-nIK0@{)DafzLi@ogQ_s?^$Gy3}=W1h$~ctJSw93_#yHOOa( z9FH&29z?Dn^7yzAX zx8T1JdES>}Bez@jBchKzN9IYNY*Xe-n=3pf^W`~F(h+^q_D4GunTSk9W+Cq*A0kVT zRfxP+Y(%>g`5uwy{mW?OweWhlm2KXJW&6^Xy)WKZBJy=Pw3QJbQV(f@v_TS(Ziw`a zM%E%55LvSY?N^9A9uA>(&dd97`hIx+45u2}nn-;_ZmYb$HxIiV+D=Fhq#q)$=flx% zM7}}F^~ZZ&MDCB8XyyDCzX{9pk;H_%BE6A;h}?GB&Nx`|HZl!)4_Sn)Ky+Wxeva%# z_9H(caz4xNEnj;gcVKxfdW<&x0DG-$LvFY1%QNVc{dyj40i--q1*w6wMA{=VuQ%E$ zh`e8zhcIys+kfhSz*30Ho? zwVrUZC*1xC_k6-bpYZr6JmU#3c*4t{@P;S6^9k>N!pEQRg(rOd2|swk>4&(tJ=+t` z`-F=;;c`#d_k`aXQ=IrXtN{o zIFJ;8%OSOqrbsKK6C&qvZ?wb08H0A>6JJkhIhifCU)Y9UP!xlJv?t+->@@;SCAEVrW{+Odf9^>kQngFIKtxMVTwm+wpHn!5n!nD4$2J!jU8K+KA*p@*)Kg>66b5PHp+zATEM_`5aUV zt-SZIfL8XSI@(5vyvKeMt=wLD5ACd%_q&ceU|iA#abAo1z{8&ST3*wou7$oC$VZ4+ zvJR2w@r`JAA~H{2pPc&gIwgJbdg1iRbGP*E$Na;Hv=Zq%hV~31=YxEG30`jC^#|X@ zT#4^r9x$SfgGP*T#K>qIH8LB27+H)*Mm8gzC#R9#^PCas$%pT8R!nOcoABaL3vIIq zTsS7&_6WD5!|kkayFA?P2)D<=?RB)JBHemYw*|g7(&4|XhWnrV`k(Wi?K=D6Y}eTj zXS>dRINNphBQv%mx8t96|MTlKI6i4{EFy6nqKq6kLIrSy3gHM9HZmDSFjC5R#wd>? zRn5q1)HJdiwJ@uJ@vPCv$Z0e+avAYPZlk4<$LMZ6XY@8+Fa{f5V~7!J3^j@w!;Rv` zXrqLYh$`caa>gW7dfTXIOg1VRKV_(FoXYUJaVA4mBb32s{FWik_&q~)<9>!3#={H^ zjYk<88)+h&7-=J$8W|$}MyAMk2gCvuW8C~}H1IPx81MC3GMWaM;XOymq>T;xn+V&p7iapVU^ zQsjJNN#r79S>$44Wn_}ECUS}KY2?R7a^zCuaO861NaPCRXyi)cRODLxjO!EQLgc5$ zFOlnw-y=5~HzGF~HzPM2cOthK_ae6%4+)>{f&*Q%Y=ZiXGc%zOQ1)@$Fg`>_IFGig+ibSOt zWuq<_6{CJNszhBed{I}88c}~3HKT4A4Wn)vO`>iY&7$ra@lp4TmQfFkR#B-&>!?RY zyQs%Tmng$CF3RIcjEe9~iAv|$9F^YlWmE>wUR);btEd>y*HM`~`=c^@4n;lV`93O( z=clNwo>NiTJm;dadoD-i@?4L~?YR+^*V7|9*3&b(kf%@di=KYbMLh$ei+Kh`7xxT_ zF5wv#UD7imx|C;BbZO6+=$Ad?qRV&^qsw|GM8D#BE4rNL?dbBJDbW=???hMhOpkum zGc&r9=iTVap7)|(^URH|;+Yryx@UfLRnNlcYMzgxeV)b9ah{~;H#{FlSNAN7uHjh` zUDLBFx|U~kbZyVt=sKQt(RDrRqw9G#L^ttljBe`rJlgL`iEi$>5Z%J_bM%{@8__L2 zH=|p5?nbxvM8vf5M8&lAM8~xEWR29Jz&ddA1x z_e_j==$RB_L`;rJ7cn&^GGbax#)ug)-iVnor6b;rc{Sp_m`V|IW8xy_#Z-@&AJa5q zVNCOgMKLWRmc+anu{@@I#L5`_K7Q8-qi`)eaTqtCqN+#id$yZ1nhz?aqlKxG9IZul zqLwvs){bW16lwwGZo}QKyVl*S6n3e;Tn z2x_B>=pJEoP-TSdzULwPxV#8;(b3XSFI81&fXdygCg>ZceesZ8r45w$k9h;o_qO(p zfM%)2L+`5=LLaJ@Kz5bY)LzKms~@4II`1O;9+ttc|7qWCu1M3vsgjw>2ifyVv(G&) zHPL6^-sYV5W5)<%wN^H{q8}Ai&e_Hk^x4N?AxD=$>vgTW2dmI$?}587+qvQ}M}MK@ zxY#S?H*##beMV2GFN(?r*~ib5F~ZoSdr+LCuX5C_Qk8wRInRB394Lxk7SSq=IM2Pe z{;uwfzR6Md*t_>pCsuY>xc6IcjN149U{)DTxyLz?eeY4rDEFS(fj;~G*az81?I&ov z-j3&aOxwo!trOLe6tPyuQOb&9%2Wg6^Meu;{s+E7ENnbaz3 z4|SHhM`a!2Y@;|;lj=Z?q83uysnb*{_54t$@@rHZY817Q+D@IOQmN;MIrUzq>QWu4 zQPdpj6Y6W~JawPSI^5YtF{(P%mKs9Mrjn^2sXJ885l-cbR7+|EwSd}AouM94`A0hS zs!{E!L~1GZ4Rw{uG|H*+GUca+QuC=VsPk0BXs1eHsxsxLdQ)#vi>S@iVd@GMF~-@( z^He#iA=Q-{N6n`;Q^%-VRMxT1HcC?ssb16+Y6bNb^)uxe=hS0 zJ=AIH78PSTTPsMtM)|2;R3f#I`keZnxa;DQR*_~8SiZ4 zIqDUv0o8>XOUkh(|3PI1=Or}|QJsV}IXspzTB+A>s2Y8)2PTn5sc_qQ+B6RFFDPJ*Kk1?^G^9)uh@}!>C!*Drz@%nz~J8n&)ie zMXDOrlIllIrIu0hTdnr_a+MY@;mIfa*$F z)BNRz!PGoz8+De#FJFbXTac`w8)E`vNB~F#ssm|29)Nbk)Rp?`9ZF6c8wVAq1is7H;W)>3Dw%*&h=m8qW8 z0%||?fGW1!S=*YLN^PUAQqQe$R@9?LQmd)$)M4ru>H+o4N~c~SsuIO>8vrc+C( z&C~(vBz2j(PerbB_8>P^gnE^#L$##3Q^Tpr)Cbf`DoCB7?o&BdJNxo7)qv_wO{4pt7uY_Vi_{3DuvPMXjd}Q#YtApRpd*gz8UC zrj}Ac>I`+C%CUi!sRmScY9bY&zMxK0x2ep@PUXB*DauDRqdHSVsmas=YAv;sI!s-l zZd2(uI{T87Dn?bMno(V;k<<)o3AKsZPo1M~Qt3Z;_TV|H9Mz2KPtBm#Qv0dPRQgR$ z}VpMIaGnGg!qP9~fsXJ7*El%aqR0FCTHHlhA?WKOE zBDOm9VksZhff`GFM14V>rXEn)wmFqcQT3><)OczUwT(JX-J~*acPba7YEd1jvD7l^ zFqKNZ_=QuiDK(l}K^>tUQAKt*YyH$%Y8CY(6|vJ^GY-%rc zmnsr;RC{H*G!^l^v$iPJgc?RIp$<~_se*@{DvhWS)Kcnu>H$^w2WM>)Y817c+DBcdavX8i zR;Em961A2(LfxnGA9bqKpn6iXs7=%ed! z3)Foo+i|B#391%lQX{E3)H-S(b%AasSpGu~Fr0!5Te{!}_k!neepcYWusWa3gD*q{`UNy?3Mo{ll$<$%$cPjd{ zQ|~3J29-dKr4~|KsAJSkD&~w+xd>I0>PU^FKBTr%$EjOXma|Ufl2kpa8#R$yM14V> zqV7{U&pDOLQO&6S)C_7ZwV%37r9bb~D@46UwV(!2)2J2HZt5&`pUNI`wo!_zOLeBk zQ46Ro)G6vAl|RL)?4vqT6RG9YKI$r!@q$yO6xDm=@IBT0xG%HY*(BrHL2m$8tNRC^{TU?1~rUYO`WB({N}8v zP7S33)FJ92RqUFxwk0)*+DKiXvi$C>s7m#w7Et@ByHt+r&e{r8OKK$bA+?i|>-pI~ zUx@g_Q6Z`p)t#D3t)&i8e^EtlIQ8D7CQ+YL7pd%jIxF6w22cU&d+IS&@}{%4Ej61u zK&8Ls%=1wrsg2Zis>p3;MMvsG>Nu6U{2Q=_Rl)LLpUb%wf4W&F$8Mj@&S6;Ji1CQ~b^ebi+t z@_|#i2vvvbPEDp(Qv0aORAegaQ4OfU)Q8kw>Kc{fp;M&_)tQ<`ZKTdnX&*UjOHlFD zVCn-)EUb7+o@8BszddpW>K4{GgO3;CVa*gp&C(xsRdM! zxH)OPA3l_|68O{PAhPEj|h%+XGjVpJ`vBQ=&ME5P z*B=d^&r}O)B(;dzOo!a|Sj~YxZqV`cYsl3lPYim*c zsRh&?>IRh$*GCO+ml{SbrGB6uQ^j%3RC{ep>Md#mb)L$ItEbv4%29H?Rl9E*wS~G! zWx=&o?RizG?$jJANL{0HH}&ob%V-_tFhW^>rjI!xoWFDdVso56~a|p z?a?OGXlf<(BlRbh4cBkA*SM!a!Tm{yy_Zrof8bd9jHd8-Re^QzA zIQ5ECb*L`Xcxo~A1@#kkm&*Q}Q~718KGl<&Lan5}p)OJBo_FdMqN-CJsYEJ3eMz08 z9#P)BPUY%US858iminH$Nj;m-sq!k-h8jyHQG2Pg)B`G4ey3hJswvf%dWTv`eMMcM z{-*Nc`oZ=&REcUq^`<6K0csodBXymM^g5LbP*tcFRDWtJwUpXPouF=0S!11Tl%ncW z-Kn>zCDfPH8R{=8X91`3D^wGzKQ)KiLY<+Ef=-n}R2`}}HH+FvounR8-a<~j8dO_q zI5me_PaU8xQ)vr3^}JLSswFj;nnkUp_EA4k*QqowI@`!im89OF-lTd{iPZbl8Y)N~ zqpnhaQ@LMq_Mi+^kLpB?rsh)XsBfqc^%s?`h_j92R1K;n)rXoyEvB|mKTubxG)0|l zb9eQG0h zgt|dxF5%QGLDi$WQQX8mmsStIK%3RvnT4AaR<)?a5iPQ(w7U~RTyzEpiMAe~sQ?saz)Jf_g zJKV&Ij2fVssYuD zno6yr_EEo5>B~Fy3R5+xPSkknV`?AuJC&`1Q?DY`mP(|SQ{PcHsAnrWRVq^*sEO1{ z>M(Vm^1kX+sYCUrKA?isWhzT0XYH$$Nlm8KQ-`P4Zu z)VtIs>NI84aHQViuIn-9_9F?Y~Q>6&ikQzwMqBc-JQg^A`wVZmDskYQuDnRX~ zE>h`hJ5`EM^{8&tWNH<)pZbl;SjVYXl4?Ztqh?W`QAem-RF1l=N7bXcQ4^^oYA1D? zx=%e@FNYE1Q}rcleNuc#39HQ~7nOEj5Z-Ky9T?QunBw4V-%Asd#D-^$xXy z+C!bEQmI@GoyxCJjj3ML+tkO@m(*$M9+j(+Q~5Qj12utKL48O4L1l03RH;a{p~g`k zQ{Pa(QISoYDn+S!R4-~8^$B%|`h&{S)Tvj7YDNvB=1`wgC#XkM!Dddqx>P@EF14LX zp)&ZLwIwM(HG*19eMMcRa>YAU;;7ctFlr9<8Fh&Ijf!mU)GJKAL3N-;Q}d}!)KMr^ zuZrYebLu+!?CVRpS8R)Fk;X_{TdqszUb`(D`Z8;ud*vnfdP@Z{YJY;PLA9esQuC-C z)CuYVmG4cbo?LM(n{HRGOPA~agFSc!`;u3;TM4qSNabE5uNwR0+Fk{8p6s(dPp&Rj z@_)Iu4%arJT0^hsioWa{M7dYON@SmVrMQ1z;Z~OGhyAbjZyG9B)jgO)Ere=o-^bKC zYAa-)Lq{n02wg^>y|o+EBPxAMXVg6gG3aZkTYCX&sj38ZRLRxU`lzP2jW7nOYwQ~Gy$x*Wp>YnOn^gUADgzT$@dfGV3NxeXopxnoTdj&oB2$jb? z`)J6KOjAdm`D>xiRx6J7fimmpP{=+)7Bz6ta)Y4vrq9exa^GIkfU!=mph( zKFaK~^FJSD|Gj6ar|s2$|B?5!$D8}i@L#=^?&H^eUUQ%I++*NA|3$TRj<|c>ReAj_ zrpL;C4%^$^xtgi_%Ko$?>E8SQzBVhiYhUZMAmy%bx8d$pMa(PxkG*o|J?-5?4Xm)= zJ#?hTP;;rzsQpxkdPqIn&Z$?Nsz-ID#!*RBkUB%%r82d5D#udQsMgd#Y8JJI+C!b8 zZc_4`XurOt>)<>t-6QTE=NuTd?-}C=hbMfBDZb)Klb2h&k+gO?qr?k z-h+d7reRiKM+((Kl_nFXr#&jQL?xWUyzH*;;Cvxwf_SpK*cQW7WUdiVLTmNrA zZ`s@U&-WlFbr0N6RPSN$f7U+tJ;>AE{jcDWbUz2U@BZC)Mtd;tI=69K<(}j2bJzhM zHTT{13HCkhTH`4k{mYS{D0>isC-hgZ<`<6u+@Qb-*LO|Pu+W8?jw7}V6Jc<6{FFYwyu04 zmz+gIC(R95Yd?3o?|0qz!0w~WedM{1##30EQ}@7q z*YfX=M)$q)?^tW!4)?5cUk%*b`#0vJIB;r@wE5Zg)uL$?$y74C#DqU+27-F z9|7&qXCF!TdBc5o%Ql5 z_uk!S*=}{M;$H86KKkri>ApMs_hTxzsF7A#jkWf9`VC~iipzVNcpW{4zSgRzeZu$^ zqxL6^G+i8dsY+Bl)sK3IT1X{R-%)3&zo<-Iovpn@#Zx1w0QEhUNGOb=&kUaCCRkQzqKq1I9ds7use zRIZ-RHcC;Asb17HYCUzFdQ8Rka_Uu}T2Q^Hcd1XQW7I7wUvH;gWvUHjQ46Ro)Jf_( zW%P0C6{4z99Vm<1NS&q9_jRgxsq&Pc8bHmYKBl%%$Eo{NOh0EE{#apuLK_Wr)91ehP#;y3#?H@99wazFJ8}CW@jY|<=P7Pqe)ipN zVT6C~64lBG&s)*P>Fd2v4xjd$uLHge|G=DdsboxXMKJ6+e=zarf3v6fEX%j|RK zZ9o-!pPy;v%xm4m>2v43&b4`3JM%I%bmrB@sQojgrkv-lZS$1AE>G!`TV(G`Kh}G> zymJiPW3{f`|J)}>&0Z__rM)lm$~pv4uD!`)x{C9* zaP7{g^kp@jBh-mU&8^%XqxPOwt?$g+%PQZqvYf^CyxTbc>|1${XX0l#Pwm(9r@dl- zg;Dzz`zn=rkkeP0>P$_eKBvx65rdtz1*v+}Kx!eikNTa;ImD?FM|Gy=Q~RlhRPmwC z+P2hN)HdoG_3SWbMQv&%wUjzar5Wz5C`q-Xrchg`pQ#)poV9V(aB4BNi%Nm)cXM~3 zLHe9irH=F0huToa$TY?X9eoxWrz%L5g5J`;%2d9ghVhQ})kmLwmbia;tTp?3Q{$-V zkXaB3-R}43v$uPUO5waaRLrO}#ynk-pK@=dd)rE5 z)ZVMtp^tP$1L$K_N60>s{UCe0!y$YBrc#SIZzZ%!*Y1EmRqcoDwWlEa_FkfHaWrDI zGcODE5><+-MAd-odVcnGhCbKr{`1)yW9;*^haKkfWiKixIOT6?=Qq0?G< z6Lenn|Ifa^uz&Vnn{)TC=~(>K@*n&BU+sHZy{Gj(?N~jnZwvOtekF1D?@#pEj}-ZC z@^8AQ_t5vJ%KffnnsLtkkqLUJqwY^%pZ2p^_b0OdCqHxjKUw=c_u2jHdhU0;3Src! zC*PAP2H9t}e6Q3#La(6jpU2Am&Q5oX+TV>D0ogwZagXU!k3Ht$PkhREfOtOtjXwJ| z{{CD~cn{ps3>Lmqq$@H(_WtFB@@QXisv7jqJsp6)0y=LLWUqbNo=(DOsekO190U9D zc8F`;N9}R;$#YXVUHi0i@@ZRp+HpB6d!YZX%Dv@JoA+Fz^PP8hp8IoM6QlOCMNg=* z?$sdn&7hV+_STXi`QoqS zixSr`RvEXUA+&R9jNgG0*EH4{cc3A(cN&a$K#6M{bJ<(2a%?gl=Cm<>CrVuN*v@zW z8p8cf2dxK6Tm#w3cpw@=Pp2Q_y-?!1$o`DG(GYq&0~n7%iR&c07!N{2c)%IRcr0=T z%2$Y7IoV?Tb3ZrZjVN&)We?+R&=5BI1u?z}B_Wir;Hute2*>?`89#xN(2lPVg*(s? zPWrWB{5O=i4s$5u9ncVd_iM}ed6a~Xd<9oUM??6-?+(T} zOURj>5Xbl^l!R2Sqb&-fkt@s!@$_d<64JPzB;h%(uq_D_xQDpnIdXMb?iG>iYA4aN zxhJ^#Jn}Eh`0YimwVh0#!fz}I)A{{GVFpTEb9)Hp@f(Q3t0)Qi{M1}^9l8E2KdC6Z zj*>8opN^}~@^gt?l{=L_ho4In-a<*3%g@EN)KL=V31jK+pd`!}#?#+L&P@4vMd3Y^ zgatx6e!@>J3M)_&RtlN8O2}g5Gn9nY{2rpP1|^}6--GMFqa@Vxdx*k1l!W!dH2MaV zga&>yQTQCWN~w@b--wd1iQkXw#v|9)gh^q6ZvJFftq^VT4#qABmDMN?b)xMM)SduBMMeuG=ft(Vs*1E3uybJW4{kxSsw3vX6-k zI8kh5Boig!MR5~73nk$taWg#|C1H}dm7ar=Fj?G2pMsJwRoqUWhLZ5IxPv|&C1HlR z6LZB~jJ$&Elj3grtH?en?xDYiT;o>UOD{u7_)y$WFGopODjuL$pd>6457H}^JQdxkUTg;@?x$Og0D!Sm?yQvSEcrtFNNW2Qb(LAb;8%B&R8II!C6u` z7D^HLh7^gjr6_z;ipDuo4}44Ng>$7Cd|Qgec~Ts{BlW@gQarvZC18=%7vGZ-ae!l*xAT7WKX(4_t6=S1Rf*Yk$+$5FZ7g9NHmMU>G(rWxhs>7X9J$@^#$6ZnbekV2JZfO&KFKxy>(pLOI z+J<|j?YK|cf%~PM_@lH74@kT5Cut8Jl=kA!(tbQ79l*oVK|CTI!lTj=JSH8(U!*2% zl8)oA(n&lnox&5+89XU9<8M+6o|4YvY3Tx*?5nfgI(k)c&|JS!{zCC zpPY*kavpY-^D$DMiQVJ^jFJnnI~O{XglKsV-Y?I^9`ZcwDbL4VauN2H7hsIM5Fe0> zF;*_Y2jxBq6ln>!3`3R=U$8faVgk$96_>6oK)8te5tb7K?%FQ@VZo%>Ld3;X3fD`14 z_`G}x)8)(ff_w!t^I7N2iRM{V= z$u4|Zws5-a!5Oj_bL9|xMGnP0xgEYLx5s=r3}2Hw;!L>{zAksh0{(mh>%Sb1g>nSG zAxGkDISSvDqj8Sh1K*N+;aoWe-o*ako@ISe-{>$u}v zQclN@@xLPj6 zHS%n%ljq=Cc`nw=^KhL!AJ@x8xItck4e~<#TrS2&xdb=LrMO8h!!P7=+$>k%7P%6) z%2oKKT#ei08vIILf!pO;{90axJLJ{)ja-L2<$C;9UXQ!v2K-KL#NF~H{9fLSd*rS7 zgS-v*%G+_DyaV^kJMl+(7aovz<4^J)JSgwQpXL2{NIrmv<%4)cK7>c*BX~?chQG*7 z*d!mvU*(f{Tt0;-OZjU$RFcg%IC@P&$QaYoobU{T4M^%YHO^HNZi9$n(MpNm5Hl-KZl^Ap=vFKFd z&`;@u{z^OsC<*9N`eLAxh?bIsZlynZlw=H22BB9OjKRtf3{i$*8zlupmEqV{8Hw$b zRJ=nOgYA_x?4XRrFl9X6sZ79*N;=-9WMC&H6Yo~Cu(Ohl_b55oMVW&4D$_7rnU41< zxfr43VOJ#|BbAxhO)0=Ar4YL-voTtkgZC?Qv4=7bdn)s>mr{hil?521EW`(tVvJQv z@Ij>%^B0jHN z!gS>_zMx#e4CN|LR9Z1pxsER?H!({QRn~t+#%x8!Ns5j+iiwjIJ5EuYI92h-X^IP9 zRxF&ZcyNZ|#atx>Ur|CaPicp*D(x{}3B%WvjyO~4gs&@|u|Vm9vy^ZwR3h*VB@$;V zQTV13jdPS9_?FTO=PEJywi1i;lsJ4x>4Wo?czjn$z#^qDzNaMO0woFGSNh{ZB^ehf zgRoc`j2|dNutXV#if+msso zN?C#1m0J8-S%o{4)%cB4hdY&e{8m|yyOaj}PHDv5$|n3?*^GOXt@wko4fiVBai6jS z_bWT`M`aftP_^)E&RmFqJSW3hhZBv1w+;0*j62h?bKAfLmh+d)ims& zj>Rx_Jl?5Jz>aD<-lb+>Cp8oARP^FkGFE_o=xUq2^&%H6J6@ znb=J&z$mp4yQ{M?TAhRUt8=l3IuCoQ^Rbs&guT@T7^5!42h?JWRZH+ewG`vjGJHra z$3AKWKCD(^yjq2isMVOD*5IS+3hb-a;$!M6OjK86KeY~%)OvheU61|M1{|O^VzRmk z2dbNKkh&G0P`BY=bvr((?!Y1HP8_Q4!eQ!ed`jJeDe7K)THTMs)dM&}J%}UKLpVx3 zf~o2;9IZCt81*CgK7$3Ex-y<3cqV7pa4=SRITXs6((s z9fph56f9MT;}UfwmZ_=up*jZ3)ihkHj>QUfJT6lwV5ORlAE_BwrDo!CH4CfNZ2VZw z!5Vc6exgpp73y^SRL#X&H4j&+`M64*iJz$jxLPg5HR^1vQ|I7XbuQMc^KhLyAJ?lz zxItZj4eCPtTrI{%wFEb+rMO8g!!Oiw+^kmM7PS($s#W-ni`7N)pmG8ZI3tAFch?oC~BQh(mJE8 zbwNc7M^%eJO^ZZbi$X(-MpNs7Hmw)hwHS10vFOy|&`;}w{#rZ+XbI@j`eLA#h?bUw zZmmChv}6p@2BB9QjKSIv4AF*R8!ZJxwc*%S8;R|-RJ=nQgYC66?4XUsFl{{EsZGF+ zS~}jPWnd>Q6Ytitu(Otp_h>oTMVo^6YSS=Wn~wKsxfr44VOK35Bej{>O)J1Ctq{9w zvoTtmgZFE5v4=JfdusEsmsW(mwFMZXEyM@3VvN;F@IkE<~N;`t7+A$ohHQ^ZT zI6kAD#5C;`KC7Lx1*Pczjn&z#^?LzNaPP0xb#O*ZSi^Eg2VSgRoc|j2~!2utXb%i?tLi)rR8| zZ6uaysraEb2FtZHT&j)53T-?t((WSj)j0Z3=#(O~V!1 zbo^Ay#ab;7S8DmVN}GwFX$81iE5tS0Y^>Af;96}i)@$={oi-oWYel$0TYwGPLi}7S z#zw6KH)^H0Nh`xIv~t|6Rp1t_61Qqq_@!2j+q4?|N?U>3wOagITZKEc)%cB8hdZ@; z{8n3!yR-)UPHV*7+9v#7+l+g(t@wks4fkr>ai6vW_iH=xM{O4#(01cb+8#Wp?Zuz9 z{dh<_fQPk%ctksdN3|n(Ogo0ZXieCp9mij_lXzS^g(tK#cv5S|-?SDyrJcvq+66qL zUBt86C2ZC%<2mgLwrE%JcdZrAYuE7)?IvE(L>ueBCgVj-#lJKiFKH(Jt=aLi=EQ$A zf4ri(@L$cstC|P@)4bTKh2S+U6t8RT@P^hNZ)#yE=p9kiJE5d^Mp^HIiXM)t9)X%3 ziMk$zh8~Tk-UDrVFSP41=+I-)smGz8-Ut2lcnr`J(53gqKs^yHJqg`uK0QAB$o7c)U}efF1R8yi3o(PI@NZ zt!H6pJsa=QbFhm(1@G0TVYogW@6&TJLeImldOk+#GqIaqfKhrOcGqWPv_1##*XLpn zeIEAI=VLFu2z%=bFh*a959q}htC!$|dMU=~W%!U@j(zkBd|0oGk-yz8?GQ4LCq=#AJOF4%9c}Abl%7p>M;%`gVL$-+@E) zoj6qAg~RmS_>{f}Q}n&~w7wsQ>j!Xzeh^3Mhj5gB1XJ~6I9hMQG5T?QMn8#Z`YC)? zKZ9fSW*n!t;CTH!KBr&63Hn8RUcZFt`el4Uzk(V1Rh+1|Vy1o_U(|16mM+>^|8*I& zbrmP+I_BsmPS))>MR(#<-5;mvE__+HaJufn8M+s9^$>hT55+va9lol!$9z2uU(-9{ zOuZAnu6M=)y$jCL!?940z&G?roUKRUn|d_P(R<)qdM})-$Kcy~EY8#8@EyGm&e!Ad zT|EJd^uG9>o`?(dBz#}*j|=r=T%-@eVtp`vpbxjX&vo@SwgIf7bWoA^iXz)(_$l z{SY42kKi%=82+L+VUvCwf7MUoas3pY(9hsWy%~SgTkw>A9#88R@Qi*D&+3=3S-*_u z^efn+U&Y_`Ry?m?$3OI&ctIB(tpB=<7j+f?(sjI~oA|eG$IH4C|Iz*NitfUHbqlZR z9{f-DVyhm4*Yr@luD8P*dV9R7hoN9}MA7JklF=DuqYElVII2bjYDOgLMid%GG@3>a zv>Cn7Zp5I&h()InhkiyM^f%%$z(_!s(H8@aM6`?~bQ}HAVT$i)aF54#%q7-`JJZbkt{8HL#0n2piK9K7F{i#?2a*wdJgy^JF4 zZ7jeTVLq<9FF)Hw3qY~qdDtyGK#ss4VA2n8BU!xWuGge`u zu^Rgsb(mz-~A#S0HYC;jZHYv*o=dWt@wno4F?z7db_8VOir^u_m# zL|kAb;rm8^TxcZYB4ZF18-wu!V+fWQ!*H>Yf~CfATw;vGG9wi~G{#`Lk%mi+u~=b@ z$7RL@tTfW`BO?Q=j7(f^WMQ?DjUO91SYu4VPmF1}!kCVq8o5|&v5OSfZrL7xZBu--y558 zkFgbhFt*`dV>|9McHn+vC;n*c!UM)`{K?pZ2aUb>v#}o!83*vNaS)Ffhw!Lz1dkcV z@E4;An~dZ5t8o&K8>jGuaRyHs&G?(qf~So0c-pvtXN-$@*0_Yt#$`NbT)`IOD*kS? z;(6mb{$bq23x?>&`ftd1(NOU(L&r;oiGLe*ylgn}AHyH77%u$Ru<)wk!T$^|wi+RL z%?QQoMmxM=w8xu97z$=b6wOX3nVnHKyP#r*qiRN=W=5iJMxkLwqiOa)o7oHPW(+#a zSah0k=x6ppe={Bf%mj3qeKF8XM9WM!jhTX>=5TCl zj>L9mD&Ap^!S-evb}+|cm^mKrG$&w3Gac_TGq97HiFcb>*xAg+d(0f{Vot$(&1o2J zPRIMqT#PXDu&bGmk>*V7W)@(SS%}@u*%)ok!TZg**u$KMJ2@z!bi+%OfYNkQF8_MHEZ!Pa}_38V zK5nkZ{$>LXFdH%1+=K(o%{a*1icgr^aIm=@pEP&i5OXIEHFx1Kb2mO^?!gpuFFtMV z$KmDy9AO^Bk>(*BWgfv)^B9gcn{bSI9G@{yVw!mhpEb|mShE?&nJqZpJde+r7jS}k z5uZ0NVY+!4Uofv=hIthynyr{=UdI>Bo0w&a{;dC|jM=7&lT00ROcN)YcAR25ajNN$ z(@Yn>Y+5+o^xzEBi@9b9zG8-Ap4kpxHQQsp8HTT!9dV}F312rmV}aQPXPMzxXhz^0 zW+cuwqwq~L8t0fj@GY|!&NXB3Z8H|l7n>G-Lci?wDRt~B#;l{phXGYfFFS%_=Q*;r@J z!L{aGtT*T3I&(g*H;ZtCxd0o?h4{HyjE!aqZZu1AlUasenB}+-I)GU(5!7QD{O|W3!Qd99fOcP4ttt6Ki)JCpkh0Ss_hV( zwj*e>9pg6b$a-jNLZ|IG`q@sRzwHzT*v_EK){KF+7PM^V(QUhcA-0R$LK|e=vt6RM zMbHUy3#HM4i&BTE=I}Wlraj4CoIm3{(!seoBJo9A6lU3?@g-Xi%(nHy zNwyfwvBlzKTO3ZY^}(sOc${WSz!|o_{8YKfv2RPH=OIVEEs6dba@5=U(_cr9cUv;O z5INp$gXpu7Bi%Nb{uXki+lJ8JMvipbF#0>lacxVXFF=lK+i?0qlDnlfDT#u5AVM&B$?WE5xm~+4!Yx4sNr}#jkAhaJy|jer+ql9kvDdjcp-b zv=ws;e<8=Ct%QCRIUa4L^j74EvzO5| zVn_QbyxYDSJKO8<9(z4@v9HJ8_6B^+-iV3zP58WhGv6y6*-PzP=^4mgYTriBMD|kq zc6t`_DBE|?OOQv|zLQ>xtk3pcSZ&{pAKUj}jeReEV&9K-_5--Veh|O2AHu`-BY4Dq z43FBI@Ra#m?SPyZb`tF&LB|AE}Y_KVnR zzr@HjWQ}rMMnA_DM*NXA%5jzMLRKe7E4m%m(c`#@K@QQyz3q@O*r8&GL&rNDrb`ss zBWGm}J3S0pqa03pN93%`;ZN^`JPHmMy)*JCI4pV>4Sl{wneqmi>RM;N^aa#rT(NbiL_vW`yl804(X(U~5LoRvAc(BqJ^GDkSQ z4{}!Kh`@M9BtGJZVmtvkD|1BC`y%^^qX#_^IV*GYq9-9|WsVqne`G~<#A31|j*)@L z+UV$msg8J@saOOO@AF$}95 zDY)D*9IG88vBr^#pE<@bb2V~|JJRTN$T991i}jB2xY;oQw>Z-I>{jGxb!6Z+M<#yd z$inT8Z2a1hgF75k@EgZ8-07H(-#T(}mm?3qbL8W0$4va*QGk0Kh4_PGHtu!I!F`Uo zxZg1ke{{^p1CAp6$*}+rIu_#3j$%CID8a*yQas`)!=sLJ{LN9pPkRb^ZRMz>pFv)^ zIIA$gS|Bj)oOKxPtjGJD>-lU1vhO(? zFw)tG-JF{kk3#l6=Vp2|^1SBUN`D@CUUP1vzksY2&h7L}WUX-Spl2b^XwIGVY~=aN zxeKQ{cjGkY9(>uk7pFV-;|%8kX67Q#WzK{2Jmfsqc?jn_kKnt`V_4*D!V>3k<}60` z7UxO&5@Z!}o}w>9&Jvwx=pP~bkF%M+99f;5E%X{>b#k7^FPs-}v-2Y3TaZ=Vc?o}V zUdDsYD~$h)tS!!~__wnauRE{f4d+d~=@bKbEc|4&{M0}m3*@oz)9FFTW8r7ggOSI= z&yH>UoY>3HAN%;Z@L@lTIq}F*>F2=&KQAMXB1e{A2xj<&Vy0g^%=T-~XD1gn@ z*)#n|(le1g(?6A-h3uLBW9Zq)xt4z#JqJ10@*hi|f~-jX<8hJy1T6MX#}E87u*5$T z7yD;1vlKbQ@z180A?uZY4!s;X!||U&uRzXl{HNi1|LKfuKwd%k=i=x7dD!Tm&-g}U zMe?7C+x-jhYyU#r;XfO9`p?1N{O2 z|Aq8Fkau1Di|KzN`?G%u{V(Kwl7Lba1IkbeD94b13TzWliFX84F|$4L+!s(y4?~{I z0&3{t$a)g6f*ygaCjqteNMt<;SVfOQ-dhM*O}`&`lmqH8KA@hFN07ZeU_Jd&e57hMcPhY^J9m=js7l>BEuN^#R-HBax#fU^_h(d0ii{gFXg1 zPY&2ge+_v)3fM)TgS_Sq*iD~{yygwqL!XBnBLREq^O3bEU_ZSGIX4bCKwp47mjxW8 zFGTj7fJ5|RWX}mWLN7t~oPcBWQe@8wXrh-PdrrV{dO5P^1e~N-AbU>0DS9PxZX9ri zUWGgx1~k*Fku@!#gyN7oJq|f{a)s0T zAgi=10^?ngj68zux2`DqqsV^iil#q?oMXFs(EB0pXt{dPA4lHNa>dXGAm>i5So%QZ z)u=0u{si)lma7l_N#q?ZS3G?v@{X1(f&LWoj+U!0{b}S?sw7$W%v|P#bXOMTaT!ZM(BClj!gX!atSF)}l^yiRgeAh61-j%{gIClC%e*diYo)Bx-zlMmBlT5h&=navgu2aXCGG% zeHrpR?wUgX2zefNO`|VI&I4W3=^rC!gRWfqC&;@!t~~mu$h+3Ad_3Wri6>nJ_?xQ` zPq}6@=QQ$4!8Hfvz`2Yl$o?5Pj~*O2pC0mmY!g^S4-H&^Nr4Ob?BmGe7+6dnfIN0^-h8v|=FEpP=s8(7Qu zSme1ca20(#^4u4=8ea{pVhj2sS5q!uxhJCCiKKn58y2Cn-iPlL*`XTqZbqXK1 z&R~D583$M`m~5TLfz|~aWL?B3tV=l9x{Oa+S8#}R6^B}_ILx|^PgysSecH{lh9%>0 zOT`hEjw3A-M_G1EwVXKG^2afj3!kwpOtU=rtmVbARtS!>LUFv+4xh8y;{+=VpSL<< zy449^usUOg)deS7;h1Sf;EPryW?51Ak`;~FRu7zH^}-x01}9swIK_&?sa7AHX2s*n zRsv49`r-^L5p%61e8uXIc~&yMY7N4CYcRfM4Z)e#Fnrxg!2)YI&ay^gp_PhnSYvRu zm4#@#iz_nH* z)?1r!owXU)TU&91wGA7r?fAL10~@WKxY62$o2=dVg|!DaTYK@iwI4kh?wcRT#t-5wj=VYtQJ5x2TK;n(iYxWnBAzjKGbdo9{7v97dE+L@HclXo^r?GId>myamVAI?gYH(?u-Ap6Y+{W39q^P z<8^m3N}fR|dj_N78G=sFF!b}Jpye5kZqG;z@uXrK&lqg)Ny84FvDnEo9`E){z$8yP z4)kQ;AWx=;=Wb;E@nqqXo@^ZA$-$wXDLBkC4WIH%#}rR4KJCfF;huaP;hBjeJq0+* zQ;4aa**MxW2gi8k;xnFknC6*}&w7e*tY-m^^DM;io??8?Q-TvbrTDz34AVX3_=2Yb zGdz_z(Nl$)o@#v2Q-fKa75I{;7PCF8aFS;==6LFGvZo%Wc-G@oPXkW#G~&yiO*q}N z8E1I5V!me^e(Kqdb)FsECu@=Y!LyUT4mox_yXYH`J;bvc8$Ek)qh~K}^6bYiJO^-# z=OAwN9KtU>M{t|x7=Gnx!tXuDagXOD{^&V{2Rvu+Cr>jT^t9k%&v`uJxqwGK7x5R* zC2aCs#$P>G@VMtHp7ONfY0q^$3EMf1H-+U*v*@T z(cWx~_2%G1-YNK~cN!*or(?1=7oYIv;Zxpx9PXWoqrC-~<}Jhw?`(Y0I|p;Tb8)J7 z9_D)IC&4%AvysOr zSoCs!i#(SF%k;U(;}xu8NwALP!6xHNku!&2JAE1Q>>upJ&w~ANW3UT12V1x^*n_)* zz4$|L2<{CI#lykvPzq^}YDgGHgmlDiA)T;aNN4OH(gg>HgyYbV2%H!aiCH00_;N@z z=7#jZ;*ehWK}Zaigv9bwm50R9mxlDAS0HCHA@THTJ8zUu5DvJj zYp7FPa@Pm$3F5c+4ZU}!_)WwI?n3c!#7v=3JQ@+J7K*<_6wrT-D8v&H@t#8Qw}>YC z>4-SBSiHCEA^s-QeO+VeUAqT4VCE8W zATyVUPcUwW#R~CmWiX7StgEVW|{a5Gt0zhnOP=|V`iE795c(s zmzY^DPGV-cIGLH{;#6jqi!U>?T%5toa`6>rE)`#A=2CGMGna~QFmtK+CNr0cZ!vSJ z_%<__itjM9LVTZ@72+ahR)`-kvqD_V%nES{Gb_XonOPw&W#%$*IWw1uA2V~A_z5$Y ziJvlanYfaf%f!!^xlCNc%t~<`Gb_an%&ZhYXJ)0ik(rg^7tE{_w=lC({F0ef;tyS$ zwJLERGpocOnOPmB<87ji^P&(v8Rh zp+>Yt_GQEo8IOLEO^gIY#;LVphsb8FR=ks$wc=gOtQGH$Y+>XcX4Z=LGP72^kC`jQ zZp>UMc4y{F@qT8m6niprrP!O9E5!$xxl(+PnRVh5ku!xl@kwUZi9?xLCq5Nfh)*-K zP8`9^I&l;;*NV?FbFDaznQO)8n7LMbo|$XK7nr$LoXE_z;)~3z7bisyv+Bjk%&Zru zGP7QMIdV87GniQ~zQW9U@l|I2C_dCJ+4xa>xLYj!k!}UTkK&`<5o$|Wg13R0XT{H% zc~;!mtq{Lp=2>wIGtY`&GV{E6v|A_fy!Z<<&x^k@^SpSXTW3aoW9E7BG&9eOXPNn@ zcmw|t?~aPM{UhEJ6-&Q2szCThye}%r^N-jyDjvHJtnGP*Z0V(T8KMoL4wpAjRarg-``g@34iO9za1;^w_63F z8{yK0{5?{xcSN`l2Y)G4;4gs+{Dn?|zqcvy7eNJ~jI1E_WDD6r&d(5qJ!}sW9u@wA zr@&w36a@ZUp>CWi4>8=ag&M`Q?@ zNOH*=q=ZzFbz~go?LC7JwWEOd! zl#z|(YqEzNBT2s zY)|?6t&jg^+e!>S?myCj+)Mh9MDh&DBvVN~d6O(4OGqvGg8WKMf9?y?mH56-Pqq); z>W{Gr255=#=u0FpwUB^hK2Swuc1jbt0yOPa_ZM34tb4k;k- zk~L&2IY@lRRTJB@`TIyW}3yjr1n{ zNjfPc|NGi`^u=TuX&_&con#+5PFlz{;^11h9^dtDNl)?!8BU%dS!6ZYO@1Qhi0}6Q zW_yhU1oL$ynxvCSB#+D|#iX39A(zN?qK9zYkhUa}#FEEI3P~d`kcH$UvW5Idk(WpTd5`$MelgoB z@+sLswvavKG%@br_$0-of%xY8e#Yio{UX~|BDd%HoCFfzoHlGbl1TCp@qJA{wkafy z_~xXuoka4;eDVqLjW@8}PJSTANej6~v<}?=KJVc%#X(XT2kp1Ka@e5<$Cml!^ z@*wF)Mv@mv9+^YR$pP{!X(m^Qb|+s?!pZ$4jtnH@i0|j~C4)Yl6p;5w8TpKCBtMWQ za+X{qt>k}Sr*vc;Bo+xL4-nsd^9b7{GMJ1b8DuiaBX5!tQbksh^<)eAhU_JWiF6nD zJ!wNalKY77d*07BjwIjuco^H!S zF(SQ5f09BbkV#|~DI=edO{9tVhYLao=|m#QL!=*>K&F#g@;y0BZ1?e4kwh|toYaxc6P%KB*vIksD+{B(EFDC^C+`NT!l^$x`wqxklP{I%hLb8&4OMWL; z$lcLAb|i@mCsWCLWEojQejt~L?{@x|8+>fPpVuR#D~Trq$S^XFy@|l+S~g2 z+xphq`mWphf!li1ZN2%ne(AP;{kE?6{C|HJF8uNT{9d8A^-j0-$lH3%Z9U<(o_t$R zxvi(&)-!JFQ*QPA+s0zTV5W zJ?Tt(l0IYz8ACFNZ%z)|w{P|L*)G1-tJv0(8_e;|^L>BcbDFQ~x&QZ=->t3hbKYD1 zj@!n<>0L?G|7Yxf=gPiwQs3?Q?%TNA<|NVw-}bTZc2aMBJdUmJ{`7s_#9L$kd(NGF z>to-~<9qJ)&B?npR(RXz=HKeYw~hH8C*S;vTVpl1w!YWMt8ev&TU+02X5ZYcw?6hA z^S)!TPSA1)TZ(sDCH~P*Q@4hw9 zw?B5h)qAq_tuMZH<)K?+zT5S!E&cfT3F6ydpT6yLzWZR@Z6EvA9^abdTWfr4iEo|p ztuMa)*|#72))C*j;#)&}>xXaM@U0iV{n@ux_|^#D+VCQ``7(L^)@{GV*7v%}_xlD1 z{omXFtG#oNuA;j4_})9`kbnUnNFs)i5C~9@gr^S_qyfbuf(a@jMKB}>i00Lt@CdaC zh!!7F;vt5pw7u405tXWFuC>;p^-&)n_0{(JI*8%}-x|bTd$FJ2@5~vnLRbH}Yu&YO zC+qvocYb^C-+s)@o;fq;%ukM=^SHrubttr)vo(>7K7Nv5wf9sk$jW%c7} zzJ)8I1Jc%$)_jOGDfb_TNRx7#4v{A1_H8(Hebetcc$$=Z`4DMR-|zlOeM|2>xX%rg zE8KkWG^wxc5NT5G<$qG&DIEv*Deb)F?t`aEeR;n=blT7Z%E=~@ZMk@ssFmU5TC1)d z_F|f*-LGr=K2JX&=kl+TYcFcroOI$`QT`iUyOLXKvNrf4@wt6wa&3aHEhcuy63_^i z+AtA;!o&kgCmK*Dv4DCI38)8gfDSh+z)ElhSOu;GSAm~`)!=Gw!CYgHG1uB-x$AqZ zX|lQIdfV6BUHap7PY)6}0>=>TajpHfY zMD7}&$uqVe@bqjF&&AH-iPvPFWu0wqw^O;BT*@=3nLJ(kq1k9>@$Bd#bBCR6?zCm* zF0jd#^X#X>+->J`*SXT%Ypcv=a3A0)4o_x&L@c5hk%$%%hiEZ(rI!+eXc-ZRRuX?` z714)Q5qs!Lvjse2uQrc@-xH7OG4MEeg1A#p+S|C3y}>*Mo(9j@JIu3SE7(RHsOP|T zA~^k#$W71N-dLli35l1bd0u^p$oRR$kO%UKp45-nNd=%k7yt^vK%yrN za!1?2;CtXW5CO-7A;eTF0z<(tFdU2kBf%(e0yxoS*^|J@U^F;|*h{B^F<>kam`(%Z z!1sy6R1C(ufp!8o9h?Csf-}Jnz$BtEodqU?v%wTF6`TV~++bVkrrK%XTyP#ylg=k* z(sVb|UI1ng-{?Xx(=D?Zp++jb}o^8%H0lIK}?;fD|GYR z`8xkc4IkfhS#Hw#FUR_F;uOllH|s4Q9(7q_Q~7QU)Gvb6+c*+s;k(y??XE!G@248} zzLdXd?i9_>JsdY#%W{SaZ0EVTzHNG7o9EFlp09WJ__j6fF+blL_q=br(e3hWH@Yu;+gg{&#f`LdtvklQ%=yx# z_V!ECl6yASS!o0O)Vj3PUVK|xD&Os@#LMkLz70X@#z5T>sNV!$c4!?^c1K{_8Q69P zw)a#?zW0JUb_b~+2I|wG?5Bb4s8FiSGXga`P^$vb~O7;AUK<&v&dFh#*QvI@1 z<5C#dHf5*A#r8>g3HM3m%MMiUKuzeA@;5m*rM%o!+4kI2*=K{)ZGqYzs22nEZlK-| z)CYn3C{SsAQ?(WLP1QE2Z>qM@ff^g6P6}-0LD@?KRhpObcdoBOrX^6VLF&EzQu*!+ zR9pX)?digldNxqo0<}F*&j)H(pwb4W%KmgvN?jeOa|fqviv!gds2>OFCxN;=P%8p; zMWF8WRmfa^-0^yRpybvhOUT?8s9lj{D$h!aB(*D1a(M>e^8nR+=rR>XK7Ewrt$-Ve z2`U!hxOo?DQEpXkQ(mv^nGZD&KhQO;ME&HBmvWnOj9OoL5JCXLU=&o)cOe204!wD;?rOFX) zNlBjgN!Yuv$BA?zy%R1~OEcFgQg#@h3|ieu$}-v>5dvtTyBB`IJ)!y)_(3P_d`P*K zx0Xwrb77B2RD2fIc5dz`ZD`eYM%*}3Uv?M32|EvtYs(Ybwm1FuZ&dr;a5zmkVTIpx z!XEEU=2LZ=^tV@eh zhHil)R=Ct&-&I;7`&heOi!Qb6;dc8=xJi9B5vxRMc>qg1^gQgDSKx$A+W)5ZtZrh@ zgA?{-xG8j+T25CzMfEJ@a=6_#z%8cyFxeKuo>>Yfw06&|MaPY&_WRWSxawEc{-Nr$ zOv!&V?C}l@(b5->cScCrscN64_G;BlaJ$_EH--Ka?iH31%T@Nw8(7ZDeH$*dGO7vt zHQM8C1!5_Nb9B%2%xZL;-}Xyt3*4C{dVW~ADZCxNGkkjw?sbG8fIGrl;a2k=+-^UH z6IOIwEgp|L#BwCu6dnK%$d>(QKz1|wCY@E*D&LhYtxZ@N$x`LcEYT5{9NR5N$P6I* zYdiEv@xKOcQ7*~*9ojS7)GoRyBplcL3ESl;Xyk6}aRX+oFW=W62y5D-H&(Tt96zrMl@Se0PcvE^4+!T^y zzcWilyMLN+Qz$v|!kt-?x+h)O7rgk1=~=`M#`G-s>w z=UI~H&WyXUkMDDSws>9!$IZ2>Tj7Wv^-Uoelkt5vsC^4OzK>Wuz6UQY6kV!0^L2ml zOgg8Zb}Q`h4R!HzAzYFtIbYT}@U0A)`8~d6F8mlAH!rE)DLVAy-eO;+d>-o!&D_F$&$u}a_Dnh4VpghN zqr4H0n`c!21#Z;yY>s*u-c9@u?}Tk&ZQlZ^_Y8PKy3F}aA+blC@Fjg`V^0t%TJrn>ed=M-&Q0n0{bf8y!JE=A zgt@L@4)KVwCt7CX96c^d@?_pF$rDRSp3K$p&@WYu>YF&TfQo9w)y8hx}U4JP%ZScGFw<(llu|HKP$KBT4 zoWZi63wO9;_(7M{<>+2%HE_g=#WM@x&McXEm?zOq;Va+{cR$=K?FBg8Jpre8mr~*G zQmWm?z9;Qj1K*VQ80?wnly|~w^S)9({5Y}qRxVI}4vw2oRqumabw1f;pI~l`hlD+| zCL;U+95=@uFZv|7-Il=*XG-t(qzk{PS5wVS=9aGNXMK0E7u&;z$k@u&OT@{zH4zh1 zyva4yw865iKh>GPtIkfIDI)(fg))YnSu5bJs^3=rqw<4JQajvPD9BXa0#;5>~j?B(;qE``w?Q?{1)2Jktj6)xN|-9q4BF zXZWoQ;SRGKj)#sICiY=)hZzsw9hRf1BQt?6wnq#XKmFm3%$wo3*`k(hs=3k25g~j* zk92sx@})hb7fn6nNa^4W!gA#x+*PmBI+Pdb{^psRDYZoPQss`!^pV`#P`xZ^=~00t zVXuUlrQu@xd$>jQa?P_+x!t~ly;aZnIm#dPm_15LRl^CJKL@`68}vKt3l?+2^_OMn zTMt-I+2wy-V4pLgw*HJI(J5t>HKsaNURxiH7FASLY36SVZ(V$0P;7sh!1TW?_%%2+ zYjoEK4{8Eo~2Kzg9$@ULMEXn)}zLO+g7?Tj+omt+Sdr-Qnv?GmO(M&hz znmOI89AHJxtc(8~ArR;Qb~1 zwxAwAm8Qx>@ma%OQLC8-7#hSc5bDWMV`8M2nFjLJvX)%#34Nco@;)H!^`zAB8-?$B z>Z5sv@wtS$Deas>nR41!i}zZ3m-1WBosL@V-Tq#UGF|YM>ci=@BBo_4 z$-6(-foKeAX@n_aA1N{?(Cg7=ggFs?BAUt2j56IQE2G|^aS)*s&q^aRpwyZe>optc3bIXa{1(; zEn~(lsjkXj6s?a{*4B(I7+y52AU|4DURzOFGka&kd_tf8!?qO7X6COWpD zF&ZlvcUt#uW6EN&X!YEx#(W&q#KsmZtgksGR=yxwT^1WsU0GgV8>^kyFr>V;`joO* zb zVo|?S>SX9aT9az}&~LSU%+O#E$S`JTY74QF+T#EI|9@%(>Ux_@8nlLMvwtuD|3={N D>RC3& diff --git a/.nuget/NuGet.targets b/.nuget/NuGet.targets deleted file mode 100644 index 3f8c37b..0000000 --- a/.nuget/NuGet.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\ - - - false - - - false - - - true - - - false - - - - - - - - - - - $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) - - - - - $(SolutionDir).nuget - - - - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config - - - - $(MSBuildProjectDirectory)\packages.config - $(PackagesProjectConfig) - - - - - $(NuGetToolsPath)\NuGet.exe - @(PackageSource) - - "$(NuGetExePath)" - mono --runtime=v4.0.30319 "$(NuGetExePath)" - - $(TargetDir.Trim('\\')) - - -RequireConsent - -NonInteractive - - "$(SolutionDir) " - "$(SolutionDir)" - - - $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) - $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols - - - - RestorePackages; - $(BuildDependsOn); - - - - - $(BuildDependsOn); - BuildPackage; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BuildAllConfigurations.proj b/BuildAllConfigurations.proj deleted file mode 100644 index 3a31715..0000000 --- a/BuildAllConfigurations.proj +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - %(PlatformList.Identity) - - - - - \ No newline at end of file diff --git a/Lib/Moq.dll b/Lib/Moq.dll deleted file mode 100644 index f5b15459f8e71b4a8ce35376e8ec806ef383d560..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664064 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%0A&Pz_-nfg$a1MdKj{2vf|}y0m>disrz%df#^!U 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

H0Q$l-jblRh2$=IMI-%q}ZMf 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�wd1vRg4RyZ+6h`aQEMk^?L=Lt6YV;c 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 R(6L!xKWqPY^uHg0e*lyF{NVrq diff --git a/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs b/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs deleted file mode 100644 index b9a7413..0000000 --- a/SQLite.CodeFirst.Console/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("SQLite.CodeFirst")] -[assembly: AssemblyDescription("A console application which demonstrates how to use SQLite.CodeFirst.")] - -// Will be replaced by the build server -// But do not put them in a shared file, because this will break the version patching. -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 355fb42..76841ab 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -1,121 +1,28 @@ - - - + - Debug - AnyCPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D} Exe - Properties - SQLite.CodeFirst.Console - SQLite.CodeFirst.Console - v4.5.2 - 512 - true - - - ..\ - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - + net472 + SQLite.CodeFirst + A console application which demonstrates how to use SQLite.CodeFirst. + 1.0.0.0 AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - true - - ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - - + + + + + + + - - - ..\packages\System.Data.SQLite.Core.1.0.106.0\lib\net451\System.Data.SQLite.dll - - - ..\packages\System.Data.SQLite.EF6.1.0.106.0\lib\net451\System.Data.SQLite.EF6.dll - - - ..\packages\System.Data.SQLite.Linq.1.0.106.0\lib\net451\System.Data.SQLite.Linq.dll - - - - - - - - Properties\AssemblySharedInfo.cs - - - - - - - - - - - - - - - - - - - - - - - - - {50A32FE4-0E13-4213-A373-72523CDF34D9} - SQLite.CodeFirst - + - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/packages.config b/SQLite.CodeFirst.Console/packages.config deleted file mode 100644 index 84a052e..0000000 --- a/SQLite.CodeFirst.Console/packages.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs b/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs deleted file mode 100644 index d167e9f..0000000 --- a/SQLite.CodeFirst.Test/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("SQLite.CodeFirst.Test")] -[assembly: AssemblyDescription("Contains the Unit Tests for the SQLite.CodeFirst Library.")] - -// Will be replaced by the build server -// But do not put them in a shared file, because this will break the version patching. -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 4e081fa..149061f 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -1,166 +1,34 @@ - - + - Debug - AnyCPU - {E542F38D-852E-489D-81C2-BF333503E10F} - Library - Properties - SQLite.CodeFirst.Test - SQLite.CodeFirst.Test - v4.5.2 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - + net472 + SQLite.CodeFirst.Test + Contains the Unit Tests for the SQLite.CodeFirst Library. + 1.0.0.0 + true + ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - true full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - - - ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - - - ..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll - True - False - ..\Lib\Moq.dll - - - - - - ..\packages\System.Data.SQLite.Core.1.0.106.0\lib\net451\System.Data.SQLite.dll - - - ..\packages\System.Data.SQLite.EF6.1.0.106.0\lib\net451\System.Data.SQLite.EF6.dll - - - ..\packages\System.Data.SQLite.Linq.1.0.106.0\lib\net451\System.Data.SQLite.Linq.dll - - - - - - - - - - - - False - - - - - - - Properties\AssemblySharedInfo.cs - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - {dedabd86-6ea0-4673-a858-a4f71958f51d} - SQLite.CodeFirst.Console - - - {50a32fe4-0e13-4213-a373-72523cdf34d9} - SQLite.CodeFirst - + - - + + - - - - - False - - - False - - - False - - - False - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - \ No newline at end of file diff --git a/SQLite.CodeFirst.Test/packages.config b/SQLite.CodeFirst.Test/packages.config deleted file mode 100644 index 84a052e..0000000 --- a/SQLite.CodeFirst.Test/packages.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/SQLite.CodeFirst.sln b/SQLite.CodeFirst.sln index c98e539..c1ff1b3 100644 --- a/SQLite.CodeFirst.sln +++ b/SQLite.CodeFirst.sln @@ -1,35 +1,21 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25123.0 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2050 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLite.CodeFirst", "SQLite.CodeFirst\SQLite.CodeFirst.csproj", "{50A32FE4-0E13-4213-A373-72523CDF34D9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst", "SQLite.CodeFirst\SQLite.CodeFirst.csproj", "{50A32FE4-0E13-4213-A373-72523CDF34D9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLite.CodeFirst.Console", "SQLite.CodeFirst.Console\SQLite.CodeFirst.Console.csproj", "{DEDABD86-6EA0-4673-A858-A4F71958F51D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{01B97A84-5983-45C5-ACF8-168E56DF297C}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - EndProjectSection +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst.Console", "SQLite.CodeFirst.Console\SQLite.CodeFirst.Console.csproj", "{DEDABD86-6EA0-4673-A858-A4F71958F51D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{7031BD3C-AE76-43CD-91B6-B6BCD823968C}" ProjectSection(SolutionItems) = preProject - BuildAllConfigurations.proj = BuildAllConfigurations.proj + ci_appveyor.yml = ci_appveyor.yml release_appveyor.yml = release_appveyor.yml EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLite.CodeFirst.Test", "SQLite.CodeFirst.Test\SQLite.CodeFirst.Test.csproj", "{E542F38D-852E-489D-81C2-BF333503E10F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{436039AE-ADD6-48A5-81B9-C413E13344A9}" - ProjectSection(SolutionItems) = preProject - Lib\Moq.dll = Lib\Moq.dll - EndProjectSection +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst.Test", "SQLite.CodeFirst.Test\SQLite.CodeFirst.Test.csproj", "{E542F38D-852E-489D-81C2-BF333503E10F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{1F6D4E0E-5D07-4889-961A-A6AFC0ECD7C7}" ProjectSection(SolutionItems) = preProject - Shared\AssemblySharedInfo.cs = Shared\AssemblySharedInfo.cs Shared\SQLite.CodeFirst.ruleset = Shared\SQLite.CodeFirst.ruleset Shared\SQLite.CodeFirst.StrongNameKey.snk = Shared\SQLite.CodeFirst.StrongNameKey.snk EndProjectSection @@ -37,51 +23,26 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug-40|Any CPU = Debug-40|Any CPU - Debug-45|Any CPU = Debug-45|Any CPU Release|Any CPU = Release|Any CPU - Release-40|Any CPU = Release-40|Any CPU - Release-45|Any CPU = Release-45|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug|Any CPU.ActiveCfg = Debug-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug|Any CPU.Build.0 = Debug-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug-40|Any CPU.ActiveCfg = Debug-40|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug-40|Any CPU.Build.0 = Debug-40|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug-45|Any CPU.ActiveCfg = Debug-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug-45|Any CPU.Build.0 = Debug-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release|Any CPU.ActiveCfg = Release-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release|Any CPU.Build.0 = Release-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release-40|Any CPU.ActiveCfg = Release-40|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release-40|Any CPU.Build.0 = Release-40|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release-45|Any CPU.ActiveCfg = Release-45|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release-45|Any CPU.Build.0 = Release-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug|Any CPU.ActiveCfg = Debug-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug|Any CPU.Build.0 = Debug-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug-40|Any CPU.ActiveCfg = Debug-40|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug-40|Any CPU.Build.0 = Debug-40|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug-45|Any CPU.ActiveCfg = Debug-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug-45|Any CPU.Build.0 = Debug-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release|Any CPU.ActiveCfg = Release-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release|Any CPU.Build.0 = Release-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release-40|Any CPU.ActiveCfg = Release-40|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release-40|Any CPU.Build.0 = Release-40|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release-45|Any CPU.ActiveCfg = Release-45|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release-45|Any CPU.Build.0 = Release-45|Any CPU + {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release|Any CPU.Build.0 = Release|Any CPU + {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release|Any CPU.Build.0 = Release|Any CPU {E542F38D-852E-489D-81C2-BF333503E10F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E542F38D-852E-489D-81C2-BF333503E10F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Debug-40|Any CPU.ActiveCfg = Debug|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Debug-40|Any CPU.Build.0 = Debug|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Debug-45|Any CPU.ActiveCfg = Debug|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Debug-45|Any CPU.Build.0 = Debug|Any CPU {E542F38D-852E-489D-81C2-BF333503E10F}.Release|Any CPU.ActiveCfg = Release|Any CPU {E542F38D-852E-489D-81C2-BF333503E10F}.Release|Any CPU.Build.0 = Release|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Release-40|Any CPU.ActiveCfg = Release|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Release-40|Any CPU.Build.0 = Release|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Release-45|Any CPU.ActiveCfg = Release|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Release-45|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D21CDFB4-5695-4346-AB51-48C80AED4418} + EndGlobalSection EndGlobal diff --git a/Shared/AssemblySharedInfo.cs b/SQLite.CodeFirst/Internal/AssemblyInfo.cs similarity index 59% rename from Shared/AssemblySharedInfo.cs rename to SQLite.CodeFirst/Internal/AssemblyInfo.cs index d3d6117..6de9d4c 100644 --- a/Shared/AssemblySharedInfo.cs +++ b/SQLite.CodeFirst/Internal/AssemblyInfo.cs @@ -1,18 +1,3 @@ -using System; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly: AssemblyProduct("SQLite.CodeFirst")] -[assembly: AssemblyCopyright("Copyright © Marc Sallin")] -[assembly: AssemblyCompany("Marc Sallin")] - +using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("SQLite.CodeFirst.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e35b9d3bf8a8ebcbbc7414b81cc803f1e43b24996e5af0d552c54743651fc328a50977e6e3c10b31c26165a74f3abbd9fdf2b785b8b9ba48568914aec8fea586a4ffa287c9dc5bd2b6367a3cb48e840baab417e89b27b95fa7ac5bc5b926cf9c45a76b064307845c71e9161bdb6eb7f96a6bf24ee6db96f7a4b71b7408938fae", AllInternalsVisible = true)] -[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] - -[assembly:CLSCompliant(true)] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] \ No newline at end of file diff --git a/SQLite.CodeFirst/Properties/AssemblyInfo.cs b/SQLite.CodeFirst/Properties/AssemblyInfo.cs deleted file mode 100644 index 970acd0..0000000 --- a/SQLite.CodeFirst/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Reflection; - -[assembly: AssemblyTitle("SQLite.CodeFirst")] -[assembly: AssemblyDescription( - "Creates a SQLite Database from Code, using Entity Framework CodeFirst. " + - "This Project ships several IDbInitializer which creates " + - "a new SQLite Database, based on your model/code.")] - -// Will be replaced by the build server -// But do not put them in a shared file, because this will break the version patching. -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: AssemblyInformationalVersion("1.0.0.0")] diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 30da2c4..0e08761 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -1,161 +1,25 @@ - - - - - Debug-45 - AnyCPU - {50A32FE4-0E13-4213-A373-72523CDF34D9} - Library - Properties - SQLite.CodeFirst - SQLite.CodeFirst - 512 - true - - - ..\ - true - - - - - AnyCPU - true - DEBUG;TRACE - full - prompt - ..\Shared\SQLite.CodeFirst.ruleset - true - false - - - v4.0 - bin\Debug\net40 - - - bin\Debug\net45 - v4.5 - - - - - AnyCPU - TRACE - true - pdbonly - prompt - ..\Shared\SQLite.CodeFirst.ruleset - true - true - - - bin\Release\net40 - v4.0 - - - bin\Release\net45 - v4.5 - - - - - + + + net40;net45 + Marc Sallin + + Creates a SQLite Database from Code, using Entity Framework CodeFirst. This Project ships several IDbInitializer which creates a new SQLite Database, based on your model/code. + https://github.com/msallin/SQLiteCodeFirst + https://github.com/msallin/SQLiteCodeFirst + GitHub + true + https://github.com/msallin/SQLiteCodeFirst/blob/master/LICENSE + false + Copyright (C) Marc Sallin + SQLite EntityFramework EF CodeFirst + true true - - ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - - - - ..\packages\EntityFramework.6.2.0\lib\net40\EntityFramework.dll - - - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - - - - - - - - - - - Properties\AssemblySharedInfo.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - \ No newline at end of file + + diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings deleted file mode 100644 index 7a5425b..0000000 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.DotSettings +++ /dev/null @@ -1,9 +0,0 @@ - - True - True - True - True - True - True - True - True \ No newline at end of file diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec b/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec deleted file mode 100644 index b5c4561..0000000 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj.nuspec +++ /dev/null @@ -1,32 +0,0 @@ - - - - $id$ - $version$ - $author$ - $author$ - https://github.com/msallin/SQLiteCodeFirst/blob/master/LICENSE - https://github.com/msallin/SQLiteCodeFirst - false - $description$ -

Creates a SQLite Database from Code, using Entity Framework CodeFirst. - - Copyright (C) Marc Sallin - SQLite EntityFramework EF CodeFirst - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SQLite.CodeFirst/packages.config b/SQLite.CodeFirst/packages.config deleted file mode 100644 index 554add2..0000000 --- a/SQLite.CodeFirst/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/ci_appveyor.yml b/ci_appveyor.yml new file mode 100644 index 0000000..3a96f64 --- /dev/null +++ b/ci_appveyor.yml @@ -0,0 +1,23 @@ +version: CI_{branch}_{build} +image: Visual Studio 2017 +skip_tags: true +configuration: +- Release +- Debug +platform: Any CPU +before_build: +- ps: dotnet --version +- ps: dotnet restore +build: + project: SQLite.CodeFirst.sln + parallel: true + verbosity: normal +artifacts: +- path: SQLite.CodeFirst\bin\Debug\**\SQLite.CodeFirst.dll + name: Debug +- path: SQLite.CodeFirst\bin\Release\**\SQLite.CodeFirst.dll + name: Release +- path: SQLite.CodeFirst\bin\Release\*.nupkg + name: NuPkgDebug +- path: SQLite.CodeFirst\bin\Debug\*.nupkg + name: NuPkgRelease \ No newline at end of file diff --git a/release_appveyor.yml b/release_appveyor.yml index 7bd4d1e..6dcbf1b 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,29 +1,30 @@ version: 1.5.1.{build} +image: Visual Studio 2017 branches: only: - master skip_tags: true platform: Any CPU -assembly_info: +configuration: Release +dotnet_csproj: patch: true - file: '**\AssemblyInfo.*' + file: '**\*.csproj' + version: '{version}' + package_version: '{version}' assembly_version: '{version}' - assembly_file_version: '{version}' - assembly_informational_version: '{version}' + file_version: '{version}' + informational_version: '{version}' +before_build: +- ps: dotnet --version +- ps: dotnet restore build: - project: BuildAllConfigurations.proj + project: SQLite.CodeFirst.sln + parallel: true verbosity: normal -after_build: -- ps: >- - cd $env:APPVEYOR_BUILD_FOLDER - - cd '.nuget' - - ./nuget.exe pack '..\SQLite.CodeFirst\SQLite.CodeFirst.csproj' -Properties -Symbols -OutputDirectory '..\SQLite.CodeFirst\bin' artifacts: - path: SQLite.CodeFirst\bin name: Assemblies -- path: SQLite.CodeFirst\bin\*.nupkg +- path: SQLite.CodeFirst\bin\Release\*.nupkg name: NuPkg deploy: - provider: NuGet From dd8d95424b94eeed4d3663bc19de18921112c20c Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 26 Jan 2019 15:36:00 +0100 Subject: [PATCH 092/144] #139: Deleted unnecessary transaction creation. --- .../DbInitializers/SqliteInitializerBase.cs | 39 +++---------------- .../Public/SqliteDatabaseCreator.cs | 5 +++ 2 files changed, 10 insertions(+), 34 deletions(-) diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs index 9014a0e..a84cdf8 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs @@ -26,12 +26,7 @@ public abstract class SqliteInitializerBase : IDatabaseInitializer diff --git a/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs b/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs index c77c656..4fd325e 100644 --- a/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs +++ b/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs @@ -8,6 +8,11 @@ namespace SQLite.CodeFirst /// /// Creates a SQLite-Database based on a Entity Framework and . /// This creator can be used standalone or within an initializer. + /// + /// The generated DDL-SQL will be executed together as one statement. + /// If there is a open transaction on the Database, the statement will be executed within this transaction. + /// Otherwise it will be executed within a own transaction. In anyway the atomicity is guaranteed. + /// /// public class SqliteDatabaseCreator : IDatabaseCreator { From fa35c5b4cafbbcf1fc79299d08971922190e77fe Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Mon, 28 Jan 2019 23:20:27 +0100 Subject: [PATCH 093/144] Set version to 1.5.2 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index 6dcbf1b..17a1e42 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.5.1.{build} +version: 1.5.2.{build} image: Visual Studio 2017 branches: only: From b81233131284a5d73a605dc7e9f0bc0cceb25514 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Mon, 28 Jan 2019 23:31:00 +0100 Subject: [PATCH 094/144] Fix appveyor csproj version patching. --- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 0e08761..21ebe59 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -4,6 +4,7 @@ net40;net45 Marc Sallin + Creates a SQLite Database from Code, using Entity Framework CodeFirst. This Project ships several IDbInitializer which creates a new SQLite Database, based on your model/code. https://github.com/msallin/SQLiteCodeFirst https://github.com/msallin/SQLiteCodeFirst From 19581135c9cb04f92d4e5f63c5e1f5fe65547f34 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 2 Jun 2019 21:50:28 +0200 Subject: [PATCH 095/144] Create FUNDING.yml --- .github/FUNDING.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..f56cbde --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [msallin] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] From 0b988a03c64615cc4dcf429c5baa7ef3c7ca77a2 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 2 Jun 2019 21:52:21 +0200 Subject: [PATCH 096/144] Update FUNDING.yml --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index f56cbde..0901f69 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ # These are supported funding model platforms -github: [msallin] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +github: msallin # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] From ca193d473504dadfdda908346c11e4d44f09ed07 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 11 Jun 2019 22:20:27 +0200 Subject: [PATCH 097/144] Update NuGet-Packages to the newest version --- .../SQLite.CodeFirst.Console.csproj | 8 ++++---- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 76841ab..57f796d 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -11,10 +11,10 @@ - - - - + + + + diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 149061f..e292df6 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -15,12 +15,12 @@ - - - - - - + + + + + + From 4073694ec308379e469f875d2e61d23bda3da39f Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 11 Jun 2019 22:21:17 +0200 Subject: [PATCH 098/144] Set Console and Test project target framework to net48 --- README.md | 1 + SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj | 2 +- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d24d114..b0dc9d4 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.7 (use net45) - .NET 4.7.1 (use net45) - .NET 4.7.2 (use net45) +- .NET 4.8 (uses net45) ## How to use The functionality is exposed by using implementations of the `IDbInitializer<>` interface. diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 57f796d..5ac83b7 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -1,7 +1,7 @@  Exe - net472 + net48 SQLite.CodeFirst A console application which demonstrates how to use SQLite.CodeFirst. 1.0.0.0 diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index e292df6..caf835b 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -1,6 +1,6 @@  - net472 + net48 SQLite.CodeFirst.Test Contains the Unit Tests for the SQLite.CodeFirst Library. 1.0.0.0 From c82ff247640402c6fb23df5073333cb081ec07ca Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 11 Jun 2019 22:21:43 +0200 Subject: [PATCH 099/144] Fix some markdown issues in the read me and correct typos --- README.md | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index b0dc9d4..8b4164c 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,17 @@ Creates a [SQLite Database](https://sqlite.org/) from Code, using [Entity Framework](https://msdn.microsoft.com/en-us/data/ef.aspx) CodeFirst. ## Support the project PayPal donate button + To support this project you can: *star the repository*, report bugs/request features by creating new issues, write code and create PRs or donate. Especially if you use it for a commercial project, a donation is welcome. -If you need a specific feature for a commercial project, I am glad to offer a paid implementation. - +If you need a specific feature for a commercial project, I am glad to offer a paid implementation. ## Features -This Project ships several `IDbInitializer` classes. These create new SQLite Databases based on your model/code. + +This project ships several `IDbInitializer` classes. These create new SQLite Databases based on your model/code. The following features are supported: + - Tables from classes (supported annotations: `Table`) - Columns from properties (supported annotations: `Column`, `Key`, `MaxLength`, `Required`, `NotMapped`, `DatabaseGenerated`, `Index`) - PrimaryKey constraint (`Key` annotation, key composites are supported) @@ -32,21 +34,24 @@ Either get the assembly from the latest [GitHub Release Page](https://github.com The project is built to target .NET framework versions 4.0 and 4.5. You can use the SQLite CodeFirst in projects that target the following frameworks: -- .NET 4.0 (use net40) -- .NET 4.5 (use net45) -- .NET 4.5.1 (use net45) -- .NET 4.5.2 (use net45) -- .NET 4.6 (use net45) -- .NET 4.6.1 (use net45) -- .NET 4.6.2 (use net45) -- .NET 4.7 (use net45) -- .NET 4.7.1 (use net45) -- .NET 4.7.2 (use net45) + +- .NET 4.0 (uses net40) +- .NET 4.5 (uses net45) +- .NET 4.5.1 (uses net45) +- .NET 4.5.2 (uses net45) +- .NET 4.6 (uses net45) +- .NET 4.6.1 (uses net45) +- .NET 4.6.2 (uses net45) +- .NET 4.7 (uses net45) +- .NET 4.7.1 (uses net45) +- .NET 4.7.2 (uses net45) - .NET 4.8 (uses net45) ## How to use + The functionality is exposed by using implementations of the `IDbInitializer<>` interface. Depending on your need, you can choose from the following initializers: + - SqliteCreateDatabaseIfNotExists - SqliteDropCreateDatabaseAlways - SqliteDropCreateDatabaseWhenModelChanges @@ -57,6 +62,7 @@ Or for even more control, use the `SqliteSqlGenerator` (implements `ISqlGenerato When you want to let the Entity Framework create database if it does not exist, just set `SqliteDropCreateDatabaseAlways<>` or `SqliteCreateDatabaseIfNotExists<>` as your `IDbInitializer<>`. ### Initializer Sample + ```csharp public class MyDbContext : DbContext { @@ -70,13 +76,15 @@ public class MyDbContext : DbContext } } ``` + Notice that the `SqliteDropCreateDatabaseWhenModelChanges<>` initializer will create a additional table in your database. This table is used to store some information to detect model changes. If you want to use a own entity/table you can implement the -`IHistory` interface and pass the type of your entity as parameter in the to the constructor from the initializer. +`IHistory` interface and pass the type of your entity as parameter in the to the constructor from the initializer. In a more advanced scenario, you may want to populate some core- or test-data after the database was created. To do this, inherit from `SqliteDropCreateDatabaseAlways<>`, `SqliteCreateDatabaseIfNotExists<>` or `SqliteDropCreateDatabaseWhenModelChanges<>` and override the `Seed(MyDbContext context)` function. This function will be called in a transaction once the database was created. This function is only executed if a new database was successfully created. + ```csharp public class MyDbContextInitializer : SqliteDropCreateDatabaseAlways { @@ -91,6 +99,7 @@ public class MyDbContextInitializer : SqliteDropCreateDatabaseAlways ## Recognition -I started with the [code](https://gist.github.com/flaub/1968486e1b3f2b9fddaf) from [flaub](https://github.com/flaub). + +I started with the [code](https://gist.github.com/flaub/1968486e1b3f2b9fddaf) from [flaub](https://github.com/flaub). From 4f30a0184ea5f2c64f32831da478bb869d74778e Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 15 Jun 2019 22:25:27 +0200 Subject: [PATCH 100/144] Update README.md Fix some grammer mistakes --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8b4164c..21e5e9f 100644 --- a/README.md +++ b/README.md @@ -78,12 +78,12 @@ public class MyDbContext : DbContext ``` Notice that the `SqliteDropCreateDatabaseWhenModelChanges<>` initializer will create a additional table in your database. -This table is used to store some information to detect model changes. If you want to use a own entity/table you can implement the -`IHistory` interface and pass the type of your entity as parameter in the to the constructor from the initializer. +This table is used to store some information to detect model changes. If you want to use an own entity/table you have to implement the +`IHistory` interface and pass the type of your entity as parameter to the constructor of the initializer. In a more advanced scenario, you may want to populate some core- or test-data after the database was created. To do this, inherit from `SqliteDropCreateDatabaseAlways<>`, `SqliteCreateDatabaseIfNotExists<>` or `SqliteDropCreateDatabaseWhenModelChanges<>` and override the `Seed(MyDbContext context)` function. -This function will be called in a transaction once the database was created. This function is only executed if a new database was successfully created. +This function will be called in a transaction, once the database was created. This function is only executed if a new database was successfully created. ```csharp public class MyDbContextInitializer : SqliteDropCreateDatabaseAlways From a8394346c380d991d51cb2a2b12a37a32450a309 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 14 Nov 2019 15:14:14 +0100 Subject: [PATCH 101/144] Update NuGet-Packages --- SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj | 6 +----- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 6 +----- SQLite.CodeFirst.sln | 4 ++-- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 2 +- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 5ac83b7..0b88383 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -10,11 +10,7 @@ ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - - - - - + diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index caf835b..8bfbf43 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -14,15 +14,11 @@ pdbonly - - - - - + diff --git a/SQLite.CodeFirst.sln b/SQLite.CodeFirst.sln index c1ff1b3..2cffe5d 100644 --- a/SQLite.CodeFirst.sln +++ b/SQLite.CodeFirst.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28010.2050 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29503.13 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst", "SQLite.CodeFirst\SQLite.CodeFirst.csproj", "{50A32FE4-0E13-4213-A373-72523CDF34D9}" EndProject diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 21ebe59..9093b53 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -20,7 +20,7 @@ - + From e9ef7cf6532c91b61ab7411f08547216366f6321 Mon Sep 17 00:00:00 2001 From: Thomas Zeugner Date: Thu, 14 Nov 2019 13:58:30 +0100 Subject: [PATCH 102/144] Make DeleteDatabase in DropCreateDatabaseWhenModelChanges virtual To allow custumer deleting of database --- .../SqliteDropCreateDatabaseWhenModelChanges.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index f47feea..ddaaff5 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -79,6 +79,7 @@ public override void InitializeDatabase(TContext context) } FileAttributes? attributes = InMemoryAwareFile.GetFileAttributes(databseFilePath); + CloseDatabase(context, databseFilePath); DeleteDatabase(context, databseFilePath); base.InitializeDatabase(context); InMemoryAwareFile.SetFileAttributes(databseFilePath, attributes); @@ -91,13 +92,16 @@ public override void InitializeDatabase(TContext context) } } + protected virtual void DeleteDatabase(TContext context, string databseFilePath) { + InMemoryAwareFile.Delete(databseFilePath); + } + [SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", MessageId = "System.GC.Collect", Justification = "Required.")] - private static void DeleteDatabase(TContext context, string databseFilePath) + private static void CloseDatabase(TContext context, string databseFilePath) { context.Database.Connection.Close(); GC.Collect(); GC.WaitForPendingFinalizers(); - InMemoryAwareFile.Delete(databseFilePath); } private void SaveHistory(TContext context) From 04acef35e38bd0164b4b4ad30fd1f4ff7b612082 Mon Sep 17 00:00:00 2001 From: Thomas Ze Date: Fri, 15 Nov 2019 08:30:45 +0100 Subject: [PATCH 103/144] fix style and typo --- ...qliteDropCreateDatabaseWhenModelChanges.cs | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index ddaaff5..cf2c95c 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -68,9 +68,9 @@ protected void ConfigureHistoryEntity() /// The context. public override void InitializeDatabase(TContext context) { - string databseFilePath = GetDatabasePathFromContext(context); + string databaseFilePath = GetDatabasePathFromContext(context); - bool dbExists = InMemoryAwareFile.Exists(databseFilePath); + bool dbExists = InMemoryAwareFile.Exists(databaseFilePath); if (dbExists) { if (IsSameModel(context)) @@ -78,11 +78,11 @@ public override void InitializeDatabase(TContext context) return; } - FileAttributes? attributes = InMemoryAwareFile.GetFileAttributes(databseFilePath); - CloseDatabase(context, databseFilePath); - DeleteDatabase(context, databseFilePath); + FileAttributes? attributes = InMemoryAwareFile.GetFileAttributes(databaseFilePath); + CloseDatabase(context, databaseFilePath); + DeleteDatabase(context, databaseFilePath); base.InitializeDatabase(context); - InMemoryAwareFile.SetFileAttributes(databseFilePath, attributes); + InMemoryAwareFile.SetFileAttributes(databaseFilePath, attributes); SaveHistory(context); } else @@ -92,12 +92,18 @@ public override void InitializeDatabase(TContext context) } } - protected virtual void DeleteDatabase(TContext context, string databseFilePath) { - InMemoryAwareFile.Delete(databseFilePath); + /// + /// Called to drop/remove Database file from disk. + /// + /// The context. + /// Filename of Database to be removed. + protected virtual void DeleteDatabase(TContext context, string databaseFilePath) + { + InMemoryAwareFile.Delete(databaseFilePath); } [SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", MessageId = "System.GC.Collect", Justification = "Required.")] - private static void CloseDatabase(TContext context, string databseFilePath) + private static void CloseDatabase(TContext context, string databaseFilePath) { context.Database.Connection.Close(); GC.Collect(); From 0963736eaefea08cbda0cca3ed2e078c1d8c1a3e Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 16 Nov 2019 19:21:43 +0100 Subject: [PATCH 104/144] Remove unused parameter from CloseDatabase method --- .../SqliteDropCreateDatabaseWhenModelChanges.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index cf2c95c..cfca195 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -79,7 +79,7 @@ public override void InitializeDatabase(TContext context) } FileAttributes? attributes = InMemoryAwareFile.GetFileAttributes(databaseFilePath); - CloseDatabase(context, databaseFilePath); + CloseDatabase(context); DeleteDatabase(context, databaseFilePath); base.InitializeDatabase(context); InMemoryAwareFile.SetFileAttributes(databaseFilePath, attributes); @@ -103,7 +103,7 @@ protected virtual void DeleteDatabase(TContext context, string databaseFilePath) } [SuppressMessage("Microsoft.Reliability", "CA2001:AvoidCallingProblematicMethods", MessageId = "System.GC.Collect", Justification = "Required.")] - private static void CloseDatabase(TContext context, string databaseFilePath) + private static void CloseDatabase(TContext context) { context.Database.Connection.Close(); GC.Collect(); From 68abb4d6ae1e71d17708a3f1e18eabd6cb4f2773 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 16 Nov 2019 19:23:26 +0100 Subject: [PATCH 105/144] Fix typo in comment of SqliteDropCreateDatabaseWhenModelChanges class --- .../DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index cfca195..d83c3a9 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -61,7 +61,7 @@ protected void ConfigureHistoryEntity() /// /// Initialize the database for the given context. - /// Generates the SQLite-DDL from the model and executs it against the database. + /// Generates the SQLite-DDL from the model and executes it against the database. /// After that the method is executed. /// All actions are be executed in transactions. /// From 221804582004fcf35c1c04fa868f72421a9fcd78 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 16 Nov 2019 19:29:34 +0100 Subject: [PATCH 106/144] Set version to 1.5.3 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index 17a1e42..402be71 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.5.2.{build} +version: 1.5.3.{build} image: Visual Studio 2017 branches: only: From 207e1e46bb444880c52d11b968b7946c9d508a27 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 14 Nov 2019 15:59:07 +0100 Subject: [PATCH 107/144] #143: Add netstandard2.1 support --- README.md | 21 +++++++-------------- SQLite.CodeFirst.sln | 1 + SQLite.CodeFirst/SQLite.CodeFirst.csproj | 2 +- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 21e5e9f..bbe4c73 100644 --- a/README.md +++ b/README.md @@ -30,29 +30,22 @@ The following features are supported: - SQL default value (Decorate columns with the `SqlDefaultValueAttribute`, which is part of this library) ## Install + Either get the assembly from the latest [GitHub Release Page](https://github.com/msallin/SQLiteCodeFirst/releases) or install the NuGet-Package [SQLite.CodeFirst](https://www.nuget.org/packages/SQLite.CodeFirst/) (`PM> Install-Package SQLite.CodeFirst`). -The project is built to target .NET framework versions 4.0 and 4.5. +The project is built to target .NET framework versions 4.0 and 4.5 and .NET Standard 2.1. You can use the SQLite CodeFirst in projects that target the following frameworks: - .NET 4.0 (uses net40) -- .NET 4.5 (uses net45) -- .NET 4.5.1 (uses net45) -- .NET 4.5.2 (uses net45) -- .NET 4.6 (uses net45) -- .NET 4.6.1 (uses net45) -- .NET 4.6.2 (uses net45) -- .NET 4.7 (uses net45) -- .NET 4.7.1 (uses net45) -- .NET 4.7.2 (uses net45) -- .NET 4.8 (uses net45) +- .NET 4.5-4.8 (uses net45) +- .NET Core 3.0-3.1 (uses netstandard2.1) ## How to use The functionality is exposed by using implementations of the `IDbInitializer<>` interface. Depending on your need, you can choose from the following initializers: -- SqliteCreateDatabaseIfNotExists +- SqliteCreateDatabaseIfNotExists - SqliteDropCreateDatabaseAlways - SqliteDropCreateDatabaseWhenModelChanges @@ -68,7 +61,7 @@ public class MyDbContext : DbContext { public MyDbContext() : base("ConnectionStringName") { } - + protected override void OnModelCreating(DbModelBuilder modelBuilder) { var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists(modelBuilder); @@ -130,7 +123,7 @@ public class MyContext : DbContext The code is written in an extensible way. The logic is divided into two main parts, Builder and Statement. -The Builder knows how to translate the EdmModel into statements where a statement class creates the SQLite-DDL-Code. +The Builder knows how to translate the EdmModel into statements where a statement class creates the SQLite-DDL-Code. The structure of the statements is influenced by the [SQLite Language Specification](https://www.sqlite.org/lang.html). You will find an extensive usage of the composite pattern. diff --git a/SQLite.CodeFirst.sln b/SQLite.CodeFirst.sln index 2cffe5d..9d1e816 100644 --- a/SQLite.CodeFirst.sln +++ b/SQLite.CodeFirst.sln @@ -16,6 +16,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst.Test", "SQ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{1F6D4E0E-5D07-4889-961A-A6AFC0ECD7C7}" ProjectSection(SolutionItems) = preProject + README.md = README.md Shared\SQLite.CodeFirst.ruleset = Shared\SQLite.CodeFirst.ruleset Shared\SQLite.CodeFirst.StrongNameKey.snk = Shared\SQLite.CodeFirst.StrongNameKey.snk EndProjectSection diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 9093b53..5d86a57 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -1,7 +1,7 @@  - net40;net45 + net40;net45;netstandard2.1 Marc Sallin From 6065baf36b9c9fa62420df2173f65769445aa65f Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 14 Nov 2019 15:59:38 +0100 Subject: [PATCH 108/144] #143: Add .NET Core 3.1 console project --- .../Entity/Coach.cs | 7 + .../Entity/CustomHistory.cs | 12 ++ .../Entity/Foo.cs | 41 +++++ .../Entity/FooCompositeKey.cs | 25 +++ .../Entity/FooRelationshipA.cs | 18 +++ .../Entity/FooRelationshipB.cs | 18 +++ .../Entity/FooSelf.cs | 13 ++ .../Entity/FooStep.cs | 13 ++ .../Entity/IEntity.cs | 7 + .../Entity/Person.cs | 28 ++++ .../Entity/Player.cs | 21 +++ .../Entity/Stadion.cs | 26 ++++ .../Entity/Team.cs | 22 +++ .../FootballDbContext.cs | 33 ++++ .../FootballDbInitializer.cs | 17 ++ .../ModelConfiguration.cs | 66 ++++++++ SQLite.CodeFirst.NetCore.Console/Program.cs | 147 ++++++++++++++++++ .../SQLite.CodeFirst.NetCore.Console.csproj | 16 ++ SQLite.CodeFirst.sln | 6 + 19 files changed, 536 insertions(+) create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/Coach.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/CustomHistory.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/Foo.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/FooSelf.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/FooStep.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/Person.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/Player.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/Stadion.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Entity/Team.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/FootballDbContext.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/FootballDbInitializer.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/ModelConfiguration.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/Program.cs create mode 100644 SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/Coach.cs b/SQLite.CodeFirst.NetCore.Console/Entity/Coach.cs new file mode 100644 index 0000000..6dfc65b --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/Coach.cs @@ -0,0 +1,7 @@ +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + public class Coach : Person + { + public virtual Team Team { get; set; } + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/CustomHistory.cs b/SQLite.CodeFirst.NetCore.Console/Entity/CustomHistory.cs new file mode 100644 index 0000000..740c3da --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/CustomHistory.cs @@ -0,0 +1,12 @@ +using System; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + public class CustomHistory : IHistory + { + public int Id { get; set; } + public string Hash { get; set; } + public string Context { get; set; } + public DateTime CreateDate { get; set; } + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/Foo.cs b/SQLite.CodeFirst.NetCore.Console/Entity/Foo.cs new file mode 100644 index 0000000..f5a1bdd --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/Foo.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/69 and https://github.com/msallin/SQLiteCodeFirst/issues/63 + /// + public class Foo + { + private ICollection _fooSelves; + private ICollection _fooSteps; + + public int FooId { get; set; } + public string Name { get; set; } + public int? FooSelf1Id { get; set; } + public int? FooSelf2Id { get; set; } + public int? FooSelf3Id { get; set; } + + [ForeignKey("FooSelf1Id")] + public virtual Foo ParentMyEntity1 { get; set; } + + [ForeignKey("FooSelf2Id")] + public virtual Foo ParentMyEntity2 { get; set; } + + [ForeignKey("FooSelf3Id")] + public virtual Foo ParentMyEntity3 { get; set; } + + public virtual ICollection FooSteps + { + get { return _fooSteps ?? (_fooSteps = new HashSet()); } + set { _fooSteps = value; } + } + + public virtual ICollection FooSelves + { + get { return _fooSelves ?? (_fooSelves = new HashSet()); } + set { _fooSelves = value; } + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs new file mode 100644 index 0000000..4020e52 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooCompositeKey + { + [Key, Column(Order = 1)] + public int Id { get; set; } + + [Key, Column(Order = 2), StringLength(20)] + public string Version { get; set; } + + [StringLength(255)] + public string Name { get; set; } + + public virtual ICollection FooeyACollection { get; set; } + + public virtual ICollection FooeyBCollection { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs new file mode 100644 index 0000000..135b3bd --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipA + { + public int Id { get; set; } + + [StringLength(255)] + public string Name { get; set; } + + public virtual ICollection Fooey { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs new file mode 100644 index 0000000..4997660 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipB + { + public int Id { get; set; } + + [StringLength(255)] + public string Name { get; set; } + + public virtual ICollection Fooey { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooSelf.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooSelf.cs new file mode 100644 index 0000000..6a8ad39 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooSelf.cs @@ -0,0 +1,13 @@ +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/69 and https://github.com/msallin/SQLiteCodeFirst/issues/63 + /// + public class FooSelf + { + public int FooSelfId { get; set; } + public int FooId { get; set; } + public int Number { get; set; } + public virtual Foo Foo { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooStep.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooStep.cs new file mode 100644 index 0000000..b13b3a4 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooStep.cs @@ -0,0 +1,13 @@ +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/69 and https://github.com/msallin/SQLiteCodeFirst/issues/63 + /// + public class FooStep + { + public int FooStepId { get; set; } + public int FooId { get; set; } + public int Number { get; set; } + public virtual Foo Foo { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs b/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs new file mode 100644 index 0000000..a33e2b6 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs @@ -0,0 +1,7 @@ +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + interface IEntity + { + int Id { get; set; } + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/Person.cs b/SQLite.CodeFirst.NetCore.Console/Entity/Person.cs new file mode 100644 index 0000000..e5ebda4 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/Person.cs @@ -0,0 +1,28 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + public abstract class Person : IEntity + { + public int Id { get; set; } + + [MaxLength(50)] + [Collate(CollationFunction.NoCase)] + public string FirstName { get; set; } + + [MaxLength(50)] + public string LastName { get; set; } + + [MaxLength(100)] + public string Street { get; set; } + + [Required] + public string City { get; set; } + + [DatabaseGenerated(DatabaseGeneratedOption.Computed)] + [SqlDefaultValue(DefaultValue = "DATETIME('now')")] + public DateTime CreatedUtc { get; set; } + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/Player.cs b/SQLite.CodeFirst.NetCore.Console/Entity/Player.cs new file mode 100644 index 0000000..f642654 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/Player.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + [Table("TeamPlayer")] + public class Player : Person + { + [Index] // Automatically named 'IX_TeamPlayer_Number' + [Index("IX_TeamPlayer_NumberPerTeam", Order = 1, IsUnique = true)] + public int Number { get; set; } + + // The index attribute must be placed on the FK not on the navigation property (team). + [Index("IX_TeamPlayer_NumberPerTeam", Order = 2, IsUnique = true)] + public int TeamId { get; set; } + + // Its not possible to set an index on this property. Use the FK property (teamId). + public virtual Team Team { get; set; } + + public virtual Player Mentor { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/Stadion.cs b/SQLite.CodeFirst.NetCore.Console/Entity/Stadion.cs new file mode 100644 index 0000000..d8a2c50 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/Stadion.cs @@ -0,0 +1,26 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + public class Stadion + { + [Key] + [Column(Order = 1)] + [Index("IX_Stadion_Main", Order = 2, IsUnique = true)] // Test for combined, named index + public string Name { get; set; } + + [Key] + [Column(Order = 2)] + [Index("IX_Stadion_Main", Order = 1, IsUnique = true)] // Test for combined, named index + public string Street { get; set; } + + [Key] + [Column(Order = 3)] + public string City { get; set; } + + [Column(Order = 4)] + [Index("ReservedKeyWordTest", IsUnique = true)] + public int Order { get; set; } + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/Team.cs b/SQLite.CodeFirst.NetCore.Console/Entity/Team.cs new file mode 100644 index 0000000..d448a5f --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Entity/Team.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace SQLite.CodeFirst.NetCore.Console.Entity +{ + public class Team : IEntity + { + [Autoincrement] + public int Id { get; set; } + + [Index("IX_Team_TeamsName")] // Test for named index. + [Required] + public string Name { get; set; } + + public virtual Coach Coach { get; set; } + + public virtual ICollection Players { get; set; } + + public virtual Stadion Stadion { get; set; } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/FootballDbContext.cs b/SQLite.CodeFirst.NetCore.Console/FootballDbContext.cs new file mode 100644 index 0000000..330c6c0 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/FootballDbContext.cs @@ -0,0 +1,33 @@ +using System.Data.Common; +using System.Data.Entity; + +namespace SQLite.CodeFirst.NetCore.Console +{ + public class FootballDbContext : DbContext + { + public FootballDbContext(string nameOrConnectionString) + : base(nameOrConnectionString) + { + Configure(); + } + + public FootballDbContext(DbConnection connection, bool contextOwnsConnection) + : base(connection, contextOwnsConnection) + { + Configure(); + } + + private void Configure() + { + Configuration.ProxyCreationEnabled = true; + Configuration.LazyLoadingEnabled = true; + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + ModelConfiguration.Configure(modelBuilder); + var initializer = new FootballDbInitializer(modelBuilder); + Database.SetInitializer(initializer); + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/FootballDbInitializer.cs b/SQLite.CodeFirst.NetCore.Console/FootballDbInitializer.cs new file mode 100644 index 0000000..0d4a426 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/FootballDbInitializer.cs @@ -0,0 +1,17 @@ +using System.Data.Entity; +using SQLite.CodeFirst.NetCore.Console.Entity; + +namespace SQLite.CodeFirst.NetCore.Console +{ + public class FootballDbInitializer : SqliteDropCreateDatabaseWhenModelChanges + { + public FootballDbInitializer(DbModelBuilder modelBuilder) + : base(modelBuilder, typeof(CustomHistory)) + { } + + protected override void Seed(FootballDbContext context) + { + // Here you can seed your core data if you have any. + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/ModelConfiguration.cs b/SQLite.CodeFirst.NetCore.Console/ModelConfiguration.cs new file mode 100644 index 0000000..254f6f8 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/ModelConfiguration.cs @@ -0,0 +1,66 @@ +using System.Data.Entity; +using SQLite.CodeFirst.NetCore.Console.Entity; + +namespace SQLite.CodeFirst.NetCore.Console +{ + public class ModelConfiguration + { + public static void Configure(DbModelBuilder modelBuilder) + { + ConfigureTeamEntity(modelBuilder); + ConfigureStadionEntity(modelBuilder); + ConfigureCoachEntity(modelBuilder); + ConfigurePlayerEntity(modelBuilder); + ConfigureSelfReferencingEntities(modelBuilder); + ConfigureCompositeKeyEntities(modelBuilder); + } + + private static void ConfigureTeamEntity(DbModelBuilder modelBuilder) + { + modelBuilder.Entity().ToTable("Base.MyTable") + .HasRequired(t => t.Coach) + .WithMany() + .WillCascadeOnDelete(false); + + modelBuilder.Entity() + .HasRequired(t => t.Stadion) + .WithRequiredPrincipal() + .WillCascadeOnDelete(true); + } + + private static void ConfigureStadionEntity(DbModelBuilder modelBuilder) + { + modelBuilder.Entity(); + } + + private static void ConfigureCoachEntity(DbModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasRequired(p => p.Team) + .WithRequiredPrincipal(t => t.Coach) + .WillCascadeOnDelete(false); + } + + private static void ConfigurePlayerEntity(DbModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasRequired(p => p.Team) + .WithMany(team => team.Players) + .WillCascadeOnDelete(true); + } + + private static void ConfigureSelfReferencingEntities(DbModelBuilder modelBuilder) + { + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + } + + private static void ConfigureCompositeKeyEntities(DbModelBuilder modelBuilder) + { + modelBuilder.Entity(); + modelBuilder.Entity(); + modelBuilder.Entity(); + } + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Program.cs b/SQLite.CodeFirst.NetCore.Console/Program.cs new file mode 100644 index 0000000..cc622cd --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Program.cs @@ -0,0 +1,147 @@ +using System.Collections.Generic; +using System.Data.Entity; +using System.Data.SQLite; +using System.Linq; +using SQLite.CodeFirst.NetCore.Console.Entity; + +namespace SQLite.CodeFirst.NetCore.Console +{ + public static class Program + { + private static void Main() + { + StartDemoUseInMemory(); + StartDemoUseFile(); + PressEnterToExit(); + } + + private static void StartDemoUseInMemory() + { + System.Console.WriteLine("Starting Demo Application (In Memory)"); + System.Console.WriteLine(string.Empty); + + using (var sqLiteConnection = new SQLiteConnection("data source=:memory:")) + { + // This is required if a in memory db is used. + sqLiteConnection.Open(); + + using (var context = new FootballDbContext(sqLiteConnection, false)) + { + CreateAndSeedDatabase(context); + DisplaySeededData(context); + } + } + } + + private static void StartDemoUseFile() + { + System.Console.WriteLine("Starting Demo Application (File)"); + System.Console.WriteLine(string.Empty); + + using (var context = new FootballDbContext("footballDb")) + { + CreateAndSeedDatabase(context); + DisplaySeededData(context); + } + } + + private static void CreateAndSeedDatabase(DbContext context) + { + System.Console.WriteLine("Create and seed the database."); + + if (context.Set().Count() != 0) + { + return; + } + + context.Set().Add(new Team + { + Name = "YB", + Coach = new Coach + { + City = "Zürich", + FirstName = "Masssaman", + LastName = "Nachn", + Street = "Testingstreet 844" + }, + Players = new List + { + new Player + { + City = "Bern", + FirstName = "Marco", + LastName = "Bürki", + Street = "Wunderstrasse 43", + Number = 12 + }, + new Player + { + City = "Berlin", + FirstName = "Alain", + LastName = "Rochat", + Street = "Wonderstreet 13", + Number = 14 + } + }, + Stadion = new Stadion + { + Name = "Stade de Suisse", + City = "Bern", + Street = "Papiermühlestrasse 71" + } + }); + + context.SaveChanges(); + + System.Console.WriteLine("Completed."); + System.Console.WriteLine(); + } + + private static void DisplaySeededData(DbContext context) + { + System.Console.WriteLine("Display seeded data."); + + foreach (Team team in context.Set()) + { + System.Console.WriteLine("\t Team:"); + System.Console.WriteLine("\t Id: {0}", team.Id); + System.Console.WriteLine("\t Name: {0}", team.Name); + System.Console.WriteLine(); + + System.Console.WriteLine("\t\t Stadion:"); + System.Console.WriteLine("\t\t Name: {0}", team.Stadion.Name); + System.Console.WriteLine("\t\t Street: {0}", team.Stadion.Street); + System.Console.WriteLine("\t\t City: {0}", team.Stadion.City); + System.Console.WriteLine(); + + System.Console.WriteLine("\t\t Coach:"); + System.Console.WriteLine("\t\t Id: {0}", team.Coach.Id); + System.Console.WriteLine("\t\t FirstName: {0}", team.Coach.FirstName); + System.Console.WriteLine("\t\t LastName: {0}", team.Coach.LastName); + System.Console.WriteLine("\t\t Street: {0}", team.Coach.Street); + System.Console.WriteLine("\t\t City: {0}", team.Coach.City); + System.Console.WriteLine(); + + foreach (Player player in team.Players) + { + System.Console.WriteLine("\t\t Player:"); + System.Console.WriteLine("\t\t Id: {0}", player.Id); + System.Console.WriteLine("\t\t Number: {0}", player.Number); + System.Console.WriteLine("\t\t FirstName: {0}", player.FirstName); + System.Console.WriteLine("\t\t LastName: {0}", player.LastName); + System.Console.WriteLine("\t\t Street: {0}", player.Street); + System.Console.WriteLine("\t\t City: {0}", player.City); + System.Console.WriteLine("\t\t Created: {0}", player.CreatedUtc); + System.Console.WriteLine(); + } + } + } + + private static void PressEnterToExit() + { + System.Console.WriteLine(); + System.Console.WriteLine("Press 'Enter' to exit."); + System.Console.ReadLine(); + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj new file mode 100644 index 0000000..d09eb1b --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj @@ -0,0 +1,16 @@ + + + + Exe + netcoreapp3.1 + + + + + + + + + + + diff --git a/SQLite.CodeFirst.sln b/SQLite.CodeFirst.sln index 9d1e816..856e8f8 100644 --- a/SQLite.CodeFirst.sln +++ b/SQLite.CodeFirst.sln @@ -21,6 +21,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{1F6D4E Shared\SQLite.CodeFirst.StrongNameKey.snk = Shared\SQLite.CodeFirst.StrongNameKey.snk EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLite.CodeFirst.NetCore.Console", "SQLite.CodeFirst.NetCore.Console\SQLite.CodeFirst.NetCore.Console.csproj", "{709F46E3-D23B-4931-9985-8E09E3817CC4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {E542F38D-852E-489D-81C2-BF333503E10F}.Debug|Any CPU.Build.0 = Debug|Any CPU {E542F38D-852E-489D-81C2-BF333503E10F}.Release|Any CPU.ActiveCfg = Release|Any CPU {E542F38D-852E-489D-81C2-BF333503E10F}.Release|Any CPU.Build.0 = Release|Any CPU + {709F46E3-D23B-4931-9985-8E09E3817CC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {709F46E3-D23B-4931-9985-8E09E3817CC4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {709F46E3-D23B-4931-9985-8E09E3817CC4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {709F46E3-D23B-4931-9985-8E09E3817CC4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 52b9b7c195a2e62deb4a9fc37dc0bdd40687cecf Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 14 Nov 2019 16:03:30 +0100 Subject: [PATCH 109/144] #143: Use Appveyor image "Visual Studio 2019" to build .NET Core 3.1 --- ci_appveyor.yml | 2 +- release_appveyor.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci_appveyor.yml b/ci_appveyor.yml index 3a96f64..bc7ecb2 100644 --- a/ci_appveyor.yml +++ b/ci_appveyor.yml @@ -1,5 +1,5 @@ version: CI_{branch}_{build} -image: Visual Studio 2017 +image: Visual Studio 2019 skip_tags: true configuration: - Release diff --git a/release_appveyor.yml b/release_appveyor.yml index 402be71..1e430cf 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,5 +1,5 @@ version: 1.5.3.{build} -image: Visual Studio 2017 +image: Visual Studio 2019 branches: only: - master From 4533a9cda95fe0096b715f98c30b4bea5b4aa06e Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 26 Dec 2019 12:38:58 +0100 Subject: [PATCH 110/144] #143: Update NuGet packages --- .../SQLite.CodeFirst.Console.csproj | 2 +- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 10 +++++----- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 0b88383..3c1470a 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -10,7 +10,7 @@ ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - + diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 8bfbf43..0dacc17 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -14,11 +14,11 @@ pdbonly - - - - - + + + + + diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 5d86a57..a723f64 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -20,7 +20,7 @@ - + From 0a2bc9fca74f949f109edefb10e033eb7e015ccf Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sun, 17 Nov 2019 20:09:31 +0100 Subject: [PATCH 111/144] #143: Set version to 1.6.0 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index 1e430cf..3f3e1c1 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.5.3.{build} +version: 1.6.0.{build} image: Visual Studio 2019 branches: only: From 702d7501e52cba9d9fe69a116b5b4d7236fe6a95 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Fri, 6 Mar 2020 23:03:59 +0100 Subject: [PATCH 112/144] Use scoped NuGet-API-Key --- release_appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index 3f3e1c1..62fac2d 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -27,9 +27,10 @@ artifacts: - path: SQLite.CodeFirst\bin\Release\*.nupkg name: NuPkg deploy: +# Encrypt with https://ci.appveyor.com/tools/encrypt - provider: NuGet api_key: - secure: QmbFnerlfTAFUZpnaPgVDywMH4fF8rVakefmqvhu3qm9SpuDlLGB9S4HwtdE3Nep + secure: wKCSsG3JbuHyNmEL6JagQlGexspQI4W3QTXi0QIWVJKOr4Y0S7j/jUEOJoUCzORK on: branch: master - provider: GitHub From 6b772fec04d34c2ff2d6a68032c5a67b18ac6274 Mon Sep 17 00:00:00 2001 From: Axel Heer Date: Sat, 25 Apr 2020 17:31:15 +0200 Subject: [PATCH 113/144] #143: Add code-based configuration --- .../Configuration.cs | 28 +++++++++++++++++++ SQLite.CodeFirst.NetCore.Console/Program.cs | 4 +-- .../SQLite.CodeFirst.NetCore.Console.csproj | 3 +- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 SQLite.CodeFirst.NetCore.Console/Configuration.cs diff --git a/SQLite.CodeFirst.NetCore.Console/Configuration.cs b/SQLite.CodeFirst.NetCore.Console/Configuration.cs new file mode 100644 index 0000000..845f483 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/Configuration.cs @@ -0,0 +1,28 @@ +using System.Data.Common; +using System.Data.Entity; +using System.Data.Entity.Core.Common; +using System.Data.Entity.Infrastructure; +using System.Data.SQLite; +using System.Data.SQLite.EF6; + +namespace SQLite.CodeFirst.NetCore.Console +{ + public class Configuration : DbConfiguration, IDbConnectionFactory + { + public Configuration() + { + SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); + SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); + + var providerServices = (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)); + + SetProviderServices("System.Data.SQLite", providerServices); + SetProviderServices("System.Data.SQLite.EF6", providerServices); + + SetDefaultConnectionFactory(this); + } + + public DbConnection CreateConnection(string connectionString) + => new SQLiteConnection(connectionString); + } +} diff --git a/SQLite.CodeFirst.NetCore.Console/Program.cs b/SQLite.CodeFirst.NetCore.Console/Program.cs index cc622cd..3bd2b42 100644 --- a/SQLite.CodeFirst.NetCore.Console/Program.cs +++ b/SQLite.CodeFirst.NetCore.Console/Program.cs @@ -38,7 +38,7 @@ private static void StartDemoUseFile() System.Console.WriteLine("Starting Demo Application (File)"); System.Console.WriteLine(string.Empty); - using (var context = new FootballDbContext("footballDb")) + using (var context = new FootballDbContext(@"data source=.\db\footballDb\footballDb.sqlite;foreign keys=true")) { CreateAndSeedDatabase(context); DisplaySeededData(context); @@ -144,4 +144,4 @@ private static void PressEnterToExit() System.Console.ReadLine(); } } -} \ No newline at end of file +} diff --git a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj index d09eb1b..37489d0 100644 --- a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj +++ b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj @@ -6,7 +6,8 @@ - + + From 4c5ad2a4803d37f37ed6f7183cecebb54424a0af Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 2 May 2020 09:52:32 +0200 Subject: [PATCH 114/144] #143: Update readme --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index bbe4c73..094a3a0 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,34 @@ public class MyContext : DbContext } ``` +### .NET Core example + +Add the following package references. +```xml + + +``` + +Add the following class. +```csharp +public Configuration() +{ + SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); + SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); + + var providerServices = (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)); + + SetProviderServices("System.Data.SQLite", providerServices); + SetProviderServices("System.Data.SQLite.EF6", providerServices); + + SetDefaultConnectionFactory(this); +} + +public DbConnection CreateConnection(string connectionString) + => new SQLiteConnection(connectionString); +} +``` + ## Structure The code is written in an extensible way. From f21bb452ef13f3cde6ee1e0f051e8bc49ee19671 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 2 May 2020 09:58:00 +0200 Subject: [PATCH 115/144] Code cleanup --- .../Entity/FooCompositeKey.cs | 28 +++++++++---------- .../Entity/FooRelationshipA.cs | 20 ++++++------- .../Entity/FooRelationshipB.cs | 20 ++++++------- SQLite.CodeFirst.Console/Entity/IEntity.cs | 2 +- .../Entity/FooCompositeKey.cs | 28 +++++++++---------- .../Entity/FooRelationshipA.cs | 20 ++++++------- .../Entity/FooRelationshipB.cs | 20 ++++++------- .../Entity/IEntity.cs | 2 +- 8 files changed, 70 insertions(+), 70 deletions(-) diff --git a/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs b/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs index 76c4ec4..2301500 100644 --- a/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs +++ b/SQLite.CodeFirst.Console/Entity/FooCompositeKey.cs @@ -4,22 +4,22 @@ namespace SQLite.CodeFirst.Console.Entity { - /// - /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 - /// - public class FooCompositeKey - { - [Key, Column(Order = 1)] - public int Id { get; set; } + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooCompositeKey + { + [Key, Column(Order = 1)] + public int Id { get; set; } - [Key, Column(Order = 2), StringLength(20)] - public string Version { get; set; } + [Key, Column(Order = 2), StringLength(20)] + public string Version { get; set; } - [StringLength(255)] - public string Name { get; set; } + [StringLength(255)] + public string Name { get; set; } - public virtual ICollection FooeyACollection { get; set; } + public virtual ICollection FooeyACollection { get; set; } - public virtual ICollection FooeyBCollection { get; set; } - } + public virtual ICollection FooeyBCollection { get; set; } + } } \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs b/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs index 09ec0cb..38baaf2 100644 --- a/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs +++ b/SQLite.CodeFirst.Console/Entity/FooRelationshipA.cs @@ -3,16 +3,16 @@ namespace SQLite.CodeFirst.Console.Entity { - /// - /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 - /// - public class FooRelationshipA - { - public int Id { get; set; } + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipA + { + public int Id { get; set; } - [StringLength(255)] - public string Name { get; set; } + [StringLength(255)] + public string Name { get; set; } - public virtual ICollection Fooey { get; set; } - } + public virtual ICollection Fooey { get; set; } + } } \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs b/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs index 907dcdb..271d8f8 100644 --- a/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs +++ b/SQLite.CodeFirst.Console/Entity/FooRelationshipB.cs @@ -3,16 +3,16 @@ namespace SQLite.CodeFirst.Console.Entity { - /// - /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 - /// - public class FooRelationshipB - { - public int Id { get; set; } + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipB + { + public int Id { get; set; } - [StringLength(255)] - public string Name { get; set; } + [StringLength(255)] + public string Name { get; set; } - public virtual ICollection Fooey { get; set; } - } + public virtual ICollection Fooey { get; set; } + } } \ No newline at end of file diff --git a/SQLite.CodeFirst.Console/Entity/IEntity.cs b/SQLite.CodeFirst.Console/Entity/IEntity.cs index e88d169..17afb3b 100644 --- a/SQLite.CodeFirst.Console/Entity/IEntity.cs +++ b/SQLite.CodeFirst.Console/Entity/IEntity.cs @@ -1,6 +1,6 @@ namespace SQLite.CodeFirst.Console.Entity { - interface IEntity + public interface IEntity { int Id { get; set; } } diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs index 4020e52..b4bb2d6 100644 --- a/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooCompositeKey.cs @@ -4,22 +4,22 @@ namespace SQLite.CodeFirst.NetCore.Console.Entity { - /// - /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 - /// - public class FooCompositeKey - { - [Key, Column(Order = 1)] - public int Id { get; set; } + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooCompositeKey + { + [Key, Column(Order = 1)] + public int Id { get; set; } - [Key, Column(Order = 2), StringLength(20)] - public string Version { get; set; } + [Key, Column(Order = 2), StringLength(20)] + public string Version { get; set; } - [StringLength(255)] - public string Name { get; set; } + [StringLength(255)] + public string Name { get; set; } - public virtual ICollection FooeyACollection { get; set; } + public virtual ICollection FooeyACollection { get; set; } - public virtual ICollection FooeyBCollection { get; set; } - } + public virtual ICollection FooeyBCollection { get; set; } + } } \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs index 135b3bd..f733cd7 100644 --- a/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipA.cs @@ -3,16 +3,16 @@ namespace SQLite.CodeFirst.NetCore.Console.Entity { - /// - /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 - /// - public class FooRelationshipA - { - public int Id { get; set; } + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipA + { + public int Id { get; set; } - [StringLength(255)] - public string Name { get; set; } + [StringLength(255)] + public string Name { get; set; } - public virtual ICollection Fooey { get; set; } - } + public virtual ICollection Fooey { get; set; } + } } \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs index 4997660..3b75f68 100644 --- a/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs +++ b/SQLite.CodeFirst.NetCore.Console/Entity/FooRelationshipB.cs @@ -3,16 +3,16 @@ namespace SQLite.CodeFirst.NetCore.Console.Entity { - /// - /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 - /// - public class FooRelationshipB - { - public int Id { get; set; } + /// + /// See https://github.com/msallin/SQLiteCodeFirst/issues/109 + /// + public class FooRelationshipB + { + public int Id { get; set; } - [StringLength(255)] - public string Name { get; set; } + [StringLength(255)] + public string Name { get; set; } - public virtual ICollection Fooey { get; set; } - } + public virtual ICollection Fooey { get; set; } + } } \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs b/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs index a33e2b6..9a97b92 100644 --- a/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs +++ b/SQLite.CodeFirst.NetCore.Console/Entity/IEntity.cs @@ -1,6 +1,6 @@ namespace SQLite.CodeFirst.NetCore.Console.Entity { - interface IEntity + public interface IEntity { int Id { get; set; } } From cdd45c911a457747c99de01b03fd1a793c21d24b Mon Sep 17 00:00:00 2001 From: "Sallin Marc, I212" Date: Sat, 30 Jan 2021 20:13:30 +0100 Subject: [PATCH 116/144] Update dependencies --- .../SQLite.CodeFirst.NetCore.Console.csproj | 6 +++--- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 2 +- release_appveyor.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj index 37489d0..119d9ae 100644 --- a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj +++ b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj @@ -2,12 +2,12 @@ Exe - netcoreapp3.1 + net5.0 - - + + diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index a723f64..954af58 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -20,7 +20,7 @@ - + diff --git a/release_appveyor.yml b/release_appveyor.yml index 62fac2d..c1fd9c6 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.6.0.{build} +version: 1.6.1.{build} image: Visual Studio 2019 branches: only: From b15864abebb35e42fc4900322e501ce4bc0a2f59 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Sat, 20 Mar 2021 12:37:58 +0100 Subject: [PATCH 117/144] Update dependencies --- README.md | 1 + SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj | 2 +- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 9 ++++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 094a3a0..fe628db 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.0 (uses net40) - .NET 4.5-4.8 (uses net45) - .NET Core 3.0-3.1 (uses netstandard2.1) +- .NET 5 (uses netstandard2.1) ## How to use diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 3c1470a..21dfe61 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -10,7 +10,7 @@ ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - + diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 0dacc17..1f25c91 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -14,11 +14,10 @@ pdbonly - - - - - + + + + From 8edfe3625560f0e7aee10cc0977d24c50ee8f171 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 8 Apr 2021 14:33:47 +0200 Subject: [PATCH 118/144] Update dependencies --- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 1f25c91..687c599 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -15,7 +15,7 @@ - + From ed11c32e9bfa61c7073cb3b16bf2daf71549cf9c Mon Sep 17 00:00:00 2001 From: Kizzzy Date: Fri, 23 Apr 2021 15:08:26 +0800 Subject: [PATCH 119/144] #107: escape columnName to avoid reserved keyword conflict --- .../IntegrationTests/SqlGenerationTest.cs | 27 ++++++++++--------- .../Statement/ColumnStatementTest.cs | 4 +-- .../Statement/ForeignKeyStatementTest.cs | 10 +++---- .../Statement/PrimaryKeyStatementTest.cs | 4 +-- .../Builder/NameCreators/ColumnNameCreator.cs | 12 +++++++++ .../Internal/Statement/ColumnStatement.cs | 5 ++-- .../Statement/CompositePrimaryKeyStatement.cs | 7 ++--- .../Internal/Statement/ForeignKeyStatement.cs | 10 +++---- 8 files changed, 47 insertions(+), 32 deletions(-) create mode 100644 SQLite.CodeFirst/Internal/Builder/NameCreators/ColumnNameCreator.cs diff --git a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs index 6db4301..6be0a61 100644 --- a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs +++ b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs @@ -1,5 +1,4 @@ -using System; -using System.Data.Common; +using System.Data.Common; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.SQLite; @@ -14,18 +13,19 @@ namespace SQLite.CodeFirst.Test.IntegrationTests public class SqlGenerationTest { private const string ReferenceSql = - @"CREATE TABLE ""MyTable"" ([Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Name] nvarchar NOT NULL, FOREIGN KEY (Id) REFERENCES ""Coaches""(Id)); + @" +CREATE TABLE ""MyTable"" ([Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Name] nvarchar NOT NULL, FOREIGN KEY ([Id]) REFERENCES ""Coaches""([Id])); CREATE TABLE ""Coaches"" ([Id] INTEGER PRIMARY KEY, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50), [Street] nvarchar (100), [City] nvarchar NOT NULL, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now'))); -CREATE TABLE ""TeamPlayer"" ([Id] INTEGER PRIMARY KEY, [Number] int NOT NULL, [TeamId] int NOT NULL, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50), [Street] nvarchar (100), [City] nvarchar NOT NULL, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now')), [Mentor_Id] int, FOREIGN KEY (Mentor_Id) REFERENCES ""TeamPlayer""(Id), FOREIGN KEY (TeamId) REFERENCES ""MyTable""(Id) ON DELETE CASCADE); -CREATE TABLE ""Stadions"" ([Name] nvarchar (128) NOT NULL, [Street] nvarchar (128) NOT NULL, [City] nvarchar (128) NOT NULL, [Order] int NOT NULL, [Team_Id] int NOT NULL, PRIMARY KEY(Name, Street, City), FOREIGN KEY (Team_Id) REFERENCES ""MyTable""(Id) ON DELETE CASCADE); -CREATE TABLE ""Foos"" ([FooId] INTEGER PRIMARY KEY, [Name] nvarchar, [FooSelf1Id] int, [FooSelf2Id] int, [FooSelf3Id] int, FOREIGN KEY (FooSelf1Id) REFERENCES ""Foos""(FooId), FOREIGN KEY (FooSelf2Id) REFERENCES ""Foos""(FooId), FOREIGN KEY (FooSelf3Id) REFERENCES ""Foos""(FooId)); -CREATE TABLE ""FooSelves"" ([FooSelfId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY (FooId) REFERENCES ""Foos""(FooId) ON DELETE CASCADE); -CREATE TABLE ""FooSteps"" ([FooStepId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY (FooId) REFERENCES ""Foos""(FooId) ON DELETE CASCADE); -CREATE TABLE ""FooCompositeKeys"" ([Id] int NOT NULL, [Version] nvarchar (20) NOT NULL, [Name] nvarchar (255), PRIMARY KEY(Id, Version)); +CREATE TABLE ""TeamPlayer"" ([Id] INTEGER PRIMARY KEY, [Number] int NOT NULL, [TeamId] int NOT NULL, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50), [Street] nvarchar (100), [City] nvarchar NOT NULL, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now')), [Mentor_Id] int, FOREIGN KEY ([Mentor_Id]) REFERENCES ""TeamPlayer""([Id]), FOREIGN KEY ([TeamId]) REFERENCES ""MyTable""([Id]) ON DELETE CASCADE); +CREATE TABLE ""Stadions"" ([Name] nvarchar (128) NOT NULL, [Street] nvarchar (128) NOT NULL, [City] nvarchar (128) NOT NULL, [Order] int NOT NULL, [Team_Id] int NOT NULL, PRIMARY KEY([Name], [Street], [City]), FOREIGN KEY ([Team_Id]) REFERENCES ""MyTable""([Id]) ON DELETE CASCADE); +CREATE TABLE ""Foos"" ([FooId] INTEGER PRIMARY KEY, [Name] nvarchar, [FooSelf1Id] int, [FooSelf2Id] int, [FooSelf3Id] int, FOREIGN KEY ([FooSelf1Id]) REFERENCES ""Foos""([FooId]), FOREIGN KEY ([FooSelf2Id]) REFERENCES ""Foos""([FooId]), FOREIGN KEY ([FooSelf3Id]) REFERENCES ""Foos""([FooId])); +CREATE TABLE ""FooSelves"" ([FooSelfId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY ([FooId]) REFERENCES ""Foos""([FooId]) ON DELETE CASCADE); +CREATE TABLE ""FooSteps"" ([FooStepId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY ([FooId]) REFERENCES ""Foos""([FooId]) ON DELETE CASCADE); +CREATE TABLE ""FooCompositeKeys"" ([Id] int NOT NULL, [Version] nvarchar (20) NOT NULL, [Name] nvarchar (255), PRIMARY KEY([Id], [Version])); CREATE TABLE ""FooRelationshipAs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255)); CREATE TABLE ""FooRelationshipBs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255)); -CREATE TABLE ""FooRelationshipAFooCompositeKeys"" ([FooRelationshipA_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY(FooRelationshipA_Id, FooCompositeKey_Id, FooCompositeKey_Version), FOREIGN KEY (FooRelationshipA_Id) REFERENCES ""FooRelationshipAs""(Id) ON DELETE CASCADE, FOREIGN KEY (FooCompositeKey_Id, FooCompositeKey_Version) REFERENCES ""FooCompositeKeys""(Id, Version) ON DELETE CASCADE); -CREATE TABLE ""FooRelationshipBFooCompositeKeys"" ([FooRelationshipB_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY(FooRelationshipB_Id, FooCompositeKey_Id, FooCompositeKey_Version), FOREIGN KEY (FooRelationshipB_Id) REFERENCES ""FooRelationshipBs""(Id) ON DELETE CASCADE, FOREIGN KEY (FooCompositeKey_Id, FooCompositeKey_Version) REFERENCES ""FooCompositeKeys""(Id, Version) ON DELETE CASCADE); +CREATE TABLE ""FooRelationshipAFooCompositeKeys"" ([FooRelationshipA_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY([FooRelationshipA_Id], [FooCompositeKey_Id], [FooCompositeKey_Version]), FOREIGN KEY ([FooRelationshipA_Id]) REFERENCES ""FooRelationshipAs""([Id]) ON DELETE CASCADE, FOREIGN KEY ([FooCompositeKey_Id], [FooCompositeKey_Version]) REFERENCES ""FooCompositeKeys""([Id], [Version]) ON DELETE CASCADE); +CREATE TABLE ""FooRelationshipBFooCompositeKeys"" ([FooRelationshipB_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL, PRIMARY KEY([FooRelationshipB_Id], [FooCompositeKey_Id], [FooCompositeKey_Version]), FOREIGN KEY ([FooRelationshipB_Id]) REFERENCES ""FooRelationshipBs""([Id]) ON DELETE CASCADE, FOREIGN KEY ([FooCompositeKey_Id], [FooCompositeKey_Version]) REFERENCES ""FooCompositeKeys""([Id], [Version]) ON DELETE CASCADE); CREATE INDEX ""IX_MyTable_Id"" ON ""MyTable"" (""Id""); CREATE INDEX ""IX_Team_TeamsName"" ON ""MyTable"" (""Name""); CREATE INDEX ""IX_TeamPlayer_Number"" ON ""TeamPlayer"" (""Number""); @@ -42,12 +42,13 @@ public class SqlGenerationTest CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooRelationshipA_Id"" ON ""FooRelationshipAFooCompositeKeys"" (""FooRelationshipA_Id""); CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipAFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version""); CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooRelationshipB_Id"" ON ""FooRelationshipBFooCompositeKeys"" (""FooRelationshipB_Id""); -CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipBFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version"");"; +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipBFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version""); +"; private static string generatedSql; // Does not work on the build server. No clue why. - + [TestMethod] public void SqliteSqlGeneratorTest() { diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs index 4d81d75..9e47dc5 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs @@ -16,9 +16,9 @@ public void CreateStatement() var columnStatement = new ColumnStatement { - ColumnConstraints = columnConstraintsMock.Object, ColumnName = "dummyColumnName", - TypeName = "dummyType" + TypeName = "dummyType", + ColumnConstraints = columnConstraintsMock.Object, }; string output = columnStatement.CreateStatement(); Assert.AreEqual(output, "[dummyColumnName] dummyType dummyColumnConstraint"); diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs index 192a6b7..c3472de 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs @@ -19,7 +19,7 @@ public void CreateStatementOneForeignKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY (dummyForeignKey1) REFERENCES dummyForeignTable(dummForeignPrimaryKey1)"); + Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1])"); } [TestMethod] @@ -34,7 +34,7 @@ public void CreateStatementOneForeignKeyCascadeDeleteTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY (dummyForeignKey1) REFERENCES dummyForeignTable(dummForeignPrimaryKey1) ON DELETE CASCADE"); + Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1]) ON DELETE CASCADE"); } [TestMethod] @@ -49,7 +49,7 @@ public void CreateStatementTwoForeignKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY (dummyForeignKey1, dummyForeignKey2) REFERENCES dummyForeignTable(dummForeignPrimaryKey1)"); + Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1], [dummyForeignKey2]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1])"); } [TestMethod] @@ -64,7 +64,7 @@ public void CreateStatementTwoForeignKeyTwoPrimaryKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY (dummyForeignKey1, dummyForeignKey2) REFERENCES dummyForeignTable(dummForeignPrimaryKey1, dummForeignPrimaryKey2)"); + Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1], [dummyForeignKey2]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1], [dummForeignPrimaryKey2])"); } [TestMethod] @@ -79,7 +79,7 @@ public void CreateStatementOneForeignKeyTwoPrimaryKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY (dummyForeignKey1) REFERENCES dummyForeignTable(dummForeignPrimaryKey1, dummForeignPrimaryKey2)"); + Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1], [dummForeignPrimaryKey2])"); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs index 7ece059..beffd06 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs @@ -14,7 +14,7 @@ public void CreateStatementWithOneKeyTest() var primaryKeyStatement = new CompositePrimaryKeyStatement(new List { keyMember1 }); Assert.AreEqual(primaryKeyStatement.Count, 1); - Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY(keyMember1)"); + Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY([keyMember1])"); } [TestMethod] @@ -25,7 +25,7 @@ public void CreateStatementWithTwoKeyTest() var primaryKeyStatement = new CompositePrimaryKeyStatement(new List { keyMember1, keyMember2 }); Assert.AreEqual(primaryKeyStatement.Count, 2); - Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY(keyMember1, keyMember2)"); + Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY([keyMember1], [keyMember2])"); } } } diff --git a/SQLite.CodeFirst/Internal/Builder/NameCreators/ColumnNameCreator.cs b/SQLite.CodeFirst/Internal/Builder/NameCreators/ColumnNameCreator.cs new file mode 100644 index 0000000..c533dfd --- /dev/null +++ b/SQLite.CodeFirst/Internal/Builder/NameCreators/ColumnNameCreator.cs @@ -0,0 +1,12 @@ +using System.Globalization; + +namespace SQLite.CodeFirst.Builder.NameCreators +{ + internal static class ColumnNameCreator + { + public static string EscapeName(string columnName) + { + return string.Format(CultureInfo.InvariantCulture, "[{0}]", columnName); + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/Internal/Statement/ColumnStatement.cs b/SQLite.CodeFirst/Internal/Statement/ColumnStatement.cs index bf4f91d..d55b091 100644 --- a/SQLite.CodeFirst/Internal/Statement/ColumnStatement.cs +++ b/SQLite.CodeFirst/Internal/Statement/ColumnStatement.cs @@ -1,11 +1,12 @@ using System.Text; +using SQLite.CodeFirst.Builder.NameCreators; using SQLite.CodeFirst.Statement.ColumnConstraint; namespace SQLite.CodeFirst.Statement { internal class ColumnStatement : IStatement { - private const string Template = "[{column-name}] {type-name} {column-constraint}"; + private const string Template = "{column-name} {type-name} {column-constraint}"; public string ColumnName { get; set; } public string TypeName { get; set; } @@ -15,7 +16,7 @@ public string CreateStatement() { var sb = new StringBuilder(Template); - sb.Replace("{column-name}", ColumnName); + sb.Replace("{column-name}", ColumnNameCreator.EscapeName(ColumnName)); sb.Replace("{type-name}", TypeName); sb.Replace("{column-constraint}", ColumnConstraints.CreateStatement()); diff --git a/SQLite.CodeFirst/Internal/Statement/CompositePrimaryKeyStatement.cs b/SQLite.CodeFirst/Internal/Statement/CompositePrimaryKeyStatement.cs index f2d0374..196f305 100644 --- a/SQLite.CodeFirst/Internal/Statement/CompositePrimaryKeyStatement.cs +++ b/SQLite.CodeFirst/Internal/Statement/CompositePrimaryKeyStatement.cs @@ -1,13 +1,14 @@ -using System; +using SQLite.CodeFirst.Builder.NameCreators; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; namespace SQLite.CodeFirst.Statement { internal class CompositePrimaryKeyStatement : Collection, IStatement { private const string Template = "PRIMARY KEY({primary-keys})"; - private const string PrimaryKeyColumnNameSeperator = ", "; public CompositePrimaryKeyStatement(IEnumerable keyMembers) { @@ -19,7 +20,7 @@ public CompositePrimaryKeyStatement(IEnumerable keyMembers) public string CreateStatement() { - string primaryKeys = String.Join(PrimaryKeyColumnNameSeperator, this); + string primaryKeys = String.Join(", ", this.Select(c => ColumnNameCreator.EscapeName(c))); return Template.Replace("{primary-keys}", primaryKeys); } } diff --git a/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs b/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs index 19b61b4..58b4974 100644 --- a/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs +++ b/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using SQLite.CodeFirst.Builder.NameCreators; +using System.Collections.Generic; +using System.Linq; using System.Text; namespace SQLite.CodeFirst.Statement @@ -16,11 +18,9 @@ internal class ForeignKeyStatement : IStatement public string CreateStatement() { var sb = new StringBuilder(Template); - - sb.Replace("{foreign-key}", string.Join(", ", ForeignKey)); + sb.Replace("{foreign-key}", string.Join(", ", ForeignKey.Select(c => ColumnNameCreator.EscapeName(c)))); sb.Replace("{referenced-table}", ForeignTable); - sb.Replace("{referenced-id}", string.Join(", ", ForeignPrimaryKey)); - + sb.Replace("{referenced-id}", string.Join(", ", ForeignPrimaryKey.Select(c => ColumnNameCreator.EscapeName(c)))); if (CascadeDelete) { sb.Append(" " + CascadeDeleteStatement); From 732c7a06ed33716657180db03880b0648db954ad Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Fri, 23 Apr 2021 11:45:41 +0200 Subject: [PATCH 120/144] Set version to 1.6.2 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index c1fd9c6..57a1cd6 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.6.1.{build} +version: 1.6.2.{build} image: Visual Studio 2019 branches: only: From 58b3371ce35a2a9ae69d5564dd7451047f080cb5 Mon Sep 17 00:00:00 2001 From: Magnus Grindal Bakken Date: Thu, 29 Apr 2021 14:13:12 +0200 Subject: [PATCH 121/144] #163 Add support for defining a default collation --- README.md | 1 + .../SqlGenerationDefaultCollationTest.cs | 118 ++++++++++++++++++ .../ColumnStatementCollectionBuilder.cs | 30 +++-- .../Builder/CreateDatabaseStatementBuilder.cs | 6 +- .../Builder/CreateTableStatementBuilder.cs | 6 +- .../Public/Attributes/CollateAttribute.cs | 34 ++--- SQLite.CodeFirst/Public/Collation.cs | 46 +++++++ .../{Attributes => }/CollationFunction.cs | 2 +- ...qliteDropCreateDatabaseWhenModelChanges.cs | 2 +- .../DbInitializers/SqliteInitializerBase.cs | 7 +- .../Public/SqliteDatabaseCreator.cs | 9 +- SQLite.CodeFirst/Public/SqliteSqlGenerator.cs | 9 +- 12 files changed, 226 insertions(+), 44 deletions(-) create mode 100644 SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs create mode 100644 SQLite.CodeFirst/Public/Collation.cs rename SQLite.CodeFirst/Public/{Attributes => }/CollationFunction.cs (95%) diff --git a/README.md b/README.md index fe628db..d3be8f2 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ The following features are supported: - Index (Decorate columns with the `Index` attribute. Indices are automatically created for foreign keys by default. To prevent this you can remove the convention `ForeignKeyIndexConvention`) - Unique constraint (Decorate columns with the `UniqueAttribute`, which is part of this library) - Collate constraint (Decorate columns with the `CollateAttribute`, which is part of this library. Use `CollationFunction.Custom` to specify a own collation function.) +- Default collation (pass an instance of Collation as constructor parameter for an initializer to specify a default collation). - SQL default value (Decorate columns with the `SqlDefaultValueAttribute`, which is part of this library) ## Install diff --git a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs new file mode 100644 index 0000000..d6cbd08 --- /dev/null +++ b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs @@ -0,0 +1,118 @@ +using System.Data.Common; +using System.Data.Entity; +using System.Data.Entity.Infrastructure; +using System.Data.SQLite; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using SQLite.CodeFirst.Console; +using SQLite.CodeFirst.Console.Entity; + +namespace SQLite.CodeFirst.Test.IntegrationTests +{ + [TestClass] + public class SqlGenerationDefaultCollationTest + { + private const string ReferenceSql = + @" +CREATE TABLE ""MyTable"" ([Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Name] nvarchar NOT NULL COLLATE custom_collate, FOREIGN KEY ([Id]) REFERENCES ""Coaches""([Id])); +CREATE TABLE ""Coaches"" ([Id] INTEGER PRIMARY KEY, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50) COLLATE custom_collate, [Street] nvarchar (100) COLLATE custom_collate, [City] nvarchar NOT NULL COLLATE custom_collate, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now'))); +CREATE TABLE ""TeamPlayer"" ([Id] INTEGER PRIMARY KEY, [Number] int NOT NULL, [TeamId] int NOT NULL, [FirstName] nvarchar (50) COLLATE NOCASE, [LastName] nvarchar (50) COLLATE custom_collate, [Street] nvarchar (100) COLLATE custom_collate, [City] nvarchar NOT NULL COLLATE custom_collate, [CreatedUtc] datetime NOT NULL DEFAULT (DATETIME('now')), [Mentor_Id] int, FOREIGN KEY ([Mentor_Id]) REFERENCES ""TeamPlayer""([Id]), FOREIGN KEY ([TeamId]) REFERENCES ""MyTable""([Id]) ON DELETE CASCADE); +CREATE TABLE ""Stadions"" ([Name] nvarchar (128) NOT NULL COLLATE custom_collate, [Street] nvarchar (128) NOT NULL COLLATE custom_collate, [City] nvarchar (128) NOT NULL COLLATE custom_collate, [Order] int NOT NULL, [Team_Id] int NOT NULL, PRIMARY KEY([Name], [Street], [City]), FOREIGN KEY ([Team_Id]) REFERENCES ""MyTable""([Id]) ON DELETE CASCADE); +CREATE TABLE ""Foos"" ([FooId] INTEGER PRIMARY KEY, [Name] nvarchar COLLATE custom_collate, [FooSelf1Id] int, [FooSelf2Id] int, [FooSelf3Id] int, FOREIGN KEY ([FooSelf1Id]) REFERENCES ""Foos""([FooId]), FOREIGN KEY ([FooSelf2Id]) REFERENCES ""Foos""([FooId]), FOREIGN KEY ([FooSelf3Id]) REFERENCES ""Foos""([FooId])); +CREATE TABLE ""FooSelves"" ([FooSelfId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY ([FooId]) REFERENCES ""Foos""([FooId]) ON DELETE CASCADE); +CREATE TABLE ""FooSteps"" ([FooStepId] INTEGER PRIMARY KEY, [FooId] int NOT NULL, [Number] int NOT NULL, FOREIGN KEY ([FooId]) REFERENCES ""Foos""([FooId]) ON DELETE CASCADE); +CREATE TABLE ""FooCompositeKeys"" ([Id] int NOT NULL, [Version] nvarchar (20) NOT NULL COLLATE custom_collate, [Name] nvarchar (255) COLLATE custom_collate, PRIMARY KEY([Id], [Version])); +CREATE TABLE ""FooRelationshipAs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255) COLLATE custom_collate); +CREATE TABLE ""FooRelationshipBs"" ([Id] INTEGER PRIMARY KEY, [Name] nvarchar (255) COLLATE custom_collate); +CREATE TABLE ""FooRelationshipAFooCompositeKeys"" ([FooRelationshipA_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL COLLATE custom_collate, PRIMARY KEY([FooRelationshipA_Id], [FooCompositeKey_Id], [FooCompositeKey_Version]), FOREIGN KEY ([FooRelationshipA_Id]) REFERENCES ""FooRelationshipAs""([Id]) ON DELETE CASCADE, FOREIGN KEY ([FooCompositeKey_Id], [FooCompositeKey_Version]) REFERENCES ""FooCompositeKeys""([Id], [Version]) ON DELETE CASCADE); +CREATE TABLE ""FooRelationshipBFooCompositeKeys"" ([FooRelationshipB_Id] int NOT NULL, [FooCompositeKey_Id] int NOT NULL, [FooCompositeKey_Version] nvarchar (20) NOT NULL COLLATE custom_collate, PRIMARY KEY([FooRelationshipB_Id], [FooCompositeKey_Id], [FooCompositeKey_Version]), FOREIGN KEY ([FooRelationshipB_Id]) REFERENCES ""FooRelationshipBs""([Id]) ON DELETE CASCADE, FOREIGN KEY ([FooCompositeKey_Id], [FooCompositeKey_Version]) REFERENCES ""FooCompositeKeys""([Id], [Version]) ON DELETE CASCADE); +CREATE INDEX ""IX_MyTable_Id"" ON ""MyTable"" (""Id""); +CREATE INDEX ""IX_Team_TeamsName"" ON ""MyTable"" (""Name""); +CREATE INDEX ""IX_TeamPlayer_Number"" ON ""TeamPlayer"" (""Number""); +CREATE UNIQUE INDEX ""IX_TeamPlayer_NumberPerTeam"" ON ""TeamPlayer"" (""Number"", ""TeamId""); +CREATE INDEX ""IX_TeamPlayer_Mentor_Id"" ON ""TeamPlayer"" (""Mentor_Id""); +CREATE UNIQUE INDEX ""IX_Stadion_Main"" ON ""Stadions"" (""Street"", ""Name""); +CREATE UNIQUE INDEX ""ReservedKeyWordTest"" ON ""Stadions"" (""Order""); +CREATE INDEX ""IX_Stadion_Team_Id"" ON ""Stadions"" (""Team_Id""); +CREATE INDEX ""IX_Foo_FooSelf1Id"" ON ""Foos"" (""FooSelf1Id""); +CREATE INDEX ""IX_Foo_FooSelf2Id"" ON ""Foos"" (""FooSelf2Id""); +CREATE INDEX ""IX_Foo_FooSelf3Id"" ON ""Foos"" (""FooSelf3Id""); +CREATE INDEX ""IX_FooSelf_FooId"" ON ""FooSelves"" (""FooId""); +CREATE INDEX ""IX_FooStep_FooId"" ON ""FooSteps"" (""FooId""); +CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooRelationshipA_Id"" ON ""FooRelationshipAFooCompositeKeys"" (""FooRelationshipA_Id""); +CREATE INDEX ""IX_FooRelationshipAFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipAFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version""); +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooRelationshipB_Id"" ON ""FooRelationshipBFooCompositeKeys"" (""FooRelationshipB_Id""); +CREATE INDEX ""IX_FooRelationshipBFooCompositeKey_FooCompositeKey_Id_FooCompositeKey_Version"" ON ""FooRelationshipBFooCompositeKeys"" (""FooCompositeKey_Id"", ""FooCompositeKey_Version""); +"; + + private static string generatedSql; + + // Does not work on the build server. No clue why. + + [TestMethod] + public void SqliteSqlGeneratorWithDefaultCollationTest() + { + using (DbConnection connection = new SQLiteConnection("FullUri=file::memory:")) + { + // This is important! Else the in memory database will not work. + connection.Open(); + + var defaultCollation = new Collation() { Function = CollationFunction.Custom, CustomFunction = "custom_collate" }; + using (var context = new DummyDbContext(connection, defaultCollation)) + { + // ReSharper disable once UnusedVariable + Player fo = context.Set().FirstOrDefault(); + + Assert.AreEqual(RemoveLineEndings(ReferenceSql), RemoveLineEndings(generatedSql)); + } + } + } + + private static string RemoveLineEndings(string input) + { + string lineSeparator = ((char)0x2028).ToString(); + string paragraphSeparator = ((char)0x2029).ToString(); + return input.Replace("\r\n", string.Empty).Replace("\n", string.Empty).Replace("\r", string.Empty).Replace(lineSeparator, string.Empty).Replace(paragraphSeparator, string.Empty); + } + + private class DummyDbContext : DbContext + { + private readonly Collation defaultCollation; + + public DummyDbContext(DbConnection connection, Collation defaultCollation = null) + : base(connection, false) + { + this.defaultCollation = defaultCollation; + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + // This configuration contains all supported cases. + // So it makes a perfect test to validate whether the + // generated SQL is correct. + ModelConfiguration.Configure(modelBuilder); + var initializer = new AssertInitializer(modelBuilder, defaultCollation); + Database.SetInitializer(initializer); + } + + private class AssertInitializer : SqliteInitializerBase + { + private readonly Collation defaultCollation; + + public AssertInitializer(DbModelBuilder modelBuilder, Collation defaultCollation) + : base(modelBuilder) + { + this.defaultCollation = defaultCollation; + } + + public override void InitializeDatabase(DummyDbContext context) + { + DbModel model = ModelBuilder.Build(context.Database.Connection); + var sqliteSqlGenerator = new SqliteSqlGenerator(defaultCollation); + generatedSql = sqliteSqlGenerator.Generate(model.StoreModel); + base.InitializeDatabase(context); + } + } + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs b/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs index 93043c2..3fba1bb 100644 --- a/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs +++ b/SQLite.CodeFirst/Internal/Builder/ColumnStatementCollectionBuilder.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Data.Entity.Core.Metadata.Edm; using System.Linq; using SQLite.CodeFirst.Extensions; @@ -11,11 +12,13 @@ internal class ColumnStatementCollectionBuilder : IStatementBuilder properties; private readonly IEnumerable keyMembers; + private readonly Collation defaultCollation; - public ColumnStatementCollectionBuilder(IEnumerable properties, IEnumerable keyMembers) + public ColumnStatementCollectionBuilder(IEnumerable properties, IEnumerable keyMembers, Collation defaultCollation) { this.properties = properties; this.keyMembers = keyMembers; + this.defaultCollation = defaultCollation; } public ColumnStatementCollection BuildStatement() @@ -39,7 +42,7 @@ private IEnumerable CreateColumnStatements() AdjustDatatypeForAutogenerationIfNecessary(property, columnStatement); AddNullConstraintIfNecessary(property, columnStatement); AddUniqueConstraintIfNecessary(property, columnStatement); - AddCollationConstraintIfNecessary(property, columnStatement); + AddCollationConstraintIfNecessary(property, columnStatement, defaultCollation); AddPrimaryKeyConstraintAndAdjustTypeIfNecessary(property, columnStatement); AddDefaultValueConstraintIfNecessary(property, columnStatement); @@ -73,12 +76,25 @@ private static void AddNullConstraintIfNecessary(EdmProperty property, ColumnSta } } - private static void AddCollationConstraintIfNecessary(EdmProperty property, ColumnStatement columnStatement) + private static void AddCollationConstraintIfNecessary(EdmProperty property, ColumnStatement columnStatement, Collation defaultCollation) { - var value = property.GetCustomAnnotation(); - if (value != null) + var collateAttribute = property.GetCustomAnnotation(); + if (property.PrimitiveType.PrimitiveTypeKind == PrimitiveTypeKind.String) + { + // The column is a string type. Check if we have an explicit or default collation. + // If we have both, the explicitly chosen collation takes precedence. + var value = collateAttribute == null ? defaultCollation : collateAttribute.Collation; + if (value != null) + { + columnStatement.ColumnConstraints.Add(new CollateConstraint { CollationFunction = value.Function, CustomCollationFunction = value.CustomFunction }); + } + } + else if (collateAttribute != null) { - columnStatement.ColumnConstraints.Add(new CollateConstraint { CollationFunction = value.Collation, CustomCollationFunction = value.Function }); + // Only string columns can be explicitly decorated with CollateAttribute. + var name = $"{property.DeclaringType.Name}.{property.Name}"; + var errorMessage = $"CollateAttribute cannot be used on non-string property: {name} (underlying type is {property.PrimitiveType.PrimitiveTypeKind})"; + throw new InvalidOperationException(errorMessage); } } diff --git a/SQLite.CodeFirst/Internal/Builder/CreateDatabaseStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/CreateDatabaseStatementBuilder.cs index 65862a2..ea87cca 100644 --- a/SQLite.CodeFirst/Internal/Builder/CreateDatabaseStatementBuilder.cs +++ b/SQLite.CodeFirst/Internal/Builder/CreateDatabaseStatementBuilder.cs @@ -9,10 +9,12 @@ namespace SQLite.CodeFirst.Builder internal class CreateDatabaseStatementBuilder : IStatementBuilder { private readonly EdmModel edmModel; + private readonly Collation defaultCollation; - public CreateDatabaseStatementBuilder(EdmModel edmModel) + public CreateDatabaseStatementBuilder(EdmModel edmModel, Collation defaultCollation) { this.edmModel = edmModel; + this.defaultCollation = defaultCollation; } public CreateDatabaseStatement BuildStatement() @@ -30,7 +32,7 @@ private IEnumerable GetCreateTableStatements() foreach (var entitySet in edmModel.Container.EntitySets) { - var tableStatementBuilder = new CreateTableStatementBuilder(entitySet, associationTypeContainer); + var tableStatementBuilder = new CreateTableStatementBuilder(entitySet, associationTypeContainer, defaultCollation); yield return tableStatementBuilder.BuildStatement(); } } diff --git a/SQLite.CodeFirst/Internal/Builder/CreateTableStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/CreateTableStatementBuilder.cs index b86f701..ac3198b 100644 --- a/SQLite.CodeFirst/Internal/Builder/CreateTableStatementBuilder.cs +++ b/SQLite.CodeFirst/Internal/Builder/CreateTableStatementBuilder.cs @@ -12,11 +12,13 @@ internal class CreateTableStatementBuilder : IStatementBuilder(); diff --git a/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs b/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs index 2dfc272..636965a 100644 --- a/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs +++ b/SQLite.CodeFirst/Public/Attributes/CollateAttribute.cs @@ -12,39 +12,19 @@ public sealed class CollateAttribute : Attribute { public CollateAttribute() { - Collation = CollationFunction.None; + Collation = new Collation(); } - public CollateAttribute(CollationFunction collation) + public CollateAttribute(CollationFunction function) { - if (collation == CollationFunction.Custom) - { - throw new ArgumentException("If the collation is set to CollationFunction.Custom a function must be specified.", nameof(collation)); - } - - Collation = collation; + Collation = new Collation(function); } - public CollateAttribute(CollationFunction collation, string function) - { - if (collation != CollationFunction.Custom && !string.IsNullOrEmpty(function)) - { - throw new ArgumentException("If the collation is not set to CollationFunction.Custom a function must not be specified.", nameof(function)); - } - - if (collation == CollationFunction.Custom && string.IsNullOrEmpty(function)) - { - throw new ArgumentException("If the collation is set to CollationFunction.Custom a function must be specified.", nameof(function)); - } - Collation = collation; - Function = function; + public CollateAttribute(CollationFunction function, string customFunction) + { + Collation = new Collation(function, customFunction); } - public CollationFunction Collation { get; } - - /// - /// The name of the custom collating function to use (CollationFunction.Custom). - /// - public string Function { get; } + public Collation Collation { get; } } } \ No newline at end of file diff --git a/SQLite.CodeFirst/Public/Collation.cs b/SQLite.CodeFirst/Public/Collation.cs new file mode 100644 index 0000000..0695e73 --- /dev/null +++ b/SQLite.CodeFirst/Public/Collation.cs @@ -0,0 +1,46 @@ +using System; + +namespace SQLite.CodeFirst +{ + /// + /// This class can be used to specify the default collation for the database. Explicit Collate attributes will take precendence. + /// When SQLite compares two strings, it uses a collating sequence or collating function (two words for the same thing) + /// to determine which string is greater or if the two strings are equal. SQLite has three built-in collating functions (see ). + /// Set to and specify the name using the function parameter. + /// + public class Collation + { + public Collation() + : this(CollationFunction.None) + { + } + + public Collation(CollationFunction function) + : this(function, null) + { + } + + public Collation(CollationFunction function, string customFunction) + { + if (function != CollationFunction.Custom && !string.IsNullOrEmpty(customFunction)) + { + throw new ArgumentException("If the collation is not set to CollationFunction.Custom a function must not be specified.", nameof(function)); + } + + if (function == CollationFunction.Custom && string.IsNullOrEmpty(customFunction)) + { + throw new ArgumentException("If the collation is set to CollationFunction.Custom a function must be specified.", nameof(function)); + } + + CustomFunction = customFunction; + Function = function; + } + + public CollationFunction Function { get; set; } + + /// + /// The name of the custom collating function to use (CollationFunction.Custom). + /// + public string CustomFunction { get; set; } + } +} diff --git a/SQLite.CodeFirst/Public/Attributes/CollationFunction.cs b/SQLite.CodeFirst/Public/CollationFunction.cs similarity index 95% rename from SQLite.CodeFirst/Public/Attributes/CollationFunction.cs rename to SQLite.CodeFirst/Public/CollationFunction.cs index 1bb7f30..6bd054d 100644 --- a/SQLite.CodeFirst/Public/Attributes/CollationFunction.cs +++ b/SQLite.CodeFirst/Public/CollationFunction.cs @@ -2,7 +2,7 @@ { /// /// The collation function to use for this column. - /// Is used together with the . + /// Is used together with the , and when setting a default collation for the database. /// public enum CollationFunction { diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index d83c3a9..f8029fc 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -172,7 +172,7 @@ private string GetHashFromModel(DbConnection connection) private string GetSqlFromModel(DbConnection connection) { var model = ModelBuilder.Build(connection); - var sqliteSqlGenerator = new SqliteSqlGenerator(); + var sqliteSqlGenerator = new SqliteSqlGenerator(DefaultCollation); return sqliteSqlGenerator.Generate(model.StoreModel); } } diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs index a84cdf8..1309b1f 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs @@ -24,9 +24,10 @@ namespace SQLite.CodeFirst public abstract class SqliteInitializerBase : IDatabaseInitializer where TContext : DbContext { - protected SqliteInitializerBase(DbModelBuilder modelBuilder) + protected SqliteInitializerBase(DbModelBuilder modelBuilder, Collation defaultCollation = null) { ModelBuilder = modelBuilder ?? throw new ArgumentNullException(nameof(modelBuilder)); + DefaultCollation = defaultCollation; // This convention will crash the SQLite Provider before "InitializeDatabase" gets called. // See https://github.com/msallin/SQLiteCodeFirst/issues/7 for details. @@ -55,6 +56,8 @@ protected SqliteInitializerBase(DbModelBuilder modelBuilder) } } + public Collation DefaultCollation { get; } + protected DbModelBuilder ModelBuilder { get; } /// @@ -71,7 +74,7 @@ public virtual void InitializeDatabase(TContext context) string dbFile = GetDatabasePathFromContext(context); InMemoryAwareFile.CreateDirectory(dbFile); - var sqliteDatabaseCreator = new SqliteDatabaseCreator(); + var sqliteDatabaseCreator = new SqliteDatabaseCreator(DefaultCollation); sqliteDatabaseCreator.Create(context.Database, model); Seed(context); diff --git a/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs b/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs index 4fd325e..0626c24 100644 --- a/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs +++ b/SQLite.CodeFirst/Public/SqliteDatabaseCreator.cs @@ -16,6 +16,13 @@ namespace SQLite.CodeFirst /// public class SqliteDatabaseCreator : IDatabaseCreator { + public SqliteDatabaseCreator(Collation defaultCollation = null) + { + DefaultCollation = defaultCollation; + } + + public Collation DefaultCollation { get; } + /// /// Creates the SQLite-Database. /// @@ -24,7 +31,7 @@ public void Create(Database db, DbModel model) if (db == null) throw new ArgumentNullException("db"); if (model == null) throw new ArgumentNullException("model"); - var sqliteSqlGenerator = new SqliteSqlGenerator(); + var sqliteSqlGenerator = new SqliteSqlGenerator(DefaultCollation); string sql = sqliteSqlGenerator.Generate(model.StoreModel); Debug.Write(sql); db.ExecuteSqlCommand(TransactionalBehavior.EnsureTransaction, sql); diff --git a/SQLite.CodeFirst/Public/SqliteSqlGenerator.cs b/SQLite.CodeFirst/Public/SqliteSqlGenerator.cs index d0f248a..944115e 100644 --- a/SQLite.CodeFirst/Public/SqliteSqlGenerator.cs +++ b/SQLite.CodeFirst/Public/SqliteSqlGenerator.cs @@ -9,12 +9,19 @@ namespace SQLite.CodeFirst ///
public class SqliteSqlGenerator : ISqlGenerator { + public SqliteSqlGenerator(Collation defaultCollation = null) + { + DefaultCollation = defaultCollation; + } + + public Collation DefaultCollation { get; } + /// /// Generates the SQL statement, based on the . /// public string Generate(EdmModel storeModel) { - IStatementBuilder statementBuilder = new CreateDatabaseStatementBuilder(storeModel); + IStatementBuilder statementBuilder = new CreateDatabaseStatementBuilder(storeModel, DefaultCollation); IStatement statement = statementBuilder.BuildStatement(); return statement.CreateStatement(); } From b45919020f120c0303420aa1be13b7d489175855 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Mon, 10 May 2021 15:38:48 +0200 Subject: [PATCH 122/144] Set version to 1.7.0 --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index 57a1cd6..66051fd 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,4 +1,4 @@ -version: 1.6.2.{build} +version: 1.7.0.{build} image: Visual Studio 2019 branches: only: From 4cf7bfb26b1d02a364dc22160a25ee10f01bf6e9 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Mon, 10 May 2021 15:45:39 +0200 Subject: [PATCH 123/144] replace expired NuGet API key --- release_appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release_appveyor.yml b/release_appveyor.yml index 66051fd..0945e76 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -30,7 +30,7 @@ deploy: # Encrypt with https://ci.appveyor.com/tools/encrypt - provider: NuGet api_key: - secure: wKCSsG3JbuHyNmEL6JagQlGexspQI4W3QTXi0QIWVJKOr4Y0S7j/jUEOJoUCzORK + secure: /mFKbp4C8bazwSgH5C6JakY8dZEffGRekipyvAUCkYJ+sfQhtsLDrKGek1oTrbAx on: branch: master - provider: GitHub From 582575748677f1166e04336f59b53dad26949e72 Mon Sep 17 00:00:00 2001 From: Micah Date: Thu, 1 Jul 2021 09:32:07 -0500 Subject: [PATCH 124/144] Updated README.md with more .NET Core specifics --- README.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d3be8f2..2fbfd3e 100644 --- a/README.md +++ b/README.md @@ -131,24 +131,34 @@ Add the following package references. Add the following class. ```csharp -public Configuration() -{ - SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); - SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); +public class MyConfiguration : DbConfiguration, IDbConnectionFactory { + public MyConfiguration() + { + SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); + SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); - var providerServices = (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)); + var providerServices = (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)); - SetProviderServices("System.Data.SQLite", providerServices); - SetProviderServices("System.Data.SQLite.EF6", providerServices); + SetProviderServices("System.Data.SQLite", providerServices); + SetProviderServices("System.Data.SQLite.EF6", providerServices); - SetDefaultConnectionFactory(this); -} + SetDefaultConnectionFactory(this); + } -public DbConnection CreateConnection(string connectionString) - => new SQLiteConnection(connectionString); + public DbConnection CreateConnection(string connectionString) + => new SQLiteConnection(connectionString); + } } ``` +Also, make sure you specify the DbConfigurationType on the DBContext class as well + +```csharp +[DbConfigurationType(typeof(MyConfiguration))] +public class Context: DbContext { + //... DBContext things +} +``` ## Structure The code is written in an extensible way. From 27c3955ad6f22f1dbc2071ca466722fd41185d41 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 12 Aug 2021 11:35:56 +0200 Subject: [PATCH 125/144] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2fbfd3e..90d4f97 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,13 @@ To support this project you can: *star the repository*, report bugs/request feat Especially if you use it for a commercial project, a donation is welcome. If you need a specific feature for a commercial project, I am glad to offer a paid implementation. +## Project Status + +This project was started when there was .NET Full Framework and EF 6. EF 6 does not offer code first for SQLite and this library fills this gab. +Nowadays there is .NET Core (or now just called .NET) and EF Core. EF Core supports code first and migrations for SQLite. +If you use .NET Core 3 or above together with EF Core, there is no need for this library. +If you use EF 6 (either with .NET Full Framework or with .NET Core 3 or above), this library is an option for you to get code first for SQLite. + ## Features This project ships several `IDbInitializer` classes. These create new SQLite Databases based on your model/code. From 45790721d3cee62019f0ce09e9fe0f13c836d903 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 12 Aug 2021 11:37:42 +0200 Subject: [PATCH 126/144] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 90d4f97..d3cb00b 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ This project was started when there was .NET Full Framework and EF 6. EF 6 does Nowadays there is .NET Core (or now just called .NET) and EF Core. EF Core supports code first and migrations for SQLite. If you use .NET Core 3 or above together with EF Core, there is no need for this library. If you use EF 6 (either with .NET Full Framework or with .NET Core 3 or above), this library is an option for you to get code first for SQLite. +I'm going to maintain this library as long as it is useful for some people (see #157). ## Features From 7d593742a311b51a0c903405626255082cac6286 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 12 Aug 2021 11:40:31 +0200 Subject: [PATCH 127/144] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3cb00b..8d987cc 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ This project was started when there was .NET Full Framework and EF 6. EF 6 does Nowadays there is .NET Core (or now just called .NET) and EF Core. EF Core supports code first and migrations for SQLite. If you use .NET Core 3 or above together with EF Core, there is no need for this library. If you use EF 6 (either with .NET Full Framework or with .NET Core 3 or above), this library is an option for you to get code first for SQLite. -I'm going to maintain this library as long as it is useful for some people (see #157). +I'm going to maintain this library as long as it is useful for some people (see [History](https://github.com/msallin/SQLiteCodeFirst/issues/166) & [Project Status and Release Schedule](https://github.com/msallin/SQLiteCodeFirst/issues/157)). ## Features From 14d91e749ea762f8679aa345a74f66a4a60e6631 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Thu, 12 Aug 2021 16:33:44 +0200 Subject: [PATCH 128/144] Update dependencies --- SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj | 2 +- .../SQLite.CodeFirst.NetCore.Console.csproj | 4 ++-- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 21dfe61..65325d8 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -10,7 +10,7 @@ ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - + diff --git a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj index 119d9ae..8b6b0d2 100644 --- a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj +++ b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 687c599..13b7cfc 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -15,9 +15,9 @@ - - - + + + From a79bda11ca83e37c19788b3f2906d1093de92c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Mart=C3=ADn=20Fern=C3=A1ndez?= Date: Wed, 7 Feb 2024 16:40:11 +0100 Subject: [PATCH 129/144] Make SQLLiteCodeFirst FIPS compliant This PR makes SQLiteCodeFirst FIPS compliant, needed to operate on US federal or many state government systems as it is a requirement for software vendors, replacing the SHA512Managed class with the SHA512CryptoServiceProvider. What is FIPS compliance? FIPS stands for Federal Information Processing Standards and are US Government standards that provide a benchmark for implementing cryptographic software SHA512CryptoServiceProvider uses the FIPS 140-2 validated (FIPS = Federal Information Processing Standards) Crypto Service Provider (CSP) while SHA256Managed does not. --- SQLite.CodeFirst/Internal/Utility/HashCreator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQLite.CodeFirst/Internal/Utility/HashCreator.cs b/SQLite.CodeFirst/Internal/Utility/HashCreator.cs index bd16c54..f8732a6 100644 --- a/SQLite.CodeFirst/Internal/Utility/HashCreator.cs +++ b/SQLite.CodeFirst/Internal/Utility/HashCreator.cs @@ -9,7 +9,7 @@ internal static class HashCreator public static string CreateHash(string data) { byte[] dataBytes = Encoding.ASCII.GetBytes(data); - using (SHA512 sha512 = new SHA512Managed()) + using (SHA512 sha512 = SHA512.Create()) { byte[] hashBytes = sha512.ComputeHash(dataBytes); string hash = Convert.ToBase64String(hashBytes); From a01fd39b25ff063bbb87935304a34be8d8344c64 Mon Sep 17 00:00:00 2001 From: "Sallin Marc, I212" Date: Fri, 23 Feb 2024 13:06:02 +0100 Subject: [PATCH 130/144] update dependencies --- README.md | 2 +- SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj | 2 +- .../SQLite.CodeFirst.NetCore.Console.csproj | 6 +++--- SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8d987cc..63d7eb2 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.0 (uses net40) - .NET 4.5-4.8 (uses net45) - .NET Core 3.0-3.1 (uses netstandard2.1) -- .NET 5 (uses netstandard2.1) +- .NET 5-8 (uses netstandard2.1) ## How to use diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 65325d8..0ba463e 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -10,7 +10,7 @@ ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - + diff --git a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj index 8b6b0d2..5b2fa34 100644 --- a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj +++ b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj @@ -2,12 +2,12 @@ Exe - net5.0 + net8.0 - - + + diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index 13b7cfc..a0798e2 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -14,10 +14,10 @@ pdbonly - - - - + + + + From 78c556b8a03d0ea33ef41f4fa4e1fc655a958547 Mon Sep 17 00:00:00 2001 From: "Sallin Marc, I212" Date: Fri, 23 Feb 2024 13:08:55 +0100 Subject: [PATCH 131/144] update ci --- ci_appveyor.yml | 2 +- release_appveyor.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci_appveyor.yml b/ci_appveyor.yml index bc7ecb2..36b0af4 100644 --- a/ci_appveyor.yml +++ b/ci_appveyor.yml @@ -1,5 +1,5 @@ version: CI_{branch}_{build} -image: Visual Studio 2019 +image: Visual Studio 2022 skip_tags: true configuration: - Release diff --git a/release_appveyor.yml b/release_appveyor.yml index 0945e76..be4baa2 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -1,5 +1,5 @@ version: 1.7.0.{build} -image: Visual Studio 2019 +image: Visual Studio 2022 branches: only: - master @@ -30,7 +30,7 @@ deploy: # Encrypt with https://ci.appveyor.com/tools/encrypt - provider: NuGet api_key: - secure: /mFKbp4C8bazwSgH5C6JakY8dZEffGRekipyvAUCkYJ+sfQhtsLDrKGek1oTrbAx + secure: fdOvSLLttfWbXxkmrgNG+jfczNAqx0HOIqYeVhToHGvezVwts758wz+sbGkv2RhZ on: branch: master - provider: GitHub From cf9fde252dc9b35b00aea00b91afd4f5dda67b89 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 01:54:14 +0200 Subject: [PATCH 132/144] Migrate to .NET 10, update dependencies, and modernize test tooling - Target net10.0 in the .NET Core console demo and the test project (the test project moves off net48). - Point the test project at the .NET Core demo project and register the EF6 SQLite provider through a code-based DbConfiguration, since modern .NET has no app.config provider discovery. Sign the demo so the signed test assembly can reference it. - Update dependencies: EntityFramework 6.5.2, System.Data.SQLite(.EF6) 1.0.119, Moq 4.20.72, MSTest 4.2.3. - Convert the solution from .sln to .slnx. - Run the unit tests on Microsoft.Testing.Platform (MSTest runner), opted in via global.json. - Adapt the tests to MSTest 4: replace [ExpectedException] with Assert.ThrowsExactly and fix Assert.AreEqual argument order. - Replace the package's deprecated licenseUrl with the SPDX expression Apache-2.0. --- .../SQLite.CodeFirst.Console.csproj | 2 +- .../SQLite.CodeFirst.NetCore.Console.csproj | 10 ++-- .../InMemoryDbCreationTest.cs | 4 +- .../SqlGenerationDefaultCollationTest.cs | 4 +- .../IntegrationTests/SqlGenerationTest.cs | 4 +- .../SQLite.CodeFirst.Test.csproj | 27 ++++----- SQLite.CodeFirst.Test/TestSetup.cs | 23 ++++++++ .../ColumnConstraint/CollateConstraintTest.cs | 4 +- .../ColumnConstraintCollectionTest.cs | 4 +- .../DefaultValueConstraintTest.cs | 6 +- .../ColumnConstraint/MaxLengthConstraint.cs | 5 +- .../ColumnConstraint/NotNullConstraintTest.cs | 2 +- .../PrimaryKeyConstraintTest.cs | 4 +- .../ColumnConstraint/UniqueConstraintTest.cs | 4 +- .../ColumnStatementCollectionTest.cs | 8 +-- .../Statement/ColumnStatementTest.cs | 2 +- .../Statement/CreateDatabaseStatementTest.cs | 8 +-- .../CreateIndexStatementCollectionTest.cs | 8 +-- .../Statement/CreateTableStatementTest.cs | 2 +- .../Statement/ForeignKeyStatementTest.cs | 10 ++-- .../Statement/PrimaryKeyStatementTest.cs | 8 +-- .../Utility/HistoryEntityTypeValidatorTest.cs | 8 +-- SQLite.CodeFirst.Test/app.config | 32 ----------- SQLite.CodeFirst.sln | 55 ------------------- SQLite.CodeFirst.slnx | 15 +++++ SQLite.CodeFirst/SQLite.CodeFirst.csproj | 4 +- ci_appveyor.yml | 2 +- global.json | 5 ++ release_appveyor.yml | 2 +- 29 files changed, 111 insertions(+), 161 deletions(-) create mode 100644 SQLite.CodeFirst.Test/TestSetup.cs delete mode 100644 SQLite.CodeFirst.Test/app.config delete mode 100644 SQLite.CodeFirst.sln create mode 100644 SQLite.CodeFirst.slnx create mode 100644 global.json diff --git a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj index 0ba463e..95f93db 100644 --- a/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj +++ b/SQLite.CodeFirst.Console/SQLite.CodeFirst.Console.csproj @@ -10,7 +10,7 @@ ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - + diff --git a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj index 5b2fa34..d8dbac3 100644 --- a/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj +++ b/SQLite.CodeFirst.NetCore.Console/SQLite.CodeFirst.NetCore.Console.csproj @@ -1,13 +1,15 @@ - + Exe - net8.0 + net10.0 + true + ..\Shared\SQLite.CodeFirst.StrongNameKey.snk - - + + diff --git a/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs index c707341..d5ef6ab 100644 --- a/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs +++ b/SQLite.CodeFirst.Test/IntegrationTests/InMemoryDbCreationTest.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; -using SQLite.CodeFirst.Console; -using SQLite.CodeFirst.Console.Entity; +using SQLite.CodeFirst.NetCore.Console; +using SQLite.CodeFirst.NetCore.Console.Entity; namespace SQLite.CodeFirst.Test.IntegrationTests { diff --git a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs index d6cbd08..35acd38 100644 --- a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs +++ b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationDefaultCollationTest.cs @@ -4,8 +4,8 @@ using System.Data.SQLite; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; -using SQLite.CodeFirst.Console; -using SQLite.CodeFirst.Console.Entity; +using SQLite.CodeFirst.NetCore.Console; +using SQLite.CodeFirst.NetCore.Console.Entity; namespace SQLite.CodeFirst.Test.IntegrationTests { diff --git a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs index 6be0a61..22b3efa 100644 --- a/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs +++ b/SQLite.CodeFirst.Test/IntegrationTests/SqlGenerationTest.cs @@ -4,8 +4,8 @@ using System.Data.SQLite; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; -using SQLite.CodeFirst.Console; -using SQLite.CodeFirst.Console.Entity; +using SQLite.CodeFirst.NetCore.Console; +using SQLite.CodeFirst.NetCore.Console.Entity; namespace SQLite.CodeFirst.Test.IntegrationTests { diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index a0798e2..ece4fdb 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -1,29 +1,22 @@ - + - net48 + net10.0 SQLite.CodeFirst.Test Contains the Unit Tests for the SQLite.CodeFirst Library. 1.0.0.0 true ..\Shared\SQLite.CodeFirst.StrongNameKey.snk + + Exe + true - - full - - - pdbonly - - - - - - - - + + + - + - \ No newline at end of file + diff --git a/SQLite.CodeFirst.Test/TestSetup.cs b/SQLite.CodeFirst.Test/TestSetup.cs new file mode 100644 index 0000000..e180699 --- /dev/null +++ b/SQLite.CodeFirst.Test/TestSetup.cs @@ -0,0 +1,23 @@ +using System.Data.Entity; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using SQLite.CodeFirst.NetCore.Console; + +namespace SQLite.CodeFirst.Test +{ + /// + /// Registers the SQLite Entity Framework 6 provider once for the whole test assembly. + /// On .NET (Core) there is no app.config based provider discovery, so the code based + /// from the demo project is applied before any test runs. + /// Setting it explicitly (instead of relying on assembly scanning) makes the registration + /// independent of which DbContext the test runner happens to touch first. + /// + [TestClass] + public static class TestSetup + { + [AssemblyInitialize] + public static void Initialize(TestContext context) + { + DbConfiguration.SetConfiguration(new Configuration()); + } + } +} diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/CollateConstraintTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/CollateConstraintTest.cs index 8697d24..bc02127 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/CollateConstraintTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/CollateConstraintTest.cs @@ -12,7 +12,7 @@ public void CreateStatement_StatementIsCorrect_NoConstraint() var collationConstraint = new CollateConstraint(); collationConstraint.CollationFunction = CollationFunction.None; string output = collationConstraint.CreateStatement(); - Assert.AreEqual(output, ""); + Assert.AreEqual("", output); } [TestMethod] @@ -21,7 +21,7 @@ public void CreateStatement_StatementIsCorrect_NoCase() var collationConstraint = new CollateConstraint(); collationConstraint.CollationFunction = CollationFunction.NoCase; string output = collationConstraint.CreateStatement(); - Assert.AreEqual(output, "COLLATE NOCASE"); + Assert.AreEqual("COLLATE NOCASE", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/ColumnConstraintCollectionTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/ColumnConstraintCollectionTest.cs index eb6aa47..08def45 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/ColumnConstraintCollectionTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/ColumnConstraintCollectionTest.cs @@ -18,7 +18,7 @@ public void CreateStatementOneColumnConstraintTest() columnConstraintMock.Object }); string output = columnConstraintCollection.CreateStatement(); - Assert.AreEqual(output, "dummy1"); + Assert.AreEqual("dummy1", output); } [TestMethod] @@ -36,7 +36,7 @@ public void CreateStatementTwoColumnConstraintsTest() columnConstraintMock2.Object }); string output = columnConstraintCollection.CreateStatement(); - Assert.AreEqual(output, "dummy1 dummy2"); + Assert.AreEqual("dummy1 dummy2", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/DefaultValueConstraintTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/DefaultValueConstraintTest.cs index da2a20a..a8b01b1 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/DefaultValueConstraintTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/DefaultValueConstraintTest.cs @@ -12,7 +12,7 @@ public void CreateStatement_StatementIsCorrect_IntDefault() var defaultValueConstraint = new DefaultValueConstraint(); defaultValueConstraint.DefaultValue = "0"; string output = defaultValueConstraint.CreateStatement(); - Assert.AreEqual(output, "DEFAULT (0)"); + Assert.AreEqual("DEFAULT (0)", output); } [TestMethod] @@ -21,7 +21,7 @@ public void CreateStatement_StatementIsCorrect_StringDefault() var defaultValueConstraint = new DefaultValueConstraint(); defaultValueConstraint.DefaultValue = @"'Something'"; string output = defaultValueConstraint.CreateStatement(); - Assert.AreEqual(output, "DEFAULT ('Something')"); + Assert.AreEqual("DEFAULT ('Something')", output); } [TestMethod] @@ -30,7 +30,7 @@ public void CreateStatement_StatementIsCorrect_ExpressionDefault() var defaultValueConstraint = new DefaultValueConstraint(); defaultValueConstraint.DefaultValue = @"datetime('now')"; string output = defaultValueConstraint.CreateStatement(); - Assert.AreEqual(output, "DEFAULT (datetime('now'))"); + Assert.AreEqual("DEFAULT (datetime('now'))", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/MaxLengthConstraint.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/MaxLengthConstraint.cs index 1df077f..3436359 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/MaxLengthConstraint.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/MaxLengthConstraint.cs @@ -12,15 +12,14 @@ public void CreateStatementTest() { var maxLengthConstraint = new MaxLengthConstraint(12); string output = maxLengthConstraint.CreateStatement(); - Assert.AreEqual(output, "(12)"); + Assert.AreEqual("(12)", output); } [TestMethod] - [ExpectedException(typeof(InvalidOperationException))] public void CreateStatementInvalidParameterTest() { var maxLengthConstraint = new MaxLengthConstraint(); - maxLengthConstraint.CreateStatement(); + Assert.ThrowsExactly(() => maxLengthConstraint.CreateStatement()); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/NotNullConstraintTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/NotNullConstraintTest.cs index 747fdbf..59ea347 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/NotNullConstraintTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/NotNullConstraintTest.cs @@ -11,7 +11,7 @@ public void CreateStatementTest() { var notNullConstraint = new NotNullConstraint(); string output = notNullConstraint.CreateStatement(); - Assert.AreEqual(output, "NOT NULL"); + Assert.AreEqual("NOT NULL", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/PrimaryKeyConstraintTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/PrimaryKeyConstraintTest.cs index 5d5bc6d..71a9aea 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/PrimaryKeyConstraintTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/PrimaryKeyConstraintTest.cs @@ -11,7 +11,7 @@ public void CreateStatement_StatementIsCorrect_WithAutoincrement() { var primaryKeyConstraint = new PrimaryKeyConstraint { Autoincrement = true }; string output = primaryKeyConstraint.CreateStatement(); - Assert.AreEqual(output, "PRIMARY KEY AUTOINCREMENT"); + Assert.AreEqual("PRIMARY KEY AUTOINCREMENT", output); } [TestMethod] @@ -19,7 +19,7 @@ public void CreateStatement_StatementIsCorrect() { var primaryKeyConstraint = new PrimaryKeyConstraint(); string output = primaryKeyConstraint.CreateStatement(); - Assert.AreEqual(output, "PRIMARY KEY"); + Assert.AreEqual("PRIMARY KEY", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/UniqueConstraintTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/UniqueConstraintTest.cs index d09e2c5..ece92e1 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/UniqueConstraintTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnConstraint/UniqueConstraintTest.cs @@ -12,7 +12,7 @@ public void CreateStatement_StatementIsCorrect_NoConstraint() var uniqueConstraint = new UniqueConstraint(); uniqueConstraint.OnConflict = OnConflictAction.None; string output = uniqueConstraint.CreateStatement(); - Assert.AreEqual(output, "UNIQUE"); + Assert.AreEqual("UNIQUE", output); } [TestMethod] @@ -21,7 +21,7 @@ public void CreateStatement_StatementIsCorrect_WithConstraint() var uniqueConstraint = new UniqueConstraint(); uniqueConstraint.OnConflict = OnConflictAction.Rollback; string output = uniqueConstraint.CreateStatement(); - Assert.AreEqual(output, "UNIQUE ON CONFLICT ROLLBACK"); + Assert.AreEqual("UNIQUE ON CONFLICT ROLLBACK", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementCollectionTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementCollectionTest.cs index eccb3fb..d40913b 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementCollectionTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementCollectionTest.cs @@ -12,8 +12,8 @@ public void CreateStatementOneEntryTest() var columnStatementCollection = new ColumnStatementCollection(new[] { CreateStatementMock("dummy1").Object }); string output = columnStatementCollection.CreateStatement(); - Assert.AreEqual(columnStatementCollection.Count, 1); - Assert.AreEqual(output, "dummy1"); + Assert.AreEqual(1, columnStatementCollection.Count); + Assert.AreEqual("dummy1", output); } [TestMethod] @@ -26,8 +26,8 @@ public void CreateStatementTwoEntryTest() }); string output = createIndexStatementCollection.CreateStatement(); - Assert.AreEqual(createIndexStatementCollection.Count, 2); - Assert.AreEqual(output, "dummy1, dummy2"); + Assert.AreEqual(2, createIndexStatementCollection.Count); + Assert.AreEqual("dummy1, dummy2", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs index 9e47dc5..7643abc 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ColumnStatementTest.cs @@ -21,7 +21,7 @@ public void CreateStatement() ColumnConstraints = columnConstraintsMock.Object, }; string output = columnStatement.CreateStatement(); - Assert.AreEqual(output, "[dummyColumnName] dummyType dummyColumnConstraint"); + Assert.AreEqual("[dummyColumnName] dummyType dummyColumnConstraint", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/CreateDatabaseStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/CreateDatabaseStatementTest.cs index 33e4f39..888574e 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/CreateDatabaseStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/CreateDatabaseStatementTest.cs @@ -16,8 +16,8 @@ public void CreateStatementWithOneKeyTest() }; var createDatabaseStatement = new CreateDatabaseStatement(statements); - Assert.AreEqual(createDatabaseStatement.Count, 1); - Assert.AreEqual(createDatabaseStatement.CreateStatement(), "dummy1"); + Assert.AreEqual(1, createDatabaseStatement.Count); + Assert.AreEqual("dummy1", createDatabaseStatement.CreateStatement()); } [TestMethod] @@ -30,8 +30,8 @@ public void CreateStatementWithTwoKeyTest() }; var createDatabaseStatement = new CreateDatabaseStatement(statements); - Assert.AreEqual(createDatabaseStatement.Count, 2); - Assert.AreEqual(createDatabaseStatement.CreateStatement(), "dummy1\r\ndummy2"); + Assert.AreEqual(2, createDatabaseStatement.Count); + Assert.AreEqual("dummy1\r\ndummy2", createDatabaseStatement.CreateStatement()); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/CreateIndexStatementCollectionTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/CreateIndexStatementCollectionTest.cs index 1082710..b90626c 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/CreateIndexStatementCollectionTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/CreateIndexStatementCollectionTest.cs @@ -15,8 +15,8 @@ public void CreateStatementOneEntryTest() }); string output = createIndexStatementCollection.CreateStatement(); - Assert.AreEqual(createIndexStatementCollection.Count, 1); - Assert.AreEqual(output, "dummy1"); + Assert.AreEqual(1, createIndexStatementCollection.Count); + Assert.AreEqual("dummy1", output); } [TestMethod] @@ -29,8 +29,8 @@ public void CreateStatementTwoEntryTest() }); string output = createIndexStatementCollection.CreateStatement(); - Assert.AreEqual(createIndexStatementCollection.Count, 2); - Assert.AreEqual(output, "dummy1\r\ndummy2"); + Assert.AreEqual(2, createIndexStatementCollection.Count); + Assert.AreEqual("dummy1\r\ndummy2", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/CreateTableStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/CreateTableStatementTest.cs index 31d3817..1d19219 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/CreateTableStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/CreateTableStatementTest.cs @@ -16,7 +16,7 @@ public void CreateStatementTest() }; string output = createTableStatement.CreateStatement(); - Assert.AreEqual(output, "CREATE TABLE dummyTable (dummyColumnDefinition);"); + Assert.AreEqual("CREATE TABLE dummyTable (dummyColumnDefinition);", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs index c3472de..0a8ac9f 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs @@ -19,7 +19,7 @@ public void CreateStatementOneForeignKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1])"); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1])", output); } [TestMethod] @@ -34,7 +34,7 @@ public void CreateStatementOneForeignKeyCascadeDeleteTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1]) ON DELETE CASCADE"); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1]) ON DELETE CASCADE", output); } [TestMethod] @@ -49,7 +49,7 @@ public void CreateStatementTwoForeignKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1], [dummyForeignKey2]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1])"); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1], [dummyForeignKey2]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1])", output); } [TestMethod] @@ -64,7 +64,7 @@ public void CreateStatementTwoForeignKeyTwoPrimaryKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1], [dummyForeignKey2]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1], [dummForeignPrimaryKey2])"); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1], [dummyForeignKey2]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1], [dummForeignPrimaryKey2])", output); } [TestMethod] @@ -79,7 +79,7 @@ public void CreateStatementOneForeignKeyTwoPrimaryKeyTest() }; string output = foreignKeyStatement.CreateStatement(); - Assert.AreEqual(output, "FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1], [dummForeignPrimaryKey2])"); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1], [dummForeignPrimaryKey2])", output); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs index beffd06..b83d2c1 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/PrimaryKeyStatementTest.cs @@ -13,8 +13,8 @@ public void CreateStatementWithOneKeyTest() const string keyMember1 = "keyMember1"; var primaryKeyStatement = new CompositePrimaryKeyStatement(new List { keyMember1 }); - Assert.AreEqual(primaryKeyStatement.Count, 1); - Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY([keyMember1])"); + Assert.AreEqual(1, primaryKeyStatement.Count); + Assert.AreEqual("PRIMARY KEY([keyMember1])", primaryKeyStatement.CreateStatement()); } [TestMethod] @@ -24,8 +24,8 @@ public void CreateStatementWithTwoKeyTest() const string keyMember2 = "keyMember2"; var primaryKeyStatement = new CompositePrimaryKeyStatement(new List { keyMember1, keyMember2 }); - Assert.AreEqual(primaryKeyStatement.Count, 2); - Assert.AreEqual(primaryKeyStatement.CreateStatement(), "PRIMARY KEY([keyMember1], [keyMember2])"); + Assert.AreEqual(2, primaryKeyStatement.Count); + Assert.AreEqual("PRIMARY KEY([keyMember1], [keyMember2])", primaryKeyStatement.CreateStatement()); } } } diff --git a/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryEntityTypeValidatorTest.cs b/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryEntityTypeValidatorTest.cs index 61fcfb2..590c735 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryEntityTypeValidatorTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryEntityTypeValidatorTest.cs @@ -8,17 +8,17 @@ namespace SQLite.CodeFirst.Test.UnitTests.Utility public class HistoryEntityTypeValidatorTest { [TestMethod] - [ExpectedException(typeof(InvalidOperationException))] public void EnsureValidTypeNotIHistory() { - HistoryEntityTypeValidator.EnsureValidType(typeof(InvalidFakeHistoryType1)); + Assert.ThrowsExactly( + () => HistoryEntityTypeValidator.EnsureValidType(typeof(InvalidFakeHistoryType1))); } [TestMethod] - [ExpectedException(typeof(InvalidOperationException))] public void EnsureValidTypeNoParamLessCtorTest() { - HistoryEntityTypeValidator.EnsureValidType(typeof(InvalidFakeHistoryType2)); + Assert.ThrowsExactly( + () => HistoryEntityTypeValidator.EnsureValidType(typeof(InvalidFakeHistoryType2))); } [TestMethod] diff --git a/SQLite.CodeFirst.Test/app.config b/SQLite.CodeFirst.Test/app.config deleted file mode 100644 index 2f401ce..0000000 --- a/SQLite.CodeFirst.Test/app.config +++ /dev/null @@ -1,32 +0,0 @@ - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SQLite.CodeFirst.sln b/SQLite.CodeFirst.sln deleted file mode 100644 index 856e8f8..0000000 --- a/SQLite.CodeFirst.sln +++ /dev/null @@ -1,55 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29503.13 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst", "SQLite.CodeFirst\SQLite.CodeFirst.csproj", "{50A32FE4-0E13-4213-A373-72523CDF34D9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst.Console", "SQLite.CodeFirst.Console\SQLite.CodeFirst.Console.csproj", "{DEDABD86-6EA0-4673-A858-A4F71958F51D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{7031BD3C-AE76-43CD-91B6-B6BCD823968C}" - ProjectSection(SolutionItems) = preProject - ci_appveyor.yml = ci_appveyor.yml - release_appveyor.yml = release_appveyor.yml - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLite.CodeFirst.Test", "SQLite.CodeFirst.Test\SQLite.CodeFirst.Test.csproj", "{E542F38D-852E-489D-81C2-BF333503E10F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{1F6D4E0E-5D07-4889-961A-A6AFC0ECD7C7}" - ProjectSection(SolutionItems) = preProject - README.md = README.md - Shared\SQLite.CodeFirst.ruleset = Shared\SQLite.CodeFirst.ruleset - Shared\SQLite.CodeFirst.StrongNameKey.snk = Shared\SQLite.CodeFirst.StrongNameKey.snk - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLite.CodeFirst.NetCore.Console", "SQLite.CodeFirst.NetCore.Console\SQLite.CodeFirst.NetCore.Console.csproj", "{709F46E3-D23B-4931-9985-8E09E3817CC4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50A32FE4-0E13-4213-A373-72523CDF34D9}.Release|Any CPU.Build.0 = Release|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DEDABD86-6EA0-4673-A858-A4F71958F51D}.Release|Any CPU.Build.0 = Release|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E542F38D-852E-489D-81C2-BF333503E10F}.Release|Any CPU.Build.0 = Release|Any CPU - {709F46E3-D23B-4931-9985-8E09E3817CC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {709F46E3-D23B-4931-9985-8E09E3817CC4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {709F46E3-D23B-4931-9985-8E09E3817CC4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {709F46E3-D23B-4931-9985-8E09E3817CC4}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {D21CDFB4-5695-4346-AB51-48C80AED4418} - EndGlobalSection -EndGlobal diff --git a/SQLite.CodeFirst.slnx b/SQLite.CodeFirst.slnx new file mode 100644 index 0000000..a6f7881 --- /dev/null +++ b/SQLite.CodeFirst.slnx @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index 954af58..ee45773 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -10,7 +10,7 @@ https://github.com/msallin/SQLiteCodeFirst GitHub true - https://github.com/msallin/SQLiteCodeFirst/blob/master/LICENSE + Apache-2.0 false Copyright (C) Marc Sallin SQLite EntityFramework EF CodeFirst @@ -20,7 +20,7 @@ - + diff --git a/ci_appveyor.yml b/ci_appveyor.yml index 36b0af4..0e22b91 100644 --- a/ci_appveyor.yml +++ b/ci_appveyor.yml @@ -9,7 +9,7 @@ before_build: - ps: dotnet --version - ps: dotnet restore build: - project: SQLite.CodeFirst.sln + project: SQLite.CodeFirst.slnx parallel: true verbosity: normal artifacts: diff --git a/global.json b/global.json new file mode 100644 index 0000000..3140116 --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "test": { + "runner": "Microsoft.Testing.Platform" + } +} diff --git a/release_appveyor.yml b/release_appveyor.yml index be4baa2..9c7ff5b 100644 --- a/release_appveyor.yml +++ b/release_appveyor.yml @@ -18,7 +18,7 @@ before_build: - ps: dotnet --version - ps: dotnet restore build: - project: SQLite.CodeFirst.sln + project: SQLite.CodeFirst.slnx parallel: true verbosity: normal artifacts: From 087cc7103261a9dd6cdaa850463aa368a3f1ca87 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 01:56:14 +0200 Subject: [PATCH 133/144] Use NuGet lock files Enable RestorePackagesWithLockFile via Directory.Build.props so restore pins the full transitive package graph in a packages.lock.json per project. This makes restores reproducible and lets CI restore in locked mode to catch any lock file that is missing or out of date. --- Directory.Build.props | 11 + SQLite.CodeFirst.Console/packages.lock.json | 55 ++++ .../packages.lock.json | 142 ++++++++++ SQLite.CodeFirst.Test/packages.lock.json | 246 ++++++++++++++++++ SQLite.CodeFirst/packages.lock.json | 208 +++++++++++++++ 5 files changed, 662 insertions(+) create mode 100644 Directory.Build.props create mode 100644 SQLite.CodeFirst.Console/packages.lock.json create mode 100644 SQLite.CodeFirst.NetCore.Console/packages.lock.json create mode 100644 SQLite.CodeFirst.Test/packages.lock.json create mode 100644 SQLite.CodeFirst/packages.lock.json diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..4dcd0ff --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,11 @@ + + + + + true + + + diff --git a/SQLite.CodeFirst.Console/packages.lock.json b/SQLite.CodeFirst.Console/packages.lock.json new file mode 100644 index 0000000..fe32642 --- /dev/null +++ b/SQLite.CodeFirst.Console/packages.lock.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "dependencies": { + ".NETFramework,Version=v4.8": { + "System.Data.SQLite": { + "type": "Direct", + "requested": "[1.0.119, )", + "resolved": "1.0.119", + "contentHash": "JSOJpnBf9goMnxGTJFGCmm6AffxgtpuXNXV5YvWO8UNC2zwd12qkUe5lAbnY+2ohIkIukgIjbvR1RA/sWILv3w==", + "dependencies": { + "System.Data.SQLite.Core": "[1.0.119]", + "System.Data.SQLite.EF6": "[1.0.119]", + "System.Data.SQLite.Linq": "[1.0.119]" + } + }, + "EntityFramework": { + "type": "Transitive", + "resolved": "6.5.2", + "contentHash": "8iOcnaKcgkWh35s8EhknnENNwwqvrBJ7jeNbQITbGo1mIeIOhGPfVdNOXZ3Y496T6e6wfXvz0WeXlgMdcgVYSA==" + }, + "Stub.System.Data.SQLite.Core.NetFramework": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "8b4SbSXAxXJ8tfn6bnBu0m+HXMZvkE+BfogUKITRFm+snxfT5BTK7fLZaAsNoFX8DkBBjtCEDd+ajWkcyu55QA==" + }, + "System.Data.SQLite.Core": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "bhQB8HVtRA+OOYw8UTD1F1kU+nGJ0/OZvH1JmlVUI4bGvgVEWeX1NcHjA765NvUoRVuCPlt8PrEpZ1thSsk1jg==", + "dependencies": { + "Stub.System.Data.SQLite.Core.NetFramework": "[1.0.119]" + } + }, + "System.Data.SQLite.EF6": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "BwwgCSeA80gsxdXtU7IQEBrN9kQXWQrD11hNYOJZbXBBI1C4r7hA4QhBAalO1nzijXikthGRUADIEMI3nlucLA==", + "dependencies": { + "EntityFramework": "6.4.4" + } + }, + "System.Data.SQLite.Linq": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "tkzb9aKEiQd18UW8VS6+vGtrkhcp4mjHg/AAKwNN8u7aWoBswquOnU07016MfTXyBUAR67mepWUhFC8zqNdPnA==" + }, + "sqlite.codefirst": { + "type": "Project", + "dependencies": { + "EntityFramework": "[6.5.2, )" + } + } + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.NetCore.Console/packages.lock.json b/SQLite.CodeFirst.NetCore.Console/packages.lock.json new file mode 100644 index 0000000..c50d503 --- /dev/null +++ b/SQLite.CodeFirst.NetCore.Console/packages.lock.json @@ -0,0 +1,142 @@ +{ + "version": 1, + "dependencies": { + "net10.0": { + "System.Data.SQLite": { + "type": "Direct", + "requested": "[1.0.119, )", + "resolved": "1.0.119", + "contentHash": "JSOJpnBf9goMnxGTJFGCmm6AffxgtpuXNXV5YvWO8UNC2zwd12qkUe5lAbnY+2ohIkIukgIjbvR1RA/sWILv3w==", + "dependencies": { + "System.Data.SQLite.Core": "[1.0.119]", + "System.Data.SQLite.EF6": "[1.0.119]" + } + }, + "System.Data.SQLite.EF6": { + "type": "Direct", + "requested": "[1.0.119, )", + "resolved": "1.0.119", + "contentHash": "BwwgCSeA80gsxdXtU7IQEBrN9kQXWQrD11hNYOJZbXBBI1C4r7hA4QhBAalO1nzijXikthGRUADIEMI3nlucLA==", + "dependencies": { + "EntityFramework": "6.4.4" + } + }, + "EntityFramework": { + "type": "Transitive", + "resolved": "6.5.2", + "contentHash": "8iOcnaKcgkWh35s8EhknnENNwwqvrBJ7jeNbQITbGo1mIeIOhGPfVdNOXZ3Y496T6e6wfXvz0WeXlgMdcgVYSA==", + "dependencies": { + "System.CodeDom": "6.0.0", + "System.ComponentModel.Annotations": "5.0.0", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.SqlClient": "4.8.6" + } + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Stub.System.Data.SQLite.Core.NetStandard": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "dI7ngiCNgdm+n00nQvFTa+LbHvE9MIQXwMSLRzJI/KAJ7G1WmCachsvfE1CD6xvb3OXJvYYEfv3+S/LHyhN0Rg==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==" + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" + } + }, + "System.Data.SqlClient": { + "type": "Transitive", + "resolved": "4.8.6", + "contentHash": "2Ij/LCaTQRyAi5lAv7UUTV9R2FobC8xN9mE0fXBZohum/xLl8IZVmE98Rq5ugQHjCgTBRKqpXRb4ORulRdA6Ig==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.7.0" + } + }, + "System.Data.SQLite.Core": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "bhQB8HVtRA+OOYw8UTD1F1kU+nGJ0/OZvH1JmlVUI4bGvgVEWeX1NcHjA765NvUoRVuCPlt8PrEpZ1thSsk1jg==", + "dependencies": { + "Stub.System.Data.SQLite.Core.NetStandard": "[1.0.119]" + } + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "6.0.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==" + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "dependencies": { + "System.Windows.Extensions": "6.0.0" + } + }, + "System.Windows.Extensions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "dependencies": { + "System.Drawing.Common": "6.0.0" + } + }, + "sqlite.codefirst": { + "type": "Project", + "dependencies": { + "EntityFramework": "[6.5.2, )" + } + } + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst.Test/packages.lock.json b/SQLite.CodeFirst.Test/packages.lock.json new file mode 100644 index 0000000..9420ea8 --- /dev/null +++ b/SQLite.CodeFirst.Test/packages.lock.json @@ -0,0 +1,246 @@ +{ + "version": 1, + "dependencies": { + "net10.0": { + "Moq": { + "type": "Direct", + "requested": "[4.20.72, )", + "resolved": "4.20.72", + "contentHash": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "dependencies": { + "Castle.Core": "5.1.1" + } + }, + "MSTest.TestAdapter": { + "type": "Direct", + "requested": "[4.2.3, )", + "resolved": "4.2.3", + "contentHash": "oVV/luk0bBghnVvLaw8MwFlD7It0Cx9P2nKobeqIafmTQqFFWY69Wo801dxjeNaLzO/o9WQ84WSK84gXJuubhg==", + "dependencies": { + "MSTest.TestFramework": "4.2.3", + "Microsoft.Testing.Extensions.VSTestBridge": "2.2.3", + "Microsoft.Testing.Platform.MSBuild": "2.2.3" + } + }, + "MSTest.TestFramework": { + "type": "Direct", + "requested": "[4.2.3, )", + "resolved": "4.2.3", + "contentHash": "9zzij59YLh+tf+FRLNqhzHjmdspR91bol+jdQxLlxxTGMAML6LDbvuyXKMGdcrE84+QpKkk6KjTVBC5PBGrDeA==", + "dependencies": { + "MSTest.Analyzers": "4.2.3" + } + }, + "Castle.Core": { + "type": "Transitive", + "resolved": "5.1.1", + "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + } + }, + "EntityFramework": { + "type": "Transitive", + "resolved": "6.5.2", + "contentHash": "8iOcnaKcgkWh35s8EhknnENNwwqvrBJ7jeNbQITbGo1mIeIOhGPfVdNOXZ3Y496T6e6wfXvz0WeXlgMdcgVYSA==", + "dependencies": { + "System.CodeDom": "6.0.0", + "System.ComponentModel.Annotations": "5.0.0", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.SqlClient": "4.8.6" + } + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.23.0", + "contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==" + }, + "Microsoft.Testing.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "2.2.3", + "contentHash": "mLdW+JOR3kXYGTdgR/qc/UZBA0r+eCR2k6bUxTcuDj5w9WdIQ7Lol5MBUU7YOSGd9bs9bvhSYWAptgz0YtQqCA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.23.0", + "Microsoft.Testing.Platform": "2.2.3" + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions": { + "type": "Transitive", + "resolved": "2.2.3", + "contentHash": "hntvxJEkmUAx6C2xXc/PO38DqEQl4rimzOgSvTR1hAMruMid7R4RcXOrzzF33J66gKaN7jRaQ0TMW/nNfaV9jw==", + "dependencies": { + "Microsoft.Testing.Platform": "2.2.3" + } + }, + "Microsoft.Testing.Extensions.VSTestBridge": { + "type": "Transitive", + "resolved": "2.2.3", + "contentHash": "7WlJISO8QKUK+d+WhgnANwy4ACwUrvICnviY/mthPwjZ2gVeDaSUAeBnMy2cxfzZgm8VATtGUDbYzUxsgV2CyQ==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "18.3.0", + "Microsoft.Testing.Extensions.Telemetry": "2.2.3", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.2.3", + "Microsoft.Testing.Platform": "2.2.3" + } + }, + "Microsoft.Testing.Platform": { + "type": "Transitive", + "resolved": "2.2.3", + "contentHash": "LhM1/Qoi8Ams5QcD4r3f09CSOono9iQr3NEJQItFtyzWB55nWTgEOsVqXqMWWWIwk3nkPqc+XfnlJmp8xUI5fg==" + }, + "Microsoft.Testing.Platform.MSBuild": { + "type": "Transitive", + "resolved": "2.2.3", + "contentHash": "Q22jJYJLx4srTinsAuoCskqmzjrBJC8YeGJMHHIcrf1dQeHoEZ7wsqDzTlENkMoke2qfufF7U+9u58nlZunH/Q==", + "dependencies": { + "Microsoft.Testing.Platform": "2.2.3" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "18.3.0", + "contentHash": "AEIEX2aWdPO9XbtR96eBaJxmXRD9vaI9uQ1T/JbPEKlTAZwYx0ZrMzKyULMdh/HH9Sg03kXCoN7LszQ90o6nPQ==" + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" + }, + "MSTest.Analyzers": { + "type": "Transitive", + "resolved": "4.2.3", + "contentHash": "dxOZt8/LWuiox7rugInJoIa5Mmu3pBmXdfaoZOx/mxx8+sUFFpjBXPlWXQXGeWzpkVPNC3x1Jf7rt2h2Zjyvvg==" + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Stub.System.Data.SQLite.Core.NetStandard": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "dI7ngiCNgdm+n00nQvFTa+LbHvE9MIQXwMSLRzJI/KAJ7G1WmCachsvfE1CD6xvb3OXJvYYEfv3+S/LHyhN0Rg==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==" + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" + } + }, + "System.Data.SqlClient": { + "type": "Transitive", + "resolved": "4.8.6", + "contentHash": "2Ij/LCaTQRyAi5lAv7UUTV9R2FobC8xN9mE0fXBZohum/xLl8IZVmE98Rq5ugQHjCgTBRKqpXRb4ORulRdA6Ig==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.7.0" + } + }, + "System.Data.SQLite": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "JSOJpnBf9goMnxGTJFGCmm6AffxgtpuXNXV5YvWO8UNC2zwd12qkUe5lAbnY+2ohIkIukgIjbvR1RA/sWILv3w==", + "dependencies": { + "System.Data.SQLite.Core": "[1.0.119]", + "System.Data.SQLite.EF6": "[1.0.119]" + } + }, + "System.Data.SQLite.Core": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "bhQB8HVtRA+OOYw8UTD1F1kU+nGJ0/OZvH1JmlVUI4bGvgVEWeX1NcHjA765NvUoRVuCPlt8PrEpZ1thSsk1jg==", + "dependencies": { + "Stub.System.Data.SQLite.Core.NetStandard": "[1.0.119]" + } + }, + "System.Data.SQLite.EF6": { + "type": "Transitive", + "resolved": "1.0.119", + "contentHash": "BwwgCSeA80gsxdXtU7IQEBrN9kQXWQrD11hNYOJZbXBBI1C4r7hA4QhBAalO1nzijXikthGRUADIEMI3nlucLA==", + "dependencies": { + "EntityFramework": "6.4.4" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "6.0.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==" + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "dependencies": { + "System.Windows.Extensions": "6.0.0" + } + }, + "System.Windows.Extensions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "dependencies": { + "System.Drawing.Common": "6.0.0" + } + }, + "sqlite.codefirst": { + "type": "Project", + "dependencies": { + "EntityFramework": "[6.5.2, )" + } + }, + "sqlite.codefirst.netcore.console": { + "type": "Project", + "dependencies": { + "SQLite.CodeFirst": "[1.0.0, )", + "System.Data.SQLite": "[1.0.119, )", + "System.Data.SQLite.EF6": "[1.0.119, )" + } + } + } + } +} \ No newline at end of file diff --git a/SQLite.CodeFirst/packages.lock.json b/SQLite.CodeFirst/packages.lock.json new file mode 100644 index 0000000..9d27514 --- /dev/null +++ b/SQLite.CodeFirst/packages.lock.json @@ -0,0 +1,208 @@ +{ + "version": 1, + "dependencies": { + ".NETFramework,Version=v4.0": { + "EntityFramework": { + "type": "Direct", + "requested": "[6.5.2, )", + "resolved": "6.5.2", + "contentHash": "8iOcnaKcgkWh35s8EhknnENNwwqvrBJ7jeNbQITbGo1mIeIOhGPfVdNOXZ3Y496T6e6wfXvz0WeXlgMdcgVYSA==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net40": "1.0.3" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net40": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "3ctXnCpHdoYJNH9ATfXKwckkkdHvHc1Xls12QB9kf1tjh3b+VzxtiwpkZN4GxOawakfH6CJAkqhlDKSiz6Ujbg==" + } + }, + ".NETFramework,Version=v4.5": { + "EntityFramework": { + "type": "Direct", + "requested": "[6.5.2, )", + "resolved": "6.5.2", + "contentHash": "8iOcnaKcgkWh35s8EhknnENNwwqvrBJ7jeNbQITbGo1mIeIOhGPfVdNOXZ3Y496T6e6wfXvz0WeXlgMdcgVYSA==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net45": "1.0.3" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net45": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "dcSLNuUX2rfZejsyta2EWZ1W5U6ucbFt697lRg1qiTlTM5ZlYv4uAvuxE6ROy6xLWWhLhOaReCDxkhxcajRYtQ==" + } + }, + ".NETStandard,Version=v2.1": { + "EntityFramework": { + "type": "Direct", + "requested": "[6.5.2, )", + "resolved": "6.5.2", + "contentHash": "8iOcnaKcgkWh35s8EhknnENNwwqvrBJ7jeNbQITbGo1mIeIOhGPfVdNOXZ3Y496T6e6wfXvz0WeXlgMdcgVYSA==", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.CodeDom": "6.0.0", + "System.ComponentModel.Annotations": "5.0.0", + "System.Configuration.ConfigurationManager": "6.0.1", + "System.Data.SqlClient": "4.8.6" + } + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "dependencies": { + "System.Buffers": "4.5.0", + "System.Memory": "4.5.3", + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==" + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" + } + }, + "System.Data.SqlClient": { + "type": "Transitive", + "resolved": "4.8.6", + "contentHash": "2Ij/LCaTQRyAi5lAv7UUTV9R2FobC8xN9mE0fXBZohum/xLl8IZVmE98Rq5ugQHjCgTBRKqpXRb4ORulRdA6Ig==", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "System.Buffers": "4.5.1", + "System.Diagnostics.DiagnosticSource": "4.7.0", + "System.Memory": "4.5.4", + "System.Security.Principal.Windows": "4.7.0", + "System.Text.Encoding.CodePages": "4.7.0", + "runtime.native.System.Data.SqlClient.sni": "4.7.0" + } + }, + "System.Diagnostics.DiagnosticSource": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "oJjw3uFuVDJiJNbCD8HB4a2p3NYLdt1fiT5OGsPLw+WTOuG0KpP4OXelMmmVKpClueMsit6xOlzy4wNKQFiBLg==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "IpU1lcHz8/09yDr9N+Juc7SCgNUz+RohkCQI+KsWKR67XxpFr8Z6c8t1iENCXZuRuNCc4HBwme/MDHNVCwyAKg==" + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==", + "dependencies": { + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==", + "dependencies": { + "System.Memory": "4.5.4" + } + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "dependencies": { + "System.Security.AccessControl": "6.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, + "System.Text.Encoding.CodePages": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "aeu4FlaUTemuT1qOd1MyU4T516QR4Fy+9yDbwWMPHOHy7U8FD6SgTzdZFO7gHcfAPHtECqInbwklVvUK4RHcNg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + } + } + } +} \ No newline at end of file From c12edce943a5a756e3e4076c454b046eed9779cf Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:01:44 +0200 Subject: [PATCH 134/144] Replace AppVeyor with GitHub Actions and NuGet trusted publishing - Add a CI workflow (build + test on push/PR to master) and a CD workflow (pack and publish on a v*.*.* tag). Both run on windows-latest because the library targets net40/net45 and the demo targets net48, and restore in locked mode against the committed lock files. - Publish to NuGet with Trusted Publishing (OIDC) via NuGet/login: no long-lived API key, authorized by a trusted-publishing policy on nuget.org that names the cd.yml workflow. The nuget.org account name is provided through the NUGET_USER secret. - Emit a symbol package (snupkg) and attach the package to a generated GitHub Release on tag. - Run tests on Microsoft.Testing.Platform with a TRX report uploaded as a CI artifact (adds the Microsoft.Testing.Extensions.TrxReport extension). - Pin the SDK in global.json so setup-dotnet installs a known version. - Remove the AppVeyor definitions, the now-obsolete empty Version tag, and point the solution folder and README badges at the new workflows. --- .github/workflows/cd.yml | 134 ++++++++++++++++++ .github/workflows/ci.yml | 50 +++++++ README.md | 5 +- .../SQLite.CodeFirst.Test.csproj | 2 + SQLite.CodeFirst.Test/packages.lock.json | 10 ++ SQLite.CodeFirst.slnx | 4 +- SQLite.CodeFirst/SQLite.CodeFirst.csproj | 3 +- ci_appveyor.yml | 23 --- global.json | 4 + release_appveyor.yml | 45 ------ 10 files changed, 206 insertions(+), 74 deletions(-) create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 ci_appveyor.yml delete mode 100644 release_appveyor.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..b0d3492 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,134 @@ +name: CD + +# Builds, tests and packs the NuGet package on a version tag (v1.2.3) or manual run. +# Publishing to NuGet uses Trusted Publishing (OIDC) and runs only on a v*.*.* tag push; a manual +# run packs and uploads the artifact as a dry run without publishing (see the step comments below). + +on: + push: + tags: [ 'v*.*.*' ] + workflow_dispatch: + inputs: + version: + description: 'Package version, e.g. 1.2.3. Defaults to a dev version when omitted.' + required: false + +permissions: + contents: read + +jobs: + pack-publish: + name: Pack & Publish + # Windows is required: the library multi-targets net40/net45 and the demo targets net48, which + # need the .NET Framework reference assemblies / targeting packs available on the Windows runners. + runs-on: windows-latest + timeout-minutes: 15 + permissions: + id-token: write # Required for NuGet Trusted Publishing; without it NuGet/login fails with 403. + contents: write # Required to create the GitHub Release; a job-level block drops inherited defaults. + steps: + - uses: actions/checkout@v6 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + # Install the exact SDK pinned in global.json; Dependabot's dotnet-sdk updater keeps it current. + global-json-file: global.json + # Cache the restored NuGet packages, keyed on the committed lock files. + cache: true + cache-dependency-path: '**/packages.lock.json' + + - name: Resolve version + id: version + shell: bash + # The manual input is read through an env var, not interpolated into the script, so a crafted + # value cannot inject shell. It is then validated as SemVer before anything downstream uses it. + env: + VERSION_INPUT: ${{ github.event.inputs.version }} + run: | + if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then + VERSION="${GITHUB_REF_NAME#v}" + elif [[ -n "${VERSION_INPUT}" ]]; then + VERSION="${VERSION_INPUT}" + if ! [[ "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$ ]]; then + echo "Invalid version '${VERSION}'; expected SemVer such as 1.2.3 or 1.2.3-rc.1." >&2 + exit 1 + fi + else + VERSION="0.0.0-dev.${GITHUB_RUN_NUMBER}" + fi + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "Resolved package version: ${VERSION}" + + - name: Restore + # Locked-mode restore fails the build if any packages.lock.json is missing or out of date, so the + # restore is reproducible and a forgotten lock-file update cannot slip through. + run: dotnet restore SQLite.CodeFirst.slnx --locked-mode + + - name: Build + run: dotnet build SQLite.CodeFirst.slnx -c Release --no-restore -p:Version=${{ steps.version.outputs.version }} + + - name: Test + # The test project runs on Microsoft.Testing.Platform (opted in via global.json), so target the + # solution with the native MTP dotnet test syntax. + run: dotnet test --solution SQLite.CodeFirst.slnx -c Release --no-build + + - name: Pack + run: > + dotnet pack SQLite.CodeFirst/SQLite.CodeFirst.csproj -c Release --no-build + -p:Version=${{ steps.version.outputs.version }} + -o ${{ github.workspace }}/artifacts + + - name: Upload package artifact + uses: actions/upload-artifact@v7 + with: + name: nuget-package + path: | + ${{ github.workspace }}/artifacts/*.nupkg + ${{ github.workspace }}/artifacts/*.snupkg + + # --- NuGet publishing via Trusted Publishing (OIDC). --- + # No long-lived API key: NuGet/login swaps the GitHub OIDC token for a short-lived key, authorized + # by the trusted publishing policy on nuget.org (the policy must name this workflow file, cd.yml). + # Gated to tag pushes so a manual run stays a dry run and never pushes the 0.0.0-dev.* version. + # https://learn.microsoft.com/nuget/nuget-org/trusted-publishing + - name: NuGet login (OIDC) + id: nuget-login + if: startsWith(github.ref, 'refs/tags/v') + uses: NuGet/login@v1 + with: + user: ${{ secrets.NUGET_USER }} # nuget.org account/profile name, NOT the email address. + + - name: Publish to NuGet + if: startsWith(github.ref, 'refs/tags/v') + run: > + dotnet nuget push "${{ github.workspace }}/artifacts/*.nupkg" + --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" + --source https://api.nuget.org/v3/index.json + --skip-duplicate + + # --- GitHub Release. --- + # Created only on tag pushes, after a successful NuGet publish, so the Release reflects what was + # actually shipped. Uses the gh CLI (preinstalled on the runner) rather than a third-party action. + # --generate-notes builds the notes from commits/PRs since the previous tag; --verify-tag guards + # against creating a release for a tag the runner cannot see. The .nupkg/.snupkg are attached so + # the package is downloadable straight from the Release page, not just the workflow run. + - name: Create GitHub Release + if: startsWith(github.ref, 'refs/tags/v') + shell: bash + # The tag is passed through an env var rather than interpolated into the script, matching the + # version step above. + env: + GH_TOKEN: ${{ github.token }} + TAG: ${{ github.ref_name }} + run: | + # SemVer pre-release tags carry a hyphen (e.g. v1.2.3-rc.1); mark those as GitHub pre-releases. + prerelease="" + if [[ "${TAG}" == *-* ]]; then prerelease="--prerelease"; fi + gh release create "${TAG}" \ + --title "${TAG}" \ + --generate-notes \ + --verify-tag \ + ${prerelease} \ + "${GITHUB_WORKSPACE}/artifacts/"*.nupkg \ + "${GITHUB_WORKSPACE}/artifacts/"*.snupkg diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0ed5a17 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build-test: + name: Build & Test + # Windows is required: the library multi-targets net40/net45 and the demo targets net48, which + # need the .NET Framework reference assemblies / targeting packs available on the Windows runners. + runs-on: windows-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v6 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + # Install the exact SDK pinned in global.json; Dependabot's dotnet-sdk updater keeps it current. + global-json-file: global.json + # Cache the restored NuGet packages, keyed on the committed lock files. + cache: true + cache-dependency-path: '**/packages.lock.json' + + - name: Restore + # Locked-mode restore fails the build if any packages.lock.json is missing or out of date, so the + # restore is reproducible and a forgotten lock-file update cannot slip through. + run: dotnet restore SQLite.CodeFirst.slnx --locked-mode + + - name: Build + run: dotnet build SQLite.CodeFirst.slnx -c Release --no-restore + + - name: Test + # The test project runs on Microsoft.Testing.Platform (opted in via global.json), so this uses the + # native MTP dotnet test syntax: --solution, and the TRX report flags instead of --logger trx. + run: > + dotnet test --solution SQLite.CodeFirst.slnx -c Release --no-build + --report-trx --report-trx-filename test-results.trx + --results-directory ${{ github.workspace }}/TestResults + + - name: Upload test results + if: always() + uses: actions/upload-artifact@v7 + with: + name: test-results + path: ${{ github.workspace }}/TestResults/*.trx + if-no-files-found: ignore diff --git a/README.md b/README.md index 63d7eb2..9058e78 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # SQLite CodeFirst -**Release Build** [![Build status](https://ci.appveyor.com/api/projects/status/2qavdqctw0ehscm6/branch/master?svg=true)](https://ci.appveyor.com/project/msallin/sqlitecodefirst-nv6vn/branch/master) - -**CI Build** [![Build status](https://ci.appveyor.com/api/projects/status/oc1miog385h801qe?svg=true)](https://ci.appveyor.com/project/msallin/sqlitecodefirst) +[![CI](https://github.com/msallin/SQLiteCodeFirst/actions/workflows/ci.yml/badge.svg)](https://github.com/msallin/SQLiteCodeFirst/actions/workflows/ci.yml) +[![CD](https://github.com/msallin/SQLiteCodeFirst/actions/workflows/cd.yml/badge.svg)](https://github.com/msallin/SQLiteCodeFirst/actions/workflows/cd.yml) Creates a [SQLite Database](https://sqlite.org/) from Code, using [Entity Framework](https://msdn.microsoft.com/en-us/data/ef.aspx) CodeFirst. diff --git a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj index ece4fdb..0228e1e 100644 --- a/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj +++ b/SQLite.CodeFirst.Test/SQLite.CodeFirst.Test.csproj @@ -14,6 +14,8 @@ + + diff --git a/SQLite.CodeFirst.Test/packages.lock.json b/SQLite.CodeFirst.Test/packages.lock.json index 9420ea8..2dccd5e 100644 --- a/SQLite.CodeFirst.Test/packages.lock.json +++ b/SQLite.CodeFirst.Test/packages.lock.json @@ -2,6 +2,16 @@ "version": 1, "dependencies": { "net10.0": { + "Microsoft.Testing.Extensions.TrxReport": { + "type": "Direct", + "requested": "[2.2.3, )", + "resolved": "2.2.3", + "contentHash": "9Hot3ty5ZVWHrW40k2NPfD0dCaPwIxj7j7VjujNYwpYkYw9AdbejPHjGNkL/gvUWorauJf5IkeDoUeIbS7LuUg==", + "dependencies": { + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.2.3", + "Microsoft.Testing.Platform": "2.2.3" + } + }, "Moq": { "type": "Direct", "requested": "[4.20.72, )", diff --git a/SQLite.CodeFirst.slnx b/SQLite.CodeFirst.slnx index a6f7881..894535d 100644 --- a/SQLite.CodeFirst.slnx +++ b/SQLite.CodeFirst.slnx @@ -1,7 +1,7 @@ - - + + diff --git a/SQLite.CodeFirst/SQLite.CodeFirst.csproj b/SQLite.CodeFirst/SQLite.CodeFirst.csproj index ee45773..a576f4f 100644 --- a/SQLite.CodeFirst/SQLite.CodeFirst.csproj +++ b/SQLite.CodeFirst/SQLite.CodeFirst.csproj @@ -4,12 +4,13 @@ net40;net45;netstandard2.1 Marc Sallin - Creates a SQLite Database from Code, using Entity Framework CodeFirst. This Project ships several IDbInitializer which creates a new SQLite Database, based on your model/code. https://github.com/msallin/SQLiteCodeFirst https://github.com/msallin/SQLiteCodeFirst GitHub true + true + snupkg Apache-2.0 false Copyright (C) Marc Sallin diff --git a/ci_appveyor.yml b/ci_appveyor.yml deleted file mode 100644 index 0e22b91..0000000 --- a/ci_appveyor.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: CI_{branch}_{build} -image: Visual Studio 2022 -skip_tags: true -configuration: -- Release -- Debug -platform: Any CPU -before_build: -- ps: dotnet --version -- ps: dotnet restore -build: - project: SQLite.CodeFirst.slnx - parallel: true - verbosity: normal -artifacts: -- path: SQLite.CodeFirst\bin\Debug\**\SQLite.CodeFirst.dll - name: Debug -- path: SQLite.CodeFirst\bin\Release\**\SQLite.CodeFirst.dll - name: Release -- path: SQLite.CodeFirst\bin\Release\*.nupkg - name: NuPkgDebug -- path: SQLite.CodeFirst\bin\Debug\*.nupkg - name: NuPkgRelease \ No newline at end of file diff --git a/global.json b/global.json index 3140116..70c8f03 100644 --- a/global.json +++ b/global.json @@ -1,4 +1,8 @@ { + "sdk": { + "version": "10.0.300", + "rollForward": "latestMinor" + }, "test": { "runner": "Microsoft.Testing.Platform" } diff --git a/release_appveyor.yml b/release_appveyor.yml deleted file mode 100644 index 9c7ff5b..0000000 --- a/release_appveyor.yml +++ /dev/null @@ -1,45 +0,0 @@ -version: 1.7.0.{build} -image: Visual Studio 2022 -branches: - only: - - master -skip_tags: true -platform: Any CPU -configuration: Release -dotnet_csproj: - patch: true - file: '**\*.csproj' - version: '{version}' - package_version: '{version}' - assembly_version: '{version}' - file_version: '{version}' - informational_version: '{version}' -before_build: -- ps: dotnet --version -- ps: dotnet restore -build: - project: SQLite.CodeFirst.slnx - parallel: true - verbosity: normal -artifacts: -- path: SQLite.CodeFirst\bin - name: Assemblies -- path: SQLite.CodeFirst\bin\Release\*.nupkg - name: NuPkg -deploy: -# Encrypt with https://ci.appveyor.com/tools/encrypt -- provider: NuGet - api_key: - secure: fdOvSLLttfWbXxkmrgNG+jfczNAqx0HOIqYeVhToHGvezVwts758wz+sbGkv2RhZ - on: - branch: master -- provider: GitHub - tag: v$(appveyor_build_version) - release: v$(appveyor_build_version) - description: https://www.nuget.org/packages/SQLite.CodeFirst/ - auth_token: - secure: e3cqaFy9PzI9TAdZJBIDy97Bfbwa7j0EXe2yw7Ev9aJXK0Q+3mnULqb1VU4P7BWR - artifact: Assemblies,NuPkg - draft: true - on: - branch: master \ No newline at end of file From 9799e19109f156b47f017425aeb4e8078c025e15 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:02:10 +0200 Subject: [PATCH 135/144] Add Dependabot configuration Track updates for the .NET SDK (global.json), NuGet packages and GitHub Actions on a weekly schedule. Minor and patch updates are grouped per ecosystem to reduce noise; major updates open their own PR. Updates are proposed as PRs and merged manually. --- .github/dependabot.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0905865 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,36 @@ +# Dependabot keeps the .NET SDK (global.json), NuGet packages and GitHub Actions versions up to date. +# +# Minor and patch updates are grouped into a single PR per ecosystem to cut noise; major updates open +# their own PR so the breaking-change surface stays visible. Updates are proposed as PRs and merged +# manually after the CI "Build & Test" check passes. +version: 2 +updates: + # Bumps the SDK version pinned in global.json, which setup-dotnet installs in CI. The dotnet-sdk + # ecosystem only does version updates (no security updates) and targets global.json files. + - package-ecosystem: dotnet-sdk + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + + - package-ecosystem: nuget + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + groups: + nuget-minor-and-patch: + update-types: + - minor + - patch + + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + groups: + actions-minor-and-patch: + update-types: + - minor + - patch From 98e02f874ed048749759001f0e9d989f6648f0ae Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:02:49 +0200 Subject: [PATCH 136/144] Fix typos in README gab -> gap, explicit set -> explicitly set, a own -> your own, a additional -> an additional, you may getting -> you may get. --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9058e78..a077139 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ If you need a specific feature for a commercial project, I am glad to offer a pa ## Project Status -This project was started when there was .NET Full Framework and EF 6. EF 6 does not offer code first for SQLite and this library fills this gab. +This project was started when there was .NET Full Framework and EF 6. EF 6 does not offer code first for SQLite and this library fills this gap. Nowadays there is .NET Core (or now just called .NET) and EF Core. EF Core supports code first and migrations for SQLite. If you use .NET Core 3 or above together with EF Core, there is no need for this library. If you use EF 6 (either with .NET Full Framework or with .NET Core 3 or above), this library is an option for you to get code first for SQLite. @@ -30,10 +30,10 @@ The following features are supported: - PrimaryKey constraint (`Key` annotation, key composites are supported) - ForeignKey constraint (1-n relationships, support for 'Cascade on delete') - Not Null constraint -- Auto increment (An int PrimaryKey will automatically be incremented and you can explicit set the "AUTOINCREMENT" constraint to a PrimaryKey using the Autoincrement-Attribute) +- Auto increment (An int PrimaryKey will automatically be incremented and you can explicitly set the "AUTOINCREMENT" constraint to a PrimaryKey using the Autoincrement-Attribute) - Index (Decorate columns with the `Index` attribute. Indices are automatically created for foreign keys by default. To prevent this you can remove the convention `ForeignKeyIndexConvention`) - Unique constraint (Decorate columns with the `UniqueAttribute`, which is part of this library) -- Collate constraint (Decorate columns with the `CollateAttribute`, which is part of this library. Use `CollationFunction.Custom` to specify a own collation function.) +- Collate constraint (Decorate columns with the `CollateAttribute`, which is part of this library. Use `CollationFunction.Custom` to specify your own collation function.) - Default collation (pass an instance of Collation as constructor parameter for an initializer to specify a default collation). - SQL default value (Decorate columns with the `SqlDefaultValueAttribute`, which is part of this library) @@ -79,7 +79,7 @@ public class MyDbContext : DbContext } ``` -Notice that the `SqliteDropCreateDatabaseWhenModelChanges<>` initializer will create a additional table in your database. +Notice that the `SqliteDropCreateDatabaseWhenModelChanges<>` initializer will create an additional table in your database. This table is used to store some information to detect model changes. If you want to use an own entity/table you have to implement the `IHistory` interface and pass the type of your entity as parameter to the constructor of the initializer. @@ -176,7 +176,7 @@ You will find an extensive usage of the composite pattern. ## Hints -If you try to reinstall the NuGet-Packages (e.g. if you want to downgrade to .NET 4.0), the app.config will be overwritten and you may getting an exception when you try to run the console project. +If you try to reinstall the NuGet-Packages (e.g. if you want to downgrade to .NET 4.0), the app.config will be overwritten and you may get an exception when you try to run the console project. In this case please check the following issue: ## Recognition From eb35aba3c61bd5a71235f676a46b21bc6b2d1307 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:06:20 +0200 Subject: [PATCH 137/144] Note .NET 10 support in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a077139..9bb4fef 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ You can use the SQLite CodeFirst in projects that target the following framework - .NET 4.0 (uses net40) - .NET 4.5-4.8 (uses net45) - .NET Core 3.0-3.1 (uses netstandard2.1) -- .NET 5-8 (uses netstandard2.1) +- .NET 5 and later, including .NET 10 (uses netstandard2.1) ## How to use From f7ed6b9e80c3b0330c706b9c0d7c1d5689bf17b4 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:20:46 +0200 Subject: [PATCH 138/144] Fix NuGet publish and release steps on Windows runner dotnet nuget push and gh release create relied on shell glob expansion that works on the Ubuntu reference but not on the windows-latest runner this repo needs (PowerShell does not expand *.nupkg for dotnet, and bash mangles the backslashes in the workspace path). Resolve the package and release assets explicitly with Get-ChildItem in PowerShell instead. --- .github/workflows/cd.yml | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index b0d3492..1f3c728 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -101,11 +101,16 @@ jobs: - name: Publish to NuGet if: startsWith(github.ref, 'refs/tags/v') - run: > - dotnet nuget push "${{ github.workspace }}/artifacts/*.nupkg" - --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" - --source https://api.nuget.org/v3/index.json - --skip-duplicate + shell: pwsh + # Resolve the package explicitly: on the Windows runner the default PowerShell shell does not + # expand a "*.nupkg" wildcard for dotnet, so a literal glob path is passed through and not found. + # Pushing the .nupkg also pushes the sibling .snupkg symbol package to nuget.org automatically. + run: | + $package = Get-ChildItem -Path "${{ github.workspace }}/artifacts/*.nupkg" | Select-Object -First 1 + dotnet nuget push $package.FullName ` + --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" ` + --source https://api.nuget.org/v3/index.json ` + --skip-duplicate # --- GitHub Release. --- # Created only on tag pushes, after a successful NuGet publish, so the Release reflects what was @@ -115,20 +120,17 @@ jobs: # the package is downloadable straight from the Release page, not just the workflow run. - name: Create GitHub Release if: startsWith(github.ref, 'refs/tags/v') - shell: bash + shell: pwsh # The tag is passed through an env var rather than interpolated into the script, matching the - # version step above. + # version step above. Assets are resolved with Get-ChildItem so the wildcards expand on the + # Windows runner (bash would mangle the backslashes in the workspace path). env: GH_TOKEN: ${{ github.token }} TAG: ${{ github.ref_name }} run: | + $assets = Get-ChildItem -Path "${{ github.workspace }}/artifacts/*.nupkg", "${{ github.workspace }}/artifacts/*.snupkg" | ForEach-Object { $_.FullName } # SemVer pre-release tags carry a hyphen (e.g. v1.2.3-rc.1); mark those as GitHub pre-releases. - prerelease="" - if [[ "${TAG}" == *-* ]]; then prerelease="--prerelease"; fi - gh release create "${TAG}" \ - --title "${TAG}" \ - --generate-notes \ - --verify-tag \ - ${prerelease} \ - "${GITHUB_WORKSPACE}/artifacts/"*.nupkg \ - "${GITHUB_WORKSPACE}/artifacts/"*.snupkg + $ghArgs = @($env:TAG, '--title', $env:TAG, '--generate-notes', '--verify-tag') + if ($env:TAG -like '*-*') { $ghArgs += '--prerelease' } + $ghArgs += $assets + gh release create $ghArgs From 81f12d563a90f0bf89b27e0328d6238227331316 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 00:10:53 +0000 Subject: [PATCH 139/144] Bump dotnet-sdk from 10.0.300 to 10.0.301 Bumps [dotnet-sdk](https://github.com/dotnet/sdk) from 10.0.300 to 10.0.301. - [Release notes](https://github.com/dotnet/sdk/releases) - [Commits](https://github.com/dotnet/sdk/compare/v10.0.300...v10.0.301) --- updated-dependencies: - dependency-name: dotnet-sdk dependency-version: 10.0.301 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 70c8f03..f272fe7 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "10.0.300", + "version": "10.0.301", "rollForward": "latestMinor" }, "test": { From 82c1e25569fe20e066d44738022cbec8ac31538b Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:48:33 +0200 Subject: [PATCH 140/144] feat: support ON UPDATE CASCADE via CascadeOnUpdate attribute Entity Framework has no concept of update-cascade (it assumes immutable keys), so the generated DDL only ever emitted ON DELETE CASCADE. Neither ForeignKeyAttribute nor the fluent API can express ON UPDATE CASCADE. Add an opt-in CascadeOnUpdateAttribute placed on the dependent foreign key property. It is registered as a column annotation, survives the EF model build, and is read back from the store model during SQL generation to append the ON UPDATE CASCADE clause to the foreign key constraint. Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 3 +- .../IntegrationTests/CascadeOnUpdateTest.cs | 125 ++++++++++++++++++ .../Statement/ForeignKeyStatementTest.cs | 31 +++++ .../Builder/ForeignKeyStatementBuilder.cs | 3 +- .../Internal/Statement/ForeignKeyStatement.cs | 6 + .../Internal/Utility/SqliteAssociationType.cs | 9 ++ .../Attributes/CascadeOnUpdateAttribute.cs | 28 ++++ .../DbInitializers/SqliteInitializerBase.cs | 1 + 8 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 SQLite.CodeFirst.Test/IntegrationTests/CascadeOnUpdateTest.cs create mode 100644 SQLite.CodeFirst/Public/Attributes/CascadeOnUpdateAttribute.cs diff --git a/README.md b/README.md index 9bb4fef..a6b9367 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The following features are supported: - Tables from classes (supported annotations: `Table`) - Columns from properties (supported annotations: `Column`, `Key`, `MaxLength`, `Required`, `NotMapped`, `DatabaseGenerated`, `Index`) - PrimaryKey constraint (`Key` annotation, key composites are supported) -- ForeignKey constraint (1-n relationships, support for 'Cascade on delete') +- ForeignKey constraint (1-n relationships, support for 'Cascade on delete' and 'Cascade on update') - Not Null constraint - Auto increment (An int PrimaryKey will automatically be incremented and you can explicitly set the "AUTOINCREMENT" constraint to a PrimaryKey using the Autoincrement-Attribute) - Index (Decorate columns with the `Index` attribute. Indices are automatically created for foreign keys by default. To prevent this you can remove the convention `ForeignKeyIndexConvention`) @@ -36,6 +36,7 @@ The following features are supported: - Collate constraint (Decorate columns with the `CollateAttribute`, which is part of this library. Use `CollationFunction.Custom` to specify your own collation function.) - Default collation (pass an instance of Collation as constructor parameter for an initializer to specify a default collation). - SQL default value (Decorate columns with the `SqlDefaultValueAttribute`, which is part of this library) +- Cascade on update (Decorate the foreign key property with the `CascadeOnUpdateAttribute`, which is part of this library. Entity Framework cannot express `ON UPDATE CASCADE`, so this opt-in attribute must be placed on the dependent foreign key property, e.g. `TeamId`, not on the navigation property. It requires an explicit foreign key property.) ## Install diff --git a/SQLite.CodeFirst.Test/IntegrationTests/CascadeOnUpdateTest.cs b/SQLite.CodeFirst.Test/IntegrationTests/CascadeOnUpdateTest.cs new file mode 100644 index 0000000..1e7b45c --- /dev/null +++ b/SQLite.CodeFirst.Test/IntegrationTests/CascadeOnUpdateTest.cs @@ -0,0 +1,125 @@ +using System.Collections.Generic; +using System.Data.Common; +using System.Data.Entity; +using System.Data.Entity.Infrastructure; +using System.Data.SQLite; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace SQLite.CodeFirst.Test.IntegrationTests +{ + /// + /// Verifies that the placed on a foreign key property + /// results in 'ON UPDATE CASCADE' being emitted for the corresponding foreign key constraint. + /// This exercises the full pipeline: the attribute is registered as a column annotation, survives + /// the EF model build and is read back from the store model when the SQL is generated. + /// + [TestClass] + public class CascadeOnUpdateTest + { + private static string generatedSql; + + [TestMethod] + public void CascadeOnUpdateAttributeEmitsOnUpdateCascade() + { + using (DbConnection connection = new SQLiteConnection("FullUri=file::memory:")) + { + // This is important! Else the in memory database will not work. + connection.Open(); + + using (var context = new CascadeDbContext(connection)) + { + // Touching the set forces the initializer (and therefore the SQL generation) to run. + context.Set().FirstOrDefault(); + } + } + + // Decorated FK with cascade-on-delete: both keywords, delete before update. + StringAssert.Contains(generatedSql, "FOREIGN KEY ([CustomerId]) REFERENCES \"Customers\"([Id]) ON DELETE CASCADE ON UPDATE CASCADE"); + + // Decorated FK without cascade-on-delete: only the update keyword. + StringAssert.Contains(generatedSql, "FOREIGN KEY ([WarehouseId]) REFERENCES \"Warehouses\"([Id]) ON UPDATE CASCADE"); + + // Undecorated FK: no cascade keyword at all. + Assert.IsFalse(generatedSql.Contains("[RegionId]) REFERENCES \"Regions\"([Id]) ON"), + "The foreign key without the attribute must not emit any cascade clause."); + } + + private class Customer + { + public int Id { get; set; } + } + + private class Warehouse + { + public int Id { get; set; } + } + + private class Region + { + public int Id { get; set; } + } + + private class Order + { + public int Id { get; set; } + + [CascadeOnUpdate] + public int CustomerId { get; set; } + public Customer Customer { get; set; } + + [CascadeOnUpdate] + public int? WarehouseId { get; set; } + public Warehouse Warehouse { get; set; } + + public int? RegionId { get; set; } + public Region Region { get; set; } + } + + private class CascadeDbContext : DbContext + { + public CascadeDbContext(DbConnection connection) + : base(connection, false) + { + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasRequired(o => o.Customer) + .WithMany() + .HasForeignKey(o => o.CustomerId) + .WillCascadeOnDelete(true); + + modelBuilder.Entity() + .HasOptional(o => o.Warehouse) + .WithMany() + .HasForeignKey(o => o.WarehouseId) + .WillCascadeOnDelete(false); + + modelBuilder.Entity() + .HasOptional(o => o.Region) + .WithMany() + .HasForeignKey(o => o.RegionId) + .WillCascadeOnDelete(false); + + Database.SetInitializer(new CaptureInitializer(modelBuilder)); + } + } + + private class CaptureInitializer : SqliteInitializerBase + { + public CaptureInitializer(DbModelBuilder modelBuilder) + : base(modelBuilder) + { + } + + public override void InitializeDatabase(CascadeDbContext context) + { + DbModel model = ModelBuilder.Build(context.Database.Connection); + generatedSql = new SqliteSqlGenerator().Generate(model.StoreModel); + base.InitializeDatabase(context); + } + } + } +} diff --git a/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs b/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs index 0a8ac9f..65dd2d7 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Statement/ForeignKeyStatementTest.cs @@ -37,6 +37,37 @@ public void CreateStatementOneForeignKeyCascadeDeleteTest() Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1]) ON DELETE CASCADE", output); } + [TestMethod] + public void CreateStatementOneForeignKeyCascadeUpdateTest() + { + var foreignKeyStatement = new ForeignKeyStatement + { + CascadeUpdate = true, + ForeignKey = new List { "dummyForeignKey1" }, + ForeignPrimaryKey = new List { "dummForeignPrimaryKey1" }, + ForeignTable = "dummyForeignTable" + }; + + string output = foreignKeyStatement.CreateStatement(); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1]) ON UPDATE CASCADE", output); + } + + [TestMethod] + public void CreateStatementOneForeignKeyCascadeDeleteAndUpdateTest() + { + var foreignKeyStatement = new ForeignKeyStatement + { + CascadeDelete = true, + CascadeUpdate = true, + ForeignKey = new List { "dummyForeignKey1" }, + ForeignPrimaryKey = new List { "dummForeignPrimaryKey1" }, + ForeignTable = "dummyForeignTable" + }; + + string output = foreignKeyStatement.CreateStatement(); + Assert.AreEqual("FOREIGN KEY ([dummyForeignKey1]) REFERENCES dummyForeignTable([dummForeignPrimaryKey1]) ON DELETE CASCADE ON UPDATE CASCADE", output); + } + [TestMethod] public void CreateStatementTwoForeignKeyTest() { diff --git a/SQLite.CodeFirst/Internal/Builder/ForeignKeyStatementBuilder.cs b/SQLite.CodeFirst/Internal/Builder/ForeignKeyStatementBuilder.cs index e5fd81a..0dd595c 100644 --- a/SQLite.CodeFirst/Internal/Builder/ForeignKeyStatementBuilder.cs +++ b/SQLite.CodeFirst/Internal/Builder/ForeignKeyStatementBuilder.cs @@ -29,7 +29,8 @@ private IEnumerable GetForeignKeyStatements() ForeignKey = associationType.ForeignKey, ForeignTable = associationType.FromTableName, ForeignPrimaryKey = associationType.ForeignPrimaryKey, - CascadeDelete = associationType.CascadeDelete + CascadeDelete = associationType.CascadeDelete, + CascadeUpdate = associationType.CascadeUpdate }; } } diff --git a/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs b/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs index 58b4974..6b862a7 100644 --- a/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs +++ b/SQLite.CodeFirst/Internal/Statement/ForeignKeyStatement.cs @@ -9,11 +9,13 @@ internal class ForeignKeyStatement : IStatement { private const string Template = "FOREIGN KEY ({foreign-key}) REFERENCES {referenced-table}({referenced-id})"; private const string CascadeDeleteStatement = "ON DELETE CASCADE"; + private const string CascadeUpdateStatement = "ON UPDATE CASCADE"; public IEnumerable ForeignKey { get; set; } public string ForeignTable { get; set; } public IEnumerable ForeignPrimaryKey { get; set; } public bool CascadeDelete { get; set; } + public bool CascadeUpdate { get; set; } public string CreateStatement() { @@ -25,6 +27,10 @@ public string CreateStatement() { sb.Append(" " + CascadeDeleteStatement); } + if (CascadeUpdate) + { + sb.Append(" " + CascadeUpdateStatement); + } return sb.ToString(); } diff --git a/SQLite.CodeFirst/Internal/Utility/SqliteAssociationType.cs b/SQLite.CodeFirst/Internal/Utility/SqliteAssociationType.cs index 6ab4f49..7532614 100644 --- a/SQLite.CodeFirst/Internal/Utility/SqliteAssociationType.cs +++ b/SQLite.CodeFirst/Internal/Utility/SqliteAssociationType.cs @@ -2,6 +2,7 @@ using System.Data.Entity.Core.Metadata.Edm; using System.Linq; using SQLite.CodeFirst.Builder.NameCreators; +using SQLite.CodeFirst.Extensions; namespace SQLite.CodeFirst.Utility { @@ -30,6 +31,13 @@ public SqliteAssociationType(AssociationType associationType, EntityContainer co ForeignKey = associationType.Constraint.ToProperties.Select(x => x.Name); ForeignPrimaryKey = associationType.Constraint.FromProperties.Select(x => x.Name); CascadeDelete = associationType.Constraint.FromRole.DeleteBehavior == OperationAction.Cascade; + + // EF has no notion of update-cascade, so it is opt-in via the CascadeOnUpdateAttribute placed on the + // dependent foreign key property. The attribute is registered as a column annotation and therefore + // available on the store model foreign key columns (the constraint's ToProperties). + CascadeUpdate = associationType.Constraint.ToProperties + .Select(property => property.GetCustomAnnotation()) + .Any(attribute => attribute != null && attribute.CanCascade); } private static bool IsSelfReferencing(AssociationType associationType) @@ -47,5 +55,6 @@ private static bool IsSelfReferencing(AssociationType associationType) public string ToTableName { get; } public IEnumerable ForeignPrimaryKey { get; } public bool CascadeDelete { get; } + public bool CascadeUpdate { get; } } } \ No newline at end of file diff --git a/SQLite.CodeFirst/Public/Attributes/CascadeOnUpdateAttribute.cs b/SQLite.CodeFirst/Public/Attributes/CascadeOnUpdateAttribute.cs new file mode 100644 index 0000000..5870ccf --- /dev/null +++ b/SQLite.CodeFirst/Public/Attributes/CascadeOnUpdateAttribute.cs @@ -0,0 +1,28 @@ +using System; + +namespace SQLite.CodeFirst +{ + /// + /// Adds 'ON UPDATE CASCADE' to the foreign key constraint of the relationship the decorated property belongs to. + /// Entity Framework has no concept of update-cascade (it assumes primary keys are immutable), so neither the + /// nor the fluent API can express it. + /// This opt-in attribute is the only way to emit the keyword. + /// Place it on the dependent foreign key property (e.g. the 'TeamId' property), not on the navigation property (e.g. 'Team'). + /// Requires an explicit foreign key property; relationships with a shadow foreign key column cannot be decorated. + /// + [AttributeUsage(AttributeTargets.Property)] + public sealed class CascadeOnUpdateAttribute : Attribute + { + public CascadeOnUpdateAttribute() + { + CanCascade = true; + } + + public CascadeOnUpdateAttribute(bool canCascade) + { + CanCascade = canCascade; + } + + public bool CanCascade { get; } + } +} diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs index 1309b1f..4e20b33 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteInitializerBase.cs @@ -40,6 +40,7 @@ protected SqliteInitializerBase(DbModelBuilder modelBuilder, Collation defaultCo modelBuilder.RegisterAttributeAsColumnAnnotation(); modelBuilder.RegisterAttributeAsColumnAnnotation(); modelBuilder.RegisterAttributeAsColumnAnnotation(); + modelBuilder.RegisterAttributeAsColumnAnnotation(); // By default there is a 'ForeignKeyIndexConvention' but it can be removed. // And there is no "Contains" and no way to enumerate the ConventionsCollection. From 6c8e098baf3ecc1e9eb042f8af410e90838132c5 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:47:19 +0200 Subject: [PATCH 141/144] feat: expose default collation through the public initializers SqliteInitializerBase already accepts a default Collation and feeds it into SQL generation, but none of the three concrete initializers forwarded it, so the documented "default collation" feature was unreachable without subclassing. Add constructor overloads that pass a Collation to the base class. --- .../InitializerDefaultCollationTest.cs | 64 +++++++++++++++++++ .../SqliteCreateDatabaseIfNotExists.cs | 23 ++++++- .../SqliteDropCreateDatabaseAlways.cs | 11 +++- ...qliteDropCreateDatabaseWhenModelChanges.cs | 28 ++++++-- 4 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 SQLite.CodeFirst.Test/UnitTests/DbInitializers/InitializerDefaultCollationTest.cs diff --git a/SQLite.CodeFirst.Test/UnitTests/DbInitializers/InitializerDefaultCollationTest.cs b/SQLite.CodeFirst.Test/UnitTests/DbInitializers/InitializerDefaultCollationTest.cs new file mode 100644 index 0000000..256b323 --- /dev/null +++ b/SQLite.CodeFirst.Test/UnitTests/DbInitializers/InitializerDefaultCollationTest.cs @@ -0,0 +1,64 @@ +using System.Data.Entity; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using SQLite.CodeFirst.NetCore.Console; + +namespace SQLite.CodeFirst.Test.UnitTests.DbInitializers +{ + /// + /// Verifies that the public initializers forward an explicitly supplied default + /// to the base class, which is what feeds it into the SQL generation. + /// Without this the documented "default collation" feature is unreachable through the shipped initializers. + /// + [TestClass] + public class InitializerDefaultCollationTest + { + private static readonly Collation Collation = new Collation(CollationFunction.RTrim); + + private static DbModelBuilder NewModelBuilder() + { + return new DbModelBuilder(); + } + + [TestMethod] + public void SqliteCreateDatabaseIfNotExists_ForwardsDefaultCollation() + { + var initializer = new SqliteCreateDatabaseIfNotExists(NewModelBuilder(), Collation); + Assert.AreSame(Collation, initializer.DefaultCollation); + } + + [TestMethod] + public void SqliteCreateDatabaseIfNotExists_WithNullByteFlag_ForwardsDefaultCollation() + { + var initializer = new SqliteCreateDatabaseIfNotExists(NewModelBuilder(), true, Collation); + Assert.AreSame(Collation, initializer.DefaultCollation); + } + + [TestMethod] + public void SqliteDropCreateDatabaseAlways_ForwardsDefaultCollation() + { + var initializer = new SqliteDropCreateDatabaseAlways(NewModelBuilder(), Collation); + Assert.AreSame(Collation, initializer.DefaultCollation); + } + + [TestMethod] + public void SqliteDropCreateDatabaseWhenModelChanges_ForwardsDefaultCollation() + { + var initializer = new SqliteDropCreateDatabaseWhenModelChanges(NewModelBuilder(), Collation); + Assert.AreSame(Collation, initializer.DefaultCollation); + } + + [TestMethod] + public void SqliteDropCreateDatabaseWhenModelChanges_WithHistoryType_ForwardsDefaultCollation() + { + var initializer = new SqliteDropCreateDatabaseWhenModelChanges(NewModelBuilder(), typeof(History), Collation); + Assert.AreSame(Collation, initializer.DefaultCollation); + } + + [TestMethod] + public void Initializer_WithoutCollation_HasNullDefaultCollation() + { + var initializer = new SqliteDropCreateDatabaseAlways(NewModelBuilder()); + Assert.IsNull(initializer.DefaultCollation); + } + } +} diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteCreateDatabaseIfNotExists.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteCreateDatabaseIfNotExists.cs index c572be6..6bfd7dd 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteCreateDatabaseIfNotExists.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteCreateDatabaseIfNotExists.cs @@ -19,7 +19,16 @@ public class SqliteCreateDatabaseIfNotExists : SqliteInitializerBase /// The model builder. public SqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder) - : this(modelBuilder, false) + : this(modelBuilder, false, null) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + /// The default collation applied to all string columns. Explicit s take precedence. + public SqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder, Collation defaultCollation) + : this(modelBuilder, false, defaultCollation) { } /// @@ -28,7 +37,17 @@ public SqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder) /// The model builder. /// if set to true a null byte database file is treated like the database does not exist. public SqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder, bool nullByteFileMeansNotExisting) - : base(modelBuilder) + : this(modelBuilder, nullByteFileMeansNotExisting, null) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + /// if set to true a null byte database file is treated like the database does not exist. + /// The default collation applied to all string columns. Explicit s take precedence. + public SqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder, bool nullByteFileMeansNotExisting, Collation defaultCollation) + : base(modelBuilder, defaultCollation) { this.nullByteFileMeansNotExisting = nullByteFileMeansNotExisting; } diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseAlways.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseAlways.cs index 3154835..fb73aee 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseAlways.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseAlways.cs @@ -17,7 +17,16 @@ public class SqliteDropCreateDatabaseAlways : SqliteInitializerBase /// The model builder. public SqliteDropCreateDatabaseAlways(DbModelBuilder modelBuilder) - : base(modelBuilder) + : this(modelBuilder, null) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + /// The default collation applied to all string columns. Explicit s take precedence. + public SqliteDropCreateDatabaseAlways(DbModelBuilder modelBuilder, Collation defaultCollation) + : base(modelBuilder, defaultCollation) { } /// diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index f8029fc..7e6d834 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -34,11 +34,17 @@ public class SqliteDropCreateDatabaseWhenModelChanges : SqliteInitiali /// /// The model builder. public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder) - : base(modelBuilder) - { - historyEntityType = typeof(History); - ConfigureHistoryEntity(); - } + : this(modelBuilder, typeof(History), null) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + /// The default collation applied to all string columns. Explicit s take precedence. + public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder, Collation defaultCollation) + : this(modelBuilder, typeof(History), defaultCollation) + { } /// /// Initializes a new instance of the class. @@ -46,7 +52,17 @@ public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder) /// The model builder. /// Type of the history entity (must implement and provide an parameterless constructor). public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder, Type historyEntityType) - : base(modelBuilder) + : this(modelBuilder, historyEntityType, null) + { } + + /// + /// Initializes a new instance of the class. + /// + /// The model builder. + /// Type of the history entity (must implement and provide an parameterless constructor). + /// The default collation applied to all string columns. Explicit s take precedence. + public SqliteDropCreateDatabaseWhenModelChanges(DbModelBuilder modelBuilder, Type historyEntityType, Collation defaultCollation) + : base(modelBuilder, defaultCollation) { this.historyEntityType = historyEntityType; ConfigureHistoryEntity(); From 068a19cb46029fa11310bbf477aa80cf865b7975 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:49:32 +0200 Subject: [PATCH 142/144] fix: scope history record lookup by context key SqliteDropCreateDatabaseWhenModelChanges stores the context name on each history record and documents that a database may be shared by several contexts, but GetHistoryRecord selected with SingleOrDefault and no Context filter. On a shared history table that matches multiple records: IsSameModel swallows the resulting exception and reports a model change, while SaveHistory throws. Look the record up by context.GetType().FullName, matching what SaveHistory writes. --- .../Utility/HistoryRecordSelectorTest.cs | 56 +++++++++++++++++++ .../Internal/Utility/HistoryRecordSelector.cs | 19 +++++++ ...qliteDropCreateDatabaseWhenModelChanges.cs | 6 +- 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 SQLite.CodeFirst.Test/UnitTests/Utility/HistoryRecordSelectorTest.cs create mode 100644 SQLite.CodeFirst/Internal/Utility/HistoryRecordSelector.cs diff --git a/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryRecordSelectorTest.cs b/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryRecordSelectorTest.cs new file mode 100644 index 0000000..b53a240 --- /dev/null +++ b/SQLite.CodeFirst.Test/UnitTests/Utility/HistoryRecordSelectorTest.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using SQLite.CodeFirst.Utility; + +namespace SQLite.CodeFirst.Test.UnitTests.Utility +{ + [TestClass] + public class HistoryRecordSelectorTest + { + private static IHistory Record(string context) + { + return new History { Context = context, Hash = "hash-" + context }; + } + + [TestMethod] + public void SelectForContext_ReturnsRecordForGivenContext() + { + var records = new List { Record("ContextA"), Record("ContextB") }; + + IHistory result = HistoryRecordSelector.SelectForContext(records, "ContextB"); + + Assert.IsNotNull(result); + Assert.AreEqual("ContextB", result.Context); + } + + [TestMethod] + public void SelectForContext_ReturnsNull_WhenNoRecordMatches() + { + var records = new List { Record("ContextA") }; + + IHistory result = HistoryRecordSelector.SelectForContext(records, "ContextB"); + + Assert.IsNull(result); + } + + [TestMethod] + public void SelectForContext_ReturnsNull_WhenEmpty() + { + IHistory result = HistoryRecordSelector.SelectForContext(new List(), "ContextA"); + + Assert.IsNull(result); + } + + [TestMethod] + public void SelectForContext_Throws_WhenMultipleRecordsShareContext() + { + // One record per context is an invariant maintained by SaveHistory. If it is ever + // violated, surfacing it is better than silently picking an arbitrary record. + var records = new List { Record("ContextA"), Record("ContextA") }; + + Assert.ThrowsExactly( + () => HistoryRecordSelector.SelectForContext(records, "ContextA")); + } + } +} diff --git a/SQLite.CodeFirst/Internal/Utility/HistoryRecordSelector.cs b/SQLite.CodeFirst/Internal/Utility/HistoryRecordSelector.cs new file mode 100644 index 0000000..9621370 --- /dev/null +++ b/SQLite.CodeFirst/Internal/Utility/HistoryRecordSelector.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System.Linq; + +namespace SQLite.CodeFirst.Utility +{ + /// + /// Selects the history record that belongs to a specific context from the history table. + /// A database can be shared by multiple contexts, so the lookup must be scoped by the context + /// key. Selecting without that scope would return more than one record on a shared database and + /// make the underlying throw. + /// + internal static class HistoryRecordSelector + { + public static IHistory SelectForContext(IEnumerable records, string contextKey) + { + return records.SingleOrDefault(record => record.Context == contextKey); + } + } +} diff --git a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs index 7e6d834..dbe050c 100644 --- a/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs +++ b/SQLite.CodeFirst/Public/DbInitializers/SqliteDropCreateDatabaseWhenModelChanges.cs @@ -175,7 +175,11 @@ private IHistory GetHistoryRecord(TContext context) // in order to be supported by .NET 4.0. DbQuery dbQuery = context.Set(historyEntityType).AsNoTracking(); IEnumerable records = Enumerable.Cast(dbQuery); - return records.SingleOrDefault(); + + // A database can be shared by several contexts, so the record must be looked up by the + // context key that SaveHistory writes. An unscoped lookup would match every context's + // record and throw on a shared history table. + return HistoryRecordSelector.SelectForContext(records, context.GetType().FullName); } private string GetHashFromModel(DbConnection connection) From c6cae4142c9de69eeb2dd360b24668c4f9787ba5 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:51:01 +0200 Subject: [PATCH 143/144] fix: preserve connection string values containing equals signs ParseConnectionString split each pair on every '=' and kept only the second segment, truncating any Data Source value that contains '=' at the first one. Split on the first '=' only. Also assign via the dictionary indexer (last value wins) instead of Add, so a repeated key no longer throws. --- .../Utility/ConnectionStringParserTest.cs | 28 +++++++++++++++++++ .../Utility/ConnectionStringParser.cs | 7 +++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/SQLite.CodeFirst.Test/UnitTests/Utility/ConnectionStringParserTest.cs b/SQLite.CodeFirst.Test/UnitTests/Utility/ConnectionStringParserTest.cs index 998f5c8..d6e6238 100644 --- a/SQLite.CodeFirst.Test/UnitTests/Utility/ConnectionStringParserTest.cs +++ b/SQLite.CodeFirst.Test/UnitTests/Utility/ConnectionStringParserTest.cs @@ -106,5 +106,33 @@ public void GetDataSource_ReturnsCorrectDataSource_RemovesQuotationMark() // Assert Assert.AreEqual(@".\db\footballDb\footballDb.sqlite", result); } + + [TestMethod] + public void GetDataSource_ReturnsCorrectDataSource_WhenValueContainsEqualsSign() + { + // Arrange + string connectionString = @"data source=.\db\foo=bar\footballDb.sqlite;foreign keys=true"; + + + // Act + string result = ConnectionStringParser.GetDataSource(connectionString); + + // Assert + Assert.AreEqual(@".\db\foo=bar\footballDb.sqlite", result); + } + + [TestMethod] + public void GetDataSource_ReturnsLastValue_WhenKeyIsRepeated() + { + // Arrange + string connectionString = @"data source=first.sqlite;data source=second.sqlite"; + + + // Act + string result = ConnectionStringParser.GetDataSource(connectionString); + + // Assert + Assert.AreEqual(@"second.sqlite", result); + } } } diff --git a/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs b/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs index 02c2c21..a146dfb 100644 --- a/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs +++ b/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs @@ -42,10 +42,13 @@ private static IDictionary ParseConnectionString(string connecti IDictionary keyValuePairDictionary = new Dictionary(); foreach (var keyValuePair in keyValuePairs) { - string[] keyValue = keyValuePair.Split(KeyValueSeperator); + // Split on the first '=' only so a value that itself contains '=' is preserved. + // Input: "data source=C:\a=b.sqlite" -> key="data source", value="C:\a=b.sqlite" + string[] keyValue = keyValuePair.Split(new[] { KeyValueSeperator }, 2, StringSplitOptions.None); if (keyValue.Length >= 2) { - keyValuePairDictionary.Add(keyValue[KeyPosition].Trim().ToLower(CultureInfo.InvariantCulture), keyValue[ValuePosition]); + // Indexer assignment (last value wins) so a repeated key does not throw. + keyValuePairDictionary[keyValue[KeyPosition].Trim().ToLower(CultureInfo.InvariantCulture)] = keyValue[ValuePosition]; } } From b1cafccc0670c1d5f054ce308f32678442d10129 Mon Sep 17 00:00:00 2001 From: Marc Sallin Date: Tue, 16 Jun 2026 02:52:46 +0200 Subject: [PATCH 144/144] refactor: minor correctness and clarity cleanups - AssociationTypeContainer: materialize the projection with ToList so GetAssociationTypes does not rebuild every SqliteAssociationType on each call. - ConnectionStringParser.GetDataSource: reuse the already-parsed dictionary instead of parsing the connection string a second time. - SqliteForeignKeyIndexConvention: fold the uniqueness suffix into the index name before escaping so it stays inside the quoted identifier instead of being appended after the closing quote. --- .../SqliteForeignKeyIndexConvention.cs | 18 +++++++++--------- .../Utility/AssociationTypeContainer.cs | 4 +++- .../Internal/Utility/ConnectionStringParser.cs | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs b/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs index e10205e..e5d24ac 100644 --- a/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs +++ b/SQLite.CodeFirst/Internal/Convention/SqliteForeignKeyIndexConvention.cs @@ -74,16 +74,16 @@ public virtual void Apply(AssociationType item, DbModel model) private static IndexAnnotation CreateIndexAnnotation(string tableName, string propertyName, int count) { - var indexName = IndexNameCreator.CreateName(tableName, propertyName); - - // If there are two Indicies on the same property, the count is added. - // In SQLite an Index name must be global unique. - // To be honest, it should never happen. But because its possible by using the API, it should be covered. - if (count > 0) - { - indexName = String.Format(CultureInfo.InvariantCulture, "{0}_{1}", indexName, count); - } + // If there are two indices on the same property, the count is appended. + // In SQLite an index name must be globally unique. + // To be honest, it should never happen. But because it is possible via the API, it is covered. + // The suffix is folded in before escaping so it stays inside the quoted identifier; + // IndexNameCreator.CreateName returns an already-escaped name. + string uniquePropertyName = count > 0 + ? String.Format(CultureInfo.InvariantCulture, "{0}_{1}", propertyName, count) + : propertyName; + var indexName = IndexNameCreator.CreateName(tableName, uniquePropertyName); var indexAttribute = new IndexAttribute(indexName); return new IndexAnnotation(indexAttribute); } diff --git a/SQLite.CodeFirst/Internal/Utility/AssociationTypeContainer.cs b/SQLite.CodeFirst/Internal/Utility/AssociationTypeContainer.cs index e86d20f..c22d1a9 100644 --- a/SQLite.CodeFirst/Internal/Utility/AssociationTypeContainer.cs +++ b/SQLite.CodeFirst/Internal/Utility/AssociationTypeContainer.cs @@ -10,7 +10,9 @@ internal class AssociationTypeContainer public AssociationTypeContainer(IEnumerable associationTypes, EntityContainer container) { - sqliteAssociationTypes = associationTypes.Select(associationType => new SqliteAssociationType(associationType, container)); + // Materialize once. GetAssociationTypes is called per entity set, so a deferred query + // would rebuild every SqliteAssociationType (and its entity-set lookups) on each call. + sqliteAssociationTypes = associationTypes.Select(associationType => new SqliteAssociationType(associationType, container)).ToList(); } public IEnumerable GetAssociationTypes(string entitySetName) diff --git a/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs b/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs index a146dfb..93592c6 100644 --- a/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs +++ b/SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs @@ -21,7 +21,7 @@ public static string GetDataSource(string connectionString) IDictionary strings = ParseConnectionString(connectionString); if (strings.ContainsKey(DataSourceToken)) { - var path = ExpandDataDirectory(ParseConnectionString(connectionString)[DataSourceToken]); + var path = ExpandDataDirectory(strings[DataSourceToken]); return path.Trim('"'); }