From 5b14e118463787026802795836614f1b4d96a769 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:36:39 +0530
Subject: [PATCH 01/18] Create index.html
---
Games/Mechanica/index.html | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Games/Mechanica/index.html
diff --git a/Games/Mechanica/index.html b/Games/Mechanica/index.html
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/Games/Mechanica/index.html
@@ -0,0 +1 @@
+
From 502cd61e099b20900b4ea7b0955e2db102fb0d53 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:37:14 +0530
Subject: [PATCH 02/18] Create styles.css
---
Games/Mechanica/styles.css | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Games/Mechanica/styles.css
diff --git a/Games/Mechanica/styles.css b/Games/Mechanica/styles.css
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/Games/Mechanica/styles.css
@@ -0,0 +1 @@
+
From f32868982254d7da14631db6c76c51907196b6af Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:37:27 +0530
Subject: [PATCH 03/18] Create scripts.js
---
Games/Mechanica/scripts.js | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Games/Mechanica/scripts.js
diff --git a/Games/Mechanica/scripts.js b/Games/Mechanica/scripts.js
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/Games/Mechanica/scripts.js
@@ -0,0 +1 @@
+
From 6b4a52ea830a7183e00b44ed057f960143e0295d Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:37:44 +0530
Subject: [PATCH 04/18] Create README.md
---
Games/Mechanica/README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Games/Mechanica/README.md
diff --git a/Games/Mechanica/README.md b/Games/Mechanica/README.md
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/Games/Mechanica/README.md
@@ -0,0 +1 @@
+
From 5ba6e266c8c15c03621f1bcef62250c911dd97a6 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:38:32 +0530
Subject: [PATCH 05/18] Update README.md
---
Games/Mechanica/README.md | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/Games/Mechanica/README.md b/Games/Mechanica/README.md
index 8b13789179..ed6a64ecc3 100644
--- a/Games/Mechanica/README.md
+++ b/Games/Mechanica/README.md
@@ -1 +1,31 @@
+# **Game_Name**
+---
+
+
+
+## **Description đ**
+
+-
+
+## **functionalities đŽ**
+
+-
+
+
+## **How to play? đšī¸**
+
+-
+
+
+
+## **Screenshots đ¸**
+
+
+
+
+
+
+
+## **Working video đš**
+
From d39b6461d2ccda2331946de25f5432df9d58c1e3 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:43:06 +0530
Subject: [PATCH 06/18] Update README.md
---
Games/Mechanica/README.md | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/Games/Mechanica/README.md b/Games/Mechanica/README.md
index ed6a64ecc3..12bcc09a6a 100644
--- a/Games/Mechanica/README.md
+++ b/Games/Mechanica/README.md
@@ -1,4 +1,4 @@
-# **Game_Name**
+# **Mechanica**
---
@@ -6,16 +6,19 @@
## **Description đ**
+You are a mechanical seahorse trapped in a silicon-rich planet with hostile swarms of fishlike enemies on your tail. Can you survive the raid?
-
## **functionalities đŽ**
--
+- 2d Shooter game with good graphical element.
## **How to play? đšī¸**
--
+- Arrow Up / Arrow Down to control your player.
+- Spacebar to shoot.
+- D to toggle debug mode on/off.
@@ -24,8 +27,8 @@
+![image](https://github.com/Winter262005/GameZone/assets/151992419/94a5a889-d612-446d-a857-03eef34a694d)
+
-## **Working video đš**
-
From 584f68eb6deb33e3cef65ef3d4570d7f3fba53c2 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:45:17 +0530
Subject: [PATCH 07/18] Update README.md
---
Games/Mechanica/README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/Games/Mechanica/README.md b/Games/Mechanica/README.md
index 12bcc09a6a..67d658367d 100644
--- a/Games/Mechanica/README.md
+++ b/Games/Mechanica/README.md
@@ -27,7 +27,6 @@ You are a mechanical seahorse trapped in a silicon-rich planet with hostile swar
-![image](https://github.com/Winter262005/GameZone/assets/151992419/94a5a889-d612-446d-a857-03eef34a694d)
From 00ca6f06f7d53c86303cd5e97e73a7734a16d951 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:48:31 +0530
Subject: [PATCH 08/18] Update index.html
added HTML code
---
Games/Mechanica/index.html | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/Games/Mechanica/index.html b/Games/Mechanica/index.html
index 8b13789179..de0b23b769 100644
--- a/Games/Mechanica/index.html
+++ b/Games/Mechanica/index.html
@@ -1 +1,29 @@
+
+
+
+
+
+
+
+ JavaScript Game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From bf1e9d0f1f7994f7e210bb0be95e0f5746c81234 Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 22:53:34 +0530
Subject: [PATCH 09/18] Update scripts.js
Added JavaScript Code
---
Games/Mechanica/scripts.js | 329 ++++++++++++++++++++++++++++++++++++-
1 file changed, 328 insertions(+), 1 deletion(-)
diff --git a/Games/Mechanica/scripts.js b/Games/Mechanica/scripts.js
index 8b13789179..d62cbe10da 100644
--- a/Games/Mechanica/scripts.js
+++ b/Games/Mechanica/scripts.js
@@ -1 +1,328 @@
-
+window.addEventListener('load', function() {
+ // canvas setup
+ const canvas = document.getElementById('canvas1');
+ const ctx = canvas.getContext('2d');
+ canvas.width = 700;
+ canvas.height = 500;
+
+ class InputHandler {
+ constructor(game) {
+ this.game = game;
+ window.addEventListener('keydown', e => {
+ if (((e.key === 'ArrowUp') || (e.key === 'ArrowDown')) && this.game.keys.indexOf(e.key) === -1) {
+ this.game.keys.push(e.key);
+ } else if (e.key === ' ') {
+ this.game.player.shootTop();
+ } else if (e.key === 'd') {
+ this.game.debug = !this.game.debug;
+ }
+ });
+ window.addEventListener('keyup', e => {
+ if (this.game.keys.indexOf(e.key) > -1) {
+ this.game.keys.splice(this.game.keys.indexOf(e.key), 1);
+ }
+ });
+ }
+ }
+ class Projectile {
+ constructor(game, x, y) {
+ this.game = game;
+ this.x = x;
+ this.y = y;
+ this.width = 10;
+ this.height = 3;
+ this.speed = 3;
+ this.markedForDeletion = false;
+ }
+ update() {
+ this.x += this.speed;
+ if (this.x > this.game.width * 0.8) this.markedForDeletion = true;
+ }
+ draw(context) {
+ context.fillStyle = 'yellow';
+ context.fillRect(this.x, this.y, this.width, this.height);
+ }
+ }
+ class Particle {
+
+ }
+ class Player {
+ constructor(game) {
+ this.game = game;
+ this.width = 120;
+ this.height = 190;
+ this.x = 20;
+ this.y = 100;
+ this.frameX = 0;
+ this.frameY = 0;
+ this.maxFrame = 37;
+ this.SpeedY = 0;
+ this.maxSpeed = 3;
+ this.projectiles = [];
+ this.image = document.getElementById('player');
+ }
+ update() {
+ if (this.game.keys.includes('ArrowUp')) this.SpeedY = -this.maxSpeed;
+ else if (this.game.keys.includes('ArrowDown')) this.SpeedY = this.maxSpeed;
+ else this.SpeedY = 0;
+ this.y += this.SpeedY;
+ this.projectiles.forEach(projectile => {
+ projectile.update();
+ });
+ this.projectiles = this.projectiles.filter(projectile => !projectile.markedForDeletion);
+ if (this.frameX < this.maxFrame){
+ this.frameX++;
+ }else{
+ this.frameX = 0;
+ }
+ }
+ draw(context) {
+ if (this.game.debug) context.strokeRect(this.x, this.y, this.width, this.height);
+ context.drawImage(this.image, this.frameX * this.width, this.frameY * this.height, this.width, this.height, this.x, this.y, this.width, this.height);
+ this.projectiles.forEach(projectile => {
+ projectile.draw(context);
+ });
+ }
+ shootTop() {
+ if (this.game.ammo > 0) {
+ this.projectiles.push(new Projectile(this.game, this.x + 80, this.y + 30));
+ this.game.ammo--;
+ }
+ }
+ }
+ class Enemy {
+ constructor(game) {
+ this.game = game;
+ this.x = this.game.width;
+ this.SpeedX = Math.random() * -1.5 - 0.5;
+ this.markedForDeletion = false;
+ this.frameX = 0;
+ this.frameY = 0;
+ this.maxFrame = 37;
+ }
+ update() {
+ this.x += this.SpeedX - this.game.speed;
+ if (this.x + this.width < 0) this.markedForDeletion = true;
+ if (this.frameX < this.maxFrame){
+ this.frameX++;
+ } else {
+ this.frameX = 0;
+ }
+ }
+ draw(context) {
+ if (this.game.debug) context.strokeRect(this.x, this.y, this.width, this.height);
+ context.drawImage(this.image, this.frameX * this.width, this.frameY * this.height, this.width, this.height, this.x, this.y, this.width, this.height, );
+ context.font = '20px Helvetica';
+ context.fillText(this.lives, this.x, this.y);
+ }
+ }
+ class Angler1 extends Enemy {
+ constructor(gane) {
+ super(game);
+ this.width = 228;
+ this.height = 169;
+ this.y = Math.random() * (this.game.height * 0.9 - this.height);
+ this.image = document.getElementById('angler1');
+ this.frameY = Math.floor(Math.random() * 3);
+ this.lives = 2;
+ this.score = this.lives;
+ }
+ }
+ class Angler2 extends Enemy {
+ constructor(gane) {
+ super(game);
+ this.width = 213;
+ this.height = 165;
+ this.y = Math.random() * (this.game.height * 0.9 - this.height);
+ this.image = document.getElementById('angler2');
+ this.frameY = Math.floor(Math.random() * 2);
+ this.lives = 3;
+ this.score = this.lives;
+ }
+ }
+ class LuckyFish extends Enemy {
+ constructor(gane) {
+ super(game);
+ this.width = 99;
+ this.height = 95;
+ this.y = Math.random() * (this.game.height * 0.9 - this.height);
+ this.image = document.getElementById('lucky');
+ this.frameY = Math.floor(Math.random() * 2);
+ this.lives = 3;
+ this.score = 15
+ this.type = 'lucky';
+ }
+ }
+ class Layer {
+ constructor(game, image, speedModifier){
+ this.game= game;
+ this.image= image;
+ this.speedModifier= speedModifier;
+ this.width= 1768;
+ this.height= 500;
+ this.x= 0;
+ this.y= 0;
+ }
+ update(){
+ if (this.x <= -this.width) this.x = 0;
+ this.x -= this.game.speed * this.speedModifier;
+ }
+ draw(context){
+ context.drawImage(this.image, this.x, this.y);
+ context.drawImage(this.image, this.x + this.width, this.y);
+ }
+ }
+ class Background {
+ constructor(game){
+ this.game = game;
+ this.image1 = document.getElementById('layer1');
+ this.image2 = document.getElementById('layer2');
+ this.image3 = document.getElementById('layer3');
+ this.image4 = document.getElementById('layer4');
+ this.layer1 = new Layer(this.game, this.image1, 0.2);
+ this.layer2 = new Layer(this.game, this.image2, 0.4);
+ this.layer3 = new Layer(this.game, this.image3, 1);
+ this.layer4 = new Layer(this.game, this.image4, 1.5);
+ this.layers = [this.layer1, this.layer2, this.layer3];
+ }
+ update(){
+ this.layers.forEach(layer => layer.update());
+ }
+ draw(context){
+ this.layers.forEach(layer => layer.draw(context));
+ }
+ }
+ class UI {
+ constructor(game) {
+ this.game = game;
+ this.fontSize = 25;
+ this.fontFamoily = 'Helvetica';
+ this.color = 'white';
+ }
+ draw(context) {
+ context.save();
+ context.fillStyle = this.color;
+ context.shadowOffsetX = 2;
+ context.shadowOffsetY = 2;
+ context.shadowColor = 'black';
+ context.font = this.fontSize + 'px ' + this.fontFamily;
+ context.fillText('Score: ' + this.game.score, 20, 40);
+ for (let i = 0; i < this.game.ammo; i++) {
+ context.fillRect(20 + 5 * i, 50, 3, 20);
+ }
+ const formattedTime = (this.game.gameTime * 0.001).toFixed(1);
+ context.fillText('Timer: ' + formattedTime, 20, 100);
+ if (this.game.gameOver) {
+ context.textAlign = 'center';
+ let message1;
+ let message2;
+ if (this.game.score > this.game.winningScore) {
+ message1 = 'You Win!';
+ message2 = 'Well Done!';
+ } else {
+ message1 = 'You Lose!';
+ message2 = 'Try Again Next Time!';
+ }
+ context.font = '50px ' + this.fontFamily;
+ context.fillText(message1, this.game.width * 0.5, this.game.height * 0.5 - 40);
+ context.font = '25px ' + this.fontFamily;
+ context.fillText(message2, this.game.width * 0.5, this.game.height * 0.5 + 40);
+ }
+ context.restore();
+ }
+ }
+ class Game {
+ constructor(width, height) {
+ this.width = width;
+ this.height = height;
+ this.background = new Background(this);
+ this.player = new Player(this);
+ this.input = new InputHandler(this);
+ this.ui = new UI(this);
+ this.keys = [];
+ this.enemies = [];
+ this.enemyTimer = 0;
+ this.enemyInterval = 1000;
+ this.ammo = 20;
+ this.maxAmmo = 50;
+ this.ammoTimer = 0;
+ this.ammoInterval = 500;
+ this.gameOver = false;
+ this.score = 0;
+ this.winningScore = 69;
+ this.gameTime = 0;
+ this.timeLimit = 15000;
+ this.speed = 1;
+ this.debug = true;
+ }
+ update(deltaTime) {
+ if (!this.gameOver) this.gameTime += deltaTime;
+ if (this.gameTime > this.timeLimit) this, this.gameOver = true;
+ this.background.update();
+ this.background.layer4.update();
+ this.player.update();
+ if (this.ammoTimer > this.ammoInterval) {
+ if (this.ammo < this.maxAmmo) this.ammo++;
+ this.ammoTimer = 0;
+ } else {
+ this.ammoTimer += deltaTime;
+ }
+ this.enemies.forEach(enemy => {
+ enemy.update();
+ if (this.checkCollision(this.player, enemy)) {
+ enemy.markedForDeletion = true;
+ }
+ this.player.projectiles.forEach(projectile => {
+ if (this.checkCollision(projectile, enemy)) {
+ enemy.lives--;
+ projectile.markedForDeletion = true;
+ if (enemy.lives <= 0) {
+ enemy.markedForDeletion = true;
+ if(!this.gameOver) this.score += enemy.score;
+ if (this.score > this.winningScore) this.gameOver = true;
+ }
+ }
+ })
+ });
+ this.enemies = this.enemies.filter(enemy => !enemy.markedForDeletion);
+ if (this.enemyTimer > this.enemyInterval && !this.gameOver) {
+ this.addEnemy();
+ this.enemyTimer = 0;
+ } else {
+ this.enemyTimer += deltaTime;
+ }
+ }
+ draw(context) {
+ this.background.draw(context);
+ this.player.draw(context);
+ this.ui.draw(context);
+ this.enemies.forEach(enemy => {
+ enemy.draw(context);
+ });
+ this.background.layer4.draw(context);
+ }
+ addEnemy() {
+ const randomize = Math.random();
+ if (randomize < 0.3) this.enemies.push(new Angler1(this));
+ else if (randomize < 0.6) this.enemies.push(new Angler2(this));
+ else this.enemies.push(new LuckyFish(this));
+ }
+ checkCollision(rect1, rect2) {
+ return (rect1.x < rect2.x + rect2.width && rect1.x + rect1.width > rect2.x && rect1.y < rect2.y + rect2.height && rect1.height + rect1.y > rect2.y)
+ }
+ }
+
+ const game = new Game(canvas.width, canvas.height);
+ let lastTime = 0;
+
+ function animate(timeStamp) {
+ const deltaTime = timeStamp - lastTime;
+ lastTime = timeStamp;
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ game.update(deltaTime);
+ game.draw(ctx);
+ requestAnimationFrame(animate);
+ }
+ animate(0);
+ });
+
From 13ad99c75569d055ce60b231efca8e3b1b2e4eda Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 23:06:05 +0530
Subject: [PATCH 10/18] Update styles.css
Added CSS Code
---
Games/Mechanica/styles.css | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/Games/Mechanica/styles.css b/Games/Mechanica/styles.css
index 8b13789179..14215632cd 100644
--- a/Games/Mechanica/styles.css
+++ b/Games/Mechanica/styles.css
@@ -1 +1,20 @@
+{
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+#canvas1 {
+ border: 5px solid black;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background: #4d79bc;
+ max-width: 100%;
+ max-height: 100%;
+}
+
+#layer1, #layer2, #layer3, #layer4, #player, #angler1, #angler2, #lucky {
+ display: none;
+}
From e5fcfcecdc33279ebae1e4c989dc9174f2e2f48c Mon Sep 17 00:00:00 2001
From: winter262005 <151992419+Winter262005@users.noreply.github.com>
Date: Tue, 4 Jun 2024 23:11:49 +0530
Subject: [PATCH 11/18] Add files via upload
---
Games/Mechanica/angler1.png | Bin 0 -> 452235 bytes
Games/Mechanica/angler2.png | Bin 0 -> 352158 bytes
Games/Mechanica/drone.png | Bin 0 -> 142972 bytes
Games/Mechanica/fireExplosion.png | Bin 0 -> 28069 bytes
Games/Mechanica/gears.png | Bin 0 -> 6147 bytes
Games/Mechanica/hivewhale.png | Bin 0 -> 416168 bytes
Games/Mechanica/layer1.png | Bin 0 -> 106909 bytes
Games/Mechanica/layer2.png | Bin 0 -> 74742 bytes
Games/Mechanica/layer3.png | Bin 0 -> 98915 bytes
Games/Mechanica/layer4.png | Bin 0 -> 23703 bytes
Games/Mechanica/lucky.png | Bin 0 -> 117507 bytes
Games/Mechanica/player.png | Bin 0 -> 285688 bytes
Games/Mechanica/projectile.png | Bin 0 -> 335 bytes
Games/Mechanica/smokeExplosion.png | Bin 0 -> 18671 bytes
14 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Games/Mechanica/angler1.png
create mode 100644 Games/Mechanica/angler2.png
create mode 100644 Games/Mechanica/drone.png
create mode 100644 Games/Mechanica/fireExplosion.png
create mode 100644 Games/Mechanica/gears.png
create mode 100644 Games/Mechanica/hivewhale.png
create mode 100644 Games/Mechanica/layer1.png
create mode 100644 Games/Mechanica/layer2.png
create mode 100644 Games/Mechanica/layer3.png
create mode 100644 Games/Mechanica/layer4.png
create mode 100644 Games/Mechanica/lucky.png
create mode 100644 Games/Mechanica/player.png
create mode 100644 Games/Mechanica/projectile.png
create mode 100644 Games/Mechanica/smokeExplosion.png
diff --git a/Games/Mechanica/angler1.png b/Games/Mechanica/angler1.png
new file mode 100644
index 0000000000000000000000000000000000000000..859e611dbd9103b804d945227577a71d7eb21e27
GIT binary patch
literal 452235
zcmbSybySp3^fxKpAiKa)OGt>MuynbkAjs0alz`OIAR#F(%hI5P2!gb9H!NM!Dbn2_
z?a%M;egA&{c%L)pIWu$4Gk4}b_uiTL%x6Bl(o!KKW+2AG!Xi^sRo2DAVsFO6!oDTM
z{a2IyQsf8=3rG8vrrwKxMLjVVK`_JF`8g*S8yOTzWuQ+~*UJ8wjE$cBk0mP`Jz4Q<
z>c{j{_`}nj-5o5Il?ig>v~(1d0BUkdQUO{5-1&8`k}?t|dJ;CK4-itPFR_9&__BaU
za==GCW;VH@R-ctAk5A8@8koBY5Ro^xXF{o|TRMWCliu9jU)|iilO(3Ds-^7ed-2+G
z20;M>lU(24#mkaga}uc=+7fE0f0LmukfBA3Qnv0s_zIH{YHPJc0f@(DqjGiLp#uvX
z34G$ihR~#xvFOy<3qo(-KYDccCV;H`Qq0fUissH)X$lgeN32vt&j6$^SqS6-xJF!r
z4m>1r5E@cW7Hd<1;
zvvN_>x5-igS&7lt1(1&?Qz$-V=#M22Rbb{9%B;^l*C|
z6r?524zRVM{fM+y<%22;QKqDu8Od_%sKFd`hN1KwQq+VcRU|q2_8vjIZ^4tVLC>rW
z{^|pjbd(R2=z=u)*EhCacv!6&Fpo%5xoC^Zgn0Ocqo!u&9(D9%-Ti%%|FzxfX?O47
zj14O)CF>T!F5X=8rJz*kQ$j^uvnVnw_M->1x*#wmIQKPwu#wb9Th(}dvE_WKrTf2b
z)@oRF_eMn-SoVzwf6Evf29%E}LLX!j;*evnQiagLTKxCH
z7e@zuvqov3?~Ii=izDG)kRuiwCfHfb8DDzt8Qs!Tm|UwVEAh{yG(B~-USrX)--$gu
zJgAu7y9-AC%cu?K>~1{pHvYDKsQENyeizIa5v`Tw`yFGpH2h`Wsy%V!ckN{T%GN{6
z_w1nu#8}f<-u*DTx4ztK2&mQHiuGtMTTNL(&v$;mBlMpTtdKAFh4h6u|7HLG9!u}T
z+3HZ%Xq@d5H}?AVpTl@iCJ7;8qz>b*LQW-aQ@Dm+M49&BVdvlFJe4jvLHqwR*>oxUmUb+Mu>2m1#K2SO|fMs9&%R
zksEUER{fdtFUfu3f8UXE+{J3;Rk+$0a|D`0k
zaYV00;!l;`&mwm~NClsNZgTdXDk$jjEg+jv@E~iMR~+|P`c77Y*@17)m!6~YS%ubh
zD-2VYP>|UjfP=ZROz9e&RpXC9y5@G9whsl?JRKa2>g;LGs{eAb3%pfLz9IfAPriB!
zIQ}t;tsE=ec(H
zatf`zqdgSmWO{1Y$LyMCUi0qYk}DWqueqI@*|~96)t8K$K5fNCs6T;MRa`QeVoGA4F*za1FdT@N
zuMKZ`dLs=qCEuDE78RfQk&~BuGGaLyEY?V(kKj)>u&hJbm#5AVD%qb3R0iT^Sf*!=
z+eXx>8}-kB`NgE+w*3VNmW5i(?m&RqrPM&2u2+Rvg4^R}+&kMnA8A`R)EG?&foH9A
zU!F?Fi$de)#*@Q}XQ>m1V8;hVC#ax%w%;22BYpc=y1|S@OZx!%GO%aDPU>KR3ZI{r
zn2d7es~)>5wuO?p@zeUD3K1O5YNOw^Bd(vlMy4b_K6gT2J>3$R8hXL!*MQfwG1np1
z^zB}9%TZGi=p)s1_i1bPSls|)W>~l=95gilq=IkFG|i^0g%5mQr_kT4w1D@4p3Sa@
zth~D%{%7R3Y@E+8l}6QHM;o&7FGj41iI}a(e52x$KHBs$GA}~gg&N+oEb}B_xP+TO
zE~*SfQjP%|8pE~8T166$2C)Dg1o)f6V*+S)ZQ{VA>+uPK3`@+Q??>J1a8psjV2?iGR
znGLKJZw3UYc{^DLo_?XYTFj9DW*t!8PRfx#e+52P9DI%$F5&gHhrEs@r
zHNXN>fYUwX;(A$uqBjGvh%_;AHO(EZ7OY9fml>O3}w#vr`QH^J6u{LL8fRTdJ#OFIhwxVV7O#6&lZ=c%O%ow@Ny+Gkiej
z67sjiM#f{4HKAqLIc60!TfdGUv%O*kRMY7pWkYzj`3QT-eFfP^xc6I*WD7x(Fb3vc
z*Z#*6Od9@241HW|H@4mb-`?uD7
z>POe`IdQ(2B`M2egZv3&yH^R^R>#%(-Dnyg78GiW(aFUE=a!-)(zA4F0fX^U((A}(
zV^#{%{1m=(mppKv*Hs63%iZ@pq$YKNJE?z9&@1C1fBeC%-N*)V&$Sw2bxg@9k)WLz
zVS>;eZV8mDe~Or~YPwuMcQ)GhhT^kFLrGtcXyi-0;|arfjOPe7n^@$z=wnz`e&6#4
zYsM;3st?f&_l@hjkE$_(*0II>4e6hHPr&PTH3HWY<1%qyLK{xYkJdQX|HRj=SEeeV
z@crY5@lP9Y#br@Q4U9
zOJ4>2q-Nl#d&B2x>O%W~*Xo1f6o|JszWyapYqD9gMYFg~T(NEo8#{ev(AR}yw3-;z
zsLcMRyG5%vwP`NCJnP#*(c*9rC^x@E@eUC+3U0Rea%3kLDN^~iVW0|Fg88Q=!P)rJ
zH8MwAtvO-gH~&@;G7)A}b}ucjnP&RuFrt~j*yz5nxBN(G1=Vo@!vS#gjUxKBo^cs6
zHUf$%p^CQ|2YieTF%qt*7<==`3GVRLlp~d&N*C?~&-z#YLwf#WtR&5c`sa?NES6%t
zmlc-rXNB*WuzT^!EEasoOXB}t$p&2>>(l<|IkOL56fEPGK5j0yXj*y2nko7
zk+CLd9-Mi+!P?a?b5Zv+X2#z@y&V#cmHgJcdFhw_KEyG%Xt0)%sCHxE+O*d}6st*i
z>eODb-$j4Z-$}2gG?{xRQ`J-8k3{-;4|cZ~Q*TLb7K2h(8J=H#jM1-5awV^G>)-r#
zuv{zW$@Hq{{>%M>97dy7J4|!+#fG_ex>RCi7NyGXY~OYdCftt`I)PuW7g>K0si1lV
zUa05wbOL{cY8kynV)jO$;=Q=v|IXAer=Grkm+%Bw7)W8TjnPg*9Z#)I4zF@#&eSe8^?E+YhN8pqK
za#rR&x&+9CB~85V9UR6t%YBl!_R$LfP8o}#ZgqXD`u4U)DQemek!Ye3}-hwk0x-V$-@4n
ztloip>^tQ9{PS=`WTpvIk9z#&1n_7yqiWB99lQv_HpXP@6`ErVzPtEo$JL(r61eyY
z!ppwveUjLA7>TqEuQ4*Q7G(fxJ1by>S8e+rcN_9Nno5tSnhB*E4duXSv8|O)Jh;Ri
zrqICev4o9nFj_flBtf9K&h253?q;UF*}T-<-_GV63JoBd0!PH%PE1N#<=upT{9T6|(9$rcI+PDwyUTbH$g1oFpr5ne!`kfB0
z0l(sHp*?9W8M*o^?t2M|zV7QRB*&(Sj0jp;wQG>uCfYW=wu@TM0;?ZYmUXax-1gEl=_jZi6sIL>zj+>@
zA}LGxbz6drMK)w-79TYAq2X1rCAT-i+Bx>&Er-TR2J!l1GqR}=(uv&VFJS19#wJd#
zBupR`KSqJTOJ#>$GtQCEuPvL9O7H^{;G)22>nH^rB>Lqf3+27lu{U*+C})D=%=JYK
z5WM@9V@LZL=5qXSZcf=Dd=~C775(du`5LszYy`Lv#~VU^DTsHGor$ljweQoXBP4uS
zr0*WdcoP81y^^eMpIfPo4;U9}F(&H=1Q?`HcDQ_YtwxUaH8#><>e7VmYHGs!a#5J9
zu397d8bQZpDDM}&dtJFXS?sE
z%KOE*?RW?fQ8Wo_*PioPabbC;p8lGLH`LQL>Eqh=arXrK+t^QohFY$_#Y
z%Wqb9Jn00J6RP6bdxoCV#^do>ifmw?O@Rj{-CedBkw>F&PmXnyW^$)DaE$Prtqf>x
zrlT4+hRe=*;=N53Qe~d*Rvo{pO!NCx*5AB=KICERFfl@8PWW-9me`;+$6EJe4$HzA
zbZCXz(8|J+K7WFyU5i
zTVtffP5~f3lP+84f3EM&Gg%(jHiE9zehPbzx46FIJpF>NOF}(N7VUHqZ(s5n2;zeC=WVC$%lnfE
zcO%^V`(AL^RH8te<4NEC*6<=!F$kwx
zJ8l;8(<$3s9+C8C+p~QLHiH3S*M5vsysu@k{aA)A!nBgV5%Rny*t|8oLs(9Y#;HDA
z#}$-~o$-i{Z}_=vUp<)Dvl!3HHnSewCzVaF67vM*BPOHtNi&QqKJT86qX`v7hyNiO
z5>2{Sn3zsl8bDZL&Sc2WU}_dz@}4=x%V@F1*YxrWVWsc!=7XR2MRDNky%FDbnW
zMw#zm6pQ&(K>6|?6FU4#0kAYelz>(B^RiMBLMw4%>er7Xi>iHe#sZ#T!6O@LwMt{7
zZAHfmh9ec_1PhhQamT41m%K27PYwR){^%)LvG&n!A?Gi<^5ha9`E|F9)91$#p9pcp
zdy4fnu-|mieEWG-(czs0?SC~G_g2Wex>Bk5OK1Xre+j~AIbeV%&gGzvUjkgXVOVUJ
zc~(y?&&@{~FC|<2*6cSVDvKmT8~-c*CLP0%ub!e6c+IR^Q%;u>IL7XF0`y`=h3C6q
z^(Z=eRu8*A+yVuPJiF;ObGl8(u?v=0cRVyBo3!9ma8BP~LzydO_UDtZ&nQJd!!xe18Hx{bNA|
zkKMT0elQDncO=Q3p;DuB_k_Snq3?RuvMlkwy8D%_t@ef1_`AmeYNi_gF#o!b2YX
z$snKBW_n6*eHU2E^#afgs18eTY4@2^t4tsAgzg`e0~h8sF7hqI^OcZxWC+b6k9G-n
zCc(?|`4jpddhzadJB~FgAUyE|?ea;I|qzBBW2>v;&^%Mc6htw3H)
z)p)a8p;v%HUrVLk$=8g0d2x3lTeJubN;jlD(w
z(66{GZ~bJF;ldgl{FLwYsszJV0>I=X3r(N$
z>5svP$s{2@v){sdVy`~EoBv6+QN8Q(v&i7Dmhj|hggZU;V7PnqZ}_lNzoy~l;Zntp
zhhK34sV8M`eHNR%QSs{u6xQ^q+00p!)0(;jvv%aN#QueYRIMRsk9Z?v^4izCat>uT
z?@?Vm;H}(b{0wze;MnlOZ|dTt6So#Ff@ysM3VwKK;{3HUJXWeMvflEEhoJTPVlVR}
zoTPKRUW*Hru>5-(maya4z-dKls%ap^C0Eo#*nKf|s_m?kU@}>%J^{;jK*WxK5K^I=!}Qx=F!lpQwg~p-;odiSX+hvm!JSAw2GGx;Jz)-#C=2YNY+0MfP)97
z{4oArVn9nc1`dK67j-{jV+bDY)Ryr7X-$XDWgQE;O;u-RK$etT1)BrB!0VRjv=C+F(
zv4F}K_B>~fjLvp;9n$14RF)1|X~ENu=#pSO=*SIWJ|s$5v6csPS{VN(b
zkR~rH6UpdBSDbuZn4F!Bh%~ERj>~Gb*AldDU}zl}5c0r)z;&gm1{IvPQgfZ;#jy9|
zgO?un?&94Yx#a7{Aa(ltMmU>B
z-@=mVz9Z=X4>CiCb^c4Gy8Do`z`^7VV}#I@*W>r&?|mqrBjF`^^Owm4YWf>U1L_^#
z0V`3rBL*%G1_ZK})vRN-a1kX(sX>R77iCbPKz?Vs+BWt?C4A$pT|3pZ&G>}O#fA1k
zuJ*$!PQ9Bm1*XDAQv>gbMrxY5R&c{{6X6Co&90AWLOy
z+iNv$7gLtl4H!oz4)o?tEY6!`K1$?VZd5T(>fcB^7u+{J3pSQ`HYwvi)vU1MWc**u
z0D4bEz^6{~T!!?DVMc^(ia0j-t-_aV@=~`RrPCqcKK5kBgr%JIVra1>(@zx7X}-6m
zCTbMVeX_AvaZTmpBvx%xYL_=@1_PQXhZG`qEs@?WF_OoW2YWfnRHC0f%KysfgJQhr
zt`nM4M%Aw7#nV)i5NH_0tAZW%{QJhqVJNDusMpuR+SGU@4WVQm?*8It+yTuVDXGFf
zy_L#(l5u#dyn{RcsIlQ|O$=ORv8+LFW2=;GzEp>qr}%lAQ4SGnlURR=_hfHMHOQzc
z>ED5&u1kMi<$Ef3XUwd2@_K;&g-4QypxH2^m*;t6(RRPReDzn)bwczqv6m21F7m_kToIn7Gd)r|2AbKU)
znFM!@#!okpd4!6@xdz#LNOs^l8@B+4?!FGL{l9{yZ80*r2
z^LB4(DUCm1N=~Q}v%cV=xRr8Zt^h22yn1SYhS6hn^DzaP(2C$3N-CvjPJ(@BU+N{G
zLJvPT+#$@iESd^ltdKl#0{iVPnr&!so$gg%lwo*V4f10`yaS#0msgLrULN{+S1yMr
zg@?Ha4xw~pgscye7Yt^526^FSdpQ#$chnei@+=v*LEz_Jp*DZP*lz!w&oBKliat)A
z2kn>9I4KyAt1jI{=VTaRydx{h-falV80)asnT6UdO}AQhmyf0nnq?vgqN=wR+2|-!GjVHc3AIr|-#!4fqxeZlY3;Tmu^ido)`HPrt_3FwoW(-&S0j=?@gM
zZ}6A8;SqMgb@_ekB@GhTMtO{;SmAorpt-EF5&yiT-a@2dszls-lw8_W$u
zeCwjun0lM<^SyU{Xv#y7VcgIp$>Y-K_jdf>n#%?yEs003$ye*c+}j?l9Sp-j8q4W)
zZ;~Mq-*P3{Q+R`~<`P`9k2)w`q4fzE9_N{?`x&krW?VBG{EM==^k;~vLyLnl!O9~3
zz4bjw5qOdn5qM$Zn4KlRlKdRYBtMR*-H~ECd1LsgiZ98{kzen6Dv5w#I~f{C$HO4t64_U6YQ@<*59mEjbK?Sr7m?l~vJ^`!+7!
z!1YsuKi|I0OdP24a98PdIIMo2Ga3Mh!j-)^py4_%A^40xTih<%A#K_NfK>WE{iy>9
zxupt_++eU(WQ+gBZj`I!*7XMs05{zM-#c?q8yCjZf`Gj+Y2HA#(ceGNqct;h=71Ao
zzjDOz#lHj7+6mx0Eqld8hbf#aEBgZ<>pZe17?r)fiy$d)@&0{%W?H0WNUc&=w0<%q
zK2yO`kWTida@_qrHFVaXGv>fCUsf?#bd&20Vy!dHWI(||N5LeOln4KLJ*)m1tIo1l
zQJ~!aa0Ok!n>+5)G`Xs?(2Ap)5l=sz5s$wX^V|e{ORU9wJT!Nv^@^ca!73D~iz!m#
z>!?pNLVS$)=6=q%uaYk`&NiCylxCWeATHAH-)iGCi^wQG0}NM^lZW7vu5CA(&RbYk
zrFK`7Xo$MneX%z!$&|FLmr2va%K8Q!fpm;N)4*S%&fIkzV_8kx*I^2ykB;YtzCP(Hc1M8Zeu7^QJZEUFhYcBD3Tx9
z*2YDJ#HjVsgq@;j^j=Aofd)0aijq*H$XSEvc$hV5W|_hI-W9V3%ocCs=1kXnu=#Xk
ziiGTmdZN}k2)pviI{heBPlXu+Cntisci&L_4LVycCp-LCST2Of*l2w@rRyB3T5-cjGCi_jQ`Z|&cG;Tp3
zXP6smF}8p1=hdy749I=ymnXk!RV*HKznwr4j>LPmpQXR+e~g7guRSZLE9!2%n28&B|)LV
zu++NSu|J?=v1#@340$bgr$qE1GBk?)fDqD7jbXNzE)uPY!R4Py$Qk+M-cSP`PDah{
z8E8PPq`$L|QrSSCig!d;@20$ruK*1KvyFOBkgE<6#v`L~O8RdEXNckY=_h)A9SeC1
zy=1HPYZNVCks=x4N$&FsW4r<0oHAD5kVG6KEYZ2~1qL`tsMDl1()n+jTDv&=9zNEW
zhN0sJ_;ey8Gx}4##3JiL&J?8syNfA!z;8|Cc9`AGkr_XX!ZY!j+|)BKQBXO|s_-F1
z3VlcTrptulZF0qLCkpy+h+b=}!8u~&27}Xz9%X`$@Cd1(qpGATB-zyrfqAQ34CGEW
zQ`J0`HWVfBWe5aWmQ3O$F|j;*&`eO#r})BC%r>J`PQ3=$Lg~-tt!W7OxnX!HYmNvQ
zKCI*tg0F4TPtewV{$S#D54@z$^~rw?Y+l9
z@E(0zkZ(fJC&eU@TCbSik$Grr#wXZR4KIQ4_4u>4z_hzT{AfFBCk58qzZE_~
zhTDl_cM&5?BG=wrTO$n!Gy4%Jtva4v?*#H*tCtizS)
z>1nKs146Rcwyn<5zn-aZI<%Rol+URyQ0Lb$5fJk1QMU-oxSbhZHg4T+v(ayf%@J&W
zeu7uq-jwjc-i^sjM~EQT(D$iNVcwj_|L~ia`lixXReLB!fz+m-6&?Nv>n+|j;K%9x
zjD6KM#FmGBz`S
zXgDPkRPP-RJ88fQ95rXwhK9LV{i^%2w1r^pvAc#~D2YL`1UZl}(q$wT!IJ8Ed*%I4
z91i=E21#uBaJodYzR$1l(wa_d0$xu%wI8+tK_xP6*(8bWl)JhF6IdSQry3@^lJe)Pty3PDMLI#nruSX~zUMb#<2J%s2UGOR)OmcImzyh|c}HgE)p=M}
zfvgn?E*HxWp7OE<+r*>7fR-w(PAP?E3g=k4hJK>OiGq2z%fHQgEZ9yYLn39>=;Hv?IGK9C)HlvlyQ59~
z1WI9CYkYl%4YWX{@kVcKAnM{V+gDmk_tJXKY(C>1{dhh^rplplPTe856Luq#%%W}H
zMQT1Su#P%+Sw(ufBdzLg);k*AcL2aJvT1wjb=x>u4*8u>0-xOnK7#C}AbNM%4)h2?
z+COOJmrLEb{ivWaU)qo2Hzf}GOwdp8o{*&v)1x5uQYa}j`aNT!DzQ#e;~uuSiP!EXZ(!;D#dzYTIZ^^`M3en
zi^}CAz+z|A_!=Ky_n?NE(?6hId%x~6h)7}f+ZymVA@qV#6lb+S0+XlKma(C6;xoK1
z7oEU0M^x#+e%dzp7Ekq?Y-L)Bah+q|Vv&jCw^a|vx@KSlb9)o{aa&oJ_DsA85o;eT
z{lxD5_@SZeK-wqdXCe4&Z-{sUu&Xv!XCRgKlDD+priRPWpcOqdYjt*Bk=5v|OmP%|
zd*x{0K_2v2BqR^$XGX3focyWHhPm>x=|zo9iZnnx3XjJYE3o+I=;fcY;ygltPFr&b
zF7d%YWYh$9?(3#iJJN;No0=ApPWqVo*Va|7pX)@ZS^7BbtC*06$Z^(48WC`a9tFOP
zXxIJt#7?!xHlkC{4Ub(H6gDd!6Cx{Ax$YvAIl_79@dJwx^P{Rx?gK;rq-|zYyG7G#
zkRg|#a4LofRN>WukbO^jh)
z(2b``-@5S6!MivW1@^zaTzC9
zC6Gg@@=9XWq;MBqW|*hAsD*hwdAuMzLDf8B6s`BD;#X
z;ha&R596m?b5T0K9{|U<;5cTS+@I#9Wo2YDdyuNu4KIhy1HSt6#t!mH!d@WGmTu>!Tkh><~y`Nbu
zEY7!BR6h7-AV%JNyh5Zg%;TEQ#(_CS#tYO;j+XMjE8lyT$;)v3q9MhmYI&Ik{CWnF1N=;;&R%hQ1K?-x(Ig~TvqLa8KUQ$l=i
zlrEF#4o>YvBQr6qUo6Uo45Wm5fcVhyd5
z9`cuCX;EEfB#W*{!;n|=dAUMIg9rex;cA^7E#J+8Fnxb186c1zimv+IoY7FubWp+V
zM1Qv+6m6E$x(n)CNwG4eIfvBVR9wtmu+6E9&&qAY32h*Skg
z`QJg?-A1INdQ}C+a_|chN0E{_xR7hd=U`xhSAvzwQ)pcHNf!_f+aIYICRTod`35;*uNR~q
zHl2x^YacjS$TnKb%PimMfu+wQ4mI_K&KJR=ydy*+`{VT++N6rVm|^EO!ww*RY0ah$
zpEvvkxZN~L=k$Bfr|V3Yy5dfQA1gL(?h?!rI*6d}J%PG>iA@95nWjyhLxi28xl(~o
z91OnrIS@CJj}Yo=fL59ph>G~MJEZ>ef@ms(;v9a$ZJpA)Kwx?cdES8O*>K$9O9J<|
zE|2}_KgAQ52(3Z*xL6a*adTZxm-AR?I!pYK^**FMY=kYyTJm6K01DhbJ}06rumDpv
zFx$w`=r3ic{0W9LfewE+lvTYqz1tTnsdwFwMak#d?mSwQVS+2mhk_`OerefMwx{Iw
z9Anj^JJi-gv*m^<>RPDAMZv)hO7JZuNge#Ji?y=+-^_uA8Y}{jC!&K-y_NSvs^Pa+
zH;0dDu{F=X3|(=;ZCu1+Rpr_xll`LCDwDu*+;1N`yu&4!6SozwJCW5)R!DnBg^VdJk)H%+RVDa4L4~>TxrI15!
zFSa5)e>efSBi+YHHWZ7Yu4SiF_#P!p3Evv?Hxuc<^;a9Wx
zHaLPH79W({QiR3RAkA09sV93SEAHb5h94+*cu%L^<4eLUFwe-~|0r5KL@Ne151?|x
zNSjSOs@#jy?>-TCSm|1k4$Ff1T?E-LBZcLCDTqPElxi=U6bDc_f<6&|32_Rgu3fCi
z%E!SdFUi=+4SpE|H5^LT7h*ux>t^n>@%v46o^)LJpm~}GV*<=@ErpB-Y;YvqNMWKJ&bc>5naL1U|(v?6L_DqkzO7|mJsp@0QA})eZeM?SgWVA8?)#=S|3KKxs
zSU`@VMz;Iqj*;Lzv!AyFc%kfk7|UPone^GDs)2j3GjWwIA(am~Q=jNs>{`<#86}3*
zVIAVhDxwiru8fpGu`Lu8uKBv%1$;G;^=;5yDas*5|E1Fiml#UIBkmo)qZL`M|9d;K
zmOt_YR|iZaA6+dXOZ1K$&LLky=sx|F9>cl~Qk4LyW#dAV=sy>|pT2UBq(Rd^w{K|wH@H3UF#&Id8@3WGF!D;FIRCI;TmPl#vyP?@P3)7m79-bZ^KVGU=
zy3;=Iy!`ZP8MeJM*7)hSVPYW@vTuVgJ2S|~o^i{aI_5J>p-GXiYsZupfyJJ;5|4_@
z>|}Eaj;r7_jZdE-O3VqX4Ef~~Urr8v5m!z8z`Q1is1h#69n%}%4HA8K0Dltyb|<3<
z-ZEADx1~8tlw*;+n2p<0^;XX1H)^qpd>i)PRFX<<9+hhFx(fYj6u8gHT;U1K*Qb63
zd_P`h#s*EPqF%d(D7dFool?VCa%)ycSAMBp+IQR0k@j2o)-PZ)EMW=GPjz7vZ$yq?
zG7$yTOse$nEkop&1gAOrm7)M_=~Xh>K6Qg)&(MsK|1z}OxwSmdQ6VF^X;azQ-s4bASIO`n$R{0jq
zAC$-uU77-g0hdA9-C8cQG2)!XHnnRwZ6Ay~9=Ob2e>omE(I2gh&ENLg!DQH2GW3c+
z1c2SUpVkci^HrQ5z8G($`{lbIx)sFl$ovy&WzRr`dL#t*NkQ@xueH6LIVtmDqu782
zY;RX|GA(L3Dz~33&G}Hx&TP?##19mAGI1!90^yR1hs!M};^M-giqf1~108d^DAqLm
zl657}>SO!FN*_`2@1OBk(DnZ+GxR2{H8A+M0EXte@xxVz44y9~pu8
z0De^&qvj3wt6elA+rQzv9C3N{j_L<0f{hmt@9W)<6l7~dg)Ti`qi{ZA&z3MEB=n!l
zMY&E1rk6ilALpdc2yyYDhJ$GxvHi8|(;1jc(h@iHX^?Gq*T+w+MU66YNXfpofB$Ay
zh{xqy^0W$hXCSyL(U~A*v-SCiIcsb&*@$^Y>~EFM70J!?FVB)<;12KpKd8p8Dr;5x
z)6|uBjJQ=UeYY;%yPK^9Tx*x%Q>)-efL-1u9JHgdzF1t(BvN^H>1T|X!hfh0_P`fd}WVzclg`!JZ#WNsSFI-L?IoGW_2MbJQVKa9;0fqIdwv1or14ZTPB`Aa@YW
zJ5Ogk^>`Pu|G5NhlmkK=J6Ao=dS)eR1RojexGy?RN{;oXBr7xzU>bbJ-+gjE^@|g99*1
z6vOssu4tmi{&($3kmUKKC&aB7^#{~E+o7_3PC-%5eblG7Yl4Rg54qN=waCvT`CGw{)h74*<6zRs
zXKti8=E-tG;$RBUWht=~^NUYWxr9{6l<6kx#u#lsqMR-k93J&=*z9)M5cOT?0g`z
zs@*V`i#3Lo>hgW`4XYKA#I17RT8GAJ7iRy^!U2|@6}Nj`WWVU**eG5xdGS~?C~Fs?
zm3cN*X!{vec}GF5)%#Pmc1~yL3G&w$ld=@(x)33qUG+8sZ_I}D=%`m_dN^g)eXfk~
z$=|SW_&3PE!@xf+#dSV%E-9|hBPu{(yL^caWI6#niAoYL{+Ct!#Xm3s^+>Pn7NSgX
zcr~ifpI1WOqrk5E{JZxPW1%=sCkfj9e2yN7p^eOjx||{RycAFDmA?K~Fw2y0
zf*qY%1WVFyS3kRQ{Av1|DP#+GmW*e5{cy2rl4K
zN2dSp?@rQCsZBQ5D3p!7+1xK}QW0hD*SQoTHupI3c#{R!nxkZJTWL7!q;@17DXVwkfrX^sX_!l1tqL>|ErfBs-nDHxu3^^-OY%{EJUYPehIe;o
zB-Tlb1h|g(dP->&4T5nk(x?~xPTOtw(dt_5Wx2Ul<0u)`A3usRRF~;kToI?8x!tyG
z`|^mh8{3fO*PVuJDn?g6w^5^vPbF(u^;hJa08RDL!|@8fgO*whWTD{d8cYZ)P%z#TaE&hxsn`eUrS7bwF^xsRf}UIF2%5wAQng2hey
zRBmYDZUp|iNcS%ljkv0@)i5hXs1|(Ya=s{={=!Lv~WdY5)ez*Wz@}o}b;0GWsW@
z^hdQ7_}Us+V5IGQ-MrFQ(Lo7$k<#k(&}Hlozet=?Uq)itYC9fgk7dh`exfnX32&R6
z`EGwnb8b9l)Jf5z#{eWHM@Za-GqJtf~Sf&hZ6x^=-W!-~~K4I)wA?MPY>WAB=PG<`r^nTouVl%UHHL)^CDYibtd6rymI@@R3TK_0vMBTCo
zhWC18Oe|(6Tlf4xi!Yfj4~UGG{?d6kiK5jc+NnfElDuoY>iVlIJ-FX`3Pobnm3Y6+(4eO`0P&SK&DvLN
z&CX?D!@{skmy#6?4O%{p;jv5u*D}MT!V(QkBRj`zGwFO^qDf1Ckcey<>V#S%cW#Csp
z1rqQT{=Zry5x#ZYX0Jacc@5OR)8#!kp3iyDcIOSZ!geHLY-mgNKYGr&fsX@Rx-R&A
zk;`!$dSm7<9Cgx-fHi$*key36kSFaE^nd9s5M`B&gE=d^he@|N?bdFY_`9=t?fc2u
zyxI;)$Qy-a97~TwhUSA*M}vH7ACl*UkjygfVqvxlA}RT<@x~=%m0laNcD
zzcxcpx-O6ZZan;vI-Un2YA@Aa^+*Nz#U$zleAW5xn|(Vx-z4SzsvRZFCwv*kMR1L`
zv+5n{_U-Rj`uk(*vR}=TmLsoeS+jSdLuJM_i~b6u6?&q6k9m`rItupkmLGe$ip24jktLH6CA4_G-y4q!oB?kWeQTF9q5{%2veM!xNpEC6F1?oR>
zC#HCVe=ENKy|yYHd0SXXS|-kHevcO3|ITbI+I;ZKUMb-4T@F65e(mE&1Hr)H
z(8ofSKL|h42T&B35G4cG{;-Hhx%}XsS?P;EF^IQ&%6a76df_8yg6%UT<(l=eMq1}Jc!?5qa_E`}6qE%g>22%*r
z@K>K}6lK-Jf(yRx0)PY(XZiY9vcl_Yc<|{413wgbH(+o7(xdRgD(-a;AI994eY_Fb
z=hzU{p?u|rO|O7R!Q;?O;dAFH!wiArXQb24l*W`W*d+s3081do3Q|pO)`b{~B!5Ea
zMm=JumPB%JPdAvuVMIh4u(NHAN^6A7vDX6zBDTWd4Sx_XQ3
zqeAy3QwD{F0
z%PQQFck4dmQl52@jJVOP(nL}6k^ZHYKc%IX7DKi6Y|MFGj<2+cYbVk
z8fWYMM|xZ7Z`03@t6FDx8zC(j4%tIVjOHvO9{xPMfct&fkzH#qIDnkInZUtx;
z|8(r=)cG@-KSk{OM%|4GBc29%bog)^o@8y$E^~&AHZU{@{o3V?4}A7EFx_INF@>75
zT%5KOqOqjal$4aR^C;w9bFoa1mkVbElOpGjuI0lCb`2$ZV&8QUZDV|}C#-?%Y|EFL~w;z1@72!H=e;w&?-1DWW)8^6rzx*-aq*|?U#YqQ&g70xi2@;?nU
zKQfyX!!Pd`$jiJT^_70-i=jsKtO3`A7o{8BsTzW}19$CQ+7|*_%W~!)NNaB{M5lQn
zeaH3ovL8d%UI}ri>5*A|n66uyw^RN#68^QUBqTGQk-m&&k?bE2Fg*zA+-)s75qTf9
z@OvejF}|Z@;ZrckORt@znH&!CubWh
zqtL=}E-BTh-{1cx*8~qrlB@MogU~}h)eQ|X+^#wRKVyWmYUS}N)u%O*75<%L~!Pi
zA6G@t_?CT<2+7ByB@7;j&IRyy`y8zo68c1bHBw!=f+o_g&;pfiUDYU6z~XdoIP9*h
zz$}rHFbT!>M&dV8U|Iu?Q2>oz3v1-AmbX0sw;1W}Pa>J#wkeYKR>YvnlrF!#Ue+=8
z$TM{vbMHZ|<_8uyQ!M!FSFJ()XFz_wlY&J*zfGL6X_Dz2miGIXoPb^703v*VTkrf3
zX6(ooHEZx~H$W<9{>4YMtQ3RSc$8@maeR5H06HBc(nga)E1wG{reUTf*=#?OV4Si6Q@}r&YKL
zw0?T^9rGce11{vWa;J2?$#0cwI6LC`t2Q^3a&Pl>b7&lYPqks!^z``E5DD|z7)Gzb
z{*z@8wiUL2;M4r_MynRLWFxA}(ks5E0c?2e;P6ktu>I&N57lc(>
zzP>jQ*&LSuzq$Y1nu?j-B3ZkOn`^B&eKuDYrBUa04-AMkY33PjHC78uU2>chw@E>v
zf)tUr#oUNh&1^3!P{46s#c9i-F81asq>-c<1v;gdu~4y*Ed@|VbrpZ-nJUomkJX)i
zvrW_vd++u!Sk)bg_4S@{MFk94mz(DZvLQl2YP
zE-Uf66s}5@UrlJ&ug|u8q5?-jDD_>v>Qd+GZUQTS{&$b^Bo2I6!|KKv@h1uAkv4UY
zs;qF}z{I7ts|5_X1zt#12HuKg!T<+W@`wRny&&9a7I@A)_m^Exs_fk)tYwy$sdy~-
z_#J*Buk_j(%}gD<1Ldg`Wj0Icq6FU-)2GymBYmbMCgb
zu21b@<0F_gOjrGb4+SP1m|GQKg}Hk`Pc}Qe4reMjuf=;|dDIY+#FkL1b7MuF(*12S
zX6QOSh;*=fbVm~jXcZvh_qn<+sw3Zwio7#BFK#2~zWD!;EBcLO0=k-=gSRcXyBZ
zmdKe^Otwm|A1N}KNjA`X@KMT@6c13{w!%$SBv~9P0t4`O0j^+{og6*;hSdEFEfK1`
zTh04img;xEVQ%+!@2X#w7n6YfloN1tP4OW5k^A3))t-~;ZEy2~PVvmc7~qR2nS@wa
zqG$sqTlCFC_eUb2q%S)<4UAW-jiX^!xjwa~3~q(WQt`DW^rb?gsYRYRCSvrpBj_Eg
zN}4cYIJ}TUA_y#t)eXyy7@i$YcoI%9&8ZUT94lOX%X^-Za+RJ7S>b2C@(R4w(q&dN
z6wd{zHvOW*=cwDNQTyqz=t`c#C*{Z=5P`u})h_&9Bckq$`Y{ng&GYCtzNhcBPR}K8PpMsxXaST{evWG8cmDvj4a?(QIx^S8VWL*z6lw
zC*zf4D%`^du_-CMc04};5{)F51{MVikeo*u;m1bs2t2UNX%#yho^q3TolC@?bFu=D
zVETsCW*xOF6qubGac;hj=dNU?bdoEFuB-X~Ms+LksBp}LHTzr{@U~|YThps3@W$Wq
zB+QmD$tdI}lHQ0U^|iT1R#YEKyDWHS;j6`-Qke0O>5340{Feq$2-G;UV}OtYcBiF}
zxQwtqk6*Zdru}+DUSd30`HGCTSaEkM1^_ibrk%gx4OUB%>SCB(ZYgXeh&4{{jmT4Yz(I~ofr?T!
zK$BCiE4?VVt@88?QMF5$;i`Fc4~`*4y2yp1+P7=j3lzjBw>iEir
z2#GSdnRV|Q?>!3J9fp2h`l||@3I$)d3Y5~>M);S2?IuXp=GIM&z8S@2f?kc#$p#VNl3{quq*{CDZTH@
zgmRSbl_)8wWNdOu<+rTvlzkddk2d{1+t#pMaYn0k#XBMJ`)&r2ytfe8aJjU8tnC#5
zpWdSGxlaQi)%IOY%5FwK8ic4^^R^3?;!_$QfN_OtG6>$Y(l@P)08Gfh-^?Q;Kz