From 6c8cdd2af202353c1c5983794bf5fbe2b48da558 Mon Sep 17 00:00:00 2001 From: CreepyCrafter24 <33260128+CreepyCrafter24@users.noreply.github.com> Date: Sat, 5 Oct 2019 17:49:56 +0200 Subject: [PATCH] Some ToDos --- 1/1.cs | 1 + 2/2.cs | 2 ++ 3/3.cs | 38 +++++++++++++------------- 3g/3.cs | 5 ++-- 4/4.cs | 1 + Base/Base.csproj | 6 +++++ Base/Drawing.cs | 4 +-- Base/Input.cs | 19 +++++-------- Base/Minigame.cs | 12 ++++++--- Base/Rect.cs | 42 ++++++++++++++--------------- LaptopSimulator2015/FakeDesktop.cs | 25 +++++++++-------- LaptopSimulator2015/Program.cs | 1 + LevelTest/Program.cs | 4 +-- ToDo.txt | 3 ++- tmp1/3g.dll | Bin 0 -> 54272 bytes tmp3/LevelTest.exe | Bin 0 -> 13824 bytes 16 files changed, 89 insertions(+), 74 deletions(-) create mode 100644 tmp1/3g.dll create mode 100644 tmp3/LevelTest.exe diff --git a/1/1.cs b/1/1.cs index 7292400..1ff063a 100644 --- a/1/1.cs +++ b/1/1.cs @@ -59,6 +59,7 @@ namespace LaptopSimulator2015.Levels public int installerProgressSteps => 500; public Color backColor => Color.Black; public string[] credits => new string[] { "Level1 Icon made by Oliver Scholtz from www.iconfinder.com" }; + public bool isLowQuality => false; List enemies; List bullets; diff --git a/2/2.cs b/2/2.cs index c45b4bd..815b6db 100644 --- a/2/2.cs +++ b/2/2.cs @@ -60,6 +60,8 @@ namespace LaptopSimulator2015.Levels public int installerProgressSteps => 500; public Color backColor => Color.Black; public string[] credits => new string[] { "Level2 Icon made by Intel" }; + public bool isLowQuality => false; + List enemies; Vector2 player; int lives; diff --git a/3/3.cs b/3/3.cs index d13d6b8..0bd3cec 100644 --- a/3/3.cs +++ b/3/3.cs @@ -63,6 +63,7 @@ namespace LaptopSimulator2015.Levels public int installerProgressSteps => 500; public Color backColor => Color.Black; public string[] credits => new string[] { "Level3 Icon made by NVidia" }; + public bool isLowQuality => false; Vector2 center; Vector2 cannon; @@ -97,13 +98,14 @@ namespace LaptopSimulator2015.Levels { firing = false; List targetsToRemove = new List(); + Rect tr = new Rect(targ, new Vector2(power, power), true); for (int i = 0; i < targets.Count; i++) { - if (targets[i].distanceFromSquared(targ) <= Math.Pow(power + 10, 2)) + if (targets[i].distanceToRectSquared(tr) <= 400) targetsToRemove.Add(targets[i]); } targets = targets.Except(targetsToRemove.Distinct()).Distinct().ToList(); - g.g.FillRectangle(new SolidBrush(Color.White), new Rectangle(Misc.d2i(targ.X - power / 2), Misc.d2i(targ.Y - power / 2), Misc.d2i(power), Misc.d2i(power))); + g.DrawRectangle(tr, Color.White); power = 10; } targ = new Vector2(center); @@ -113,9 +115,9 @@ namespace LaptopSimulator2015.Levels if (Input.Down) cannonL -= 100 / power; if (Input.Right) - playerRot += 80 / power; - if (Input.Left) playerRot -= 80 / power; + if (Input.Left) + playerRot += 80 / power; while (playerRot > 360) playerRot -= 360; while (playerRot < 0) @@ -147,28 +149,28 @@ namespace LaptopSimulator2015.Levels public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime) { - //g.g.FillRectangle(new SolidBrush(Color.Green), player); - g.DrawRectangle(new RectangleF(center.toPointF(), new SizeF(10, 10)), Color.Green, transform:false); - g.g.DrawLine(new Pen(new SolidBrush(Color.Green), 5), center.toPoint(), cannon.toPoint()); + g.DrawRectangle(new RectangleF(center.toPointF(), new SizeF(10, 10)), Color.Green); + g.DrawLine(center, cannon, Color.Green, 5); for (int i = 0; i < targets.Count; i++) { - g.g.DrawEllipse(new Pen(new SolidBrush(Color.Red), 6), new RectangleF(Misc.d2f(targets[i].X - 10), Misc.d2f(targets[i].Y - 10), 20, 20)); - g.g.DrawEllipse(new Pen(new SolidBrush(Color.White), 6), new RectangleF(Misc.d2f(targets[i].X - 7), Misc.d2f(targets[i].Y - 7), 14, 14)); - g.g.FillEllipse(new SolidBrush(Color.Red), new RectangleF(Misc.d2f(targets[i].X - 3), Misc.d2f(targets[i].Y - 3), 6, 6)); - g.g.DrawLine(new Pen(new SolidBrush(Color.Gray), 3), Misc.d2f(targets[i].X - 13), Misc.d2f(targets[i].Y - 15), Misc.d2f(targets[i].X + 13), Misc.d2f(targets[i].Y - 15)); - g.g.DrawLine(new Pen(new SolidBrush(Color.Red), 3), Misc.d2f(targets[i].X - 13), Misc.d2f(targets[i].Y - 15), Misc.d2f(targets[i].X + ((((double)targets[i].Tag) * 0.2) - 12.9) + 0.1), Misc.d2f(targets[i].Y - 15)); + g.DrawRectangle(new Rect(targets[i], new Vector2(20, 20), true), Color.AliceBlue); + + g.g.DrawEllipse(new Pen(new SolidBrush(Color.Red), 6), new RectangleF(Misc.d2f(targets[i].X - 10), Misc.d2f(minigamePanel.Height - 10 - targets[i].Y), 20, 20)); + g.g.DrawEllipse(new Pen(new SolidBrush(Color.White), 6), new RectangleF(Misc.d2f(targets[i].X - 7), Misc.d2f(minigamePanel.Height - 7 - targets[i].Y), 14, 14)); + g.g.FillEllipse(new SolidBrush(Color.Red), new RectangleF(Misc.d2f(targets[i].X - 3), Misc.d2f(minigamePanel.Height - 3 - targets[i].Y), 6, 6)); + + g.DrawLine(new Vector2(targets[i].X - 13, targets[i].Y + 15), new Vector2(targets[i].X + 13, targets[i].Y + 15), Color.Gray, 3); + g.DrawLine(new Vector2(targets[i].X - 13, targets[i].Y + 15), new Vector2(targets[i].X + ((((double)targets[i].Tag) * 0.2) - 12.9) + 0.1, targets[i].Y + 15), Color.Red, 3); } if (firing) { - //g.g.DrawRectangle(new Pen(new SolidBrush(Color.Green), 1), new Rectangle(Misc.d2i(targ.X - power / 2), Misc.d2i(targ.Y - power / 2), Misc.d2i(power), Misc.d2i(power))); - g.DrawRectangle(new RectangleF(targ.toPointF(), new SizeF(Misc.d2f(power), Misc.d2f(power))), Color.Green, filled: false, transform: false); - g.g.DrawLine(new Pen(new SolidBrush(Color.Green), 1), new PointF(Misc.d2i(targ.X), Misc.d2i(targ.Y - power / 2)), new PointF(Misc.d2i(targ.X), Misc.d2i(targ.Y + power / 2))); - g.g.DrawLine(new Pen(new SolidBrush(Color.Green), 1), new PointF(Misc.d2i(targ.X - power / 2), Misc.d2i(targ.Y)), new PointF(Misc.d2i(targ.X + power / 2), Misc.d2i(targ.Y))); + g.DrawRectangle(new Rect(targ, new Vector2(power, power), true), Color.Green, filled: false); + g.DrawLine(targ + new Vector2(-power / 2, 0), targ + new Vector2(power / 2, 0), Color.Green, 1); + g.DrawLine(targ + new Vector2(0, -power / 2), targ + new Vector2(0, power / 2), Color.Green, 1); } else { - //g.g.FillRectangle(new SolidBrush(Color.Green), new RectangleF(Misc.d2f(targ.X - 2.5f), Misc.d2f(targ.Y - 2.5f), 5, 5)); - g.DrawRectangle(new RectangleF(targ.toPointF(), new SizeF(5, 5)), Color.Green, transform: false); + g.DrawRectangle(new RectangleF(targ.toPointF(), new SizeF(5, 5)), Color.Green); } } } diff --git a/3g/3.cs b/3g/3.cs index 459baf7..5571543 100644 --- a/3g/3.cs +++ b/3g/3.cs @@ -77,6 +77,7 @@ namespace LaptopSimulator2015.Goals public Color backColor => Color.Black; public string[] credits => new string[]{ "Testexetrisathlon Icon made by Freepik from www.flaticon.com" }; + public bool isLowQuality => true; public static int[,] grid = new int[23, 10]; public static int[,] droppedtetrominoeLocationGrid = new int[23, 10]; @@ -203,11 +204,11 @@ namespace LaptopSimulator2015.Goals if (grid[y, x] == 1 | droppedtetrominoeLocationGrid[y, x] == 1) g.DrawRectangle(new RectangleF(x * 10, y * 10, 10, 10), Color.White, false, false); } - g.g.DrawLine(new Pen(Color.DarkGray), new Point(0, (y + 1) * 10), new Point(10 * 10, (y + 1) * 10)); + g.DrawLine(new Point(0, (y + 1) * 10), new Point(10 * 10, (y + 1) * 10), Color.DarkGray, 1, false); } for (int x = 0; x < 10; x++) { - g.g.DrawLine(new Pen(Color.DarkGray), new Point((x + 1) * 10, 0), new Point((x + 1) * 10, 23 * 10)); + g.DrawLine(new Point((x + 1) * 10, 0), new Point((x + 1) * 10, 23 * 10), Color.DarkGray, 1, false); } g.DrawSizedString("Level " + level, 10, new PointF(150, 10), Brushes.White, false); g.DrawSizedString("Score " + score, 10, new PointF(150, 30), Brushes.White, false); diff --git a/4/4.cs b/4/4.cs index 3346f55..84865ec 100644 --- a/4/4.cs +++ b/4/4.cs @@ -56,6 +56,7 @@ namespace LaptopSimulator2015.Levels public Panel desktopIcon { get; set; } public int installerProgressSteps => 500; public Color backColor => Color.Black; + public bool isLowQuality => false; public string[] credits => new string[] { "Level4 Icon made by Microsoft" }; Random rnd; diff --git a/Base/Base.csproj b/Base/Base.csproj index 5e5a783..a5462f2 100644 --- a/Base/Base.csproj +++ b/Base/Base.csproj @@ -53,6 +53,12 @@ + + + {23DE4AE0-5075-4CCC-8440-4D131CA0FBBA} + W32 + + diff --git a/Base/Drawing.cs b/Base/Drawing.cs index dd6c0a8..5dd50be 100644 --- a/Base/Drawing.cs +++ b/Base/Drawing.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace Base { - public class GraphicsWrapper : IDisposable + public sealed class GraphicsWrapper : IDisposable { BufferedGraphics _g; Color backColor; @@ -127,7 +127,7 @@ namespace Base /// /// Render and dispose /// - public virtual void Dispose() + public void Dispose() { g.Flush(); _g.Render(); diff --git a/Base/Input.cs b/Base/Input.cs index bc1df33..710b72e 100644 --- a/Base/Input.cs +++ b/Base/Input.cs @@ -1,4 +1,5 @@ -using System; +using CC_Functions.W32; +using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; @@ -9,10 +10,8 @@ using System.Windows.Input; namespace Base { - public class Input + public static class Input { - [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] - private static extern short GetKeyState(int keyCode); /// /// Check whether the Key is pressed /// @@ -22,17 +21,11 @@ namespace Base { try { - int state = 0; - short retVal = GetKeyState((int)key); - if ((retVal & 0x8000) == 0x8000) - state |= 1; - if ((retVal & 1) == 1) - state |= 2; - return 1 == (state & 1); + return KeyboardReader.IsKeyDown(key); } - catch (Exception e1) + catch (Exception e) { - Console.WriteLine("Invader: IsKeyDown failed:\r\n" + e1.ToString()); + Console.WriteLine("Invader: IsKeyDown failed:\r\n" + e.ToString()); return false; } } diff --git a/Base/Minigame.cs b/Base/Minigame.cs index 1bd7a97..cd08d57 100644 --- a/Base/Minigame.cs +++ b/Base/Minigame.cs @@ -32,6 +32,14 @@ namespace LaptopSimulator2015 /// int gameClock { get; } /// + /// Color to be painted to the Background before calling the draw method + /// + Color backColor { get; } + /// + /// In what quality to draw the frames + /// + bool isLowQuality { get; } + /// /// DO NOT CHANGE! INTERNAL USE ONLY! /// Panel desktopIcon { get; set; } @@ -58,10 +66,6 @@ namespace LaptopSimulator2015 /// The timer used for scheduling frames /// The amount of total displayed frames void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime); - /// - /// Color to be painted to the Background before calling the draw method - /// - Color backColor { get; } } public interface Level : Minigame { diff --git a/Base/Rect.cs b/Base/Rect.cs index dc08c41..0ccb3cd 100644 --- a/Base/Rect.cs +++ b/Base/Rect.cs @@ -12,16 +12,10 @@ namespace Base /// /// Create a rect from the provided data /// - /// Bottom-left point - /// Amount to extend top-right - public Rect(Vector2 Location, Vector2 Size, bool centered = false) - { - this.Location = Location ?? throw new ArgumentNullException(nameof(Location)); - this.Size = Size ?? throw new ArgumentNullException(nameof(Size)); - this.centered = centered; - if (this.centered) - this.Location -= this.Size / 2; - } + /// Position + /// Rect's size + /// Whether the Rect should be created top-right or around the Location + public Rect(Vector2 Location, Vector2 Size, bool centered = false) : this(Location.X, Location.Y, Size.X, Size.Y, centered) { } /// /// Create a rect from the provided data @@ -30,13 +24,18 @@ namespace Base /// Y in world-coordinates /// Width /// Height + /// Whether the Rect should be created top-right or around the Location public Rect(double X, double Y, double Width, double Height, bool centered = false) { Location = new Vector2(X, Y); Size = new Vector2(Width, Height); this.centered = centered; if (this.centered) - Location -= Size / 2; + { + //Location -= Size / 2; + Location.X -= Size.X / 2; + Location.Y += Size.Y / 2; + } } /// @@ -47,17 +46,18 @@ namespace Base { Location = rect.Location; Size = rect.Size; + centered = rect.centered; } - public Rect(Rectangle rect) - { - Location = new Vector2(rect.Location); - Size = new Vector2(rect.Size); - } - public Rect(RectangleF rect) - { - Location = new Vector2(rect.Location); - Size = new Vector2(rect.Size); - } + /// + /// Copies the Rect's data + /// + /// + public Rect(Rectangle rect) : this(rect.X, rect.Y, rect.Width, rect.Height, false) { } + /// + /// Copies the Rect's data + /// + /// + public Rect(RectangleF rect) : this(rect.X, rect.Y, rect.Width, rect.Height, false) { } public double X { diff --git a/LaptopSimulator2015/FakeDesktop.cs b/LaptopSimulator2015/FakeDesktop.cs index 7f95931..9351eaf 100644 --- a/LaptopSimulator2015/FakeDesktop.cs +++ b/LaptopSimulator2015/FakeDesktop.cs @@ -66,10 +66,10 @@ namespace LaptopSimulator2015 bool tmp__mode_uiv = false; [DllImport("winmm.dll")] - public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume); + static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume); [DllImport("winmm.dll")] - public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume); + static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume); public FakeDesktop() { @@ -482,7 +482,7 @@ namespace LaptopSimulator2015 uint minigamePrevTime = 0; private void InvadersPanel_Paint(object sender, PaintEventArgs e) { - using (GraphicsWrapper w = new GraphicsWrapper(e.Graphics, levels[levelInd].backColor, new Rectangle(Point.Empty, minigamePanel.Size))) + using (GraphicsWrapper w = new GraphicsWrapper(e.Graphics, levels[levelInd].backColor, new Rectangle(Point.Empty, minigamePanel.Size), levels[levelInd].isLowQuality)) { w.Clear(); levels[levelInd].draw(w, minigamePanel, minigameClockT, minigameTime); @@ -658,11 +658,14 @@ namespace LaptopSimulator2015 private void optionsWindowCredit_Click(object sender, EventArgs e) { - string tmp = Path.GetTempFileName(); - File.Move(tmp, Path.ChangeExtension(tmp, "txt")); - tmp = Path.ChangeExtension(tmp, "txt"); - File.WriteAllLines(tmp, levels.SelectMany(s => s.credits).ToArray()); - Process.Start(tmp).Exited += (object sender1, EventArgs e1) => { File.Delete(tmp); }; + new Thread(() => { + string tmp = Path.GetTempFileName(); + File.Move(tmp, Path.ChangeExtension(tmp, "txt")); + tmp = Path.ChangeExtension(tmp, "txt"); + File.WriteAllLines(tmp, levels.SelectMany(s => s.credits).ToArray()); + Process.Start(tmp).WaitForExit(); + File.Delete(tmp); + }).Start(); } bool devWindowMoving = false; @@ -706,9 +709,9 @@ namespace LaptopSimulator2015 [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); - const UInt32 SWP_NOSIZE = 0x0001; - const UInt32 SWP_NOMOVE = 0x0002; - const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE; + const uint SWP_NOSIZE = 0x0001; + const uint SWP_NOMOVE = 0x0002; + const uint TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); diff --git a/LaptopSimulator2015/Program.cs b/LaptopSimulator2015/Program.cs index 5120b7a..c30b8f0 100644 --- a/LaptopSimulator2015/Program.cs +++ b/LaptopSimulator2015/Program.cs @@ -15,6 +15,7 @@ namespace LaptopSimulator2015 class Program { public static Splash splash; + [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); diff --git a/LevelTest/Program.cs b/LevelTest/Program.cs index 45cf8a2..fa0b50c 100644 --- a/LevelTest/Program.cs +++ b/LevelTest/Program.cs @@ -32,7 +32,7 @@ namespace LevelTest } else { - string[] tmp = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories).Where(s => Path.GetFileName(s) != "Base.dll").ToArray(); + string[] tmp = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories).Where(s => Path.GetFileName(s) != "Base.dll" && Path.GetFileName(s) != "CC-Functions.W32.dll").ToArray(); if (tmp.Length == 0) using (FolderBrowserDialog openFileDialog = new FolderBrowserDialog()) { @@ -42,7 +42,7 @@ namespace LevelTest throw new Exception("Please select a folder"); } } - Minigame[] levels = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories).Where(s => Path.GetFileName(s) != "Base.dll") + Minigame[] levels = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories).Where(s => Path.GetFileName(s) != "Base.dll" && Path.GetFileName(s) != "CC-Functions.W32.dll") .Select(s => Assembly.LoadFrom(s)).SelectMany(s => s.GetTypes()).Distinct() .Where(p => typeof(Minigame).IsAssignableFrom(p)).Distinct().Except(new Type[] { typeof(Minigame), typeof(Level), typeof(Goal) }) .Select(s => (Minigame)Activator.CreateInstance(s)).OrderBy(lv => lv.availableAfter).ToArray(); diff --git a/ToDo.txt b/ToDo.txt index ae5e6e0..99b69a0 100644 --- a/ToDo.txt +++ b/ToDo.txt @@ -1 +1,2 @@ -Fully implement new graphics on Goal and Level 3 \ No newline at end of file +Implement drawing ellipses (Level 3) +Fix Physics weirdness in Level 3 \ No newline at end of file diff --git a/tmp1/3g.dll b/tmp1/3g.dll new file mode 100644 index 0000000000000000000000000000000000000000..e5f566716af11c3cab2c51bb474307cd4bf750a0 GIT binary patch literal 54272 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 K{IB@Gu)yCUz}0L3 literal 0 HcmV?d00001 diff --git a/tmp3/LevelTest.exe b/tmp3/LevelTest.exe new file mode 100644 index 0000000000000000000000000000000000000000..4eeafb24990d5dfb492d67731956766886ff804e GIT binary patch literal 13824 zcmeHNf1Fg+bwBUU?3-Wgurt6eAmFe_9Cw#tmtTScvcJGp7MA@18a42C=I!pt%)Ifv znUxim3?ZadYbr@;#UyQ_O+KaiNi;DLqNbX}G@5GBG->ohO~jZ_t!=4Ennc@TzvsU9 zW@dpT{?q=^=Iy@o?)h=gJ@?#m&%5`&>3#p*TR1qDwqkkH7&WzQEUD#kMj9+PGYNU|TO4I_1-=;QRgJ%r)F5GNg3=d)3jS{I0`1&+%(D@Ry>kv_$ z{I5J6)E1%Vdx*Ajc^A=xH4d@*Q6icKd;{cGSJQu6IaW4ZO8S9cT~#Mh(DxL8$D07a zlYMpU1}3i%$ z8nZz21XZJ+dBSTn@U!U-5)OYh@JVR#iiY?cDHES7MH)r?B3U4At6ADj5%RQz#9nT0 z=2=g(QXf=X!f1*K#yl1$;fbSPXan^;)C|?~64nAxC)p+uznBGV11>UR6{NvfSV8LR ztwvzRq6*1`w!DFuc5BB@gA!8#ti>$*z6z_}xU_ zjH8Fp+7QQN!1El%@gl=$`uMU6&2~KWW7HrI zgWw9=pg7`3s#wWS_M4!j>$aJbKIt-NY|pA8uC@x2rON??XVNSA@H~%sfRVjSGBAyT z#u`?Mv6hr8m?8sUKi4&`WM-4ee1wd*;krqFh`q=KUSq9fUesDcpMxzhHUi>05FKUf zQQUu(#HIWO6s>lEdaDC4NUG6^Cv4)jRa>iTAh%<5*=)N_%s1~@rT(lE^0h4a4VAiO zCEMUhu0-@oNNw?{cKDsbSSmOl!Kj-bK;vxCW5dW-%Nu)w-4&+-x_<<}?_+73AWG6ApHioK<1EGbOf2soydsrrI)fO0W@zJtZ3ANc1wE z&zTzV+IdssdhW0c$@0{wkK6O$W+w`&Bgg1t)fi)r%bD;EhChPLxsA#7@qXEGi%)#C zUS_9h{xt`A^hEu=rjC}(G&eT@srVp3ZJ=fD1z1C@rFqi@INQOQ;f;7(F1`SB2dlN~ zhRoe)$hr=c+i3NjY(gA84Vrg>+z@|1iu=Pbe({oq_wBDm;jD`MtXemKvAD#XIEK8L zUkJ@JY9cl0jxs}ys4X4V2Ou)TM-iW~6Qu^w{Skl5bl|&ym)k#DY5$elh_A&D0hymq zoo~tXsg__gTuYcEE!mGLRc$Ta8mgs9YncG3}FOA?g;uUxJZrXP#4*6#*A8u)EWk`c-|&aQ#+CX+M}Q0PT*b$y$CdUG5t6j zgXe2_x^!kjjNWAdj3_)t=!o(@5x+(1#k}Kp(;Cn*juG0A=8;DgECL$ItW_v~5_BO) z$}myIvH(K963f}r)0*Yd2YM8loY4{JfqT5cW>T9PNt76Aa`_lk@TZmeB3@uqnzmaA z6*XQ2Qh*LoVv(kV1#hb*o>5I$zeuZ_?)AjSA!c3+`{K8v)Dm?lH@OrnWZtXT0#AGo zbTlpS7!&;5SP4##aT`;XdE$HVEWi|n#r81~Pk#G0bqrk7p-3;=Ysm2xiPpsO*5z&N zRCpCJL;r{fT(qBP5NS8tTEjl)er8 zY7D@lj*KzP!niP$%8vQ>1p?4R?OSjXc#ouf(ED&rkbJ%~fiNxg-=zjA8#)tEDG@xas`QP(X*Ej!ARaKkZTJ3m&%Tlb+M4`>PtR`xPJ8og{|0huD%U=_*B~2FQfz2c8Jz z&v-t?(02y#o4)IOVfsDKUEs#N47Ynaeb>@GaA1&LlWzdHtu6=4U9U(4!}$d>Aqh&_|$0r7Wz9()*RPr=I@E&$TQYic>XVYL$I| z7k&uRpQ09~0Lm(Tr-pm+SZEIHpA-z2stk|$<|uP%wRq7Nq&H=+x5BC@J*+-NQQ8YQ zmwM<$^!-Dihe<<^RGNT=JeEN@q#UOTBCJ6@8Eltj#ymd8ys)^0h1Sd9^}-97e&GGW zUkosY2?*Yo1I55+z`>?rVI5rwoxR}9M9uclcZEXpg5L-H0KE+OsQL=v8F3o$KP9xe z_p7givPgMDL};4tUjR3HehT=G@=LLbROLTJJ-v*KRS)|ZE+!xRH%fJYAEp@Kz0?Hw zOzR=@Sw=KPnaH$Gw&c;P-!}STVfygzv&zEOsBfbnD=pi!jl7bse@hNDFADg*dP15gL^%7 zv`J!Yr;73Eli1s6gqfcWjcom2K(cAPn4`&~R-U!sy3AzJmN1-2MP6+w} zvf0$~i<0u{dysi9z;*XY`4(hSh0cd3(TYnCBAszLKnMK_VwOEN2M{?0u#Va!Tq9w- zggp{&lkj>8HNaVvmgQR{oRIJZK$TvSFrpmv&!stlDy;#GVf?v#n0^>&p&lhJmeDpv z3Dwc{%F@tkaIN54z#MYfHsx`|Ol6kOW>;Xuft@`qeR5c(3>wG<;sXLvJZZ19O$Plx@KU%G=6o z$|6M(mj*8bd^nU)0`LNOW2DX&UP zE)&z#eJC$dk08I3l5^yiz zHyn5;z2<#QmUk&kFDVBBFQra8NJx!ySAdl1WxEuJp|?hYRJ2-weO zXVbA};6(m3tO%>vL&OiAE{MbXgzTk2~cU%6Sl(z7Ay{T0KEGE05uRn*LmQhJK)Y zhkmM@!2JU5r)i1!d)gr$qnpIjbTjfGuC?pe?A+P9vz6BNYU$kiVFyVh3x>&98?$Vg zwrZI+>gmoEv%0AbXY^gbwwfv3)KgQ4nY2~tF!rFLtzlWUhGn#|m`m;g&1NpIW&*LP zE2^n0XtS0t82N#8wwTdi;j-4Ym98WTl`fR2tE#C$Y^|49Q-Q2s1A>t%X7u$mkiJdd zNCOjALC+?7wo*2oOOI+t2vy>4lx$ zIre*sxV+IYvs$5mWxh)tn8+o^Oe2S$q^MudXSAeFou;l8^q!nm&~iXi`iNG{6v{Yj zYA+Uyfuxqv;R~HcLFv^kOB>axJ(cQbv#2LGZtT{nGR)M|mA3MR#r9BtF;_@u^}&g} zezlfMfwD<2Ft*V&vJRymU4<&}Hl_hO;WPu!Lb?Fh1s@L-CQx#F)?sj9*))tqVH1Wz zGPiI6>RF3h?n;}`ZkQ92(Cdtx>`9Kr-LV{mk!7UM)W;=ZhnX(uo6|X+*ksxRA6$UKXp0?6cgxf7k&kkoM26-qeqGhtFrSz<3?yj%~ zH4{GFh)+@atwuG&t;2)6T{kUwvQo=sB6LR5qeb-dg6uBcN}B2XRHp4gS)*UiXnSPI zI$w96iFA-GoX_Yq@)KrybnJqxY+lPvRO&d>f!jno!|6=AP{keBGDV#>>*IQ6P`3&R zeUBYsoPcC_l?$Djw4N(S)X7VZ=7i%L%zd(V`jnEhQ4;JF)@5q9G72lQM$XPbw9&|5 zR>^?VO@}rxX58u&tJ0MWdN&XCX@xOK=s-%@jT~2<8g~w+LF1Gs3!F1$foBTOYgw_J zNokXzWn?#das}OlGb&Rpn>TXkFlV7mWtwU^VA5TbVW)BGDBz{Vahxld2AD{wZW#l} zpEw<*#95e=5cOCHpY*8ApOU~Y4Njrt&f;DzM@+QG08Z&i8ab+((~_~-uqSxM>Z)LL ziJNemf;oPhj52DMuLzgdua7t{4cQUcUwMtt*5R9x$f^hfx@IQFw#sOx?mbD}E+G!c z$vQo`5rguscBHXekZ({6*5b8dO7HhOi3(jrRyU~+-7IvE!`F6lHr?u+8M=&Y!k#XW z=>7=y-&%C2v8`shqnLtJ`q|!|th!b=JM|zw*hszlIVw_*$B$pb1 zoVTTrtJ$>$F*%wutO6QyNpASd(7}2D@sm#K=doSu&*M98u&QQXRmkH*t)0)S`EHn8 zkcnV}4+?4BO1Lhzss!z{i%G~4U9GfI&wZm7bWV8|Q1&BIY*EX|m!IXnO3_Q_ol-S? z?IzCnkW4M0Ao0ngoZvC5Nf}=I_Ed=Q!P3ltkK+^AOhT z!OXIps6_i5xcnZ&q5}mU*)DrI!M3s2Io)OSL3}{(m(hp5yAm=T$dwRWg_kMy;H?fE zS&wVV7G)NZ!CB5ReLVel+O$3cVM`r+vN>pA5(BZPL}ff>uLg~LF9L@KidG(GY}O`> zVgU;x3kz2VVQbh-%8XMAnUa$Hj^;&%?Ic@|HY}HBvZrn?v?->J)j-ZJvo21FS#$-< zURkwQ+f&A!^&ZKka>oP>8ZzjlR`;FeI2RLif(N{_XquRv<#mnp@3}N1zq2Q&--1ZN z`-Qr*c|g7*8Js6r1W%DcdvFRt4eey&PooLy0#C!4v4ImWx+n`QhkF#XEa}vTXAV!C zDMxxyX6{DFn&48%EkUEFkvAXcoK44Ge#q5DFbO8T4>=GU@@FJ>u7;3vK)yb+Dy?xKIE44Y7M>T^oQ0}>JLJi zy^=sLP3X=8H-V=mJwg5QX~23DHnA*4Ivi`ueYmU>yUiu=30uLIr=bb23~1efJ@2w| zZx#B?k)wA!TYG!&Up)HO=j%>C@GbJj6vgj}ky3*~B*JKzfvAZIB^*|nS~}|WDf8#m z#3)+&EX&QGhZ=sH_pryO2)lTK>-Zh|6E^KBrp=qpNVN1cBh#kYoM-IE3sUX(Y=L85 zHClQJ%EL825!GP?ntT;7QhMF1MoLe};!^>r0TL-aRU7j{@2g-(N^giDV|w)Z=uH7O zGun+kELe6!@)0e)Wn=&DgASH#@P+3`hoVD5i1}d=y#>#xUqp-8>MCBc9T5(PQ4|c| z9fDuL4cC%qRe0O2`b^*I{2>4kbQaBC+kHg z=hO+OqB5o80;MJ>!qLev%S9(8FIqaZ;Ma)TbroL_vJi`)#j-lsx`1keaM&Tg)K)qq z{KRPFz?=&iE-M5a(dZB>EgiyBQilAt$p;ogYq<^Xt28+}f&Sqk?V;9kYu=2zA>NFij})dA1?8bS#ye{={i4Ct3S7#{Hg&c^vJJ_O@hz#ljUMLn;7u$?L| z$*^U^t5t!VPhq*RLV@xcAD`(Yu|c6|c_R_~`mtCHCmHyRcbP($q()M!*Q{E(a!G5e zcKMPOsgc!7Ru3=Jm$Y3zvT|4-(O0&vX~hRX=x@XKKl~9+eraxEOZQ-TBh}*U3)bNq z;cA!}o>^w`?lYsw4RVz0#LAo)WW8)&yF$y|eTKUdN(>rC#!6t5VPNk*!5ie1yVU6@ zrg=BvZ(HRWbiG2?_NJ4jVHqQZgu99uO;RzqSxj0 zV!_lhEwR4hF!u1*>Jx)F@5rqizWj1+Wpd@Jwl&LF=&h^QEIPk2`|QJQ6a8}yg>Cq$ zSQr1Z&A+qzf7jpa{{Or>b&8)nB-?TC>A~I1l*+~5!>h0Ufvy3u@~+o*y?kiH@gKi4 zHazdq?{lnmTyf(-f9H+WQGFxMC2=UZ?8fp;ztI@J`9`_!uh0_t)G+-5ExT9UH7Lbg zZ0b`muYB$7G|cWjy4;q^DAx5vDucC@yxv_*u?Qrzv0;pNp8WeFcc)j` zskwHqkp8vzZ7J-%c;{6;2Itr1pV+fsr`9>wyXX3LwXD+)>v@lwMRa7aXO1D>r;f_G z^&U?W{S$}0bDeqYuhw3*C!2|l+lSce8nI|=jOn?gk-|D>UE|Q;#wDv8WBgGjg|9<7 zeO=>(ZZ%%DzBX7JT&p=J>M^LuS?d~c)NqBB9K$KPwIu7Vua@AT<_gWqCdS(uV_7Yi z9>Hm{yTFm{L0K$TR@Rfki2_avrr5-*pvD+~Bw5$kJ5hDmnZWU0<5F8g!7N(%Vl-mB zM|+kv%6e$q(vwAeU72ujP)rW&b8(*8eo TZLojucL{z4_`B=>p9lUM2K2SJ literal 0 HcmV?d00001