From a456a3ac8bedf1c828f452cbd759e796989c35d8 Mon Sep 17 00:00:00 2001 From: EspenTinius Date: Wed, 27 May 2026 08:50:47 +0200 Subject: [PATCH 1/7] Enhetstest --- .../mappe/service/SaveGameServiceTest.java | 449 ++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/service/SaveGameServiceTest.java diff --git a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/service/SaveGameServiceTest.java b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/service/SaveGameServiceTest.java new file mode 100644 index 0000000..bdd9487 --- /dev/null +++ b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/service/SaveGameServiceTest.java @@ -0,0 +1,449 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import edu.ntnu.idi.idatt2003.g40.mappe.model.OwnedShareData; +import edu.ntnu.idi.idatt2003.g40.mappe.model.SaveGame; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; +import edu.ntnu.idi.idatt2003.g40.mappe.model.TransactionData; +import java.io.IOException; +import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +/** + * Test class for {@link SaveGameService}. + * + *

+ * Each test uses a fresh {@link TempDir} so the on-disk state is + * fully isolated from the real saves directory and from other tests. + *

+ */ +class SaveGameServiceTest { + + /** + * Temporary directory used as the saves folder for each test. + */ + @TempDir + private Path tempDir; + + /** + * Service under test, pointed at {@link #tempDir}. + */ + private SaveGameService testService; + + /** + * A populated {@link SaveGame} used as a baseline for write/read tests. + */ + private SaveGame testSaveGame; + + @BeforeEach + void setUp() { + testService = new SaveGameService(tempDir.toString()); + + List ownedShares = List.of( + new OwnedShareData("AAPL", + new BigDecimal("5"), + new BigDecimal("150.00")), + new OwnedShareData("NVID", + new BigDecimal("2"), + new BigDecimal("241.59"))); + + List transactions = List.of( + new TransactionData(TransactionType.PURCHASE, + "AAPL", + new BigDecimal("5"), + new BigDecimal("150.00"), + 1), + new TransactionData(TransactionType.SALE, + "NVID", + new BigDecimal("1"), + new BigDecimal("245.00"), + 2)); + + Stock apple = new Stock("AAPL", "Apple Inc", new BigDecimal("150.00")); + apple.addNewSalesPrice(new BigDecimal("152.30")); + apple.addNewSalesPrice(new BigDecimal("155.25")); + apple.setFortune(1.5); + + Stock nvidia = new Stock("NVID", "Nvidia Corporation", + new BigDecimal("241.59")); + nvidia.addNewSalesPrice(new BigDecimal("245.00")); + + List exchangeStocks = List.of(apple, nvidia); + + List netWorthHistory = List.of( + new BigDecimal("10000.00"), + new BigDecimal("10026.25"), + new BigDecimal("10125.75")); + + testSaveGame = new SaveGame("MySave", + 10026.25, + 10000.00, + null, + 3, + ownedShares, + transactions, + exchangeStocks, + netWorthHistory); + } + + @Test + void saveGameWritesFileWithSanitisedName() throws IOException { + SaveGame messyName = new SaveGame("My Save / Game!", + 500, 500, null); + + testService.saveGame(messyName); + + // Slashes, spaces and exclamation marks become underscores. + Path expected = tempDir.resolve("My_Save___Game_.json"); + assertTrue(Files.isRegularFile(expected), + "Expected sanitised file to exist at " + expected); + } + + @Test + void saveGameCreatesDirectoryWhenItDoesNotExist() throws IOException { + Path nested = tempDir.resolve("nested").resolve("saves"); + SaveGameService nestedService = new SaveGameService(nested.toString()); + + nestedService.saveGame(new SaveGame("Nested", 100, 100, null)); + + assertTrue(Files.isDirectory(nested), + "Saves directory should be auto-created"); + assertTrue(Files.isRegularFile(nested.resolve("Nested.json"))); + } + + @Test + void saveGameThrowsExceptionOnNullSave() { + assertThrows(IllegalArgumentException.class, + () -> testService.saveGame(null)); + } + + @Test + void saveGameWritesAndReadsBackPaddedName() throws IOException { + SaveGame padded = new SaveGame(" Padded ", 100, 100, null); + + testService.saveGame(padded); + + Path expected = tempDir.resolve("Padded.json"); + assertTrue(Files.isRegularFile(expected), + "Expected trimmed file name on disk"); + } + + @Test + void saveExistsReturnsTrueAfterWritingAndFalseOtherwise() + throws IOException { + assertFalse(testService.saveExists("MySave")); + + testService.saveGame(testSaveGame); + + assertTrue(testService.saveExists("MySave")); + assertFalse(testService.saveExists("DoesNotExist")); + } + + @Test + void saveExistsReturnsFalseForNullOrBlankName() { + assertFalse(testService.saveExists(null)); + assertFalse(testService.saveExists("")); + assertFalse(testService.saveExists(" ")); + } + + @Test + void loadSavesReturnsEmptyListWhenDirectoryMissing() { + SaveGameService missingDirService = new SaveGameService( + tempDir.resolve("does-not-exist").toString()); + + List result = missingDirService.loadSaves(); + + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + void loadSavesIgnoresFilesWithNonJsonExtensions() throws IOException { + Files.writeString(tempDir.resolve("notes.txt"), + "this should be ignored", StandardCharsets.UTF_8); + testService.saveGame(testSaveGame); + + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + assertEquals("MySave", loaded.get(0).getName()); + } + + @Test + void loadSavesSkipsMalformedJsonFilesAndKeepsValidOnes() + throws IOException { + testService.saveGame(testSaveGame); + Files.writeString(tempDir.resolve("broken.json"), + "this is not valid json", StandardCharsets.UTF_8); + Files.writeString(tempDir.resolve("empty.json"), + "", StandardCharsets.UTF_8); + + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + assertEquals("MySave", loaded.get(0).getName()); + } + + @Test + void loadSavesReturnsSavesSortedByFileName() throws IOException { + testService.saveGame(new SaveGame("B-save", 100, 100, null)); + testService.saveGame(new SaveGame("A-save", 100, 100, null)); + testService.saveGame(new SaveGame("C-save", 100, 100, null)); + + List loaded = testService.loadSaves(); + + assertEquals(3, loaded.size()); + assertEquals("A-save", loaded.get(0).getName()); + assertEquals("B-save", loaded.get(1).getName()); + assertEquals("C-save", loaded.get(2).getName()); + } + + @Test + void saveAndLoadRoundTripPreservesAllFields() throws IOException { + testService.saveGame(testSaveGame); + + List loaded = testService.loadSaves(); + assertEquals(1, loaded.size()); + + SaveGame result = loaded.get(0); + assertEquals("MySave", result.getName()); + assertEquals(10026.25, result.getBalance()); + assertEquals(10000.00, result.getStartingCapital()); + assertNull(result.getStockDataPath()); + assertEquals(3, result.getWeek()); + + // Owned shares. + assertEquals(2, result.getOwnedShares().size()); + OwnedShareData firstShare = result.getOwnedShares().get(0); + assertEquals("AAPL", firstShare.getSymbol()); + assertEquals(new BigDecimal("5"), firstShare.getQuantity()); + assertEquals(new BigDecimal("150.00"), firstShare.getPurchasePrice()); + + // Transactions. + assertEquals(2, result.getTransactions().size()); + TransactionData firstTx = result.getTransactions().get(0); + assertEquals(TransactionType.PURCHASE, firstTx.getType()); + assertEquals("AAPL", firstTx.getSymbol()); + assertEquals(new BigDecimal("5"), firstTx.getQuantity()); + assertEquals(new BigDecimal("150.00"), firstTx.getPrice()); + assertEquals(1, firstTx.getWeek()); + + TransactionData secondTx = result.getTransactions().get(1); + assertEquals(TransactionType.SALE, secondTx.getType()); + assertEquals(2, secondTx.getWeek()); + + // Exchange stocks - full price history must round-trip. + assertEquals(2, result.getExchangeStocks().size()); + Stock loadedApple = result.getExchangeStocks().get(0); + assertEquals("AAPL", loadedApple.getSymbol()); + assertEquals("Apple Inc", loadedApple.getCompany()); + assertEquals(3, loadedApple.getHistoricalPrices().size()); + assertEquals(new BigDecimal("150.00"), + loadedApple.getHistoricalPrices().get(0)); + assertEquals(new BigDecimal("152.30"), + loadedApple.getHistoricalPrices().get(1)); + assertEquals(new BigDecimal("155.25"), loadedApple.getSalesPrice()); + assertEquals(1.5, loadedApple.getFortune()); + + // Net worth history. + assertEquals(3, result.getNetWorthHistory().size()); + assertEquals(new BigDecimal("10000.00"), + result.getNetWorthHistory().get(0)); + assertEquals(new BigDecimal("10125.75"), + result.getNetWorthHistory().get(2)); + } + + @Test + void saveAndLoadRoundTripPreservesNonNullStockDataPath() + throws IOException { + SaveGame withPath = new SaveGame("WithPath", + 500.0, 500.0, + "C:\\some\\stocks.txt", + 1, + Collections.emptyList(), + Collections.emptyList(), + Collections.emptyList(), + Collections.emptyList()); + + testService.saveGame(withPath); + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + assertEquals("C:\\some\\stocks.txt", loaded.get(0).getStockDataPath()); + } + + @Test + void saveOverwritesExistingFileWithSameName() throws IOException { + SaveGame first = new SaveGame("Same", 100.0, 100.0, null); + testService.saveGame(first); + + SaveGame second = new SaveGame("Same", 250.0, 100.0, null); + testService.saveGame(second); + + List loaded = testService.loadSaves(); + assertEquals(1, loaded.size()); + assertEquals(250.0, loaded.get(0).getBalance()); + } + + @Test + void loadSavesParsesLegacyFileWithoutWeekOrListFields() + throws IOException { + String legacy = """ + { + "name": "Legacy", + "balance": 750.50, + "startingCapital": 500.00, + "stockDataPath": null + } + """; + Files.writeString(tempDir.resolve("Legacy.json"), + legacy, StandardCharsets.UTF_8); + + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + SaveGame result = loaded.get(0); + assertEquals("Legacy", result.getName()); + assertEquals(750.50, result.getBalance()); + assertEquals(500.00, result.getStartingCapital()); + assertNull(result.getStockDataPath()); + assertEquals(1, result.getWeek()); + assertTrue(result.getOwnedShares().isEmpty()); + assertTrue(result.getTransactions().isEmpty()); + assertTrue(result.getExchangeStocks().isEmpty()); + assertTrue(result.getNetWorthHistory().isEmpty()); + } + + @Test + void loadSavesParsesLegacyStockWithoutPriceHistory() + throws IOException { + String legacy = """ + { + "name": "OldStocks", + "balance": 1000.00, + "startingCapital": 1000.00, + "stockDataPath": null, + "week": 1, + "ownedShares": [], + "transactions": [], + "stocks": [ + { "symbol": "AAPL", "name": "Apple Inc", "price": 150.00 } + ], + "netWorthHistory": [] + } + """; + Files.writeString(tempDir.resolve("OldStocks.json"), + legacy, StandardCharsets.UTF_8); + + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + Stock stock = loaded.get(0).getExchangeStocks().get(0); + assertEquals("AAPL", stock.getSymbol()); + assertEquals(1, stock.getHistoricalPrices().size()); + assertEquals(new BigDecimal("150.00"), stock.getSalesPrice()); + assertEquals(0.0, stock.getFortune()); + } + + @Test + void loadSavesSkipsMalformedOwnedSharesAndKeepsValidOnes() + throws IOException { + String content = """ + { + "name": "MixedShares", + "balance": 100.00, + "startingCapital": 100.00, + "stockDataPath": null, + "week": 1, + "ownedShares": [ + { "symbol": "AAPL", "quantity": 5, "purchasePrice": 150.00 }, + { "symbol": "NVID", "purchasePrice": 240.00 }, + { "symbol": "TSLA", "quantity": "abc", "purchasePrice": 200.00 } + ], + "transactions": [], + "stocks": [], + "netWorthHistory": [] + } + """; + Files.writeString(tempDir.resolve("MixedShares.json"), + content, StandardCharsets.UTF_8); + + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + List shares = loaded.get(0).getOwnedShares(); + assertEquals(1, shares.size()); + assertEquals("AAPL", shares.get(0).getSymbol()); + } + + @Test + void loadSaveFromFileReturnsNullForNullOrMissingFile() { + assertNull(testService.loadSaveFromFile(null)); + assertNull(testService.loadSaveFromFile( + tempDir.resolve("does-not-exist.json"))); + } + + @Test + void loadSaveFromFileParsesValidSaveOutsideSavesDirectory() + throws IOException { + Path external = tempDir.resolve("external"); + Files.createDirectories(external); + Path target = external.resolve("Imported.json"); + + testService.saveGame(testSaveGame); + Files.copy(tempDir.resolve("MySave.json"), target); + + SaveGame loaded = testService.loadSaveFromFile(target); + + assertNotNull(loaded); + assertEquals("MySave", loaded.getName()); + assertEquals(2, loaded.getOwnedShares().size()); + } + + @Test + void saveAndLoadHandlesEmptyOwnedSharesAndTransactions() + throws IOException { + SaveGame empty = new SaveGame("Empty", + 100.0, 100.0, null, 1, + new ArrayList<>(), new ArrayList<>(), + new ArrayList<>(), new ArrayList<>()); + + testService.saveGame(empty); + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + assertTrue(loaded.get(0).getOwnedShares().isEmpty()); + assertTrue(loaded.get(0).getTransactions().isEmpty()); + assertTrue(loaded.get(0).getExchangeStocks().isEmpty()); + assertTrue(loaded.get(0).getNetWorthHistory().isEmpty()); + } + + @Test + void saveAndLoadEscapesSpecialCharactersInNameField() + throws IOException { + SaveGame special = new SaveGame( + "Name with \"quotes\" and \\ backslash", + 100.0, 100.0, null); + + testService.saveGame(special); + List loaded = testService.loadSaves(); + + assertEquals(1, loaded.size()); + assertEquals("Name with \"quotes\" and \\ backslash", + loaded.get(0).getName()); + } +} \ No newline at end of file From 8af9842f19e4817bbc35b2424d505235a1365c95 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 27 May 2026 10:06:53 +0200 Subject: [PATCH 2/7] Feat: More package structure. --- .../java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java | 6 +++--- .../idi/idatt2003/g40/mappe/engine/package-info.java | 5 ----- .../g40/mappe/{engine => model}/Exchange.java | 10 ++++------ .../{exceptions => model}/NotEnoughMoneyException.java | 2 +- .../idi/idatt2003/g40/mappe/model/OwnedShareData.java | 2 +- .../edu/ntnu/idi/idatt2003/g40/mappe/model/Player.java | 4 +--- .../mappe/{engine => model}/TransactionArchive.java | 5 +---- .../idi/idatt2003/g40/mappe/model/TransactionData.java | 2 +- .../idatt2003/g40/mappe/service/GameStateLoader.java | 4 ++-- .../mappe/view/creategame/CreateGameController.java | 2 +- .../mappe/view/ingame/quit/QuitDialogController.java | 2 +- .../idatt2003/g40/mappe/view/widgets/WidgetEnum.java | 4 +++- .../view/widgets/dashboard/DashBoardController.java | 4 ++-- .../widgets/financialsummary/SummaryController.java | 7 +++++-- .../mappe/view/widgets/market/MarketController.java | 2 +- .../view/widgets/minigames/MiniGamesController.java | 1 + .../mappe/view/widgets/minigames/MiniGamesView.java | 1 + .../minigames/{ => engine}/GameEngineController.java | 4 +++- .../widgets/minigames/{ => engine}/GameEngineView.java | 5 +++-- .../widgets/minigames/{ => engine}/GameGimmick.java | 2 +- .../view/widgets/minigames/games/ClickerGame.java | 2 +- .../view/widgets/minigames/games/FindStockGame.java | 9 ++++++--- .../view/widgets/minigames/games/TimeInputsGame.java | 5 +++-- .../g40/mappe/view/widgets/stats/StatsController.java | 2 +- .../widgets/transactions/TransactionsController.java | 2 +- .../g40/mappe/{engine => model}/ExchangeTest.java | 8 +------- .../ntnu/idi/idatt2003/g40/mappe/model/PlayerTest.java | 1 - .../{engine => model}/TransactionArchiveTest.java | 7 +------ 28 files changed, 50 insertions(+), 60 deletions(-) delete mode 100644 src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/package-info.java rename src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/{engine => model}/Exchange.java (97%) rename src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/{exceptions => model}/NotEnoughMoneyException.java (88%) rename src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/{engine => model}/TransactionArchive.java (94%) rename src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/{ => engine}/GameEngineController.java (96%) rename src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/{ => engine}/GameEngineView.java (96%) rename src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/{ => engine}/GameGimmick.java (90%) rename src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/{engine => model}/ExchangeTest.java (96%) rename src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/{engine => model}/TransactionArchiveTest.java (93%) diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java index 186a096..b0c4bdb 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java @@ -1,6 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.model.SaveGame; import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; @@ -36,8 +36,8 @@ import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.financialsummary.SummaryView; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.market.MarketController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.market.MarketView; -import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineController; -import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineView; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineController; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineView; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesView; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.ClickerGame; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/package-info.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/package-info.java deleted file mode 100644 index 70a3863..0000000 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Contains classes giving a high level control of the application, - * such as {@link edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange}. - * */ -package edu.ntnu.idi.idatt2003.g40.mappe.engine; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/Exchange.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Exchange.java similarity index 97% rename from src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/Exchange.java rename to src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Exchange.java index 10775cc..10ee41f 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/Exchange.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Exchange.java @@ -1,9 +1,5 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.engine; +package edu.ntnu.idi.idatt2003.g40.mappe.model; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Share; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Transaction; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionFactory; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionType; import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; @@ -13,6 +9,8 @@ import java.util.List; import java.util.Map; import java.util.Random; + +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineView; import javafx.beans.property.ReadOnlyIntegerProperty; import javafx.beans.property.ReadOnlyIntegerWrapper; @@ -331,7 +329,7 @@ public Transaction sell(BigDecimal amount, * -10% to +10%. *

* - * @see edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineView + * @see GameEngineView */ public void advance() { for (Stock stock : stockMap.values()) { diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/exceptions/NotEnoughMoneyException.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/NotEnoughMoneyException.java similarity index 88% rename from src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/exceptions/NotEnoughMoneyException.java rename to src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/NotEnoughMoneyException.java index 8d19749..05ae352 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/exceptions/NotEnoughMoneyException.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/NotEnoughMoneyException.java @@ -1,4 +1,4 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.exceptions; +package edu.ntnu.idi.idatt2003.g40.mappe.model; /** * Exception primarily thrown when the active diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/OwnedShareData.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/OwnedShareData.java index 92aaa30..c524b2d 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/OwnedShareData.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/OwnedShareData.java @@ -9,7 +9,7 @@ * Holds just enough information to recreate a {@link Share} when the save is * loaded: the stock symbol, the quantity owned and the original purchase * price. The actual {@link Stock} object is looked up on the live - * {@link edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange} when the save is + * {@link Exchange} when the save is * applied. *

* diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Player.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Player.java index afc0b11..76c998c 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Player.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Player.java @@ -1,8 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.model; import edu.ntnu.idi.idatt2003.g40.mappe.controller.PlayerStatusController; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.TransactionArchive; -import edu.ntnu.idi.idatt2003.g40.mappe.exceptions.NotEnoughMoneyException; import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; import java.math.BigDecimal; import java.util.ArrayList; @@ -17,7 +15,7 @@ *
    *
  • Has a portfolio
  • *
  • Can buy and sell shares on an - * {@link edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange}.
  • + * {@link Exchange}. *
  • Has a set amount of money to use on said exchange.
  • *
  • Has a {@link TransactionArchive}
  • *
diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/TransactionArchive.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionArchive.java similarity index 94% rename from src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/TransactionArchive.java rename to src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionArchive.java index 48baa7a..37afa33 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/TransactionArchive.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionArchive.java @@ -1,8 +1,5 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.engine; +package edu.ntnu.idi.idatt2003.g40.mappe.model; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Purchase; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Sale; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Transaction; import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionData.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionData.java index 45f1bde..38c16a4 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionData.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionData.java @@ -12,7 +12,7 @@ * quantity traded, the price per unit at the time of the transaction, and * the in-game week it took place. Used by the * {@link edu.ntnu.idi.idatt2003.g40.mappe.service.SaveGameService} to - * persist the {@link edu.ntnu.idi.idatt2003.g40.mappe.engine.TransactionArchive} + * persist the {@link TransactionArchive} * across sessions. *

* diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/GameStateLoader.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/GameStateLoader.java index 0137ad2..0831427 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/GameStateLoader.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/GameStateLoader.java @@ -1,7 +1,7 @@ package edu.ntnu.idi.idatt2003.g40.mappe.service; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.TransactionArchive; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.TransactionArchive; import edu.ntnu.idi.idatt2003.g40.mappe.model.OwnedShareData; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.model.Portfolio; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/creategame/CreateGameController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/creategame/CreateGameController.java index fabe231..4ca9034 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/creategame/CreateGameController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/creategame/CreateGameController.java @@ -1,6 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.creategame; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.model.SaveGame; import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java index 051481d..51bbd07 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/quit/QuitDialogController.java @@ -1,6 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.ingame.quit; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.model.SaveGame; import edu.ntnu.idi.idatt2003.g40.mappe.model.Share; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java index 9bf85ac..7d33946 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/WidgetEnum.java @@ -1,5 +1,7 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineView; + /** * Enum used to define the various widgets for the application. * @@ -23,7 +25,7 @@ public enum WidgetEnum { MINIGAMES_OVERVIEW, /** - * {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineView}. + * {@link GameEngineView}. * */ MINIGAMES_ENGINE, diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java index 52f005c..64fbad8 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java @@ -1,7 +1,7 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.dashboard; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; -import edu.ntnu.idi.idatt2003.g40.mappe.exceptions.NotEnoughMoneyException; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.NotEnoughMoneyException; import edu.ntnu.idi.idatt2003.g40.mappe.model.*; import edu.ntnu.idi.idatt2003.g40.mappe.service.PurchaseCalculator; import edu.ntnu.idi.idatt2003.g40.mappe.service.SaleCalculator; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryController.java index 4fd2020..8f88ab0 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryController.java @@ -1,12 +1,14 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.financialsummary; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventData; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventSubscriber; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; + +import javax.swing.event.ChangeListener; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -34,6 +36,8 @@ public class SummaryController extends ViewController * */ private List playerNetWorthHistory; + private ChangeListener changeListener1; + /** * {@inheritDoc}. */ @@ -103,7 +107,6 @@ public void handleContextUpdate(final Exchange criticalExchange, final Player ac } else { this.playerNetWorthHistory.add(this.player.getStartingMoney()); } - getViewElement().setWeek(this.exchange.getWeek()); getViewElement().updateChart(this.playerNetWorthHistory.stream().map(BigDecimal::floatValue).toList()); getViewElement().setBalance(this.player.getMoney().floatValue(), this.player.getNetWorth().floatValue()); diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java index 1ae01e5..7aa94f6 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java @@ -1,6 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.market; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.model.Share; import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesController.java index adafb12..4758464 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesController.java @@ -7,6 +7,7 @@ import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.ClickerGame; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.FindStockGame; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games.TimeInputsGame; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesView.java index dad45a7..0b51e71 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesView.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/MiniGamesView.java @@ -1,6 +1,7 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineView; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameEngineController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameEngineController.java similarity index 96% rename from src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameEngineController.java rename to src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameEngineController.java index 9210f8d..9ce8708 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameEngineController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameEngineController.java @@ -1,4 +1,4 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames; +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine; import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventData; @@ -6,6 +6,8 @@ import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesActions; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesView; import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.util.Duration; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameEngineView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameEngineView.java similarity index 96% rename from src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameEngineView.java rename to src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameEngineView.java index 3b13eb1..9db844c 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameEngineView.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameEngineView.java @@ -1,7 +1,8 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames; +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; -import java.util.function.IntConsumer; + +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesActions; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.Label; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameGimmick.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameGimmick.java similarity index 90% rename from src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameGimmick.java rename to src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameGimmick.java index 0f09224..6d694bf 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/GameGimmick.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/engine/GameGimmick.java @@ -1,4 +1,4 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames; +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine; import java.util.function.IntConsumer; import javafx.scene.Node; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/ClickerGame.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/ClickerGame.java index 3fe6d86..dbba157 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/ClickerGame.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/ClickerGame.java @@ -1,7 +1,7 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; -import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameGimmick; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameGimmick; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesActions; import java.util.function.IntConsumer; import javafx.scene.Node; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/FindStockGame.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/FindStockGame.java index d841f72..4a5f184 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/FindStockGame.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/FindStockGame.java @@ -1,12 +1,15 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; -import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameGimmick; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineController; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameGimmick; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesActions; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.IntConsumer; + +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineView; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; @@ -21,7 +24,7 @@ * *

Implements {@link GameGimmick}

* - * @see edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineView + * @see GameEngineView * @see edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesView * */ public final class FindStockGame @@ -52,7 +55,7 @@ public final class FindStockGame * The logic for changing score. * *

Gotten from - * {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineController}

+ * {@link GameEngineController}

* */ private IntConsumer scoreModifier; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/TimeInputsGame.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/TimeInputsGame.java index 91eeb8d..0679ab2 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/TimeInputsGame.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/minigames/games/TimeInputsGame.java @@ -1,7 +1,8 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.games; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; -import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameGimmick; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameEngineController; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.engine.GameGimmick; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.MiniGamesActions; import java.util.Random; import java.util.function.IntConsumer; @@ -50,7 +51,7 @@ public final class TimeInputsGame private final double successZoneExtent = 30; /** - * Consumer given by {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.minigames.GameEngineController} + * Consumer given by {@link GameEngineController} * That determines how to calculate point gains/losses. * */ private IntConsumer scoreModifier; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java index 5fe9992..7f839f7 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java @@ -1,6 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.stats; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.Exchange; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Exchange; import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; import edu.ntnu.idi.idatt2003.g40.mappe.model.Share; import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java index dabc63b..8b4ecbd 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java @@ -1,6 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.transactions; -import edu.ntnu.idi.idatt2003.g40.mappe.engine.TransactionArchive; +import edu.ntnu.idi.idatt2003.g40.mappe.model.TransactionArchive; import edu.ntnu.idi.idatt2003.g40.mappe.model.Sale; import edu.ntnu.idi.idatt2003.g40.mappe.model.Transaction; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventData; diff --git a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/ExchangeTest.java b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ExchangeTest.java similarity index 96% rename from src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/ExchangeTest.java rename to src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ExchangeTest.java index 65337f7..77b507e 100644 --- a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/ExchangeTest.java +++ b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/ExchangeTest.java @@ -1,4 +1,4 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.engine; +package edu.ntnu.idi.idatt2003.g40.mappe.model; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -9,12 +9,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Player; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Purchase; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Sale; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Share; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Transaction; import edu.ntnu.idi.idatt2003.g40.mappe.service.PurchaseCalculator; import edu.ntnu.idi.idatt2003.g40.mappe.service.SaleCalculator; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionCalculator; diff --git a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/PlayerTest.java b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/PlayerTest.java index 3837214..3d9d78a 100644 --- a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/PlayerTest.java +++ b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/PlayerTest.java @@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; -import edu.ntnu.idi.idatt2003.g40.mappe.exceptions.NotEnoughMoneyException; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionFactory; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionType; import java.math.BigDecimal; diff --git a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/TransactionArchiveTest.java b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionArchiveTest.java similarity index 93% rename from src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/TransactionArchiveTest.java rename to src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionArchiveTest.java index fce1960..9e3f587 100644 --- a/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/engine/TransactionArchiveTest.java +++ b/src/test/java/edu/ntnu/idi/idatt2003/g40/mappe/model/TransactionArchiveTest.java @@ -1,4 +1,4 @@ -package edu.ntnu.idi.idatt2003.g40.mappe.engine; +package edu.ntnu.idi.idatt2003.g40.mappe.model; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -6,11 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Purchase; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Sale; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Share; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; -import edu.ntnu.idi.idatt2003.g40.mappe.model.Transaction; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionFactory; import edu.ntnu.idi.idatt2003.g40.mappe.service.TransactionType; import java.math.BigDecimal; From 72a197c8ad76b0de4e012aec2cfbfa69b0715a8e Mon Sep 17 00:00:00 2001 From: = Date: Wed, 27 May 2026 11:26:09 +0200 Subject: [PATCH 3/7] Feat: Final refactor --- .../ntnu/idi/idatt2003/g40/mappe/model/Portfolio.java | 2 -- .../ntnu/idi/idatt2003/g40/mappe/model/Purchase.java | 10 ---------- .../edu/ntnu/idi/idatt2003/g40/mappe/model/Sale.java | 10 ---------- .../idi/idatt2003/g40/mappe/model/Transaction.java | 11 ++--------- 4 files changed, 2 insertions(+), 31 deletions(-) diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Portfolio.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Portfolio.java index 3b08af9..8a77791 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Portfolio.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Portfolio.java @@ -3,9 +3,7 @@ import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * Represents a player's portfolio of shares. diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Purchase.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Purchase.java index af28170..01645b4 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Purchase.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Purchase.java @@ -23,14 +23,4 @@ public Purchase(final Share share, final TransactionCalculator calculator) { super(share, week, calculator); } - - /** - * Commits the purchase. - * - * @param player the {@link Player} object performing the purchase. - * */ - @Override - public void commit(final Player player) { - setCommitted(true); - } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Sale.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Sale.java index 7731aff..955201a 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Sale.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Sale.java @@ -23,14 +23,4 @@ public Sale(final Share share, final TransactionCalculator calculator) { super(share, week, calculator); } - - /** - * Commits the purchase. - * - * @param player the {@link Player} object performing the purchase. - * */ - @Override - public void commit(final Player player) { - setCommitted(true); - } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Transaction.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Transaction.java index 62993f1..04c1dd1 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Transaction.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/model/Transaction.java @@ -97,14 +97,7 @@ public boolean isCommited() { * * @param player The player that performed the transaction. * */ - public abstract void commit(Player player); - - /** - * Sets the committed flag. - * - * @param value the value to set the committed flag to. - * */ - protected void setCommitted(final boolean value) { - committed = value; + public void commit(final Player player) { + committed = true; } } From c9e8bc77016741430c8fbb9b8896ca51ef73ae70 Mon Sep 17 00:00:00 2001 From: Tommy Aas Hjelle Date: Wed, 27 May 2026 11:28:04 +0200 Subject: [PATCH 4/7] Delete src/main/resources/saves.txt --- src/main/resources/saves.txt | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/main/resources/saves.txt diff --git a/src/main/resources/saves.txt b/src/main/resources/saves.txt deleted file mode 100644 index fec18df..0000000 --- a/src/main/resources/saves.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Save file format: name, balance -# Lines starting with # are comments - -fuck, -1000000000.00 -Halleluja, 1000650901.43 \ No newline at end of file From b5e3c13b1280ba3b026fbed5fb8ea3dd8d6bee17 Mon Sep 17 00:00:00 2001 From: Tommy Aas Hjelle Date: Wed, 27 May 2026 11:28:20 +0200 Subject: [PATCH 5/7] Delete src/main/resources/dummydata.csv --- src/main/resources/dummydata.csv | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 src/main/resources/dummydata.csv diff --git a/src/main/resources/dummydata.csv b/src/main/resources/dummydata.csv deleted file mode 100644 index 25144a3..0000000 --- a/src/main/resources/dummydata.csv +++ /dev/null @@ -1,14 +0,0 @@ -#THIS IS A COMMENT. - -AAPL, Apple Inc., 276.43 -NVID, Nvidida Corporation, 241.591 - -#Above me are some valid formats. -#Below me are some invalid formats - -COOLI, This is a cool name, 252.2 - -COOL, This is a cool name, 252.2a - -AAPL,Apple Inc.,276.43 -NVID,Nvidida Corporation,241.591 \ No newline at end of file From f839157b92e9cbd315d5eabab2000ff6d1802701 Mon Sep 17 00:00:00 2001 From: Tommy Aas Hjelle Date: Wed, 27 May 2026 11:28:28 +0200 Subject: [PATCH 6/7] Delete src/main/resources/millionsbackground.png --- src/main/resources/millionsbackground.png | Bin 101174 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/millionsbackground.png diff --git a/src/main/resources/millionsbackground.png b/src/main/resources/millionsbackground.png deleted file mode 100644 index bbbc4a9f6d83a4a7f867dc971de0ae06fad03c56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101174 zcmV)yK$5?SP)8U?g%D$pm9;<3})HFc?2?k>yw?gJiPJWKehUY_g{IcZ!br7 zx3Gmp(q&y0>paS>K}!H+Sk3Jt8}?nN26*ewPxan=i$G;;Vn==xcudz}NiBzOVb`BVYfs-|!Q$kUOv*P)sfX5lP#t3>9}}0wx=U|c34~(WS0i%<$el! zZjfG7_KdOj56%Br>ipjM%|Be~{mo`_I<;%L-O+Z}n6}EgdKlX@vqfyn86H~u&wlw2 zUih{D;)QSc<$GTLYtMiEFSq7ied8_P@>O5`llQ&ipS|GKKXdo1|J98z`{yru+ip?_1=q{@4m3}&hy)E zJGlz{)v5J&oZfiX>8*F4+5Wq;JMTTW_35qnQ(OJ}w+5fw9DaN=`q+B>k@f5!*3$Pc zrSDxz-m{pz^HTJV3xl_x?Y`}F`!7yyz2{2rJy*K#UhKZ>a_60wJAZp=_irwCfDddH z!27l|!0AgTHcC)GV_&+`|LTc-Rs}Qz>=hUyJ$jbrlo zxHd-Vy_Y~o?+{)6A>xJ@mEe{D!Xw5lAqGh9d%(EzaCZTMP-D5zn0p-_tFkg^G$yY2mmG*!?09xInd(tAyMoJ&m z;h@%9GL~76asZXNr4hq86wifV#2E<`qMA0gM5$ENp;6kaKVr-BJqGl1eW7uN9Lk8X zt4x_8GS5o(nMB&`?(VkR+3wD;(~fs{yX|(n)9#>f*zXUnrXha&JrtBBN-1N|I600J z1YWIHYc}iSuQxlVut;varRx_Ar)+QR2RT6q~isCSb?1op=}F#6(ws>bTv!F7{H(wfH6j+#8}C&XVR$b3ke>6VbND= z9{Lo-_rQn~0PS1ONN^IufFVXDNRvfyG`4gzLIfODU_vk^7latdE-t=uEZr{F{xw)z7>DFYc-mC}p zs#B@*v2i}$V9f^A8&s=PwL;a9Y60`C@hSCf9+*6&JhVkULZ)p(OM~+9R*!W!j=#5 z9HxLOcxp&$CZ9aJ^Z41FhtKRhbaLl`Q|-^3+WPdFtp`sponBl&b7}SLrS|#7;pL@t zWn;Lt+uQB-iOQDC7BFxsdje0-winc31eFLOK=-t9jS^ke4@!tW$M0q7|0Ri0X&z7} zgTQvA1;a~SfG3oJ=a@SH1qPF+32sRSv{awqTrw`XbXe(%4lA9I8{)=_!f<7nGN{Zf zF+YRw!C=n7fT5Gr-D6q$vLVAwQBp^c z6y)$xmQ$IPWjVG!jzgeAkdP!@a$Ulz5O@THE+M{HLmGibk;*C034W00HrKjP1SoAY zZF6OFV{>h|ki@xWtk5RTb(9qSIO`AcEMaLv(NOogNqc*^x!zr0+g)AR+1Va!Z4cTz zLx9tlNY+{*1V){vDXKsl;KBT(0N=xlnh_L^7r7-ygf1DC!x*Nt-J`YM?rsrxY`&Ha zmgD|L9B)VQPMoxpw3}qz1m2kTQmZ&=jv0hp7EO_bbzmY%S~wvdmMt@=ji3mw%9T*< z42#X7UK{A;o?0H*ZchveRGQ>aK2eH+H+7emqRFG=oa5HOxZyn0G2$CM0Xf zj=BR+Wfy#u_A~>9d@+a!h4ie1Eby#?|EJh5qhE{_FhtO<)j-jWJBY2o?s) zv?|quX)Qq{hzZ6eV}di3FiVUGj4+&AE=LReMa%Muve-IhCP7SXc-NBCCirVS0@shz+Vn3^8J? z6bAkVPfIg`y#uB2wlo90Qpz~u3(IyBv6Hyl*$649+)Bk(#!s#GPOtV)ulCNYl{mfH zJ+sn3yWD^B>D8y7Ts!$hiKm}hKl${=$tTx=Pk-v%10#I;{<9DjBYF-%JA9O|67ETf zN{lhke-uj3VPu|p4>JM102mk=%dLq`p?s;UUK)r<+RPETbg(0htQi>9D~e8<_L8LB zot8Qw_%mcHWiZ4Hel;}wO!H)sA*LDkDs`vQ5PsEqp>?aqt6RTLL0!p;7D2&1#atsi z=J{Sw39EGrY0wybo}rYJ13^dSAdC>~N~Juf6P6WNnXWNqhB0LS--M9{OFdo_8Y2Lx zoJ8mvfYx(Mg<-j2#xiXQC6*Du1X)2GM{z^ikTJw8tein>l1ZSfN~K=mCj@m`PNvim z8+8YIwLURU$njC}Rl-II8T=}h8>L}8r7LP}bfI+tYL$lDz@tC`qX@8yRA!5eN~Dx$ z<;n(^%LJLr7UvxV0&Q5oGV|!zLV|{h);`yaZ7l7rKYV3ya{dTw1)+?)KWfUbjE&M_H2Qsj}tpiM1xCCns^XTv%8*c<{i{ zBZp5MKX$|M>u$R5g?9rlc;Q|5-S@oD8zhEz4KQ>l4x_z#CLF2q+S4zS!K?u0nNFZz zu+ToV>pJ9mM3P%a$a=+@;H+6OwNQJmc3kCpW(4bd%=bYJBdn+jP3-lJ$=_q1MbXzY zIj#{IwTAF{rm{lic@91+Y(X-yGSNKJ1Wmz=;IT|_yoe!Rqh%f$;Pagj3gMiC;tA*% z0EGYwL9gKpve(MLLYdO|d1?QU5A(zcT16zqW~1Pg0Yn)Qc1J16lvqJjo5xamlV+m7wO{rJAyuA9I0#0+rTiK$zUPu_f@H8tf-PK(JIF+C?{=h@r>o88A2 z_ObB^8k?lnB!R)eF|OwZ8zqQ^$M#vai0nTWP};Ru*oZ4tX9(dd(<2Hle-oG-36h8ZebLMXjzGRR#W4zs3K4XR;Ks|5AXtNXGR zxHa5;RRTAt$)G0us`M+;3q8N$2O-kl087dY8hTDZ@{vl)xDMuv>pW*6s(q<)Jo?H4 zMhJmGN3e_(BkV!oX>hzfq(orgkSWI_C+Czg0!4|EQ~-i7g9%X%u+l{hq85%eSRVyP zo6s*pD*7SpSumye8BrRgJzZgPOEAbmhVXvLjGhx?;Eg3sAmxNLDBqB%RaFgv$z7Ic0NX=Z+A zzQlB`R;!n()@%ad_&DHAjC)m|svcE+R`Yqq=QU4M16lQDEu_#VUy{cN8$Fhj&Pb*3 zXOa#HNd#3`!aaYXDOUsySSp7N$`PD!Im;MR*dr5po+pIB78G+XQVS*4=F=4|*t!_oV z81h-pC1D~h7*2Q{!(ioh2pfK!xf_iJMiKZJ1KA?Ac}&@m@u6h?lPGRw@;g<#}$5!RSCo$|==_ z>=y&Cl=>tx_#fI70_RP%@RbJKD_BMdd8PYN=}3J=SGwubEA6LOI!`Tk9>22t*-P!m zFSgIEZe3}2E^qYCEw|5IX|J|ZY%UBVcxk7gp;FtiUT+th-C>d!WrNlvIkvH+4Ph=Z zvqDO!9l9zsjDm0t57SE1+;cq6B{Wu+5^+q5)}VV?ly^EEXudqa8=a>aU{qm^N|U%= zt8jjG(qJG#INJJhhI<#m_jqzVk{)4|9wxdwj8kQCG2@42IZ-KFo?8Ybl$}x~AUB{~ zlQI;zghM0arEB5t$M?vG9gUhbrfeMYg8{(o?b``L0E`F?GOL*}#%gV%I0pua8YBo` z^d%Exc$Kt9YhSX?b3AyiqOzgSFSpMWu`f)e*o@I0%5|=cgK%ELE0&DC)($I64CAJJ z1Ex*3diXl`<5tXgxKFwib6j9cOsxZsZ%0wwAOcrW9YrZ(@8Ov-5ve?+d$1O94S@)KHbWS|7jNpMK zh$#}dZb=J@QW_={CqpOaVC)(T{ zY;=>YPQ2YscKT_FLApE0JN@L+<+Y0!m(HKReERgcr=C3h*rQK9^2nnPJ^a|GKlRY3 z?tk!8_kRW`dqQVl3~MdtrTIf3JjJL%|FK|}7?q%B62@;w{GI_bhOsh1OcM8)@EG%m z%ByWwQo#wUCFcYX+9J3a8Bj)OhxQtRyRmXo=<|{xqov?g-)UBa*Qy)b~LSEPzv>4V=#l57Guf-At+Xf5=L3TYNb@6DOcsXS`-$m ztIk0!)?NUQl8gosbqBWBPrHNR?jYLk4%T;*wXMPW*6#LBx6|w5EB?mj=GON1%G&D1 z%Zrz^x&vE3i>|_Mis{L#Yi}U8kM?+$-;TygrJ&uVK`Qd z!g6i7BAzp$tYh%~&k`tcQ5ciuCQ7m-&9Iml%d919m>DHFqBX{rQ&3Jl7O&iz(mxHR z6*fXpjfG)A0`&el${ChU5GoTCjGsM{Q3di-s zN)S}=>v+EF2XT@uFRefMBsfmTTxkLM>ufOi__17Q1@%n=|+_3+q z8|QDnasHN@r*FP__J$kgZ@6I}aQ*cQ*WWOA{JPl_CuWZypBkTVCrWselRn3&o)gxV z-wEM_S%!0XsiUidf6m%px)6&LP^x)U2Yv`$!;8S60Nw9-U`V23M2#q5pF`=5oLtTv zfr_YJdSN+RV9^RF(a3qw9+*)cQ%GbP#|}OzbZ3}sb)${$pdIDIg5_4=Jw~R4-E+JV zKPtg{BQM+&jffHLwaOSc06*;W6AA&8f&R|{eWF4sJZuvjIzwi}d_@sVme53ou*=g0 zK}K8ZgA0L4aJX=ZyNtVndjgDbB{`ByN1((Zg3A#`DwuEttW-+Qr4?K=h5(prtW%}? z8On^wi=qUItU+&ON9C*#Cdd+`;Dl`}T}{w1a5X~&UK^#gHh|KlLn>W*xG{KyFaqDV z%n-)G&E(LQXcfI=9WMh1~(V7~YoSvGQomp7eci`ZGLq~8k zF+S0loomhQo0;D?J~1`shE=VLythNc?WV|&OoYcK=}^nv-{f;uYB{Fm*p@>rNfVOB zT^f@#<`NXd1rbB2qFmct*)-P?R%%!@hA0SD2$r5RS!+4x7}A~-8bjcL=dApt3Zcu= zaG&)UDmJWC^j;Y%NMe}SfLMjGkjS$mF!DHgL@p-*2nKzQUNIv|Wh3AiF^s}0L12iD z?1joHgdxd-WKM3*+=2x;`6=^}HDyIY;%LK`&43}oG=VoL--Bg)zyAvgg#f4ox(D!I z7M^j%FRSwZ&nnqccia%eH3#fPku^kym?6#u=dK{>a7S>LGlz32nPiqr?zqAQI59!2 z%sP$~LNF;wO2!?=;fj)kv4*b`>Cit{`z00mbptTtsoWI2k*xULgIz^+MOfxdq^QbXUY3a$MrLo3m6XlPQg4wQ;2Mpa@A0Cr6MfsQfPsSSc^W zw-}5jEdJO{;HeMRy`ha`+`CYeP!y*)oI38iq z!i{K>60(k0sZZ_;#}}O1jB+WmlsS~UlyKTfOgp8W*ltI5E27Olt@mlOON&>`(&ggv zrR3s;-ubibv!~ZjKfQkP$<;?5z65;sp-YcEc#&Hie@BDI2+=W-G0c=aER`|vaQ#u% zmWlw!%BLJUqtbR!@IU8?P}O4gh{_jHf5ccYoT!{#W(AdA1&0(wWw>CBIAhF8t|ci4 zutpj!$e;qFtNqf|gl14Y$}n_c2)09tNwmNUtqUaFZ53J?@|hGEmqiQcRB^(2d35=-605ZxNWDShPV$W(6S@3o*8HVa2FLa?$$s+D^ zhe?;=qTlza^l@!*g42q@zO^E)(b(q{fn|b9y?(9)Ghv`%Xx^3!FCH+)$UvXQT0Mfb zh8bI;>~HkGF{B|Bcu-T$h~a3dWGp5S_5rbkOj3Lxi*Rm?hjG6b@3sfqTb-@-?L1RS zY~Z@M9qsjOryr+z!Gs$Zrkmw!yWMkFk|)mepFFws^y!@^o?N_8UV&aYe_`?L`NcEm zE}c4e`Sh7fr_WqId;Y?uOG_)u8#~+G;UHFsO^iFzzY525T^~`53>PG&CaXzjMOvwa zh!oQ2Nix8I2XSNwYGr~6I3%;g$uRn|C{&f}JU1z*Hbn_tFeu)@wWyo}FpkhnL6^cK z3MgZwT*iFzLhgCw@4wtU*uyON65csu1)wlrOigQsK272Lzttv|?N z9%-5nhDC2M9K;#Sc()sEYz~*#cUIT8Hn+Ol?ZIxl7x%mU-L377_083_&9$x0_8{uz zc|x6buif57>U7%uem{<5EZoXyzvj&>OtmJPjwdRWO0!-ct2SpRXAaEnJ2~^>tWuV6T8LAf=48vpL1Es;6FhJ|VMthr!%4noHUtEfw)1 zc1C_$Q!KzqY9 z7&GVUVl>Q3gL2YB7voZG;<*jVV)>Sxgx;3ks0oRzoKo zJQNO$v{JrGih=BH+7re~)Td#{o!*4WXv*A}NZY6Z9p;HZIH58RVRx9vQAtV9P zAtp;^k8;QE6@qd}qwz3?p)gj`YmBuPJm(x^8L?F6QS^_5HV9Ti8LlnY#0`~-wWCJR zp=E+W5XR7*))rHZX>l2Of&!0fp%YdswOYMet8=%)WhkAH;gC-xCHEcpBuRl;DPx02 z6bcr?ev(8aQD6#RWfiNcuAQiQbCcfuoIg3?C{;SrsDDxl%W2%{bhfvLgF%95hY}*b z_Y@R1muUjvjhQNAM4?MD4cT(yQRB-71_(U6y4};lvx~k0cmsoGpC>#Knq@p=R}3{W#C&^dQy>SLcTE)MOEYoGs7zo$VgzpDgf0%7|<9<{OA|1tqoo}2{oX{|dBiNtD zkxiv}j;osTQAT(gWq1ncL1KrA#ap0*gutwA_BXbM>zn=cjo#X3XMLl)zOlQuxx2Wu zab>+6gH{zAT5<$c0;*If^ttD_m;lf7u+r9>&GE5% zt>%_9Aq0$RPddp+aHg2W6-DWUnv{XamY_3%a6xcIBC@O;1(^RipwB&As|KxJ_A;eFny}<*ZATPSYSNURLHg_zrCEe4kZ9QL^|m{^>)Ttan;YvJ8=G5Oo8`Z} zXm9QGc6Q?J?as!=#`^mD+WPwX=Emms*5=Oc`gVJLYioV8y|%G)^33UzXU;x-=FHP) zPCtG2^oX8$>dfgg=P#T&d;aXX3#ZSWKXd-VsdMK}pFe*F`Ae72jd0=8B9wy>U8NW& zfILt}d*V>~o)eZOmv9(?RMPnrDQ3Msk60fGM#1l?rvvid)MStcc{Yn znByIr9$RR-iiI>{#G?B~Stk%M=ZV!0=k?4~IML_VzA3ZD(h(Mkkt?M}+SA00AbZt`h~SQb@e-UkV~hwU!z`5`v{wQu!tRE163-;O zE(FNu)JUJ7*eIb4zo6G(At+`CKhI*2!z!0$HhWe=32^PjFJQ184J+j}onNU|YW3z= zt2I46H8(psH8r*8R8v!}R%;BY-oSaY(P)fKw5Dfg_U&sf>~G91Oij;DOwLR<$Hp7u zb55y#c(jD6l9K##zEzV-0a;OO$qm2e20= zIOEXR7bpTHz!wyLE^9~WbNSMMo}K%O;@O@t7z}tMCuB#o%JUTZ(W)@GcfoE&8KT{9A@3GeyWZ@^Z3aizE z+SR+6uq>%nG2MH>qyymhC>R(6&L*$~2Fq|{d0zC(I~)&Jryh6R(XEVd1(SkAmgG7w zj4|koa}X>}*jr)swT3Lp5uB{SuC5dcm9S!#+ha>$pf7DqsX4N7s^jv%aaD0ra4B81 zq_xIN&>h48qts~U#d(^hyX9nN+Ve!4wD( zaPo4CtIHR)hW4HlcpAsC5TkjsmKYO)7#sEUl|f3eAqgWKeO+G)*XeY+Ya9It`xGLW zrR%yv2tG=VD}3J#D`jx6RVrZ^!lpe}I@qL^A&M1QreQP)mRjkegw+bJh@nI4N|^$M zy3{1+gbB4oPzIhN6v8EpG3WLGbN7)l|G z(#?8fW@?HIshnIvx-gPS$H5*Rix}EqnCOxGR1`1>+yIWCQASwNU_MG4ZIK1al95di z(lutpTeQf?mW3F9S;WgN1m{w4$w!He5*`7l1NDK~1D@;ZAWI%u9*&J1p62uif2-pLe3Sm8>?6*3(RiVQ(08+Lk8pVCpAgMKs|Cc`-C z<3spxIEW0Ev%SJB&Y~!Z`Vq1b_UwuatbcBZFjf?KQ51Qe=A(okXuLP*4+euMNwJZ^ z-7y3pf{PL?gIn4I8JB!^Bt2Qw)IV+=M`6a^HRr!m4=HN@V;k&Fvs65v8Gd@;njVf84fQNkjE8As#) zTL4u<_&vY_je)Vl2u-fw5`^#gd7eYaJTK|z7+4nEFE8>@%JN(amyt-*eAuTfrX-Gs zy?k%p6Mt__P4+aJ)*F737nL6MO`P!14gR3?nV9HvQJ zWEi0`nzF3iZF+E0%rt}(e8gIqh39z)ic&h93qgn+(wF#3@#&{4NP><*fhTEz{0;aMDeEH51{&d_p^<$00j zd0rH7I525mWRN1u@F35!1SpM$Xpb@~nLVB`1B`L991AMOQ`#3N*zGl3Qy63gZ{VsH zzhxcHO9ti8!XSy)cXyU|*4K8nu57FVtJ~YF+wIFstCv<*7T4C7*Vk8Y`@6lf-fnMo zIxCy)rS<;ea({Vs(Cze?*1qH(r#d!2f(4Fnx%FMi8Iy1_7p$lU*vB&8lb%bVhgH-1 zf%JSHU@wd5cRf!y!f=(TEGkep@ch8_;JSFhk)Gpt2rbomHLTTxFhr|TmWm*lnzhWr z@i=^M4~)uH5rvFC&l@eFpd2i6<2bEF(=G-swJXQsx+8h+>#bSvSGWyBPG zl<*c~XdA!(8vvcd>VOeb8s#4I#U&_5G_jiSh_tzuFfNqnLcvs;wMMN{bvRF=q}$%@ z;u5}4Fc(kY zD)kC3hN`d|;JF9SSScj5pXb;=ls2hwCfA5AB`{k65o)1@(pN`WhrZqht&Q3I@#>bjdtkDQ@XEil3S@(IX8q|E*2wg9vdc6!sVXd6(z?Wmq>Qqb2 zqH3+yaD#wLDfYC%AvakL0X0Te+FAL7iGk#ZI3+EAplB}Oha)ghgLSk7x15(tCv=2g zXkhdPmBzH!$TbQEz~em%W)FMn+T*`+D5SDbiY>KK{<4yR;H87|CNq2_2T#`DT*p5s&kUawNE{5(s(OTI&{3kb(S6S6eQ(kDy3jb8k}iwHrS zV+V&01uUTa8U4XK0Kp`lOC}`~pr`=2j#CZEb0{9Bz4mUu(*a(~I%x1$ zId~5z0w6R_hBnXhG|7qr_Y)TPG-+Doxhe{+6qJ5d=Zqnolvyx)Kx24T9z!MbTea5y znVBO8fS}dn72j*t>N8V~DSSsCbDIrT3AN{98=ec%ON)L|bfYq?U}`-nJi&y{R6MYG zDMY{1E`}7xMV_g_pjX5ZY73ghn+0xTa`MTTuv1sL&iP0Pf;kH z>mo;R0Wg*LJ%Q92$8Q!aqup*N_8TLMFLl@bwlt|$YA zOCyW1U!!1vYb7vm*fmPN0%55X%@AQz3h^NG9>52F#dRIVnAQb=av=mt92eUNiE=2! z;z3cQX`Cl%;QJ^^qNvk}I&IbMQZ%5!pbU;uk`S;i215tXPZMk5000mGNkl$X0L1?SpdDDaMWqZLh|wlf2@?8mvxyy^$~+&lo0XFjjeO%)}DIe%oC43wz6d@}pZ?RI|Gw}4^&kI<-}=q}@c#Gy zJ^aw&aA2oV3mh)cVA(h)^eZ_BIL9)ktyZvbfPbm+Lv#ST&U0)lvOF*HJjan7HVS}; z1>=2GKnrMej{(mZhEf70n9eI3E0Hb2@y6u-VCLYsH(pP;QJyIOpWR0>yerDvAM zDr3xE7M^O2QVJ$ezy<)=lQ9ZUfxST(ql=<6n9+W9SO)U)_>+vSN>Kc&k<&ueK%{<7462cx`^Zg)gYhre6)ncXifGY${9ARf*%5fN?JrEK`XIPoFBT5Vf7$}~gkSw#v zaLbvoc%Zp4C@C`z_0xU|HP34$8Wvv)@G|k zj?mE{>U4@YFN!iGLB=f0(lpJ|yhK)}G|jQI+%8jlM0Pl%TyR_`GMJvWwiv}Ecq!}$ zclGcmL`e}Pd7@Io8PpXkiZX%~3Qjv)nN35= zsu#|#e(Xb6KK_x5ix)4cA|32*tX(u2c1j5AyD zCu^Z##2CdElViDKs&&V!lB^Ku16K+Lo5C!@Bso{i7DjWt${2nWH-%JM z;64N9q+KiGUNVef3}iX%lQCA>P5Gam7Y4RrHCa0o(FB*x_*3D?5$ zn421zD2fWaA{6(?4VhnIexO~~2&pV7HH!LaV)CTsd#zff=17FO@qi}lG+rTwzAeEv zT*=_7fyV<+_@2v&tRa(=(M(9!bsgbgc*5!D%7|o^QcsOMEOnBV& z(jp(GL+P_x-H(&O#`Z>`6PJ-P*)UC`WN3Lg@I24s0lX@9ICCt%Jq*kLe54qfVweqg zrOk_Yu)Vtez<>O-GiIgb)AaD3_5wg=Lm5i0wgJhOsMR z3d2PpCwMNnJ!&B~W0v4f$}qzz=Q1NVWp2itf(y+Ez+*N_nEu=%h7gnGv>Od=Vz!;o zYkD#i)+HmDv4Zi?bt<8p9Iu7G(0PjJ*7QY1kRJ5%-mWZCmd6|y!0FJWI9)_VI?UrC z%z^|t(x7L-wG`wE*owA@FnN)r1)>Y3TBSvn<&-M2eAtVye;}nXf2fk>v1GYt5??32 z&3vPLvH`QcAdeH*#1#}%aHE+eLu9!yoDqlFn8Hw|D7BQCT%lmJu5mKV5-61kjzh$t z#WECG43$~K43Xgk60NL~B351nSgkdha=mh4 zGsLuE2++z{r5T*fj8-M1VdYdpC8C^{nGEiy@qp-|E$xx^+gAPFeiwqHCj6+F+52L-4+3yE@BRp+&Ak>DK)ai^=6P7vKGtfBTmI@<)I5 zdw=@Tzx&wkN~htE&(9s6o7y)~9}i@B@!XYeI~r?D96Ng5b;oa=o|tEayS=^>O2>5= zXy7`57y4f4f&@WWsf1xQ9HpRw%^fsSW}3}$2w87p=hrBQN6(dvF^n;26%R3B#>iR# z1ppYbhET|!NkI^xrXhF=ag0)u(inE!9IG`O)p`wrxMAQ`LN5$`2v)CG(R{btjiSQy zJlDgjk&{(bN7rRmWm!O}Z)4XCWijN%VD-}Johys0i|1A^omsnlb{)*(g{4au`#Zzl zPS$G|y`4O6XPpvx)K2YAwzUy$t`5?UjypQ-QPeSc%m&@4*Bf*@gWYZqUoE#g-R;hB ztD9|isXfrWVT4$fD}r7GA?%jX7^+Z8r@2jXDwIMNBYied`C7Kr&NCVCdq4pg&^~ZUD`{Z*9f61+e`HMiQx(QAolsiq%}TX7b#YWs7y(g zW7JB+lbB_Wwv-i`gsfC*zVBPZiXvB|WHg)(Zlkbsvqq5tV@Q{)Jy{Jip^>wrW|-PlQc18YoaIjF)c0upD2Sp{4TQ7B|qaKvf@SCmA+7YKeetF?wW#+W@l zVC+H&$wgk6BsFnrhFIvi+ibSNpvuTq1qlw@tGjMM7NJd6!urhQY$$507dQU?9Uu7B zfBoyf@Pj}7*5Cev^G{wpJagowFM0LNCvM$8ec-_4{u>V7aD3nKRxlpz4!`4#-~Qqk z-ZwinJ?QloFJHcL>2kl{*LjiWd4Z%=0lADuNK#OTHLmaNC8+T#gTUtb5c?YV)iHh1 zkJcIkGte24QVM>BD#!w(mys*M7%|2;=heW27Bciq1Y^w#>J9PDz3m9@2SnIE^4ban`7Z*BzR>;n2*9LsQ2NP9E7ed1!v}z+CIV+{C`Q ziHU{jg9|hJW+xYBCT16A4(^-YH#<|U)&bZG5LT<8Wwu&pj$f%DJZyRt!$DUM3O&fxdZ)A1g>MdrNt~CbA3`KyAPD)E3T+@Eu85%u44;Tb z@fW|J0}P1UQP$XUH5jpbRTbdjhU73dTL(5iYiW1_K9-Dgd}Iw%*(n z!Ws*uXa%2U#xgSKfU~mIqR9Huu-of(hl4>J_2OYK8uo{{v>=DDi;-y8<0X|$a(IO$ zW@w~C&PosD+(>S)jeywn#mOiQQv{%d@+}x4z@^|p7*w0JkdYflTIGbn)vC;M$@hqn zW3;q}?{0Pf`hUFZN8bFCKlKgY`CoqiHy--r6L#_MMME`q=j7mMa~6Bs+fe7*Z*T*2-vYjIsvN3>4ud z%d$MrLH7V20B@d2ke`3?@b*ejhx5_C#6r)75SVg8A+{pg5F+JXwQ>eIaY35Or(_8g zmXMp!G!q7BKI5P(3cHR{rp1!*{TP^*UZnp+E<(04g`f_#TUm;2bcN$E)L zO4`#KC`92FJ7UHSwo07Qb0-XZ56^y#c@Z*!h_9Y;D2 zmr^*ALlHvYM^{N~m!_6lL(`iOPRFjAh&$D6f%3#}tZDmUG8yIyWk_s+80g znazj_z&bXkoNQ)HCIiWYDRkjFP?zsWm*b{EN-dm1NZd_@t!g-4_v$q#3?0cZE_eVN zd4;x&piV9&Y=sGEKv}bA$Mks#&O#PuheCsQt{N6{ctt~HUox?%000mGNkl=y-D!O1PNrQu1*r7OZ}Rl2Z6Aza4^JUAQ&<2g{QTUIVz(UDY6FC)g# zb_r%nA;F=56LdIIDKaP`!cb5FEGXw3v&0$Wcm;N*jlob1tJf-?N0pE~m-V~!(8HU* z```Zh-~9al`PDCe)tg@ZhX43){@u#r`rP%m&)xl^sf9y<-x$V4rr01=gQN%>6OD=K z6F1*7wXpAHuYC2sBS)F*(Xlbuc4pdY%PnS>p)t-~U-+R65uvMbQQqd{+9+KYv(2Vxh zVH7H3d&6Or#CVZ0v||}3R0mvM9xp57GsS;{6rrBN=skUctQ-Nh6uoeFN7E+$vEDyP`EZ$X;YZxrNJjY zdF8+Tw-0~s_x|ixz4U9p?rXm3Km412|KSgPa{s{-(?@TdK6re*F-=Ouy(ArEd8Wg9 zWB$nDgU62_IC|{(tv6LB#=U0k%GUZ?XD8>jwJ_V5ohlr@)@yI{JMCdFO;cfMdSde6 z{sRa0?Z*L!SsHYE8oE{rXO=Y2V)$Mh4a)8JV5hT-)M@YT?%)sXZnwSLZntBkVYHW^ zhc6u7Ufx>E7@Q6B1w%B9L0_;=l$H$Ypl?uMk7+gnsJ|ETAR@?dI?d0N40(!ZfF1F*vop@;{U*67^cG9Ko99Y~*fh#-d z#=tIZMVHt6n?1eJRm+>hE9?FB-E?DfcVnx+)sEV`QMVVtIQnriNV3g#e`|NQ(;p1u zG|vgc7J~4jOLJ#jl8{u=vh=D3F!pC)U{%lX2vLMA)B-?_*UI-8v<#-SEQVj`b`Mrr zqm2PAj8;bH1tK)4&I+9=Fg7nhv2KlCD_<@D>|S$(M$BH)TJJHS;P4#4Kv28vl=fIE z=ZOm`T&z^mb+{ujah90Df;_6jMR^iVlRQTh#Pkz!#suC2WmYm0oE(NiD~SolCF6TZ zJd+&H#TP>^-BcBWB#E;eXCw^8=-jBxSY-@kRa&b;W9LG|&^oBHToKC&t1>IY1dZeY zy#`n6L{k~fn zua7k=4K#_-9+=yI%k{V1blvp_4<4-5YMoAJbz@Zs)@;^}9z8TRR@YSYhTWar?VZkc znkUke&GE7E@$rdP%X8c;PPR5Tx7OA>?Y2=0BX(U^dY*8~03@7J8Q7pR#%7;MSS{yf zXF*Z0Fgw?3wI(JeCQC9=>a9|#TpJ!3$8q59p6BIx4w_{d{F^c2oE3%6^FkHnkWm7_ z2(&i3(72Lv9O3wEIHW8uJik(Hj7#a_7PQ>_NfF{o#19-HA#T0agf;b|`1HApPo6w; zX=U|^(`P^X)XDZRTWZJK8DHw>Ph8o2;LOs;o;d&Ur!GHsrTyN|JoWyEPJQgjOJ}!} zPoBK;sgp~m*N3N9;}3uO;)74M*L&3mp4|S#XICFN-C6DWpL}HXqYqp@vs^rRA^PyA zFFo|s&f{nLPhT9aY!p}4c9z%H&SS@XWoZ~E2D6IPXN;9R<8VK`2-s^$8>=x>YB`~HB36! zKtckR3joz}L&H?};{tS;+J02DdzsPJ$LE6pljC@v%Q@sH&y!kP3=^MZ(wvy!m0C3j z%3%h+?>G*Fb{Mvn9ex;>_(whURLDYQve z#AyyBQJRn3m|!}LAxJomD_vJOuIq)^usW576I6v?l|hXMjbLJ~GIOvtcQl+n#G7-v zGDY=SXW~F*_NY5~*qb~QOdOKq`&nZi;I$cVe19;u-*4{o$M^eV`#mtAWBbF&Lt$&b zKfcdv%saIir!pn{N$xj->iC{PaL0v_K_U!RKrR8zlyD`7YGCA+k#NW`!iY)`Mo_MS z*EB=VPRwvJD8N%*>H&YqeIf7^4=kF&ldCEmy;f?D&=)!dN@i5TpkGc{Wuzme<2s&? zr+D?t#b{a6hB9q(Wt73%j1fC%N)sE|3}Jg{j0LdI0gsk3*8rGnfY?F^WKmBcWEq2O z7_xc|We|}ddU;OK8c)keohf`ME41zQqE5FzOj4y`_LS!eK{?4%?8Q)@Ng+MAu#{-4 ziEt=|6ZYahb164zZM;^g2V9mWinXFzg_~F4iW?gnmo8m8ck0xo^B1tks|4W<*Iobo zyYIQ{jytcv?grlvIf*z*cedJV%d1O^OUqZ5*Orz;H=wMDdi}cZ;~wI^yYId0mRoN+ zdZe?u@{xD{?R(z#)|E4-9{%`8HZGo_JesKocF+r~ve9sJ@zTt))~8r)T8FL7X=YBtRwis^I``^@KZZgj8#%8QvRd%K zIw8Kr7%$MSuRYKBCDnmXp=X1Te3ZM|k+|M17!|}aYYPTLlyEx7aU>UzfE&v+1TxHO zXrKfHrgC=#$5MuHj#Y{Z152`H*0R!1u8#PcCcvON;dOA_Qu%x|c9c8|xbd;50N|l5 zD}lvZ=#P`-+A=(j3&PiP*kz$9(*#S!5~?j(bX-<1|4^;`!FyrWCqP2(&d45EI2m?k)$L(u_a4h&;^XOQJ4tkjuwiE+>Ms$-3QlqH%F z#ysrFr0}a@rgJ0g>gERQcsLwxZ*QMJfBwNy+S=H}I{dO%yy9gqfB6ev_`)NH4nypf zrRAreeCn}BA6;6!vbwsyv%MYl2S#h(aT}FNvr%7PUJe{@rqv1@=Tjf~@Z0|MEr0q4 zzxScP{p&LiJvdxh;r-s>@kZUMiYg|mm8U*+|AQa;V7$6MA)Q0biDOf=k%F=(EQF_;qQ9B~fx8lR>qoChV0mDR{{@L!BQOR$WxLUo5x2Tm9#Tw=*{rEs+6 zd7-o14CB1p8+LnfZ_3?!+6rgU&FGa*7n|=hRI!cB)&QWT%%5 zV%?3hUWDC9CvhdP&mDhP`Ak$c9lCM|l(%aa<&Ek)^s& z7z5{6^CaWtkp`}p6*en$R;WD7^Hf=a`QgV{g6S8Aaz*e%WwbF@we)NaFw`c3UKkMo zBZl?>dM24sLP-g-a8|T@Rb%iX!dgP6EH4{Ek5Lp4q9jVPVVotI!djAM3erKnXyKVw z2|REu`vnXf7LsS$q)GvqRw!YTBquJo5X3n-f=Naw0USYOHH0VpLO6y$$fA)g@I8=7 zI*xQ5vV0IH8=Ko#mNz=^vtg9PS*}o%OX>Jt5C%1C5ZO3cVHl|7cp~s}SZ~yN{d~8V z8seRS+SpCDJBe5IxgaK}88EiG+tZl!4|xiDIDX0h38)T?9YtXlD1&*OY6AImU~0b7jdU@xGafZ~nU1z4FB`Vk)a(yJm?Og-){JZoj+PZg1>Z%P>Oh zHfLsLCMG6a*F^x@+}vag(_T&oX=4GUb)k^b7=o9G;}I8?G>+qI4vDyiE(&7|w9FV( zZoz{QqP&Plp|zHCj(Vdi1fGbayo4pp7PFVKa9Z`}Dqc} z90u}&B6!^(i4#}`Wm+T!i&BeEF_|LF>H0dt*2>OqC&>z}Y?2m(VT!i8oqiIfT5Ag@ z(nfH25fuiWSYD%MdI;otm>c-=Fwuit_Z5pRi zs5yQ`%0P%faED=(SdQQlq^yAfV(eH6;e?P}DT8D&R1EmJfJb|PPM{w$d%3F=Ikagk znk<_!*y4^Fv3o{O1XUTbmX%Y9N@Z`vw1Fg~h$%z5Tqn_X86%7Z1wPT=9RL6j07*na zRF6S`d2VEyQf+c$VbjK5t%*M2fq)}Q_j4pUyafD^p&4sH7-TUPLqG?R9@Yjpe&Bk6 za6QH)CKl5>QkXQ1S;Mqud0~@GC(sme&Rou2qj{d`ELB>Q;4F%%TE$&|u(_S@_Eb;} zT4T^UC6<=9>4AqYb_e-GpMBz^AOF;Yk9@Wt$K}Rve7rF})@+T}YBg9UoDEA5c3Cie zc;Lp`T9zcPl%C@VM$KBaUI_!=l@LkgMKVmv|46Fa?`%f>-O~4}K|S=UfymUy3&$pB<_{d2n3@cN05WXt zY;SCB_If=cLJ73Q?bWTs9s?>cLAG47*oazdQ5hxy>LN*JFTppk3RuP%9-tDy7{gGn zWx=CM7z9c<-}6AkHsqcSyay0tgsBCW<_a^Rwe1gwIG`7~g*O_*neZ?o!(^_kChP<~ z629fGWhL-bYn`M~JQx;PE?6lTtic-PIu1r9IjiEd;kp$^)_u2DY8%%If$QR!8+ax4 zJr_*i`@R>1p$Gj`DwSIKS4FB%&o#$du4(y(A{)?^3B-`hvu4ISqRhN&v1^z$?h^Q7{&sX00)HuLAnA80V;v z5Zo;Je(3t1=LMK4;YuMTlY&cu`W6X4BRq>8<-dqz5T1-;)(EB0-3c&7T3OHW z$C_hv(-Si@&9SjCaLdNBgeujt#Y)W$tNzM{e)x%<|NMvV|KT6|jj#RsZ~xYB`3`&^ zzw!3FUi0RWn{`liq1M@t`z&*#sj5Zn#OfIGyz+|Uc z5=X;6ZfxK`yF0^v4*`HM)kW?JHr}Xs(x&miWXb&Wn{>y_r*Y<*^?GCAQi8ZoimG~MWQ&R)E35g5T$0A~xz+_n17jbQ2%_Wq^zE3I5jOC2Gj61|!MZ$20GwDg;OBT8k zkOZ^HxltY`pA$EQYqUpJ>Wmk$C{kW1u3VP_PGPeIG4mZoC388`c$LN_iBP#3xY?ZpOXE; zKeVH?HkP5S5<+4YvVyXdu)8dgk;+RH8EG&DaWV`&VgATK`(^8;kXEA|V-13bA+UK? zL`gb`;-FgdE3mYR=OPrk2pPN#7S7hz&iV5f9(ds4_x=6H-ul*e{q}$QqyOVy|N4*q z=+A!7_x|KP_kPRmx4-h&f8)=7|M%bX`mcY}H^1?F{^Rfb-sPpu$(aK;-2H;0M&)k zMW$7*5%^6(rm&`9wwRq9uY_*3;^WGBy49=%P8RhqTsnJcbM^f8#_6?1RrRJ%96hzR z{Mh1!zy0WkAHHyAHSX`IY%Lycq)A^eQ*ThMcJzkp=J)NZ)N9I`K@<(+2;MQ$kR@Z8 zg#wun2%8eRa9tNd!lIr{kp)nKYJ1>Z=dg0l4Bjt|gK^9x=OrbpIcbM6t&6?+W{e37 z+f@X^V5Au-L5c%Rp*CT*39s^U>M-4iyjFUy@OGNb&J`8LYHPGE zNM%eVq+^fUisM2@p~Iz7CQf*k`xslf(MffZ6v;4&2E%@TFvMPS(bqaq*V z*&xq{1!$J(G||Jf7({8WAN6{JPN%oq?w`7F`O@0<&M?V{GtXm=i&X+wAVxrXDo0^e zrd39ilZ|sM8!$$WxNi)V+=!Av94b{{iIat{N-)a-XwTvaA%LJoX$=aA8H+zWB9g{B z+DJui&agC%$_T9xD^*;!Ye}Qjz~T+eopNn+r7~4yMTXdc#!<+GVF)bi1W0-D-1Xql(r_Gef3M?miQRIb6^CBr!xr@w-7;}nQN81RBLNQ@j*{tDJ zuiEe%QV_PgY4+x zW4B&+^RP3}Nw%@L{Lm*qb?&K?uC)u3Q{3pd-#2*%hExGavVnsD?Vtp+KIrUb(a`0h z9>T>u6sD-3rY>joYB)AFHawA!%|e;}AlYemmRHtSHa2&5`_PGpv#aMRol`P= z#n-&%pZ>F-Jazso6XK!Iem381V+%StHP>uSc$H9i4!Z9Rx=Txo8*3}O+dKVEzt`(+ zw>v8v>q{%k3>ybBg6Y!!CGpWRhyY=XDYRC`0N|C;WwNHgl)?i>bIP;smW_L@T1ZAQ z#%!r`ZW*P~(8u7ImI#{ZKyb_pVXHRNYE0BCVTH)0Oi+TF+@`|jWO8E=Ws{gDC&s2H z8m+OgQgy?zs&Pbl`m@Rl+)ASo)=*k;!%9H}hg3PDK;lr`bn}I#Q;{}w_~F^v{S%XQ z>5MyG#fs4Iy6`4z%~}vrVYRZ{bGYl|%*vW8d|s;u+!i7)@Jh(Bept@Qy38G`7@Rl) z7B&JQ4VTQTPf3Lzm90_MPM2ZMqSyc$F zr7@IcEK@AgEVYOqEGK|xByvJ1s<~d4q(xCEO}W*z8s`p4mo-~%t?moQR+~Y+6}Ziy zHtyH!Zlfkc?%KHMu5MpGb@|Mrr{DWm@BP#N@+bfHCw}S8U-tuVeCa>=)|Y?l553{d zKlL5|?AL$pKmYcx{_!9E?z`Xru7^)PvDM#k184u#*v(_LWBc~see9N3+<5&v5E2fZoK}!o3Gp72wBt? zad)O(x&F}p=ih$oy|>+ReE-5&;9-{4U})onXSt&^fD#}e){y?f_}EmvQFUFcOL3BR zdc)3cf4e>0?WKw08P*iPX=IgTEmMv*P84TubBqG4k-sz-rKsF!6~QQ$6s21yJL%xx)5QIxS9%C%KS}3%uY+=1S%`%yAK)dT~F> z5^WV>iIE(exX=$EJRxjIfrhLjtmAM;3P(!mGQ}B=M1^rQ^SG$G-gvb-*{D*UbDg`! z_#~>rtvfOx@`!RQOM-cUU#nB2L6Sq$X%r3G-JM}Ph;wwU;oDr0HY&?f!b-#8AXLgg zgdeinQo*><)(GiHk8(qCuG)hEyxlO0lSFA#t2A2UlS*kQ*mDJkn2M6DNKzWcrT17v zP@?8s;o1x>WBqg;;R=b$7@y}!S4u}npE)i`mt2n=kKn_eU)|o#N!F@Or&^&}MPQvL z$BlAlZPT2;)Oq}=mB0JoL;v+H@A~;){?Fg}gTM6h*Z#=i<6nK*0=oaN8kUz>T;)AojHEu&f9K((M`9$=)?{8+<4us*B!h5_<^GfGYgaT z$*Na#$mN>Z+-AdMXMJn!%JSCo>guIS>x+y1-F7_e58`1Z@cX?^)bAyOZqo0i{lOhK zTt7EHmi2l|=T0r1Ka&r-`z9yuxar2}@g{;zXJ==5aq;OVo_Oq$M>f}18`TOk8sL@? z-A0T7163!3VHU+%mKmkUFezQf4Lv_3>lhN6Nlns_ASUf-yWodat<3bHL;Lpa>$Z0n zuD=0+-nBCAL`ip;4HA>)Lfb%yTHqmY%uG%I`)21BrspTdC((SGt8O$vcd$6uf=Ea|0DCmM9)Xqe}*Qn4|S(SsuEW^q4_heeSTD$dejo<@ej#1W2(%LYtMo}$}$Ma%_>^{j4`r=5XcF3>ncl`z7 zPm$BgsiLTA$q|&7+%XIcY`?;!4GDO;5%JQ^t={+wLd5ekNtLTJa!vp`b1b1J84zPnKs? zLfNfOryCF9Mc7ARh&fR=OLvBYoKr3+DPi+}vs&EI;{b+5nW*z4|l$(z6X2mjNr|K{KS`P-iUo4>j6^y8}A zn;Bnt>C6khb^0aWHgo6K%^i91!u(x__T4o#djlU|=y{b*V^`C3yF2W4+P(JTVE4jc z_u{Z~VbHxe>|Kicmy^MwE4qO@^kl!{C-q8h)%Ku!IgK|bT8&n#b;~WcaL!={Fv`JT z(ChWUV;aLStX8W*5Mc6PxZQ478EqL!#|bNyYONN8A(wCp*b{=%=L1bxCb&aPSmM}q z+uW!mi(o1#c5EbIBAlT$!HB^k$XI6Ku6nooq8Gj7%&F6#`P8Qe-Cn!BON1HVfg4PW zw-)B+_suWN&df9#4G0#cNq>|eGaLzksE{1y%NTQni*aF4X_|sUB10{?3IG5Q07*na zR7Y?ZGD#Wuezj7m<2I&JuZFcoW2{zdgw>iKR5+>{ji7@17R>=AH~J$uwY6v(g6@@P zIb6#m1r;zQO9I;A+~w$5kScU)H6CT~VLWkQMp05^c@8~7G9j6CxDbL1VjO)LA_M6w zm0%2aXO&7;6uY~-!!+wfaVLsE2U!voS&2N4R6fkJVU{JjNR5K~#i~%&q~&OpvV?97 z!Ju`L6=|Y2Hnz5Ry4}uj0LM+NCWizzs=nv=z7!sD+{QYVdCUnVRUPs<^SR@bCyih^ zQ!!COQO}Yhm${)2g@ujK@r3IO2U-}fHzvo%YF@yhJ*~(ZVX^OK0-=zxa*T{&fO~qw zY4GGs~T)uI&8zyFdJUZ+p+L{pUaZk$?Rgum8@Uyz^ymJaFqPCy%`3 z8@~Mq-ux5);&*=ckKglwPdt5or82f~*9%|uO>g}EfA{Zy@0Wh-E&uA*fA8mh@wean zLqGenmw(HVqxaNm2c&BFW?b?yWx^zLl7yL5xXRtUvaz+gxxL%&V~?d0Wio3sj&q?I zx^@uoxaO*{ik)h@v*W>BEA%LFDdMW<^JtKQjCL=iOAR_|;l?!;RNDj^nzn z5W*OZHDG6FCyFA@304ZYuFUcThQ7A8wz9f<>C&akR~BLD^ZOQNXJ-k%WJex|H*J~F z1b&RQiZM;r7$QwDY`juv1rWE4l{11@8D1rAxhV^+t&LE z+Cw`=DGeLz_xtU3duwZJI2?BRgBZS;B$!;X%=5fzSRrC~0pg$!Pdb=v591S(APUUG zSWXNjsJu7odc9t)G<`30WWY_4E0r5qDKl)8hzM<2Yr%k`EJ<_A2%#k_bf%b6+!BMn zTtS{7S1^yUKyoVZ7_v|$tkoOiuq;Jf6WY*>S?Rf97=#ty^Bf^4taxz0Mzc0OJ3Wt` z$HWBYqdy!7M_Mj&V{&5^XIe@lr7B0@fibQSK_LBrJCeJO>j!>V;aoyZonE&;99ki@ zvD34&wQ93bAFo!%q^vM3UKHfU8!C~I7!dCpwyR7#Ew-X`qep9f!lE%S6md6`waoEy zIDSff92w{!8lqwhxReab8;S|I9vDP@u@u{bt_{?WM z{Re;eyMObyfA!IieCV;qA3l5L$;C@&`n}B}>fCw#;oFbxyYs|>`))n)qT8;!@!(XQ zC;hbx$LAYIrYmzbKIY~%9#?7D5K-MpdDhoSFB{<0wXwUtym96H@}<*PE}R;6Hl-zxixSh1hEbg6X<-Y? znRFbl>Ian|)C?Lnk}P5+F+&_38!)EZea)+0b@J(_yPI1xQ`3R(*DBRCPOv5m&Z8*a z-rnBa+}v$<(=@Y|n$7V>qk%8=^P_}nkRL0VKr|_g%5!UN5Co`$P!f24=sJNTeOFdP zzg`XN)mkM8eMDTp;`?w_U%D<=@EolT{FR6kBO(g}KyTpoT!^zQ!}h0irmRp(GiA9o zWj#(93vpw)QB~K)3L`jqk}8!-SgSgIKwL16T{x;+DMh6k)M}_G85yGrV>M%#gR&>X zw6;oF!!Q^krBtqpTq|WX>?YM(8_Eh@AYaM~)uRc*_y+^53N$u8F)=x9xHx~|;&1-e zfBg5q`G5Y-Z~xc-{5$^*^tb-Q@BI32{Pu7B=70LN-}q1e=GXqizxIQ;LrTR_y6QCee0Wl_D#SK{L63t{-1uscmK<;`SxFY%^QFI z)!+OtUiG#A>NQ{U6W{nPKmHxx^|L?mQ~&OF|NGk?e(>}s?tlE#4?KPOO1mGk%(&Y6 zsq&&sCWTuRo-RC-d3o*@nVY9>mbqyvceYh;b?|$?_x7Luncsi&5B*=?@twc^J>T<- zZ~E3>`o?ejm2dyvfBRiO@GIZ+reFM)Z~f)({{CP4)^Gcz*S+CiecQMF!gqhykAB;? ze(yJb)3^V`kN@-k{(FD&(1TBq@hbkrvHdr{`W4^sL*Mt)Kl9VS_~SqNufP3UfAICM zf8+7vcg{>7Clg+}wDaK)J@5yA@Rz^x%fIz6{`t@U>M#A;zx~Bu{)6BBy+8cF{_FeR z^X{dK=Vm7w_uhHaJ$Kx2)A6}lm`9zpu6ef!)#|&#zX+_7#kZ$!hWsUY$AMEv_>}1mDUE5WBn|!Gqk0HXobGW#k;QO zIj$q%eqMmZLJGKI=m+pWPkNm5B7-j()VGFlY$Gi$e~pH)0JqRj*&KQ*If9`J^oL^0 zaDX(qQial372y>nl-5OpeIm0Nt_+-Vt4W#4;>)U~!bLNz?2%RUCU;B-3{N^`(`*(cr_k8c0zy14u^!4BV z1F!$CAN{)T`mwM7?tl7q-~D5+`?eo?)wg{AE5GUczUJHU=%2p&O+Wm~fAT|L^$kCG z-|N5U?$>sP)0#+SbCh8Mr;x|h7_u9tn?Jui6O3+{RC3+{O}@cg@91Kj((SKsrz*SzFKZ@Bv< z|3r$pPREO)dYX<)d64*AZkn_EZ#s6v-Ba@?>aB%pV|KTfJ@To~;yUo_zxG>x_=kSt zM}Op}zU^DT=jQ8g!@hd;(#qwB9((frAA0Za|IvT@#b5fBANh%2_`Wy)%J={9um0eV z{>LBx=l|_r|J+-D^S3_mCx7C(E0>;n?4ggo z?=AoJH~#uhf9J#R`oqWX|C^1ApG``@Z(Iz&E|>WiNZt-Os!GcG4n`*zQ)ecz*ryM^1n2L!Wu? zJ3st4|Kq(M{m`dB@sWp~dhFb#b88zbJyOAVeZC$}1b!_D0$3qT90rY<&GS5thqJTO z`}Z##IeHjrdU_h+6)WL|3l~21nNL4``qcWyMt9Kf4+i~ci0EuNGi2d)CAIb{wJ2dC z@Lk_`h3hiO7{}sBO2c?GBg2ib*0mN3AaQH4<7D>vuYOH3O!RKITB#&)>~M#Z7;BFA zx`RB)9WH8NrBcV{j-$2Z#Nc(DOO@*^NmZURYxh2m z^>;h{-R`i{8|-#>ciQc(?d9cV1f89o-EOzfVc>R@;C>wKK{AX5Oo>ub{1&B)mY%7M z$(6#=q!iXBQi=-fpz}B{(lkr7F7I!YreV}=ciZ?ZHyrk%DJ*Ddo?{Io2q*=S#ao;+ zDbc4!@GFmkaa^r6a7Q)PY>rp!^-8rKRsg7`f+Zi@PS5il7ttl~eXQ~o$1C9n@Kqs% zABMGB&GkL>vUKLm%F^`(vn z9e@7kfAbfA@$SF;%fEa3+x`yBTmS5xfBI*C`$vEHKmO>C-ti}Y{LVlBv-iC9ZGZn4 zZ~x$5zWqaQ|ErJw!zZ73|HmHw;3psbz{fxPu}?pFVR0+gZj^~sNh2y+))V6nGST_AO6Jq-~XZazWeV#{*h0fJ9FX8sk0yXyAS^TTmI~$Z~v=L z|NZ+eJo4FiZM~{#rarcRX5r}m!$%JtIlBMQk-2>bCZ_f^np1u-E@T7t zEWyb{Q=yI0uy~^&RIUqUaws4zlC;QjW-Q*~B-r-WW|1YedbKDr__Vba!*c^46!y=# zjD|^+P+q8NwVLIrwMw{xJA^Sa&b=^bHXFE>6$m3P8Ail(k`AV($MzkZ&x#!VLXyES zg7;szaIv$y>q!TKT4Rc$7!HRJ(hn=z(%RZiwA&L}dzQPFhX|Egn>>d$xwa-R977&4 zUKB3zD)ztHa$^OLgDt_;uh9XH)FKQaIOyY4-D@L1f9`|I7| zYByf*CmRDC2b0xKI)WE5(KBL5&XC((m2IS|tz;_GzH%uvDd*Y&n3!_l6#xJb07*na zRFb}RYi@0u?nzr|)n-2aq0jvH|NO^q|MS28rT^pK{l+i-hrfF3-~QPjy=`l)_n!BD84+P6jN-xa z@)h`7mX#$iGvD`74NDeG0F2gJ2mv1Mfch{|6vA?XAV6gl!ur!RjiM+BLnm~(@18hu z;+Dh5)FA2>383QCCxJ(WFdhlYiovk^+BbYHwqT$9=*O^I#>8-9X`C6Yt;yRxgn5ULl@xM$DEy8ZxEtF^h$o7{d`wD`W5krOIfAdW@lOs|u`RP!_&l#koof zm1qmw%PotPN)+Ws(#_S2+XBC|s6b_dI=n@dY8 zSrqFuu_(f`7_J>tp(R<)EVl+=+OnbmFnfStoD&&ipsXZ`;v~uk{a$rG?QYuc zoqYJwmGhTA`fCCLDh%s7$z(hHxrOy6`Vol!oVW;gE2NJJxae z#PoP2^n_ptUoa+XlrEGtq^xxOTC25i@W^$y-u}E>Z@FW#HATZ@@xn!>&BDy|P1l{c z;F4);9rgN38VYvYrRiRr2N{WJUbUw`wBQ?qjy zE?s>0yWjbdfB4}0|Ng!BO8(emkFBq6oIP{l;@Qh_RD}Lmr=3o=_E&=`PW5BQ?wFrB z@l`K){n355PPPtDP9Hmb?6yX2Zf1NxWzK<_gA_lTj+qj8SNaMhT2kN{nk;QqIU;(oXV~``?QSd`(9MKDROO0wn2;>~Wp*s^NtX0%E3XS|e4$BrAUB3-MM_&(aGvWdS80~#IlAMVJC0MUU>94ddG4(zj=laBFaM_3 zzV;<|-uaEMef3N3zWYUY-}Aaxzw-7Qj^BI7jrZJf;|)g_4$rqv9GtoRhQoK?di-Vg z-G0Z7M`p$Xopjn8iyO=5HdZfn*OpkPE!*49?vA^=n>DReHIF#c^_i@#%eu za-DE`Z8N*=&Q~m5>WPlu%qNChHcxz&NE6Fy?t2|`=lpeRr!V*pkJ7$yEN(n)e`mhp z?w@N^>nyCWYE4MD5Kis|Mmj2}u&~NqPb)ht%z%4^6B^;_DC%LF`u#rU3tj|EfW^ZI z=nE745Flm=UdQNJbX0;6=5SGDxytiA&C)n#L=q)MCIa_Ie)`A%@K67!zp}0deH99K zvT38V<%T!D@Wn5Dmp&yX3rch`wiV)0G!GvHEmMKTc z;gU1Sxpc~v(05(WeOB@u*BD|9?+DBhmUJ9wyWQ?!Fc|jwgI;fUXKQ_V>B_~6OP3dS zHa4SPzrWkwT3fqv@%-Ysa~!^|;DdQi+F-y?1=@mwOrg+R2}VhlF-D9rt?gK&*$C^N zTNR~*9=U;a19G8$FS8=mSP4lPR^&R3lXx(UhH09?i#4Vlt)b<>562qgv(t@ArGhre za?Se*80^dE^rxd*ovuedH7OKk=DQpMC7nvrj(x^rMeH_4MPX&pdth+|y^y zoxHGkW@YsfaOv`y#~y!Rb^Q`|%+%cYzC*Kzjvu(;=Hs{Bb@ToMvxg2W>_0GnVE_EV z19J!W%^ui4duadc(L)Od_RY>rH7D`)dAvC@J-KgT?$DtF({mFubCc8alQVOznfcc2 z+}P|KXscRtW~Li+bK{MMCwXC2qVp(?2iDpUL!MhWbnwVcH{5W;b;qYBTeishJ6o%l zFP%U6RA*~-cXMTR@qBw@1#fYoNGJqcChUkBDj8yqy|Q%iumAe(zxnTf?N|QoFZ^G> z{ag3n{}INrV~1xBA8gId)T}{YL!I~HcsEJ=QQRN&yJ?zYPP1Gy?$qmJJ8SKY(~Ap1 z)5)z*4$DkndBeyf&53)DUB9o^z=R2tx=e*!i9zrBh1t2uhTuh(_42&0)zF$aO?q29 zOIw@E(V(4V-8ku3%I6oRUi9L7zww*C?w5Y~7r+1ezklDpd8LZ}pqphGG=O=177UTy z%Q9<9546wnKq5}WEFp|=VmR`_0j$!X$uM%TzaMYhddE$Nj~{&Cf%^~5&$KE{V(Pw^ zz4+LXqbrL`ci(#tzIHtN(8E|Zzy6!P`QqZ@nbYTr42GnvGFBVUaa`#jI2&&;v&sT%Vb<7S*N|by}8wI?~*DiuFI{l zSyIGN9uLcwHEcOgwJFfW2!t+2jgq$TJ&~q4HcsHPEDxNJTUTc+O=uX?Fri*T?T8{x zu_-@ur3F;zhh8Q0tAP_(%Zy=0b8QGP#u`J$m|m|Kz!Ks#%ZjY9N?~MHp$`m{8C#B* z@ai7WfMsd~W0)b*!~jFgs65RhM2RF%vn+{`i#D0%w#oi?QOT5cEJhy+mvCwKX0(ZO?PPdu|=4WoY?$`_N zzVoH`z2Lltk#Z{*gcLloBQV%SZS+vd}8eDzwr(K?pJ^H$f1L->l`_H z=&tAAd+g{@;X01z&dtpK>_7ik>uZ~1t;wUujz9FsqdVK%32swl%N-%9OgJa$ZnuxS#zD8&-R(%u1qnj?h7pX{THG06f9FdPII`wB z&5F;FNS8~x)><$|MEFA?8zmybFSf7Bl2R&7^3~;yE0tUmPk z+Jld+pSqA%pK=tHUk&*qwqBlGhiCmjtuvYwQ4^ZTb~_s`7kpPHVpHz%-pZ8Tdbyzcs&rswua zzhZ?5s?Eunh57vlXAT_nTI23S%bS?=CnmgB%NqwKz46KF^jv*z0jSK*d1F(BU+o#b z6Bn7{1$r*5Vs36oisD`wfm#Kei~j$MEK ziP^d7&=W3aB;;&seBb-wBk~Hb|TuW8y zzyZhnpe~*1FuZ=>fvpS6I~Ufx)K-*m;v(MKjW)OA&FzL1FS+BkqjNJ?PM@qh)b#jM z4}ZGII=SsFt(@|BY|@>B3*%M|stuPTZZLKIO*ee?SH1lCx8M8n`(FMXZ~X4t?zneh z-yvW6Gp*@~`nb)_V5hgXw07z2#fxVytX)|-d-C+-4?p(MXCC^{2R{6k|Ncim_p?9u zgWvN5zwmQE|3`26gSE9a##psl4MQJW7}y>mVRFgfcLY14C1E8YHY&JA;lMGrS;O*g zc6N4rYz%4?LL5GESefkdQ;%<~ET36CAFJ$jFMH+U*|W|0={sKZd`faki_bjt&|NQh z{!V9i>*3FGCVU4PB`GDQLn);T1xG7I(guD<#P>Qyk0``qEAUqWt7iG*NLNbfx-J=u z3MwyRq+t{f6ZqlE(#rbkTD#qbv_+ODbh-+nvTp5kgNMy0D!u|UFK4UxxDxT|0;duCh7*wR^7Df-_!S?R< zR%g4P3<_IV$(X}5wxOKLFar0Jf;m#U<;WY2My*<{RItLkj8hrSik`#?g#Z8$07*na zRBYJm7D*fmet6&9fw|ek3-ft2=))_Re?z^@l$2-cNq$y`Ol`J3jROcYo~k zlb5m~4Y~yt&Ukg^!0fR@`>vavI#3H+f>#&zUpIH)#O#3+^LsdW-5xVJd#E*Ycw*{s zYw}QY@<5|?pfpJ0`z9V*y7e)O|{@b>rJfB&NwPG4HSxVo{tWio06twz|Y2d(+3LsQN9i8?my zbIou<8s8?I3XT~!#x$Ev*lQF;aU8?CfRWuj2Vu5!KSuO9j7nhZp5p>mo8w21!2#~Q z=bod-4&Qv&t$+Dfe|hB4VVxw^nF(*aZhP^?Cr%!_&;qN)7qNS2kl;h^}+>E$Vf2883Se466c%kW%2R#2!X_{?PE@cyZz3)4k1$m3y_CI*9$ z4)Z)CWMNpQvFBu*Q=#%SOA1qPDWv1Ml^XNwUM2az(-t$Jxbj&V+-? zsLdRSz1(2XO9qjSvm(o(GG+;TiAp7aXIAP}Vby%IAqGR+X*)?|hW)g&6K!t~+dI9@ z&CTWI)y1Wa<<-mQF0C!E?X2Sfy?*)Z#q&>}UOang>&p654?OzhgO5M?;G>T{^!Q^B zKl<5+9(&}GM<4nu4wp|o{=`#{Kl#+jlcz6VxZK{@$%ZMyO>S(;D7OOY;)TO9sg0uz zPli!@eSOevk5z+%GqY7cOj2lU==z?N0t3sEe7D=#*xeaq3Au7I@Vz|G;(_N1kMSZ- zi=qfBwItPP%F>KsE;3DpvD(61sNWrQ+FdGG=rtxMXYaWEo_z;ToV~b4qM948D4c3_ ziZj18v4D-h(PKAE&hC5Yv8Qw5uYB#-K;~0t&hB=4TkZC#%U4!9-PO+SX0P|Qzy6!W zjjhMeo_qUy-`mxCqu1|cs?wbB!p6$>u2*m23<4QQ3#H&Ha<!(4k|qGYgISM7e1( zl99ui%enOZaR2^;&wJiIQxnq;7eNrfcL{wy-ee&@qKK(F`Ph%mL0l~PHQszcy+T>crMOIi-U|}=HTCErZ3d@wS{Xusy z=4|*@u$kI-%dOYne8bV}P8_`cxcm&D?78+%St1tBu9z7#X9DL3b)14o6QRWjz^?!yGc+ zu+TZ<+zZ{H;kivI5cuoNR*ZIv@&Q*xj0@@mv%%q6_xS$GWQ77p!7L3k%yVrJbdcA8>-GK4j_9n6%V@T$sw|p9 z{7-k8jRX~*V?9AxG;pjId4^4$lO;|xoG^CQ@Hy$uc-}-9)&mb-AtZ5bxzLj3(!$ST znGf8g&$52uXIlrdNUK#nmLiO(yNB`rW1tRb(}ybn;4r+j8`09 z%(faP8@k-ya?36KI5~Iu%7D|bCZnczy1)6r;+Zx#TPk~WY3bvq&;0fM_kZAtC;#{Z z|L}Y7dhZ9HIJ?8b9qnaK%kc4bSIi#1bLQwB)tO^XZKmDNo6Wi1-6107f}1C&tDHovyTu8H;TsW9;60@9p(^!f`tNUZdG0$uq4mP)*jaR^ShnW|g@-$>K^a zl&&zOUEf_=S$g>^Uw+GNw|wx!A8bvw7Oz|!tJUB4)^|CPV{I^X;Mhi#Wz7BXd;g)v zDi3`4{!e}EQ_Gv1E4%pqD-kzmytm?`Fjr2!5sFGJ7qT+eIB;Nos#RBcTogssulv&Xm|d7?%uY2bW0l#1bM?9$ zYw(4++Wc&_S{03kJ2O+Cn5;N1m8+XgGaYjpC3ck>{4xSHf^lev2%2J9oUN~QHaF6K z4^h4>XO^Hr_^naes9Y79l+yKa_H~5AjaBWP?bYQg?X6A3a+9Z4>s;wUk`LlM&Jbgm zX2Kw#S!;|@O6j6d3Q>S%xf(`kw;%V0Q4}Y6ZnCV1qf{^na7(7_Q8UyvcrCXOof%;W zz+f0-f|y`@b8BaMZgyj5JJne-=vSqD{w=q?=+;{gRYJSAqE=TARDzpkXYV+A#5cy{ zI*kV@PF%joR8rW~2<3%Nb1d{Zc~-ML*U&;73 zlJdOpxinb;O?gsCRUlBgI^}WS!B!bB=SgqSt<&$V3N^N~( zLn2ssQj^|yaNmK$`>=fJyqIjYJl}~1!=0U-X1#Ir=uvAe`k0uQ!12j-v2yx(o+_of z-CZX5+S=M+Fc_O?;UL$=Y&Poa>#J}2wl^kebng5aIPmRv-1^`{4}IoSpWeK(UU%!& z%Gg%ByS%yG?hahxcQ$sGE?r56iR1Z*+wEQl4Z_H(Bt30iZKNS#306(S4I|5pUkO}K z)~fD!t3ES3F~2Z9)@l+nMcPNC#+uO>AM*ltko2Qrms!^IX$y}lj}_A9 zQfH1WVCdijVe5g@2;HjhFmABM8qyZPA_ga992*`-$mz+MC`k)t;zG?IIU*aiYFIlM zw2t!Tt+lzEn{(qCJJy^Q{j@?d;M@_sIn&C8?x<)zX>X|BW--h|Ubs}CSEiILVXY=Y zhb0VRwI*c<7gyR4_ACA%ov}_eO=X(6SSU^AavN}R(|pFS%vG9IBfMc=Q(WYlv?8UL zrAocFu&^*cKVPp@VGtO~utf6xradoL2&O7dGvXW?hl450#wKSD9zE9S_S&6pty=COI-TD7`Z}y|dwcuD zi4${kb8xNYm8GYjesX(z6F0^XJq$zFlh7mt(?vesY!q3h@-$7NBF%J`4?3L?d#!ps z@Z4(XJAw`S-K5ug01Z~gt5dQef;s|m9;cYd%YgI7D8lM_VB|G zLk5hu+wB@-DwRsLTE$@D-cVXK2pvtH<{qdbuY~cmb&Tq)uV#a8HE^cJtAU4E>StLe z8E)^JYK@0JOg8Fudb`_27D<_Jq(xWwucu^Z=Zju z`KNmqPWCUH>R&wFUp|-gHzg2nyUC6RC)}F_vg|6e_XCL`I(V3fQ5un>x7#tQn5@<( zE45Z7YzA(_7j>TkUxmK%eN%7vh!!neBv!^d1GTu)-PlU99ASbnlB5~jFB|5jz%uJd z%VBCb)9AvgRA)(HbL+qv1b3|xMJja)_X~u92Bc0rZd|6|gp|id#bAU^RhC$$47VDT z$`FR}z?WPh9U+Fpp&?dSw$%;8qZB8J(s~$28YWw-;&GJVlj4904jyzc9KuxcqTuDg zBoodsif88cFRiU(=^G}gA6Ar7=$DALwzjY`b7m*T$4(qQ^5XkmbyK$P|i6oilQG4H4~b_ z#+ha4oP;%itMyd95;EoF1DOw;q~oQ%medEvt2~XXoK+=@x;v{Ym%80{q2eeR6edmb z#2AHsYt<^(Y-fG*?5VT6y>z>u_EOS3mnVzaQ5VHc#;a?;z`9XDZYU&_a2m5Qu zTxO-!WEHld%!5s7W(%teh;0pQDN}Hw(DfXvU~5-N$t=4#JVr+73tRh`C9N55L+u6DE##>J8JBYUmqb0GXU#a_nG*%enaxN{*7=FPq zQbkp14{&p}hM7*^}!R)~@s*g3R zjk-l%aL@Op=LTVjLX=?k9M|pid!R|4LC2Uw=;hMVYJZrtJAF)fd$*Gnic2TYbF?9a zSY2K@b@J(r_0f9Y+oZy^W2v)zxK{rzX!N)&i}IB+jDY z!P)tptu<4mt|PKE)+)d2&fCYEW1FihuX@$1CZ?wrmzJP_ELYn*yH7m%bhX)9-`I}Q zq*AG1yci>vL{M~>rYZD;&|{1N<9QgF53AP15{E~Q1QJQuX)8{Q5RO$%S`qi7m8E>? zvb($OZLgc-t8h=uh$2I z0j3hD)oQ!DyI=qHUq3lHNkk|iDk+$2Nb@Yo(m@=7fe-fveM~Tppt;7T+X~k~IVeVI z7!}%ZDf@A{w7TI2RqlGi^R=NyV{CSI4tMmh_?4BVR;%?(zxWHEedM8?&dKHO#sB!* zzf~WruWzgkhkdBU^(3~1$8p1H;E7o|Ot^Y?d%D%yKeIqapE!2(Rj+vEvBQU;AJ3Hw z2M%6;{f#G|K9%RHP)1oqZ(hJ^nItYblSr=XT5Iz>cSZ?jjNdQ}u}uhq0PzTdp$_sn z=ZWN*;Dz9dqbZmZ+R{bTo2~`Z6-Q?Mii(a*HD7+$jo>&bvn9t{qE@3u&D5*9 zR#DtAW^vvexgR|%VGM$CW^_>$kl0|b))Xqsia60puChWar8Qj1pb0JGK@{~OR#;Cm zmlqY!V7r~iZ8Tww&hsqKQ>GOxkK5d;gjwtW3uX#I8nK5n?K+}X@oJUom5tuEEgcFlo2qDLst^P13>5%Jc$JK%B zPfo0+g9q0xKOMI(tKn|IldAXl;zb*}R`A)$iHWdcI{l-Ki92TZzv$rc*WGmIE3Uuw z@c6`Zt=?qPOA8sLURH#LH<;@bMkvLVvbuz_N<%-S$zfaD>)aG%inJIe#W0Qs6039I z?W*K_ck4>r%>`8(b&S^&g!LLLTeVu5-#51~Ki3GWQWM4!t0K|G#gk`3?qylxx~|EJ z12gmELCEu5B{9qMBF&OvlqDH90kiW9IEmqV2^_E6??IT2?X5h|;lN{KW0+VdWjGu{ zjqiHbyPkaVNoW#kgmss#G9@ka4dl9Yj9x4ajMlS_QQYjCx7xi-}60p-u2q+uD|EU{^^fEjH5@7 z&dlJ-+0%t$+#WrA==$Tw#_KiAcs;D#c=)>UX8oS$-4zdq`xoY4bl(e)9XodE(j|=L zjyvvn;)y44vc)PF$5PucS(|9>4Pi6ZlSlLC?G~YN_ZuTBIp5u37Sc= zTya)#rZ@qbV=HBe3^CP<+TZYo*Z$t`{?6Op_Le{Y^FR3SzxSX1-LL-KPyEdH{_yvI z%iXu#5=d@TLMGKFPm*DGxJ#Ze%oIhw@8E%N{>E?mC*SzZhxQ$^Nith^4vhKN&o}Qn zKL5g-4!+=~gZJHd;J%v`m7#aF#2b7b+=@ z%4G08W-?X8!WN8DZZb*mL+HUsVSLXq*sw~()6ntIxKtP=-ZvIn=E75k#d*<-;!c0K zwcFd=-a*tVwMIk?>LUTUNBHb#AN$1ppK^jQD)Md|lOJ}nG_tf64-&x=>?9m!d}n!Q zv!CaeR+s#01!LaY*;Fbw8ry8bnie|p*v#A^97Mco&GMk2il#B{v=AB!;}%wGEwp78 z`!Z{-#vg>hO+cPy!W5#&Y!cac7)mLG&_WCZMUp8Ye8;Uxce+v=3&T7atgSCy#{ZU< z)>qfkB=N)Q_U?{ft?stltwxg@>quS=g6BW)t|@F6T^GT;=6Rv(I7~W@7X+2-uDjvU z$DfGev{Gw?VWl@1!mF7OwHhjVFgwTw1Ld4!CB!EI`VuME3YI!d;wXxCdtK~hFk8kL zlnWsWqf4_kx-@I8G+CH&s%)I*o!+3(HZ84MqW9)l3!9-%w~M71v9jMEqH8b+op69k zC0tu8|3w8_W6W->t)D)9djJ0Yjam)&&s*yo_ul=yB#L{T_GD`UTcSrFee}TxKC`;I z8u*pg*f>siI@i+iDwT>Mi*M?OTMV{xVfPRaj00Xx)#-IWQf_{;O$w)(v zCW*HV2}9fxF$5XQ7@s*X-<Po@>cs%hR2nsEyS<#V>nk_DGp1F8sbz>XS_ByyR($F1=mQrYde% z>Mfgo^1{ z+;GF>cq@$ut-1M5G}s($2_#E8$s8_R!Dq(DvtF<2y6w%aJW4{}=fq%P|M20D)ay;| zNM&@KrjF;eyB*i}qBMb7U=N0wg^Kb#|C_)08(2KDTI)TkpOvh&+8VrQ83mQFG1kmg zVaQf$Rg@EFfOH)cGQnNfcl}UXa$Ik`HIZhyblf=0r0XYH;Rh8j2-i2ay1oA4qeotN z-;1Aj*WKUvjo32j_h7!3U!#I(YCP=5BU&HV6XTAuTK{yzqrD zg#2r3YbQ^hg#7*}!6zAGkeY~4hzbxJW5HV(AiN7aECEd=NdjiC#Bm(FjaN{Dw@~OX zUQ>KL=gorGa#m5yGYqb1iGs2EfBfVB{@p+GufFSF|J2X?mw*4dpZLBX{!hR1)j#-c z@BGmFPM$gifum^fidVc0t^ME+|DYfGS{FGYFVx=IecuN@a{s44n`F5rr?1_<2`_96 zKlH#;@A`*_KJn=J2Tw13;?Z-T`0Uw_JaYQO51m9gH&~Cd0=^G@!A3DQXxv&xSd`&7 z)}k8#F@vLsnVe~S4pW>fCJRb1 z%&65uWAh{(XcbRR)aPbfH{Epft~+i%cxb*_!HrbbAMC=0hH(NjZTE(8mMdb0;5EW< z2hb!m6Npf;pZmc}9dSxZ+pW5AkPnt{*HriX4mrpvp?-*htG6^?kR&968-=HG>K^Z#YMV(isaXDvnPaI`q8T z?+}R+(^ay5;5v9(v@`rOV^3iOtQ;;c!@~){U`foRxwyW{H>~B5tYV z!95o+{4Yk4<*p{j5JDHIurP7_am`uEXtlE&&P*@$dva#77;8BD=Yo9;WBc~`_4?}O z)*wzk`I!eaqd)!AKi%5eDkBsTlTMZvi%U!AE?m64yu7rw$!utpS7dH7dkyC?Ut-jYe}a%%V_hW(sBtA}mUp zgtAgwM;jLwws?8%C0j4Rc7ij61^c&i>MzH=fiG6G$en22 ze#c#h<`2wG%=pr)S8J6ZbU0hNvY5xQutp7rI7yBrWbIC6X)! zz=Nh~3ajmnQlrs;6GENuc*i^Ni9Gufi6L3eo&hIujeib?DDb?{_d?Id{gCGcz7G}` zMjm=6CLGtdOssEhf8awO`HkQFt$+5@|MI7P>Zkwc5C6C*iZBc@MyzIdX?A9wOJ}RS zTUeT!nVz1X+wSi6hS7F=_rZrB-Q3#7{ijldK(n^C@sW>w#C6N*#*FU))5@r{Ptd)R zFQ)K(0CDFU1>-nEbF0W8Mwiw?*1|v;*CZ`>xL4ii4m0LH^3>TvR!&}8*%%}bJb5zG zCLEiXTsSa)-~boi(PJmbGJ~+AtrU(jc5QR}^2++=Zm-)J@Wk-Grfy+&vwSldEO$GX zcXlsr510GHwJ2JTqs@dy^&s+Aj`S%q9ot#4mWq&yPaN=rCF}9M^ait3)m1(&rIU2^|h6gC!acf`qbLW z3d{u>;hdu!+Np&>r5b`k*8t}d22?&}9POiofe~B?hgnu}%Byt2q}JA;+;w_stT-t` z7Ild%Hoz8fjv0%*Wh3VV#qbzcyaWsUpgATg)f^`7IyMNB(lhPk-0Z~U^noKs?|#7x z_Z>PY1J6p{7$1Y22j*w`?Jbd|$>vs7>0{#)2gjzOeil?)nQ(J1@X@g%{E0@(7w$x3 zI*=8XbFD~mXIK=tAv}KUNHz4ys4Pp|z#T;WK^hyun$vSIs-h_RMy+*rYBJzSfwf|N zYrRnkaUiUEZq*MRCdL}gMxzm6Kjei$P$`)ZcTm3P!!rUGg9?Hs%hM<`gD#GDX z+aRn6CZ{K+t)amn>h%WOTkXxA?IgwBojQNSaqv6E-ded3d!8lS+4 zW?UI+O-@_lk3I23voUTh!xWG)_+eI;dmf7g0XE(Fu5?9 z(52159*B(PN(-Z%@#ee`wIhda@!he5`){t*=1$yly9q1W^)upd8|eqP+?KMT9skA)!y0M!MUp4jj*+gy2D;~I2a_c7R(4?rDUE5x8ieibNlw~6T*S+ zl+mSd3`4V!9phwVi5V)XMM|L}=N z|Ly~ydg}DWL0kwY(1yXs854k3c4K{OYZDQ9cW0;F>ke`>gUz9}lI&Qmf^PN;K328arB)Fg@4W%=(oRj46Jnk|_GU*7{SV%|6C3yx9)SMuqAp|=ktP#3o6zAoA zH0QYU%|%I30^|w@p>Pnz)}nz*o>7srbLTI8^nr&SI(_owmCGCP@X1RT9zS>X(K9DE zd%KT5`RI6S?A9A^yyL_T&%f@5FwSO$vvuy`>dICuy^H<9(_5SC(eTvbmB`vtmlo3k zqww)rC&mXIPn_Ofd3xpYz+__+ zN#qJe+7Ub(4nn6qS!1^_GdWca!gjkIMbR)WF^H09m|+w}Xao!4>guZJd3l}_(I5Q5 zA27z^QG(-)em_UxS6@ERS|tdpVSpV%B}5nxE0v&9srZ#pxE>RtP*xl62G#mlYi54m zi5qUJRBA9PSlVzH6R}ncx6)G+6I0Ulqb$F8WyuZ0<@JqAOUvO{V|{zu4Qrh)4k#Jp za(ibNZ8jQ>;c$3WNHl>71E`#0Murn?mA*J(>_C=fdvuRUaG-Zg?5ac-nV^*0f?Lg` zA=%j-sElu~?0UM&6IXY+o8c57)_3ET?qCD=g8k@yAN=V0#`Yh)<&TXaT#peG@Co6# zVZBjpj=9yEaz$39tfpx~g!}7_;}c`o&9rV_n7QLn>!$q^Hy@b3?eNU)hq>Qq?mu*R ze4>SoL9P@L{Mm3AIFYqwT!G52fl4zsLRq10xh*y2ZKtKwP+V>JUd8dMA#(#Gf~fGc zXvtvm;^KOi8_%yW;SqN%$-yw$+}y#cHI81#CpdGHOlLV-bZV8F;8gMCc)i-JhgEE| zgmnaY4s+pzoH*0MDn?e2br`u^aKm^(OqE*TTwrx3>Ew)Q#uY=GW#GU_xVFL?Zpy4- zv$aQI{oP5Pi|~%amyuhuzE1d zv%Ki`2ZLc;Yt+$7q4nkEmGhS_7nTZTxZ^sm-x&;g{fJAMW@kr~bm1DzO~pPk%)`Qiqd;L%6UZf_?S&u^gH zxBu;X-Ntw>J-5~ne#HxFSlS%v2@*s?AsO<5KzM#!s9qZRV}aKSt26bzS4tWsOwMi0D7F+Ep2cd|PvcIMMM}oX&-s{@6KO6B&5NA!Tw4R*5qV~kxIpxr znVxSpCyYU3(5GM|T_=RAkj_;a=`3M7cR9I&Ji#1pBxwQI(hoT)Nyg=jqt(J#Wj*OK zAq+7t9m|<2=LC8!Md#KqGD71;BaOik96(iJ7_(P__mr_h;+vs_1z?*Y!!RS-Ez%vG zttW%i8%tfACz5Q%qrlznbo3GYoZ%A>%f)L+E*M->%-3w~4;m}f% z>`HTSce7V08CGoI_XE+X@?OJP%6fnCj=%hwpZWct{OR}n(I3C%@u!~r#Ha3m{Nz)H zNOB>i%$VKk?mCPg*>?b6^DQ%HPMsQWj#;HwmX@zvxzgEbXGyxYww9)OI!Z~FCutsM zc|6Jvhr`||)$4W4G8V@F#hGxVFirv{f$#dBd7- z+(vT@JIUF3Z0b+6#wW+d#=G4vq?5vJHplUXA(lZouIu{Y#Y>C$5F$J`DGDy#VVq3O z%!akPbp5H>IZZ6r#tlMr4V06N$-M@$D11)9wgISgkM1$PZ~{ePVZ6cy1%Y=I_ErqG zrc$$bWnFrec0cvUr}_oYWyOYL(}#}Opt3WJ3MTw&y-@bpu@n6+B2h+`Tg%Wpj0gM7 zMCG}$S)ubxDO@lUw_KotHrA3*njy$&7^8Lh?CgB4R#SOl3gx>}Fb&ENsj^vVS)vBe6JE#8h&LwGtOowxwO3D1-{lrf6yBa`}p9; zIJu6fhOSXLULng>p``;43bLGfy#XhkC;ee>C+c@pkqSnxOgM$_nQD+ZqVSxaDOj!2)5Vb4+?BG`SnBRRc<%J2e)mGRE$5~lS-E^>d!4Fs zkPU`9&3(3+#c{w_vVKx^20mpWxizmKwb9$%DblVKXSO%wSR=L68zgCBPTX+ot#>>R zM*~|F{oRh|29?IxPMlua-0l`;tJ5FD{ZPHpiIWfB|EVkO9aaf1uWu~kM4jXghh4c` z0;RqjE&}el%<()&2A<=1MP?)q8nyA)e)ZR$IB}zpo{$c6T&y&m)D1WCbBv)>=&arFNo z?k~V3Ij*!}G$N8Si>tbtVS1Pu1fvl%S(YVPw!q8`vMr-*nVBu)%9crz#mqR&+|$!N z%~+hA0rymot@V1n_uKD2|Nq?BcTS&-jLHl+?>Q$TwU0yBCL#>N8c-Tm&8IBlSW-+H zNz9i~sD=(O4hKOvRVGP3d&X8tCsG9yy^~@LJ9D zDaW#Im{2u39K4&!g5h0;D8Z4 z3>KMuLrX_@_uM557q4%gwWMS9>5I;}sCnhOuGOcsFJ6)FUXY)?aKV~WI~T9)Ub;Hf zK6~NX)0UpHY1XneOHVnYd)exFtJk$JTGqC3Y4?g%b5<_zShS#Z?wn;C*3VkJc=n3r zolBRtEnBX4cElIXZ#(Ps<_k8J=Cn=BZ5^K7RGpLWUfI21Zhpn=)`eZI^Owx)S~`E} z>8s7oOyk;FvrnDh)Sg^0w`0-5xpU?%%(QfMFJGIPJ(rm=E8fI;tm5HAy@RqK$hK4Q z7+9z8BNESV9h>~gLl2h%7BJj1Jk`EzZPkoTtI9B?MA+eQbbY>$=wkSVHA!76my2_sJ;LND1am5Gl;Eeg1* zU_S2kBuUp#N=j6w8YC8TxnPP6M3;3991W5XAxP5{AP9}ZbTYnR z-kb&V7A6x7RXboDdA>s=L|Fi~6nJjjjE5feY+pipsbEV&VS!L3S(T+~xd`C_JPBfy zMQWwM~@AZM<=ESM#kY=_px4L=$5YQsv;>eOqz&-&~a+zG92N!HOCF9Ad0H0 zx}j>Op=qit1fvm$P~nI01|lStaY7lwSjL!OEMbfVLR=EiBPI*V8RuLGs3S-aP{T<0 zJ}pcvSsRuqNGx(^Dnq)-KiVrFId{%H8Y>B7ZloYFO~W5Mk9x$SKWI=fabTfThdibYEn zFI>Jj-IR{!;*E{D_U6X6wzk%`j#={-HFb7(FIfWJL)b8^Ogz(+Z|zhS9U<&_FeQ z1b{S8Gh)XFN8E^SIAasEH?3GAkwQd*+mMB)8=KWwylDGMECB~3HP3}gqADOc!3-0Q z1V=bR@Ni58rvgQsg+jpQQZe8oQEWz<;79AmqHB%KP4Q&hw2VX|k;!CIiDb;QG_Z74 zM}jzhzy(;m3@lYu844^jqZ}ASDUU)Ph7=G4fnZ$J?}6k3Udt(;DR9f5DRm_byub(e zVE`6FX9_$MEP*iwSD>WR8JJPqwqas3>6{{K5>b3V@PjCs$ttp;0WVb}9#6vRfW1k& zTyv@u6YyzvuvC~Vjt!3=>*?9Gb9Au3I5}CI7_ke}DD=Ug5mz+T#E8jAK;cY47b)c| z47l%?r%I)%;?%^{)ac~+@W|-k$Z-GAP~VBM!Qruiq2d0%6Ft48ufKO--~^mh+IEd` zDl1^yGWdgd!h+e+GzGv|fGX32irW zVP1j|MWGxb_Ex-e7q?@vul!NDtdlL!h8T-SD8 zr%*2Bo70laE7hs7@qwCM;M5KL>hNH16xf3Kp;rYE5fX?xzKsMO85^!RHW;E}=&@u% z)3neFsTWNSk5=J$$@WY}^a#;nt=K<0(sN>ZWU^YSmZnNmBNL-129F;&dTig}iN4{< z{*j?0y`%jDBLjmY10#KXa0ohjq^I}jv3{QlhA~BW|Di*0dNDjPk!fy^XEIG~?Pe;e z#9|H2EuFJxCsMg&zG2Sd#iPaPSVLys(#72i=e5n5-ML`?qE*Y|4Vl@C7oB?Mne!Jd zo-=>J+Ks24ec}15)~!E%!>LzXd}+S5xoLLCx(hZ1F|~?mepdUeS+f?;pSN`GJa7`A zcP*ULx@^JR^(&XJUAeDxF+IYs93l=Qu=;&I!blJKMrz~2s>?9U0Ub<-U(uIqb z02VD=(%n4=FlW}BzXLL>*|VXhy}dJ?&RAv)JRY2z%Cbr+w_V?i#bb%2qG%YCO3eln zNv1RN7cE@0bjjjn%a^WLxdOh-u358w{rU|XHk^9usT=F%jE&Hr|B7p`y>>N}Rco)k z=8b>XSFZsDez;=As+B8OuU~)4x^){sU$J84x^?R}opILkWh+;$Tmv}ktaH|^S+{Q8 zhP7+gUvmB>mz;O$DQh>ZS-ED#(&dZhE?Bc-^~xnHn$!8k-Sf{ozVM8-8|K1S z!CXF@OjQa+ur3G4P^+Pt0wf2kAcVk`5P|_)C$Y!#85C!&ci+R9S)tauH!7Fk$ctLsR3X#Tk}~ zfr!F5W=up-ScnvC#5CPf&AQYSh?@qS)#<=sga{WBV>071LVCnBFO;gTs5(3Z-yxYu zQUsP@+ec(9WZB31M2!wiRwm1CgcVuW1?G-ZB?vg^Mu7vq7zPZ#P{98r5>_JaIJHu# z;5l|Gl?;6cx-DT*tCqviR}?9gPR3%EVe0wDTuVz6{9@&rF`m#59XYUV`{sec zzR8KviO~VKR&*+b^3+&hm#J5?i<491Ly{`N4!h>N;ALT~m0}5=RV!EEvq9F3H^tNK z*?d>Fu_KvliDz1pSyfgWvJLIct&ORMn4}{oQUlbI$hBvhvR0}wnM+y;IE|1M%}S;y z!W@%`qly<~A$D}kn!9L8DwDU;sixM>vf~5&X3d^gc3fyYZ_#3C?67dOQYtx4p;pZ{ zH48-=Elwqy8b*snNaCF+7?~KKDiz14rh87D0KKobcVuvA|A7O86Jz;V?Nr12dJa~+ zT0lb&&NA()rYk-TDuG)JT{Ru|DWjBf=u)N9d#vy9;lsyzjvqaGvmUjL6qMuvxnj~_qYbM#m*d<5+6 z1HD+PP$m+o43^}H=|W%sK=1Ls!6EQYgZ(E?K$D}#dJY~wa^UcxeFqP1*|u%#zbp6O zfB&JG0t#S8J#_zl5ANQ*d;k9Z`}XYv1po>FlxLoKX4kG=`}gk$9X|KJ_~MJ3H*bd1 z+9#iV;m?1&@8PGPdv5c#mv-!YVav8BpMP=p{sS=8hmQ0-{LrJnz4Jfrx#u2eJXx5A znbCDUk%(!EN+fiWdtnqHgfNDsO=#KpY5t+jFX(YuD^jtyYSn$oHraaP%S5h{MaG zD1gL7*JUDc0<l)D{$w0Ek zxy-d}W2C36RB?o)TJZ)*2%GZxhIChFb4PnqXGe2uYf~~AlT;;^OtiPRcXYHh?)mX`b(n>Ji= z_T^X4%5E%NCu!X2qJN3%fg7XLWbyn_HS%TROXEH8r;i zfgAJr!uVuhyKcGa6{}Izgw+3 z=<4d2)!AN`pu7glh~+X3a2Eh;*wWJ0-92YEVD7?1B3Xjni01>@HC0b0Q`sEMRyLCZ z_XTLo<(u+Njrqnp8tSF7F5q9Tu>sJ~*wE0JN@kjyTAQ0&QmHfm6u3;KQmU#Z5(#*w zqJXM_l1!u_!&eloxw#d72%RBB&So2u$#gQC%d~fpOty8=VynGPYi^2nb(F#1Tjr$e zMT*=ych04t7 zYHrHUo7>&i+T7OC+}hOG+0nLm(Y%$*m#kR6WX6Y2p*x1q4+0xPimXJ&)P1D@Iedq3-yAB^ZG|=03qQAfA@R9v{_wC)iXVF43z5DhZJ+bHT z;YXi%`oTvZf9ch&`w#c+K6toyaG>gkNYOs}+0WkgwXeVbqaVBcrklR?qn~`{^Phk7 z&2RbmXFl`2pZw^8%Px8M```b|U;g@Ix7~K_b=Q65;~)Ft*S_}6?|%DxKluLbx8MGm z&wS>cZ-4vy-~0X>Z@%fR?|R4QZu{cJS6l|)25o3J(tb_ zdve)^?B5G04cQFLQ$uS@dwW}FLqlUMmVg3A4@}sGQ#3RpNS8G%(tbv}R&5JCVW0i1J;G1NeR zW-bvEgbRhJMxk7_y`Z7FwYjyUy|XKB#?tY`ysmCY*Ox9>)S7QfS~0{$o8#u0+C0QzwxIEEJp0d@%25`uSO#Nnzgv5+tW+msNie{2&>LXpG+Onrg{Wf54Z z4bjf`YEkI2DC8`RC(KkjCJ}B|D`O)=n_qqD&wsh=kAL{xefRw7uXp{&UBA2IzQ6qb z!fFz@ftjckkJ^b^FejU)}NY=AEx> z+4bs{-P^YA+P3H5p8Y-hjvPODsAuni!#nmJ+P44T*4_KJ9qT{QH!#{iG+NJ0dV7!c z96E9Q&~X3Z9h;vkjP_EeT$vsj8|s}L8=9UR9U3@3Iy@)@b=~UFK;OvF3FtXubbM@N z-@bkO_wPG$C- z1Yf;`q6l3>hS@c5fh6m&S@I$pFwU^d2|=~m@BVPtXFvSmU;O$v58idxEw_I5)1Up^ zoxi{9bD#ghHE+14=h(5k|MJ(jUVg>ze)F6A@4N5IU%egZ_nq&3?>E2x?IZU;_{4(` z|L%@o9oVyXe01#4(IdMK?w_i_0DJblvi06Oe)E$r-hS_|ewS3_i24TftSJ?5%7mC< zffB0G-PoE<=hEqnuA78NoTI{YaddRNTB+GJ*S4Kn&8b#v)v67$QmFwv+XJ{Y*R47K z1lMuAlk_QKn72T5JC zR9WUC0X|JL;;I$bEK4k}OQq)HFj?!Oo$TYN|3g3`Cud#`Hz!opJM<&N_YlN=qT0T@skEvK{X>96fYtLjdhG9W4ES5{1vu1lRV`1P@YSXY5`9;s3 zu*(zG(%{6{$kb#7Y%q+f)hhhO0;!5(sb&nwscMibYOuAIWr{H*A{8)b+cC^|Cfkrm zrVMBmPas22q|;Zu>)n@Jad~?7?5nQ2s6R?o}s9)TbY=c@VvmX>d}vLjyRT}5Cw!J)g>V^nJK-!y~qEK z{^S2y`i>qteB?+El!1YPVzCI%KnMX7%vgfRDhxq}HC9#I@nAdm+_TR-`Q($&J@?!z zn_u0xZ{M-w$H&LVOO>MI*8UvpD#1OYrmQ6w;D6)dyf(eMJSit#(z!*scNf=86%OD^CQoNND>>kU{oFhx^j1W{E&s)TeI z0%+NgLa#Cr*+o@QTC+2j<(6!(Y)=f1;}8)_s2hraDO?KR%MX*lWrP6-KQBo#MR=-M zku|eiwMRzBp}wuHlSiCWp&&VQ9Sznz3KS8c$i>v_Y;IV(V9o_+pV85rO&F-HG2Pvs zpWD?c@lZxl6#BVbMv{nxfln&tBC6H|WyR@2sW43lsZ=Vk_O)7Vx>T&W5C}ySNj4lz zM7Ub+Loms+BLw}8Bwe*sq9=^B#8nX@l_=DYT-%ihc&=b`EP-d#a zP<;t|GC|20i)p3E!@Abk(FRXp80m%qEA9JX;74F~2q9h95g|T}oWS=u6%v7(bTTP~ z7#pkGeL$m-M#vBSC>$Ffho8f(YPC8xHU@fQQ$A)H9Hz|oYZFtZz(5;Sk|mA`lM``S z9fw2Lp5t*L9S3@C+tz#F@PVDXj~zVRvw#1=9lQK;$;5D2gmuoFQ;AcSFJC%)&Z6!) zP05TsU2+TM!uZ(Gi2j=YycmxeX56$0*h@s=03Qhf4KziC z`2ktC8pj3WHcit|H5eVnI2MaVQA8<~W!dvQ&?O1NEDwU9xw#p<8*KDiTbp4WJ3BkN zySrj>lhO#x8mvwTZrfGHAowuw7t@7FN<+ZJRkB9DuvUV!?Ht$*J+dp%ax#saTu_oH)@3a(a4lvQ!wJ8d-h*87s~`ebJ^3D=yds za@jejt~~Gbv#z={)TI~q?s$63%g=4!T%cYVQ=HH!qOgvfbH*5q!nSP~6pRrp4Jt(# zCX-3<)C(3YXliXqr4lX8xkdA4&Fk)H&Zp+h={)O<4eM4f&8AF(A|ir?^JblS`UYS- zhlj$H!Xr3^nF{MA@R6wd8^mWM;u66?RDvlHu1Y*ji8LHx7NE!{oT*r8NM{ViXlZU1 zoI(wJ7}8~&v`kqjPA!y}Lb!s2jEEWr+%V!b$AutjnJLRmWs~`o)gUoVW^!{ng90B1 zZd<-##Ul8?w(yj7Yp%HDl+LzhU6BGGk(cnNFt(!ZFJNsVQoEYulXe*-Z`kxD`X`1Z31;I+be4 z_gofvxb8|L>U(g)l}RQtmX*@~oQ6?8pO44mq3;JlAOwrx zTNcKerU5Yq2M57$q5l%X;1;2cfXIP(wOXDY2M6RvG;p0-wOZleCS~|F&^9cWi;Phr zxaYY|O?e4sJM`e51|}E~?_$W96=$@u& z2qB1k2yq1NN5Bpf#=t3Olt&y1BoRp^no&=CVhIbn)Y{yrt1{z3%rx3Nnmaq&o0=Ok znKbm7LwX<~SyPEjVD>RV0t*h$r3@^{3+ginBaK)@;aw6zk|YsAFr-$@RY+v0LY5F` z5ep;1kc=gezT?JClfoQvFO^cQIL>6_DJ!Lkm`38V&;*r4M52&ustJTtl^7Cg=!#k~ zj2seGrKrrJN)?(e>h8MW%;lF{FmKI@C9znn=Ad$|I$0`?j8>-#)Nz3O2nz@#s5Ff{ zAAu8{H+xQNQ*%5X$6Sn$jv@w@Nr80`1Kl7bM7H9IY_8EX5{zQo3EGacAFJCgNy)_jxR0+p)C6`KMQ*ptVscX=fd!CMnAt6~XOH(vLPFuh3yp0=IFI;rN zsi&`5v^Wk{7E#&t6`wLc6u@Iy*dhpcKqEgckt~u@0a7Y8f4WFL&x*%dI@)H<>S}Lo zWi+f+DzG;x6{aKK3j=>@V%#!~a&dZWWH^qAS2*~5RPH}n)0zAxs z>)F5-2;g8yVdNvkH=MHWob%7oz>i9jt|?$hltR*D!!pIKSVu=2;uQMJVGaUYR=^7q zc!*t?k`+QEL|F*WX>DzZ*Z)JJ$Z>0)=hSKyu+c;!<_9k0ktAby(a6XkJXuksnq4{R z#o#&c17jIj`~=pp(?A%q};i7Y_@Njay2 zVMtaaJTX1B|L~!nzP_Se<+AK^Uh%xCN`)x@R3swdx^068gCBA_Qy63LCWS~ckt8e- zrbI>%f+a~397hZ~At53oEHT6c2s!darRt7(blmnvtCb?AJn~%3p(*9ew=6|g1V*9b zmh2jA+e^d!1CdKpRyt|Ku@`89O^*ye{_u-;{`UF%?tA#bhaUayop(R={3|cKy8ZcA zwm$pP=7%4D`kwn=dHR_bwrt+^%rjfJZ{0mKG&DUqH8eC*nl4~LBqSH6ict`ylF7E# zj;6+DSy79H(y`-xM|zHxN>z*rXQEIj!R9B57z8DZC5-XOndG?c=rG36%Uy7;bnw8j zzT-oqBZWf2bA6~c41+Pj>Ul%NDMNfl_e0Eu1W830B1$<8B|?BOAfdkZ$YJ>IIMm-C zIQFr9$0`$(6N5wC@u!A|VMlFBQek}j*x`edqeF%y$+^r6Pd&DO&#s_W$s}XhR1C9d zsPE{D&pzFIyr)zuz}&IGhXwGfwG(~EkMV>Q)052pZuq80+gjyluzWu|7?pxNc5NjJ^EoD=$3v{DXhHS4QZp zji)bLx}>YMb?wTPm13bKpXXr!{G8p@S(u!pfxl$o!sez%3hW31NFz_(aLT5QXUu}I z(v(l9li<1L&YP`jG8iG_(KF9H^S8g=Q54? z+}t_cix3Cavb5m0T&<`?9;8i-4 zR8<9XVM1Uls6tB)EI<+TMAgXOQICO=s!EzFW#YP9nT}^H(^8Cl3dua#+St+ACL=C0 zy8V@xfBwTC-uau~96h*S*VN|5ybuD61Qr?9NyrHyoO9oIB_Ibuz#ht@077~Iq=yjT zR^cxfkYg~S3{MsI96AD@oop(EYE&cMKR&hl$T6ZwvZkoIYG}&L>4~Jsu${!1L5VmE zBg8mC_$2Evl7u7+NfAWhSY=pYNRGHfk?chgl8GBulsFHiQYq*U<#9I}5v-Dq%Q0P~ z6Ov^_K{zQysaWhaO>iDnRSDxJ_MI}E7g>q|E0)%^6$=-fd*-GyPv3azsb_3F^SpI* z?-lm|01yC4L_t)ioi%6iswHbrpTA;5=Yr)+R&Q8$`Z=eZe%k40o_XqNr=7NO{mPXq zXLWX4mc=4C>A(d`vD(NV7;Lqj4=pqKtD?9(8w?o zlnKTWgT)5PF=K*KK~uSGV@qpuYg;;-gGmU(F!DkXQdwXFs|porBodNgGD-1i0xK!S z&^XqKY{^=}GysS*V7#F!mZGRa7y?THHA10!p%O$=7;)dhG|a@UIh}2tZOt-bbadp* zO&gajn%|H~a^H2!C5cD5WV|t(3PYFizz^W0vMi{tsd6k~WwYspi{?RSFjaL{Te~KK zgJd18&52}8Qe|0FiK;*|D`A0ws;aEWq%=L1jK|((z_xZtWQ zFOPh$ueS&Cv1B3!QSQxedgJ0n3)Zb!4eb{%oPX|FXD*mGr#LkUo`uuUsa0s`4-F3h z)gk^s(l~G49NVdmj0}aL51e5vI{*B0uYc2Zu)>T}E}*$5OW3q@RZ}LXMvwRQK>9s8 zGB7$aSe%{+eFvgt2EH3LoP+!a2_f1eff2$OYGC>S zSeA&Q8mVj~>j6=%2v6^B3p4=cU?aX}J~=&k%$VJQRKj76yPH*Y!HT z5o3%}$~h-QmWiam$`VOd3{I2~5sG9)3?!KpD&%KZT z`VaT~_^GGwdG4vd?cM$S(BPhO`FIeHFfkrahE=;iq+>xeP9#TDd>Q+K)nW!28SFp0 zZ{OyZUVP&5ryhLxv4b~s0hqUxHdsya-G;COO!5{6~M@rGbv zB}b1P85Z9^$F7u$cBPDXq{?J;c&M-M_@P4w4;|ir_{hO(t!&$6c#8+q z7!y@zNC}x73Yke7QVfb!mx+l| zq2kxLLLFB2_|)FjOo*8V zXHl(IVJt{z;?2$ZR60&1L3t4IAY?&Umwv>2%A-(FibV)N5FAMaNT?`^pvoVTB<}QWLV)U|5Y- zyd{x>6A>3aN!Q9Pjk)vAI_skI&h2PzbSB5(j7X8NCQG`4CCnj5;J$B{OI5q#(?Btl zSj?0p>;>-F2 zFtHzVQ6BCrpy z$G=0@3|%$}W|fkL7*R+^J_o*ktp9jdb7NCOV^AvXd3DQ+Pd>Tjg%?g7IU3kC9tKz- zU;#pPj(`MR%nTWHxPdT&8nD2Vz>?xK91!frwsp*^6uD$NcE3SLp<@37QWDzA}s-_}@qs5EoUwqkx zXPkNZ?75w)hCR1bD@~3K^&Z)`!!C@u#j&7PFjUsooSHMIW#Pik1q(W=wF!hhcm?9V z@70`I#rIt-lj-7A&8Z5^4c&^zQ>GeMxGF;7+79D^tRPH85WrU5q2O^h#*cdBC;EXCEF?3wo7R$n*oD6Wy8Aj&p)rJrD@)h1uITj zFDH$1@;93smwIVXmPw(Z!ybEfRswG(2aD$Ba8 zxK2&R1k!nx$kg%eQe}F4V(+#cJ73*anJyZ-iX`rOHQ)Dy;6ezeT7lz7j40&cnPjZ3 zDW6ToHCP_XLU?PX+?>xqqK;U=1AFL1&(z2eioAw&vaPY9G&v6Tv-#O)a&hoUNMe{7=@zVI1Oj%PbnbJ+d1@KTn7>A&RkRo6-K8^xJG=y{nWMPc@LFjs(?YOor zOR7XP!NJKONm4Y;P*rF~EGvFeiNGH!ip&M|VG2DbqydAFfJDR?k_b^1ibUD9i?;1? zid32CItS||M3RN73db2&NKKV&5loS=s8FvqGKDKrPVV~Mw;#Csr_cZHdk;MJ@H5ae zw;BY%2-hGrQ!eX&yW^oJ|M=8ne|)SwSfaL=8ZTF>K9bCmZsuD8p zht!P42_YJm+H!ed7mv784NApYsZfqQpVW7HQAbNtTT3&-IGb;3o3p^9NMWcWlk3do zW0K;Ps(#>xh$2g=iC~~Sg<@JH^CQQOK-^=FozhH6$cACkz!^EVuSsDk=1WnCF_tvb zOeBX-oG>+o;=mSujRw5~LzCs2Y$O~(v~-3ma?P>J6H{)fGBP;8CDB)&80AhujtV%K zv@5cvt5~HDRf$57?7#vrxO)MVVsWzwPRCM_$U%&3T@ zjCf4aEK>gug>yz?`J6>7<}Qk)!N+BkX|^aJ*i16 z7cPQ);q;Xomd;(UV&1%@BDH7JOS-!@EL)OMm9#2nG$jX$MBMSQCeyh3!t)3A?=7F` zOH0H;YEX7IKl>7Q!nkVbL{1u(#9&(|$5aJ#Dq{w-O+>^a@ZH$Oft)e}9yT{O9@)Dy znTXk=!(+#eoW5p-jKfW*uYLPluD|(>*POC^i9Ir!kyV+CDDas;k|aS+A%{Uijtq%m zp(6o@#zc{%+Ej6*r>{0uu1%Lu9O)T7e!`h5AlGNLnmax17pIBumWBqLiLsHxhYBb9 z2*Mow*8#n^6qvPGP=bU=l z#!D~0m;9Jw{*)JkDkwe6x?E4og_x2s{`5E3b} zFb(JmBPbvwG*yw*1eVEd8d$sDNy>6luC#d)BIJ`R0EBOyc-KqH!tB{WR~vo92i2M!#n zlxrLjS=WrX#W0s-xl%3;^c{<$zzf{z+I0Wq@R8B}6XQc=yUbWL)Yt1)E57f;=l-#& zi9)4X_5A=zEnRb_E8d}F{R6`jKxU-KNSEOYZ@#^W7>dh+>2hJZRIEC-bC z<*Tp0YX1DWZEY=`ZLQ0fES?-6Q)S6>92N$;CP_rVSH6z+mTGAdvNK(VxB5?s-e+ z&wu%)7w-P+pYOT%uY33H>73P3E*DK**Hm56R3a-9CJ=ii79bk3fT9R^Agblc*Z>6V z-qC@f($rM%!6V~?gMOt3En|uTFff*B2$Xe8h2j3*-b057bmCtzLrWn zG*iQo;E306F@ZS%$rKSTxQoDGF+;vEU66* zjk<1T(z#eHh6Ev4hK(#`1e2s`wa=cjsv2*aHmyf*k z;(@21+V|XZ2M+EVe)PU)pMLb&Lwk-mWmm-tY{uf6DsfMjA|fi(8{__{il<|0Srrpe zZP=NbL{&zMfj8wKn+uz{1(#MM?sA1n5|!XM42Kd9i3kafgcJr*d0N;764=PAs?^tT z1WHU5GW9eR=@P?{BbcizTvK5ns$rxRDTbLEdZbzkH53S?R4wz76Ln6eGfi0N|vA~QN(<(IsojfBt=qW%Hd%cHl*MMeLoCC8b#n< z;n|WCu)PO+pL+JyyYGGW-UoN?+yi#lvu)>ry$6mR=^GfItkhguD7(X>g|Ug^{Mk!P zDdCiTyI{NJ8udNI0OyjcNlV9B1y3 zUFh-3{eJlbjwUdhjQk-UjnH5;^ahy+CzHpklLx93hy7BIUpyMx{nQz(6b`-c^q-%3 z>i5q+b=Q+m{QmLB?|lC0KRxx-UH9JeizlA>)6>uW^@*qd^7M1}y!z_Hdv-ljEcV)! z6T>I=RV)20n$`?AlOeGrGm=zNYli8^4VsSQhK$yj(XuHmpN+LNXO=FRzh=#{v(MS| z<~Ln;(M9KQpAS7cX zn^rmqIm0rRbWY@m6G_!;Zs352N~VfY7)a7|;OD!#GMybQbLP4T4@?(IVKi2)QB8LV zUUkOCY-dN~tgduRPEG4C?RdF=;zZdiVVx9fh1DC@o^|fo)5Ym)uDN>W&h1Bg4)5Ht z?MVOO?#}LuFT7-Wsx+&6ZmDKt)p+AgZ*A=C;F|IH%P&tv_Tsf`Pd)$q^=F+8FRcRY zAjOhoOk`Atgb~45Vh95nWX&{SB~(>`Ap$SCsJA0n5}f;9d17MVSWnM^{l^a-_wI0L{fxC8UZg+zgbLRR#+ zBpJ}ITCG-!h04_UDGW1OKN2n&T0qr&q7&V*qY@Mg$)0va(A zHg)7W=Cqx4;i>0ddiL^lE7qT}p}DJh&1q|vtX|f=U{3qoj?Q_Vvle!C&hMPn-QCsE zEpy#1d4A20T%Q2B!=O?e+q>ZMs z9NKc%u2=tK=jOXk?D*^9-FNTa{>N>b?>c(up`N3U969pv!GjMRJ^Dy*|C5K0KD=|s zUEB8l{@Ja+cxC5rUfuQE?R$T}W8WW+AAjihiARq0J=E9#$o`{uA3S#Njsw3x(0ljM zp$GQ$KCo;5BRls#zWd;l`;We`@5qb$j=X%dZ`+BH{jY3)@|hPOzW?#R-2KoW@BHg; zAARPbZ3njY4jn5L$B!P_w{P$EV?76s9NIh3-!nSg@6?JX271QE2MU#ms#^q50Cav7l)<_gHw}zwenatEi2fKDM3sMoWkJ2?Jt}-xYd~)!FD7$ z#N;}!GFGG96DrqCITqT~sRq77Baa6T4Lw04;(L^fh$HVcFyWrm^G(Ud=2WFN8AR2N zuEwdt@T*&%LpUS|xmA}!rp>V=DPVq9ER{%Q6Pa8(1MF^+G&7b?$-1Q&Ce}1H9`}i4 zWHSIQo#`K+94VG;#*@vBBxW*AOSQDL&Ye>Zg9Cm2ktUyY)fIi^$sxN)GVw95CS?+D zeAnA!O${y)SKsvJc`H`k`^e+_jvg<2VJ_3Le$!cp2L_g%c3Oea{#rRcZ!WAo-bzHirEPd@hiuARG&9LeUJbtA4>3Fw%r8{NUryJaKHOcX(oC_rbl# zhfkF3^2pTKo`ZXL@7sN>|7ibU|Kvn*_{7-sL^1L?^ic-agjwL$G>sV=SJV*64w4*6 zaU{t`sF+9x@pND%eLWedF-MBkkX4bCBBjGfp2l*4ka0xDu{18k2tkvYT2p0*u%Z-A zBgIiA2lEnQ(~dI~c;k*c;(Eh=Fz$I{Q8a~3JJpPsGA>yaq!o}n6-0xD%8^p}h~xK7 z7Y-E1cGc`-_QdWw%7^@FPf$8mo;)%+c4&O`@W}9y(c#0z$-dAnIMs3ADMr-wxW|}h zd*!lIDmkU<Cx93eQz!a*4~`5Tot`*Rni?#PpYThg zc41`v#3ANQ1z*ePol66zQ#@m*UYSOIEjI+h3=@Fr8Kq2bZd$*I1f zfrCen93LDye5_}1e6(+H;7D(8NF$%JAf#2-iKUXNWvFozCM6I8!tBV@1lZQ_1F0zNw;{#;n=vF1_MtrS{a3 zgQ7LNb9|`ll(k+$e{S#2Su0l@9vmnIp$!SAEZJcYA`);sJUJC|R4kRtm1?DCd!7fO zkqH4qAd(~~Lt%(0<(%uP7Bfs$RxqQMswNF1Wmz#*HDy_sv5W-d@gU=do-hrJ^DpT2eKHr6`Ju#UeD0I3o%&Ej5wU zQz(pZVU`KmMIBfA|}> zedya?`_Om3@t&{V{+_RXkT%9DtB$gd)&AgWWSHjV5;9knThLL_{l!e2XZN{(HqR3=NK{b6Y|j370w z0oAL8F+?5VSMAc^;Lzq`dAk!FEYzJu0tXMo|wzf8>QmJ?>p@BK8sw~TjrY7RaL^_qu<}}l2>+D#+ z;ncQ{_NJ!hcp?#ok*b<@%|`;FrKmY!wdx-}+JCHf>(lTW>T=bew;`G?JqJ+^(< z&SP7*?D^Y$k39YCvpaY1n3$e|{t21DiSX0NC=g+KoF&S{^GXT^Kd*X8A(cXMsy*Y6zhtaE|ejPd5~#sI`g~> z&cF1$b1ypk>~k-?@S=+@yZqcsE;;jp^G-kK>{Bu!422S5Jd&wT#Vw|(P_w}0aocl_+HfBD1nFZ}J*S6_4=3aBQ$|xDV#3SecqCPmN8C3=SPHPL9FuC85f- z=}9o7d^)js!JPTCX3d|~#R4yBS-LEz;^y`(uWWnerC0B|Yx^C)D{Vh`;*}l8UfH$d zg{|ZL6G!$QNm-d%(P?Syh*{~=&p3D0>eI5hR-zc`Y}4syY|7{J-QC^UZ1(8kBU@j1 z(X$=Gg(9%V@e7YW`S{-+c>2DFCVKiWKK-mkowJrKT0C#T+|F5DxyF1fZb}jXn}?_f zlZl{6^#WvoN&sgJY*3RG86%0KI)gBlz_>9|!BmL^v|fG5c;l110RUX1#?|nkt9YV7Wn`}kqBm???i!bs0uW5U3Xw$KvDH5Vi;rSjqNym zrod$s0n=2FFnH562qTE7T0pr3NwR8XbIlUbEi;#hHMO@c z>1bb`&CJo%7J?dr!14l9QJPJ&LsObnwOQ9&6txM<4M=VzayFjK8?m@y##POVI5Fet zbVHM>TZ(S!W8eU`LR-Qxu|HO;Fv z6h)?80e6^&8*t{*Qg==6AmJ(_g&x zb6@%5H-GS*U;Or$f4ukZZ+`bXfBf4$pZWH;knbRc=%&dSa~w~PH!^0_Cf(0}{YPK> z!LQ%-vCqHvGhcbjM?QPmo8EEW8*bik?iKS^o|f%gh^+<`DafIL>i~OQyX002US--X zPXR!I_zX&EVz@FjS}jir5f;l+epGY3BK0c>`Ni=8zcPh1Q46Y)fwZJLIM`dNPK{0u z^&C6UKX|OScmLSX@$&e{Sl_YnzFsh_pj2SBN^N4SFgiHYd&Hg^uS|}P^!32yoc88Z z*RDA4(ko6`d)9`=1?!SsXXNLeo9>GBPFA1T()YmgLw|c}`;ULO|F`!%a@%*F{K@a0 z`O&W*|Ji>Ow;ddO{N?c%cJx2}>cPjKo8EH(`5_B@j0FG`aK?)5TXv{UR-JvlIUf-} zNF?Iz?XCHIgAlA*D^nUKl5yQIkpxT(Wtjv)AW0I~I}pM5-5~V*zy(lB1*Fij1Tm>x zE+bAOKQMG1NC*_b@b6y$tx-MaoC$+SAi)5FQwalq3Bp{$45$Z-AVNn3P9|Y#8s?0K zVF>S@ES7qX_ifv`({Y^X;xsJq*u+?=Qm)vwQnfr?EDVhf9X)z<&%V8T_Ut-(tf%+* zvB}BFDDeE65uY2RQH{9^v4}a*xpZvtFU;fg! zfB1u6-g)Oe_djs=Gtd0(rC0v^=%asq{Lw!@`q*8MK78lHkNoz*`+t4k{lB{J-tYb9 zw_p9m&%W@3AKv=iZ-4N!pL^50-+9R!t~u-C3(mjfyz?(Td(#DHtvr2g*OIxhq~+V? z%J@)VS5fE)OgRtYnYbh~q#`R}A|B$pi@8-@YxcOzc149P0}Qhf9YKPaZfhKb^X8d`*$#4tL30u7I%a+Np^tyEa8+K`N&vTpU2S6q7j1!s43 zv`kEmzOv=TUArI)+q!M*s|WY*_Ix{^&zY7!K0eMEMM5B4rxK-8!p(;(1p^CXx_rqq6Mk0)_8Z5F{j0t z+ZtQYmRQu0THKXcIxD+;PIh)q?aE4R3DIc!X}KClC4){#!4wUu0SuEz41zAqnT%md zRZZ43MN?!&A~2DNgLe)B&kcNFCeU(5hJFNGrC~_JfQCd>^tcsIrx2_$V}2MQf)!0h z!V8&=qADi=B_5Z<0J{`TZYx|7X8+>sP<=(_j7kx4-|@pYOTr{)g^);L-c< zd-!j6-T&90{^hQl-uter-u{+zFFK#7vTmwG#=4=zEUj9A&|0CM3x^yk!7*J+C*sLu zD)L+&1_C??qew6jg%oVvtr6KD9y>BTdc^T2s?O-p$f4c)UwHWOKmY0OJ2vlnda~R% zZTAmPA9mS9``pxqGnQR+;Tcz6c;02_oV9kt`sFKDoVj%A#(4`?cXYPL<5MF84?c45 zFaPxGzrFm}etW3gD3k6?tRaR`NU5tRLY9OdI6_33OoFipVSxyuf(20s^9cl!6qyt3 zgi$cFTCg6r=lWp;WRzt&gvU_o`+nX3on+p>@K6YW1;auR40kx_f>BPRAo8OK7SlyE zpnlCRPk3+)T`Qo_4%`Y4Jp_!!gksrYXd2E_7==d_O4F8Qz*Ah;2^n~Tn&UW#2w)?~ zWHJGFWra9)@#x{5M-Of}a^RIi2VOm}@0ESKU)j6+Wx%#A&(yK`xow-D*}D0uZLb2J z0D1h_A-h~K6dAZ5c&=Tm1VI2J0tuc*mQ>xa1V=F7a;aJ>!ET2~!mByuk+H$P{+_Y% z0WQK!Hokntl8(++E2hhe&{Rp1k>^xL$A)XR9WllQE|jW4L{&W&Poz1LC0WA=Ojg2h zz5@zHNK#{oTvPk(rtUdtgoX*7CJGxe{Ub1oH*;ie0?$xhbwed6wf)YlMf@lb( zb(Bx4jY+jBr8KA2maN{K(V8+UTz0po=C-Hib!8THH!PdixME@B>LqO}m(6NzO*XZp z^G&HtE}2NiEz8t(T~%dGS9C))3?putZ~~S|#B-^1E|oN8$yBhV;+Q6zIx%$FG!)a+ zISnOAiYF|jX~@td39IlFSvHet6*4QqVc{7^2xBHNRuq9@U7;2%Lcn~AdVyPr%W5QR zp)C7Y_Aqt@0jqR4j^(p@I!9u$fG9TS<$#ugpyc^Z=mn9_5rd4rxh1=J>4MWXZanY& z3%`8(7ry!JZ@u^ZAIRn#van-oZt3dkYG`PfH-EvrdGlw@n$^_Q6pJM!37j9Nl-3o5 zDCK?_)dM&feiTtbhbM-V7*6EP$=X=ap7429)_K6HswEVaMyxzK+OvBvSk#LL4nQ>9 z^7#FCKl$)|+g^Tdw67<0DyqcOX`{WfY4s_~yBE$f^D!DjfhAlsDyV*eRg3my7}!|& zjQg%ru9he5S~(0njyWO%GEyM~^aZjnkdZ)0RRc~VAdxIZT!f4=!2`x@*Q?cPjEOJ| z|C5C19|a2p;0VkLmH{_)rF?{0afn7)TY(Kc`)#HbEAKJ6+ zMBh=yqK4+irjAabnkPo5l9@Do0YXTeamE>EpL6E9=bgP_!@AjXx+x2}prvwQ`;Kjg z4<8;J8Ln2#Qxn5mUVeQ0=0|sJeQNKn=ML?Ax##ef<2~E@kL{|XcgKn2J5L6{=GxT_g5!Jy-Fo=96;zgEC@IdE(+mvN>d@T^Buc9IX(h2B@>>>q~h^-A`TKF zvk^sXYO2uN+jn5^!E_>%j3rFXkg&`n9@u`ZRC9|?%xK7EIvcWGhL-bPsaj@&nMtEr zMzDEHU=}AVhNy*jLg7gXB?U=0b}U=6`kYOdyz%lkzx(nV-*f4k-g*ADH?2JT;#B)w zt|nkwbs2Gl91jH%qCDWp5y;0Vlu)E#rW0mJT*r|?s3k>lg(Xy;)=)-gX#>N8!IBV+ z6dBd&W1yIY<1qq$!%)?jsiu=!V}sS!lIm>F&Th}QY|cLANv!se2)@ zU(V$K01yC4L_t&#;v<+oxfD8M)q)*)a!jxIcCj|C8U%K&wOSzxY!x$0#)gb_L4{K_ zcodbUDpMn+%J_+~<1g>s{P@;qpWgrKUtV}<^Wff!=BrJnl#(MQieQao+R@&)Va@XO z>sKt8*R^`((u*!UZ{@0`Ttt`%2!lu>1mYvc9AjW$0NIKxQ9=M*Q2;P-h6yIb3w+lP zBq9S3VNKD$EdmK(9;!bLVXzraIZSs{FO)(It$z&koiY%yJT(FsICgMsu+OQL1!7oI zR5KpSKYM7>}XS3<`8`fTU;rTb+bi>tGUv=IE7f>EGH#e?Zzy6d{)}M9mS&J4e zuq<<8attw#L?L1!p&_ObBq5kFxReB!5mGRQoCIdjP)JNs;;O0>89a|&ELNtAEC_U2 zf(F!gSQrQvvcTn`7y7mYtE0*3R9x2-Ns?4qiJ2Ch+-jO;S8J0e26k@W(SN+pE>)Nx zMqYp@oTbE?TUvBO4MX3qRaBY4gwW7;?V1YDKmuL_GtVMQI7gC%1oOP8Yxa`mt2ZrK zyK(N)b=mg06|Ni@o_ul7!Oi=R9vK?%86Mwq*z2D}CCK;!gc*{EhLDAj&XLNH!jU3S zUC!t-=mJRq1S^3gga}3GBshXqK?41~Boj*9B9@Lc87Ty*|3E@RX$_}!lrm5nV4+kD zr7YB*)0!J}m=MGnI4{qxLH{L;R83PY4c^(+**dE$J*%^!DW7W08_i7(O^vyRToQhg zikUHpx{9PJ@Gd41CQDqAg{mM;#q}+_MiOy7W~p!qcQJ|xrl3ef=sLVYQdB}@gy054 ze!yKXq73^1j7UaUktLmmBJ|)VT7;yC$W&5%L~P1y5e3+c>8W%qn@cq{=i57)ySkgY zx*I!Z<=Q(|Y}`0&<#Medhf~R^VlfOnF9@h2b2Ob(TxD+?h9^y~oiR0evTHIX+s0(u zwlR~f$&>BcX(n^BZQHwV{SUr_4m$1ETJO7_`+lyA;7gJvd)UW(%`#RYH4qy%N|!Ks zC>be{w}0_I?zi$Um3B&1a&d8Ju|ICps3j>nV#|aUJ#H_zx(4HjY12wr^Gk~NU6!;P zmQO0k$SASKIWWsi$#d9_cet=eXSY+W39ZLsMU4~X%1cs)OiiweaN@M1Jh4@RK_A|1 zdWqf_=xT)qCue z+=RUOApb2p$o09;kNCU{95z6k$NTUSYOw6?fn=lEZxoQ3g56g3*LMWuF2nT-$2j{q zXjPnuk*=w>MnAO3t*KzEX{m{hk*%h9(!@xqv{JfIvO}r#Co<6@jeY)Mc^LWo^Y?95 zP6AD=R0cy6y(}~eu2|m>#bn!ZWQ$5TfB(hIVA(g((Xd355ni$M#Ex)pH;OGKpP-qj zNVFCl38I$TS|B8qGpt~iA!#H#ifafkjHDcUUPJ+ldv#TO=mH&H3&<Nw7 z*d3Fg__BCyO68Is21M8f*Z~>}*!xlnSZ(@Xano=3t(g1abOn~t^@x-us59~dN`gPG z<$rUA?6)L6(i1LJS@F2Z4=$TEEHIpZ7p!qH(sc1~Dd9BP+p(TV z~J~>kq<4LpQ3KQp$deuGPO1NL%KtG4~;rH;FztO-koEt8WQ1;KwxICj> z)lDPs+)qkr?88-jXqE4~}N}C#B?A<1FU@R{VNA|AmFCSc!NgZWs8}Yvdopz&z zl4AE!4FDTd#4cpq5iI1RwUM==J^oVkKXuEzs0L{@Y~VU{ZuFT^UVG5itgG1c(?3Vp z)~YceNL&PL=92i|+&csueA;;L^?q}^YX5*xS$ZpZq()G<`x!Gz%*HFr>KiI zZJU#0O>&rDGs;&HSJ~;G>BrzP=+!$8Zv*T`Mx9REt9l$+%}T9$=e_!rpdA|#g+GZ= zo_gw>u~bZyWVQK&YT7~Iicrg6!!!ssVIyjwM_5+vfne3aDxT(X%Ocuxv)LO~7I;L< zN=uLu?H=dK50Jg3o!!~FoT;kOA#$zCF;6w4AumD+`}{;?py!yedwXU!Xng~uvON~| zom&D6om>0tiXD%)GfeA_&*CSF9iDGxcvXCR*KVa?qke*g&b=xUuSp-Fr(s3Ey?bD_ z7O%VQAs0S3V7pC!vfH^fpq7K%HcmktWI{H&2RqFBPcGI>juLJZGZmBog0&@}&=Nu< z3*O|W4LwYXq-HBiF0rb0FDV{n`snj*YfhwYdpRw}Hd^T%DMPDK9c~Jdj{8<3E**we zjy>TW6M3>iDOMDAa4-*ajSTD{KPC}oXFPj!Xoifm1VfJsry&(rJp~5F54!mX`=f+IKvqo;Z~xJp(t}QS*dX*q?li!NOS$uBA;JWLG7R5A=c0Nak&%~ zN~ORNB2pIN7v0bz;2Mg@VOWVesnipa$CAiavZ!)bnQE@!cR6_ z-`oytd11m?1$m)#Bc?_2_h%yM)qaBpVAWlz&X=H0S-*Ut_QS;>fKNDi{CTou_$|_f z0X8Q6z!Mf@BhGfkrC0m8a$h_@-ju$>cqfcW`VJ-eqXb>B7C44xjx{RHj#Ar8V6M7E zCm{vZkL<7N&YX(;tgZ5u^7wrTZI$uyF}al0pG_lCxvZ6?>GV;K#@$aVgjp6%Qnf3p zppQQf>&>k+{;{#sHjvqT(6#MyDwa)PNs~jYJ#7z9K7D` zT2}9G9A0F& zzNKYc`pV6(Nk%bOPmP$U*2+YEU7wQL)QV{wN)@UWb&ZfMUaXTGNt#|pnJ6Ae9v6mY zJUgZSi{_F<2e|-)>dO(Ll)fyJuW`#n+hZfi>eUYV+iB@u&)aQIH{biUtTUrLR&n3b zL0-RAAcBcPn+5@Th%+{JMG9HR*Ddd2!X^_&`LymEeOczVqLgbs9=Sa2@OrC+%92#$jcXB!5)ku`97wuy<||f3s=y2D$%SO>T~rBzo?wvXV9n+08sRdRQ!ZAAE;7Ak zw2`J*8NTiL#Q^lJuB@ThZYdaG?f5_M;ThCgLOS7)_Zf9q9D2vz>;Lw_HQ-I=A=g(_ z6&H3Pn)*npN`B%_Yd^KL%a{@HnaJkJA#NbdTHe0Ow*F#hgs&2&gfY)Tqa|@E5JZzL zg@ToiaLFmA!aW8fg0Jyup2s-l2wD&S(nStiU|zsut3Ji%fbl!z-@bsVnb6YI`aF-r zd}Y`g%i=^^nOsuQ-@s#cQjs*aN9#iCE442vPonGmFzN!h>DKvOL9_)U)(*@sE>4Kl`;?^O1Edkf64!#HQ zOx;gapP0IRx4aH2J9i77Y&3>{c-2yo=wT}Z-lZrpUurc+>R?{F*7XJ zCwCN$_z}jSVWE1-abgK?{OCIm zXmfQJn{{sy10Ta*t<^(~=m-?4jo@Eu*pPA2E?|lb1+g;Jpmj} zdyRgpr_)2WmtBs2m0iyGSx)@$S2tJAmT?+8;vc^nJvhI%0BF}e!t3~I3zsKf6Bkt% z8x!4^?Kzv7jO3_ ziaf|jnxOwl>H0(O!}??Dr|%Ep3pqZ+aHZcJ@0ZPFEf{qcc`V#rbZvOkIOVWVxc)4v zCQBuV1`B*tUZq#7*a_>K+TAq-wa3Dj$Fd)Zfy>Bp6hDQ3w4K=R>+-TKbR+{I%?1iWAyXWTMd!xGn z$wl|uZD?7)&&hkgZRviw>+)E;nRS^2`yTdOr5OmenoSB@jlj_ThzkpoE|GEO#R&;P zRP9Hl<;jc3tWW-@WLo%pAWOx0S!5ND1~!T^oMSxp=%bNH(r(WcWhe&FB#Fm__QAoA zWlzMMDLy#I} z!O-SJEo>P#6gr`UrR@mU-1H(!hKG%)iH)d>?w5^hJKN#itbaeM+;(+mo^XXA`OQl1yFI6W3x8i&(93rpAQ_m&t?ps z`=|vUmg3eg_bb+K2k5K8&)cKSJTILMiac&_^>g(5%=-Vj4E;U6reQ{gCuB)wp3GOZ zU6pWcIFC~Q7k#FEcRDH%kI^G(7Gk5WuMB49j4ziik3zX2zVLlm*|-7gnS2KUTgO|~ z=i1>$$uh;gy?}){&VH%$E+K;C?I!OWa(~eM+En9zf<@A{S4i@@crw{`$jH@oRz6z8 z`_?G0`Tf4#rrK*q*WUlYXZ@`Xz4L*cy&oJ zdR9sMl0&0t59uuAqdb)u;Zy!q&Mz_pzGCJ8$c>{g8AhlpF)f`fHS{E0($50RFFQ9p zAs$j%r1I79I^u~pPoCJUgE!I50?M>M=IO9k|_HQ+L6*Sq&`&z;QYf{(^rCJpMm=c3i=@qqW%^jyYxiM*_Z z6n8FT*}uyngl(fCkwe1U&5aM-9|J#ahW_dRU#v8vN+Jj9RDGlj9pfa33xQ+OZ*)C7 zb}RFwvmfY{L*;4e0#S*9||gG#dE%0 z-A02+A8dV9-!!UGty|}O_s?w2?hI&LVr#2X=|h1r;%kmlt25)RY@+k&-_@9&*yg1gYm+?_ubkT1JuDi57GW6S z-(EX3?+2!DxuHLmi1DpL>1h(hNuA;xy9=fB)(CXlSv-#0m+*2rwvQL=+9A)#_TZ~% zU7?$aN&kD87Qd~XmVl=jgZJeF@Y4@w-;*qZ*L^Pgms1Nt2!K?6L-%+)--@{Ceh=~q zxVj-(eLjloIy-ZCT0IcFY61{e%Us{#zxLK*JD)x#=+jV0n_-AYd!NJMfw$VZ)*W}o z@$_8t%?~LkO#1r^?+HBd$5W`9Puu|80K{G8N?<78}|wR(%f}bO0vn2F~64$YdG~snT!i2(&Ak z#hRmRobYh@P~C=%od}8cm47Y%*H}VtTj=O#Yv>#U<eN`_>VQ?U_( zDHvpq-?#G9tuji=j(O*CN1o{m7vJ2N^0-W2qW7lyvo`lNQQ8>~>Q-RbX zt$XtCZqSAu9@pj`!Qi*y9 zPl2jf?qy4SI=U#wA#@%)K z(dJrRRn<_~0GtU53zcmjlyp{jGqaX&o_uv>kqtF87dqQqpc*bYT7@ zxed6n$ZMNSC zxZDK4!N+|TnD^*>znnIKM zHj9hrzmw?pE6zvSS%UZL9{Mgv+KfkHGU7;*R;YVP^~HfsWU%u;fqV{0#E>RZxfl9- zM1=S+WAhQ3lEhFZYE(`XD`B`rxjz_~2oy!eq;z8K?HQSbBVX=*4getS{oYHt~C!w2GDsL_3|V_tRti=&Bhi|YHXyFvU3Kg!}$mWzC9 zxo-K=;_T}BzY&6pvuj3cmZ}D&^1a+a(%YvT1)ag_A^$v9H5w`4g0X+$ToAy z>5)326J2`ALtDv{hMHzlQ#nw!;QWh4^dk_;r4mb|6X{s{M86qL=MbXQ?LTj(MOB|f z7yK?qx??d_|3V&|x9Q41zrH$~=rBaN9oU**0V^Afh0?3%NQhHH9Yg(WNX15M2m6K| zhRhV&gO4R*_?;9XJG2}_J`E=f0jjQ!n{Cy@@V)wM#o*~Jr~By~xY2c8`0n(=pP%q} z7wOSTU~t1_m;~d9bIQ|a$Q836*`k@!CC#DGr%D0FDnekH%#T zd7!U6o?&M8w+o&^1|)(X!YYK%j{hj>#pdG4O~m1qq%jgjc+hx|2oSlExTR<}RsK-X z72(Ut(%Gb6xqj^iu}!E0x9Q4w^&Cl*puss#rdB>yJ*>a{0p7L$b`+Z}TnyUxR2{m` zmyy5beoh;b+R*w^!ubdEX!J|IDw-zS9D(w!<%l|cD6vwCPy#bt9V^&Lf(MSJ_d_^c z7Tdg85mu2QB^fOGE`m1QX=H75LM(_MCq$bJRtydx2QSIhN_Rgvpv%cm+zz<-H zrNqDJ>j4{z{=%978VhpT3d(vX_^#LS#4`C0uJm;;_(fID1A-pgy6;A=vQ zzVp$G1NiBceG;;q)(wpUKt~x+5>yRg#9s9(rm&c5rtAwcOOt80E^>PHwSiFP0>BSA&l4rCA$~#l!)!f<2{tV8%C>X zIQBX+V`>~Y7(@uimPn=fJ8d`{RdVtnZRbn%IN(Kxbsxu#{9F?lio#1W*3IPK<)2$B zP5b2j{996M&L_)Iu-T*zv`a1d>-wv!2SK#kZ~_sUc} zvXq*Y+8zT`X?FZK*#L6qCU%sG@8r0G3;Z8erW^8VQ^U7YUNO;rTpk1bdi}}1^|AeA zqHQ-3nYrsWJBFF(re1cU^);HEsoQqOOf%bmn5tru&*4lQ?^8NIWHUtQeGA=z|7MJS zzS;};L^SZ5cpB9;&+$3`ap8GF4R(JaMqhnD>@n=En;w#aoA}g^Al`^}No{DSNBT3K zau`#Ys$jAwKJr`b&$?|%l;sHQZ|p&!F)aKqj(maCm)_pO7)bcR4$w`R1{KRaMC4={ zq}n3s>;vS#dl8P>VbO;2Tp9Geul6(&VA1LJUBLr8uN(;8l*M(u*#Qs7PS%9LL9CaH zxxV|+lPvD!TGP%P_2&TmD8sGbb2;9+{l=NpYOQqvkBMben}s}Q85>D@!{O`V4BL5` zKW?M9TG*II?9uZ5dyyvEzZQgH$yvmc5#`xk_2IaxXxXTR6hi+$3;19zlY)WL(AGx9 zu+XSBB4yq!thyFnPO1nRPM(NU2^;X`+=2Tlv-KRY}| zzhZ~MH`{vMIt0KtV_22UHU&JxyP$4nHvk4BScy<>JR>n;W*R>CVYe7%EvmkhVyV=! zGAE_JS~^cqj14WqSqag#WhG0U-^D~kp6_kV!}}RTlEi<%_@L!tqGC2Zl9Ql7$$;bEMN5j9GRLZYJ%w(&~5)6G#3iuAH|sug4Bu9 z|c5D6yXxpD6z3Wk!dAg;D0{clL)w< zUQTaeiT=GB2G#;gEG88vGjp=o(XX%N7FO4DA(EecuJ3F74stFann>ruuanz58Z} z;sNrkDfG0BCwTM3?E74G;XC?i-Scd2q0|43_GF(iTfhTy>iMN?5Vac9xID3}R5x?y zDco1HG-I@BGH-*^;hXG2ww#MB{{l#nOKZ5%h>BxIMNOX+dO(;bWDJy!$k);5YUOOq zn=y*TKoE{2KIU|6%8p8pVwtZbQjX?I8vXGKG>;+o$*9~~D=DlDvrnXgm1LCbFse1b z>`O0iXv)?!0Bq+Hy1m5ehK&0OJ@)1pK(^xq@2+aP-t}A7U-!}VZ`wWd-KS9xa^3(u zo$sw3moG&00&*R(@e)(xf3;xHaTX=?>V6XPaBJ_iw@J^8P9muDneZDYHI0U486icz zCJhRSAi~vGdjd=o*tbb>;Z2Bx2N^z+SWuQ8Y;agGeD+IZ8wiEqPJz7OTsm~DFqk|H zpA{yMQjZ2Nj`(7!&EjCv|L!L5?f55P%cU0%*Bd@vP3Mw5ur z6WKs>>HFKgfF>T1ArY#x{#cr&=q?lbHW3?f6k(MDroWiOG@k^nS$0d9$jGtp5_X|_ z?o_5qB?JG{$pv4t$HO_XF4x6MlZ)pj_bCQvlvDwDDG8$}QEFQ%{9G7yFw#k$ozQta zN58>hQh#EsYqX8)MP3HeNfvja5fucdDHR-YyX zcgAFE+8|wdZ>O4qS4R%MSNA0EgZd9bcYoM@?jNvY{;osv0e&wCx4c==bj-+!DsjxT zRo{fPn{Mq$tMoCvIc>S;i1%^m6e&3`EkLMvA=lw z_4n5cIo@Yk%>IKf_OFkOBrpFo9bP6Lz)yvFZ-=EGua7nx&&xhS*Fnh4-LC8PX5L@+ z$e~D9k$xIDuSS2G_dO0>E#wxX6rr41g&yK;=HO`IZ1HHC%$yPM=v@_$X*ZutbEDsw zC9^XBx{xeop8tYbSy{kx`4`|oPYWU88k?tdO+EDWBmrdO5&lF=Y_1>4_C=@^@D(M5 zKgu(vD?`z8$+9NR2}`$og0%`mllY zDeI=ZI#xbb=zSYm=zWgaq3wLa0Aef{*=TO!u@vq~; z2u!2VW=Bz>xN#KfclZ_U>!$fyut|xOh$eEhsL*jzkv&B0BL#tBOvt{+9b@Qn z@^fn12`regVL=zX)piSX>V%<2ATj?#9L$iORoUH40a^26IcX{}4y@0?ajVCRXlwAdr2p0z#)(`_ruE!FjjG-a&Gbb=* zjb>(XeO9o;Z@!?p`l$i0I=#bjZhP-jY7L*sU~cZg_hql&7LO&LHts4m*18;z!s)*U z?BHm29c_lL zrpw@Un@{LveWCkhI&0&pnQP7WK3sL7U$RC#MuXX)$*4aZXgxi{T)bbx3%ZV42t5=V zyq|m2*sgqK<5YKlt3Nr^7;|5{DwB@SF3jIL1_WD|7J_$WI4GzXc=^t_ol1(!{*Fj7x8<$F8EAQlO{044mvwkxi!q?5Zxcr7F95}wh4!47Fg$@L@heiI?_H;9HA_m6lnkkl=56=k zRQ?41X(#QwYrTkJ5i^paNorGqgVw6YRGm$(-ZR!PVVh2rX)VDSK>!^>+8hyG>pl$wL0q#vLCP?Ly3AD|0dGX2IvOxRxr2L~b|1|-4(Sm#zm&_y500BRFi&WAv97a1ef37Y)(4>6Pjh-T?^ zAElg3Sk)7Ip?`z4RNSzhbN8XygR*p%xf69)ER3XWF0$8_I0GPk#YAP{DY@OYO*oTo zliID0S9BDqVRHeHy{ZR++s790TZmc3e4YoSSm=3}`Qmw|i#q&ECrID>?38 zIK4BUd%iAod+oP$`&Io-C_t|a3B(KYkv^E}9W`^=e5mQU&qokqR& za~9bF(~0UQcr|(+18oPYs zEt?lMm}D%@Ifg$-aggDVgFOXkMD+gXAxvOM4Q%}gq=_a)BE!AzK|HNj&8@~QvHp9c z({`#B1bx|7hA-j(t7!&DiiK#xU{!)Et6TO_I!-b5G_Cpc^)4sid4vn>vxe&6H#2_W zxzZtY2}tOker`aZjt7y|zo`x0*iJUtb?8(DhoYw|VVp5WQAs2G2u=i?b z6F^L0y3S7e#R8X$=ViYO#Z_V7w7;To=*&tB z34Gw)d^T^Lk2>*BG(pi*Ohk!a&JTMI2fK|LXWd zIy@QCqeyke1Lp#KBz~t`FOXa6fyLQbHQpR~D)yUwM*Po&>gruh4L-fwI9F=@l}`W; zp4;#5vZ`J42e5iZN5nXfE)G;xjqKITOB}Rv(oLkQs&_8GBfaFDD)`CZ`MxE0{q>r}|KX%&15*5{+HWnI%7p>W9ETR)s1{}5Q=&8+nY{A( z)2M-J)NUf&jfn<1ESBWrEUJ8}SEwb(Ix$n>IPv#8lD`x}B304IrKstU+i$vbJm?sz zdgF{Mx#s-*GRC<@%uz1wrOsSyr6iufRO_jKJXs0CGzqqb?5LbqzBVOId<*Mmj=slj z2b22X<4)Nc%k#`I?6a{Orq0)LE=vvm-AnseM*)8+SV)gK%8L811W)n|=7m0rw|;c~ zyHyJ2uFk51N3|g$^%kAwgBrfQ*9C)@R3LRuWezx_-*_25=)OtP1>dis`$Om*o~Ed) z!AHag`d;JDH%#BVj`%4SQDiwyK4^0R zM4(~U9x=s@D9K#U;};>w(PV$B-~VR;gF<&1EuB01K(hX019JZGU%~TYsbk?mf0V5< zJ%}5wPYjBsR40=#kLVMfynLv=dYTelNf1wX*(D0Gd z>|OD;|6tKp+fyIPA{j2iA_APcFb0pWX-wU(BPlU>3V0P-q=W_OOw=e=`_$k~gy;(; z^>6LL90a|Xfp}>N@t{5gug}Q(us=A}e`-gG@#YNg{#)_|7YnS+;!biN562o0MB(m~ z)0*nb7NwZ#$nFZuTr~z3;%PtBWm;Qh)pu!qEiL^ApvC#$vTr_0N_w0w*`%{hfJ9)8 zevv@?gdrnJw~1l>pzOfa9$rmxXoc)Q_+B1ot%HyLjpF4xTMu5RnCnW)C;p681lQVJ z_$dlKyug2kERjIG5B%Z;Zu=@$;_iQ_`I(ofoHgj~GXve~1%vmW4}PaE29VPS|Lcqk zU^TbJ@9m7FYwx)Qd^56O&}21J0t82Yc5n}f5`Co_$#F*YDbIrJvnAvdP7>u;qK&KwN zJ_2q|Po3R%qFe$1)9JMt*@KfmN*)oRP{prJFTb*9+@wb%|053O=^2oFyW<~nu}rDb zDUf31wjIp^XuRF}sGuMdu%;@`DR0WtO?!=R|A~Re-riFc^n%ztqHjKnTpnA~3)UhqoA8p5d*ElmF;ILD|Zs9TcGF}q^v(o>*|;lCL%P2wLfFWR?6N&E)~9iE2p90DGwfzX7Qg!|;$2Deg3V2u;+Z$mZahKKQMm;n6y^&`8` z%g&lm+s&lM`uorhv%^aLgYaY&*0YSbWs+0LU zj`=u+H2)5reyB>51>ooU3L|U$2 z5eS<|5I#LMHMP9FJpXS#-67l|J2it+3r*CzBNxW5t0&^8@`&~y{2gj4GyZ7q!k~k2 zL%Se&fe02dqiSi9G-=DU9bRSep8ncuO*Y$tYs&DD<-2TqG8Hy`LXvw&is@%c|)@`g}L!=kdPf(GB}Fwu3GJfFWPp zFaDEY#(fqnC|_P}yCLyDY$JI;Rm^HRhum~2;>dh!0`LQJ^5Z4!KQi>_0Qaezwe4+2 zX&z+yA>ek0q`9y`ViYpBtLZsh0g!AjV&<;M2cE%;l37{58Gz43pw@fGuoxuF6$=_tw-_> z0h23&w{;!?r>QM|mlT?7x6SO#-OguAz=W%TY;9eA?@{V~DpynzjpT$l2j8RDn@l-O zzu+Luu?MCZNcc^#O&I24paT*}qYI=H$ze^a8KTK$C%xs1v$D>+q)P$EKHB_+zf zpGRXoOjWVGCV)fh?VFigE7b>&Xwu@^5@ezLUnsEiLm~2bC7+FgMkt6`^)X9=O$dAW z%hh8jLSQ6+eqILx-`qF&dm`>bc(ueiTTyVK%X}r^(j2eSVEDMt@|BgBmGe6dPPzLW zG7+5!K5r`QLB23{Y-B@ZZ!HB=DzMj&T@w?pE*~vn;D^QQrnkkrJ=CN z-+0PgNZ;~Bddw*ipb0-_heyH%Kd;t^+fxN^JvJ@xN-5cDu2{BGapML^tiAAu^qgL zdztC~!1{NGe8SlQ7hf1xr1ci}K zu}Y|SNF;>fv~52kXao<(phPrexRw{U6<3(_7Cgx_K1qd^$#qs0`W^kF(r+*~`{X>QBd_=e zqZk@%!c(kQ0#W>roW-~D)X$2RbHf-J9fX}Z8d$unYT6nI*p#y6)w+lj8Br8b72(!Y zq-rNpA{cSx458#uzLe0hJ;_zRs-l`6{gq30vKn8Rb@^=0GGY{AGQS7R{csR(?`662 zYf)ixniNM+&@iNw3Jixd^~}E6%*nB%VHQ5WTi{8ckiy7g3`WWl5#bL)V<>BGK78FMN7uPrtC|W(n}QQ&mVM)rBHFsv zTdayjJLhwaoP09%pez=}%nn6*SYlu-UKu95OeSH}iS?>lPuWR%ku+w)@#i=f@A^<9 zZXTXChxgtz1OKZz#w;=qH@``aJ1^vYQMCEx^~7OHHGLz7z}QwD`m_=8m1;Iz+USCX z7{qg{0Y%{U$ZS}x7$RjT&0cBBmNU%7$<@@{4EU+sU3Wiy8uyGvhN>})Ri5C6^S})U zA9$gKIsu?FcnYKv9HUmn6HFj}!{OLuFlAQ}gNpH;;Q#EsSEl@V5mDBDoLaX*TE8GA zDnEZ+v>XBZJY=>N9Z4#~3kmsO35KUTws@))E>c)&uJ?Wvb?)(*P`=H_AFcW>z+~v- z%X5XeW572z>*uK;7+o$0zw6;r5--~gWL@}&`*|cBZ1O***wQp0glwv`_)6Kj)=X)F zrR4JCA=LOY(t(5$3Vq4UXu?dkx^y%fA~Bj+!{pV6KAmx!5vnM$U&U5`c_gTScK)`k zgV!jZf&bIo)-;BC7->-`7%S|nX-y=2?2DFBrh0%rxfzv;lXyaKk8Cj}<~IdY+|n<< zr%WSr%0cOD1F)C~M%oGL`m7A&(MNTUl~2ePlLqN0nK>gZmcy0CUuvzL=IF$wCODeM zb!S)SP@xJnDuTlBGtt;Twq@C^r09&h=_7S;Ykx%?{~+FOWgVGevsdz$0Ks z>~$7HGEV%3uZ)QNK_Z(JpHGrK`w!?0bQr1fnGG#Tkew617fFgO96tsz4Ac+1T8yHD zC1-lc9UI*f*B2k0pJhH)&mgW$b7}~}6mdke21o-8Fs)b{F374$VMoLNZq?dgOO>gH zKCkJ_K`n*KyPQ6$G88nzRGRq`Vd;&H(P8oT7Y> zqROzRk1p~Q=G1KR0tei8O(s0qVrT{*toEmg*W35!GSI|gH|xfeN5Ym5}OsH|42J&eU!e!?mpmQ&OV>qM?|*Ka(Y zRn09oO+_JHiOrfQ!(d^WS*2%FV3oSQSj9C#mT^Bcgd;L6{*jGMhg`RgtcK!BtDR?K z^^IOk=l`>S*~Rqw?R3E5qiXr!6e6HmT2YdJ!T+0#WyxY9dspiGv!@h_ zrZ~3F8}!djT|Fo%lr$C&I??1fIp%wr7QMVW^32~pF(+$hZ|h1H9%VWO4O#IHjcej8 zk&%(#Vyz5D;sf;zv`A1ygWTO52q4po6K|plPkgJU1tB62*rSNS+35z zt_AQDfJnTkGI$(82frs72wndH8r*0Ka@en+(+|=BMHTusXpb5*!D!7aiegJL9!=~! zsApxzNp!|EH2&g+G>uW$eJ-U&*J(hTqkvi9@v_Cf>rOzkduxDe?QxXvoZI=*a3FEH z!CX^t8h^$Zvq{QSW+)l9)mrW(3I@4vDx{Z9USnG$TNx^~pX{agKW-p&l5M#}qKSG` zu^Rmk4&)O=TgrHQBX-0_HB4=)T;<9}$tb*NmEx~F%4$>@!f05n7;-iGDI$}?477!v z#l@yYb;3WO^+TNysc?+TOc&gP@%85xw7gqSulMp$W>5nwhUfz2%{ z(+b*$?N@>g!C)i&M{}w7vXM`RaR@K>ZRj^Th(A)*bCXrT|J78ZMj( zg=hrY=}MEy3Rs}S+vg_=>aB%JRBFlV>QVzPV>*|Q2DP3@gNRYNN|`#Tq;uB?UV2ah zj`p0|+GQ}v8A|CGiX{oIj6hh3GsQ;A{1axGEknZBZN%~DG6~|y-ygye11U0`F{60P zIR~$N2aJA0n=pi45)FFjD^TF`1&XtXlA(ssToz8b(WM++)#;Q)QU>!>$jc)xMq3_F z)#bM6zdh?ZJW;BBksB=&W+-Nel>z?Q_QR8D2`OV~`-4xX5h&zLXKGc3ZDq-47))JE z3)0fGJ>- zf>jMH4KpAjB9g3PjDSTvLM%jvYJ?uA0i82v&fK|kvzaWCWh6<6@ygMofBWfAzxmF0 zzUP7qesb$AeXqWlM{H4Jw%sy_T`3O@`qdfFTPrgZX$eD)8#NjX6~_Gl+#pPd2Xo>% zKG=`#dNs%KsgPAeHRFmN*Ann;BO_aBJ)TKrVQ-(0#giE0si}!dxrD+{$1JHzDOpNL zA|Tm zbsSF!tZ9a2CJfzFRaKI}^?|(s7^)MVBSdEui1JvMi7I0lzak+83kh>cFwkYhv7j8d z>e+6!TrC$WrRlM;kz#4m^J@Y{MB)h3hvXbd^BAJdSvx!tLnQlm>8h(wHs5evgGh$4^>bAll7A%}LH$PZLP;)bC}1VteVLXa3E zu!F+XWdE^VFsdjBpxG4UO9<*Y3mIGnF63W!VY)arG0g<_LteH0a@BQQCM4BLA>Kbcc<%!beC%T%zy6X-%GFxUbK%5=gNXqY3?0`DX=<`ownY$7O1Yvy zClKd+cK6&Le*deFJ@&+(9)9%wpT2eOX&X^f3sOzQ5vo)UJ@w2TU;6T=-|@EFKK6+x z?!8Bg{L|O1S}?1&Sgnhb*g z28Ut#R8`Y7S=AI(O2+k=hBOo!64OPHGe|UI zM2(0-fo52VW+dnwOQo7yso9mP?bwcMyP*U70iXF`g$j`rS<}HZB}Ek&voJzT7-mA( zO$4zNAyrjPGX@f43J(XuqOevihn{W3taKiD-eBrRBHu{B2?c&G zlO+hbHM^^$6SxX4T#<=Hup$#(QFU;KFx^;Eh)jrtG2vW9A$ZaNw!JmmIo5w-+m>xR zw(kr=dda1i-}%QsZSCvNA4p)bJozckMOr{@{l{^TjWJ<(uF6%2#jy+Sk7EwXc8uo8S2M z*S`ME+rRR)&))WxkAM0z8#kUYXZAcvk{s8ClgU~QjGhW1SiMA?bI`%TASjrFK=thq zB?wYSp((PiN~W$^hRUK4D1CWiiDVpDryCl0fnerrrdq31Dy5UmloiP^bZ)j_415PHBNkp*gdnG89GMF;3GKeS>2uZRmtMNn%{ADbW z1VYB*$&;{R3B`&Vv2-k%vr;)do+f%M;KZYta*0C9Is>2K8IXV>jIpY!>0~CCsYhBx z(dbNpN=?&pxtw7b;1gu2e)fCf#EDv^>{Lo_wd~uqz;{^W(=eoU4p#!-lQ4qGgrScN z4ISOK?ZDGd!_1y}?s?z;+0S3zw*ARx@BhLVKf3PJ)tUtvHDUiv)?aGBEM!5mNw;c2MN!J-qONL$5E-5%D|Hfr-7v;xmWF~} zzbC_|2T}hqA(A9vjD-+U6#0JW2DBDL4s05T3KoELi^_V4H6xW5suB4Sbpy_Drm=P9 znp4ib@Zz_>>z(g-$2)Gm`R1#xy6UvkPV4CCAcWK{w^W*#m>3us=+6HFjcTU9y{#i=#o_H>lCf9}eg(i7L$3hPpE?jz6$$)`gb_xZ(}+fOb_BjF z6D&)ZAVIJIi39^e0-b`;4gI=du_!tTFtR8JK#zhTa2yXzvRZX&HP^O17Yxybr+E(O zw(mNiM}g01c=Guw7_UrTdwUcGj7887m@q;R%p6E~DFA}xp+g5CgB=*?hin#F8itlm zrYP%f7}&tr^1J*;06N+zva3Dru#Nj9`4^KGyS$xK5mp3n?as?$zabwk!P45Pk(pEHAFaN((^<(DiqTU%r8ZAvPIA|Lhl zjlJ^X?tA~b?gBtY^i8nd;imNRi$LotbkmC3Qb!=uL! z9o)5f=jIo7Z+YS1u5G=C_Z7y5s$(PW$#I)td9KyZ){3|G*75z2%(qE?BX0HEe4n8M{txbZq$evECy`4)q*4+|zU9#phpm z?zv~4dh*GKA9?V;zuohfzy9g2KimoB!3Q6B<<*ylhK48&bzN6g6?$2%R%d!hW+a5; z8Kq9H83k%F2Z8=i5{OC!!u5X~8vl0%D*pw*s5%7wXUTwRGc}BZWl=8ZYc)b}0WmEl1iKHG&$hr>cXgr;@Qh)}arD8(3Fc{Hc zMM93@LUf3AqRvr-HzwfMpP=?$6*$W}z^3V&Hh+ z{(b#Bwj#tXJpY_;{qpBez53FF58U~QkH2mGx&^rgJqVE-AvZ)Gg>!G@M|A+N;EjMt zAdrC96fhwMQ!KE6WrQ`ub%kSuFoIhG)h`9y!jiy*5v35KvXFe;l+w9$dq>y&MGKd$ zT)BEpYinyqds|C;J55=}P1AF#veRe z};C1taZ_v zSt~XyUVG+>GcVe3;p*g1pd-mCtHLXT%v8@@o=m1f!e+A_%!G3TYTdfgc85tyC;c zPmPZZ4<0{$?9idTyLWBhwsq^~S7C&?RC39J`KO zQjlioiDWF(5YIMP>6{u*Kt5gdoD;)?1N--m96b!veEx;!edEVJyziA4?|bl%x844! zbI&^^nKE3P!UofKA?x6d&)~4u3xw-Y*Qbsb0o)*@Tu}B;;3Av>R5HP79pI~QeStB8 z7Xbrdr8#gC6Odq-3?ooDm#I)0(vW1zN*q2mm1grgyVBV5t%X2MV z`L2cS3s=rxecFnR=dVBKvNJBaX47TYopIT9r(b%_sTW_n=Ax@to_FPvvo2qB<|T_a zUevXGP1lkY?ei8k&6<~K?MURCtrSdkS}`m|HzmbDQk{W9U=HJCNS0MBE6uHKsqQ&Q zR@_qA^#e>~KM1`b^25jvA_A5xgg7Z*Q{eJ{LM)LmO_LC!C`woNtaHyj_mWF4JM+vl ziG<*Rg~IgUiQ~OT_a8g5zwhY5f!-tAw!X4!$Cmy3clY%k86O{ZsujlTxg1ErLdpV8 zLrQ&4eM)^s!?>lXs?6cqcYWWbl)}3-P5VcGpu;C2*Ov}~{*OEVyT2IYlMOMhD|n`y ztoe76BR*qJjIw&rV<#mS(60z|#wcYWNYH7WjS*NE;vwh2#<~P7Qngqzk;>!%iA+w7CDd3_ zi>Hl5N{=TMD@HVfsT$TyuIN6OYJN0Xs+|~t9ngv4qdm2VEnL3rt)IH(7x&(C_XGER z{>!(XcGhX}bh6^m>7p}HsCi*v#N=2KT)u#9MG#RhqHY-YVO{ZP2nfQ+i=u!spE0=f zS>#g|L}3uppgvPP;v(XV3h-5^&O?EiKor$=CNM=9Qd2%736dqQVmR*%P~fv5pq@{i zkP9?4Fm&LpI)=>6qO(cVWl;#k1!vTyw@* zYfs;_?$nK|)~;W?eC3=4i#xjKHg|Nl&s*NUX!V?>8&}?Ba((Bb6^*kNBwD+)#x^zAsHWgkeoBd@kYOTKXG97yiG)x!4HzLoK^O@p z;HZLgEST&1eyx9tGP}E6uVkP_G?>kQkw8ww=)XvT7-J!45v&17z-x-GDVi!PGLZ#l}wBc4;|jU>+rrkgD3im#iAeaYCwyQ zKUH&!Zs0P+6kWEG%1$jn!R)dGOdYP z?ZiZNU~+mC_(v(1Wn!oy;?q@UtXQr>Kt#f)ER0x0dBk`~>k3>35d$~x`N0fA&z}J} z=`iqS;74IVSqML2JmU3jWWW*Skei8!Q9vkIz$jya1XS{=6j1oOrD0iDteBOwk{Pi2 zP}M^tPUA_OZ#KGSrROhhTD-h->AGbb&fa*z>o#3{^@ejUS$oF$>(9L4^m8u*j&(0u zoo=2b^kj{alF!OMtAsdI5=_eoGlQ(06wAu-oE%F_Rtk~=$*?5dkPL$ux@>5QuE@G3 zLj*Dm$utzx1gNH|o4Rgj609r+Q;jeSC0d8f14(dQ*Eu4ZVKg?kws&^4wzoC4wly?0 zoAE>}7B{W9VOeCx&csRie_$YjcOWDpL({U!m=-hOeWj`KzT-Uy_wG7&aDVUN{ryJ| z4)q-^j}I}gY{@(mQwfLdKqOccM!>8}wK7#HO_z(4q3_br6)eP(P*p{(4@$Ev9oI7y zihy$u|E&DK(;x)G4?qGy`M1C`wa@@#@tTCbfev!!CjV!N!LxJ9 z1&p^Y5oe&Elr*e|2arMNMu879^u5q`G)2-Btjk!FkS1eULJAfN#)yI)hKL4&hnPo1 zPzf=Kh-BJQm^ajW=!GXAzUL3W{f}S%?DxO=#a+Mq)y~bYxORE{>Qx_j@4G(zxzE1m zeeb^L!t)m|UaXoHlN88-#>NX{gCiqDqeEkLQgzIpw`A=p8?SiX#c#g(%4@D&bLyr{ zQ%i_dn+u0yUr3Rpa@7PXDrQ`X$EM2Vvg-+51|j74N{~a4E=}#sr(=SJqT$X zQRw=f;{^`5+yJESd7kTejvshF{5JCc-Z%`S2oO*nMk0(T=svB>Fk+C=22m8i)yyM9 z3VH-H8(~bbgj9no29?xMG9%gIT8da1CE1wkm>ym>Ne$8k=bh(nvGeV3NjVU4SGi6(XV>UdtHcEC3+tVO|FTi2^_JJx1Zg7d!=k z3d#f*f^kj-j|2^Q6aX;wB~FQ85E>1`N~BWxng6Odmv4l$C);M-LmdTy;aJkU3Ayk~N3aC&0cE=}Ulvm|aQLKOjZ%T95sRG6$3 z3wEsnmWL7WP1RLR(^N&0WLbhgszhW7D-zfrCKAf#(y4R;{EI9D%}$y)A_Vl4T><64 zKwu)!{}xEpV;(`kDTLu?|4qRN)gkJ4p#ehmS7VH!1Au>4K>zQ6Hk?ybkC5y&Dd3V( zA5K;Qp3B03MIqe9Gn>ya0DJZVu*|@NDPn=o>kR^!5D6oRU?3zw21O#kPZ}4L85-hPS@$rnkN0%B!zAL!dIeLM=P>Y381O^>Y2A80OjDr%wEf#rFSS4PWd46OggM{Dz z8ws@tW_jihJQ@Z70f=DWFCjAg5F{Z$W(ni}0{A2WHHc&QCG`1Upw1K-TnmA&BF^jM zhT%hFcpE|WUt#z$5m18#4+4mjuJ77`=YWnlQ)S6AG)^f4vU;}fx>4v6L`{t(EsY0` zgsEyMx}ijF6*dCTJbdrHzxw$d-~8(DfBBQAAARuH{@qStLS{i+#Ysg2TB>aF^ov=`Gri%7t*(sE5KcGPnh9UEV zu&&n?>V_0fO?@f?iv1aQ6bBLLD5N4{JY*CAYacNhL4~N-P#(cT{~ZulC;}b$Nohz$ z$VDUs1D9KO*{~CHJ?2wR1!h>{1anBsSQtc%6QZb+szqFsYj&Yrfi7|)X^{1)S}0V{ zjU@m85CBO;K~w~E(t~@5$hsMeC&2(Yh4%pd{`Lq84P4iO$PGhcG(>{QNN5t#Wd+tp zzz&Yr`^G609tB|(z#{}af-$&JSHz5AVT^U%1Vg3~=YqtNnS66+uDLzg*vg0spfIsm z0dqnGOaQ~$gIRMS7>AJw29J+i}Bqs ziXsM1UKXlO6g{L7e3Q{I0X8?>bAw+^+6C^uw& z?|QdAA5HWpMK!O64T_t@Zj+&AWW|U$skyZ3)KT*pm~ALv>ktMa2!T#=#8i$9A;(+~ z1%ACUq{Q<@&1U6FSSWfvlf6iGLSp-WM=g}xP^x*M?Rt(MxB++(FRb%4VuVr*t`}BM zgnnRGY`bJb%w;aMr%PeACWn#6I7s3LitlSQ(hya7C`BHj9)gfXsHx$&DQPlO5S6$O zkddcgUnahceL-!^g8Ctkigd`-z#_o57>_|>rbrkInDZcltwIzC5h5j$wMaHXN%w>n zFx87xCy;%g&;X%;p-2!g1z6Ggaw?LfBB5}k3ZXIt&_b^GRPrMP)*puOFkLm`K9eB! zN>)Rxp7ARnNDB$d6bA zv=12r2N5x9m@%_nAmW>bVd}7l)pSkMk--0n`ZM9N5T<4-U%RX;|K);*# z8(D8Q)5)2h)aL{J9|{*h+L=i@`ICBcJX0q)7!rU8NqEr@K#gZn0gOLe>w1-DtsLG&AJd8pw1aANaqRA>OG!1!F2a7@x2HX#r=TisL zP>Mq?A|V)-1)Szf5O)=%NC9Pj6a^s-Lhgqw1jVPJ&qPE4C=3BOiU81kfW$cF0E#)q z2rQ5aaLVA4S%7H3*-3<))xl^WI7K4DoYf%^%p$6nnH2yJ$^{gT1OWO5UoVgT4a11~~;;0S=4E;MKcr3gJB*z2@E3nLEjT1viCRZ$^7yvLNVZ6EMT83%MgxVgR0hdgqo(oul^qd#u%PP z;Ozqb!pw4*n3KRl%uH2%{$NVbe@df{3n*#k`7D*zMMy~IMG$ImGz-tr4qlkqO^dHGmz2|UFJv7+6YuDcApMC5%zx?x$ zzx{)6eChkQfBudieDjfe?mDpL#j)du@kl=QY=_)cj)Eoh;PGrz&nh-H^E< zbpq=6)b=PSwjV$VLqD7;5e;E1bf$pG@qbs?Oc9I$Xf$&%BVKD;{~_2r*a*T15x6{w zlMSFPDE}y)d7!!KOliN zpq#`>YRE{)2)I-Sfei$jnSSxVl2{-hrzH3c>Uy2SP$}xK`tSb)A{<)%_Z$CX4gMeR z{9oQUxe)(d!dk#8z`6@jw+Dgh8x2J!aQ2n3%p@#WB5uTEs%a9femJYdbx4_6adLFu zuI&%qch8T%|HIFJ`YRuP{|DZB<88Nm?9adY`HmN!ne0Cnm8P&$!ERLw1C>)nFqu;k z1b(Gd7#|rM>`xe4Oa=$Q!dkUjm?}?A6eq??6BALy0)`@nC?}N5AtwK@|8P!w8g+g%OSFh6E!P!5R`t{5|sGIrwpW?L|c+!8?{*wmv&>2F2fr>2G!xAh? zeY>a`pb)qREdVDKkbskyp!|2ht$zyw`z}bzgaD?&l)0{J+jgy1i)IQ`LPr6wb?m=C z`Tw^XfsufX5kxDnXP8^y9|9f-4AqF^{{o6(`s?+A{O={Mhl)C%QT7Bel&P-SpOg0lz-Mk9}fUgUWY%p$kO zTo?O+6a`XfYt%I*X6i&YA@xKEg^0TL*olFiuRi~$|M=~fKmX6{P2qVG>=*GZyg20PHXbtoWC=D5p7>hWK5Tuu!a?aU56}Utk zNXGtULSPL4X!Z9y2!Z7jfh8pBWP~3IU>&Wu0$T-u#wi2T>lx#W30enZ&<>hIMO}eQ zK>eC?cr@pKm;4{)Okm!D~aGUfJGB9S-8Gr=%j>)0Kf}?{Qo;(^8X!J82Y~NI*tPlv1V5S&t*|4 zXoMLB^S3lL88ecwSC=rRA$4j=O*Jq_z7y5T+^(uD%ou7@IuTbSps|&RnaP;0E38@` z={DrB6nX)tRD^ZV5U%|w^dsMk0$)VYOowMSb)16t0LMxY z7#d~ZP2jJ9O88TkP{V0NDP?s*Ii;ZSh_Vo<3x>&{9cREh0p+zNtLsA4Z*dNd=u80x z0F@vC|E!$ULHaLi>F`O5MUHJ3rr`{fgaJUN5uB=7ikvo# zOw2UWaYz%)S;IDst{)tESZQnf7*W(o? zk?;BCqE{(}c9nS!iUPuz#JL3Q@I6+C%YBEr4)to(twwHzaPSuq<`Ll(yy48gpg!3G zBB5Xc=*<}yvq}I>`o}+L0(?6O&;g)> z{O^EYoUHs8<)1G>uY+?Wz>nA81;z=M4O^eT0!UWLN+xu^~m`P z=gyuvGB%F$pUb$*na4OImTIX*l0{+C?@5utZx9>}3B_I=cz!deHS2ZkKHL(A;Wd*H zV^t>NUO(L1Q%Oo?7EoLBoWOTIRBCailyPToV`<^mFW-FSfBui3{o#Ln>EHkUOF#a1 zFa7x6zVatOfBnz@^zs|8%wD^)zA)3>SWP;uyx*Z|LPbKdh-RS`AxZjH^laMaMmiSe zr?>^QLvf-hz|cc&s8s|@+#tzP_!6sg5vwefS(<056eZ0Bq86Fq1dT0rmWE}Nl@~XHuba5fU{MhQ-5Np)l)1Gr zs)E)z03LE=Kz_yu=d=o_5f#IhU{{5a%#VsiX<2&rD&9)6p8?lR{;M& zRH^sVL1t7{p{SQJv;{DN4ihK3Zb>O&;uqwDO6vpH84kD8jS|#=-9DipZeq{pM2u+ z#~%IE!{^VRJU%rxGVFUUMIohCuBCzkjnNjokZ`0~93@ZzcRfm(G1lVnWC&y2b$zN8 zH_9>ECB|o_=8&fE);*WzBH*On@EXH7?0PI0{k>LeW$D#F{^|euqyO~NKlr_${HuTd zAO6k1{I4(l7WT%R+CSS>PaB5|*W3kWqiHVI?{j1)u{9+JWWt)^BJqqTuPV3{IIQdvCu z2m~c0RtXZ6Qd(;%WiF-4bHL=vDs2E`WElq8jDhVy{R9#~siG`|)>=qGF&$W%0E`F{ zz+&sL7I_@*)$7fAqsbus=&*MJsw!J8$bcU(g_Kf6KVDEmTz2D*gD!=IYpx9ylfx-u7805UeV18M#)7!#*5yC7S1|e|7 ze=`685CBO;K~$Kos2}QF!9$)re&Ufw9(nZ9M<4slqmMoI*trW2pFBN1JTgJKlPe;% zF&ewClVnPWJeRgubr$ySxy2tfd$0kY;liUBzU3=HR8Ev&MmKynV3ccR^PFhuGlIkI zXtP!usd)_#7xlc~-oAb7%Afz)&;RJZ{I@^&@lXEszxc!7|Gl67=a>HEkAHUMwU<|J zU+eFz$*_%g9j*n}IsBnRl}C)rv`cN=YsbA#8t#j@pQn+Msm&#trn)$|a;rHtE~Or0 zzC#1Y5lJYsG?%H$g;lvVidt<8SOWKGpb`wtR6%P^Fz_m3iZo*iYPBIHV@w$>3LTV! z!pqoul0k-oAq+=q!f+PD5@MJn2tOPK?Hn#V|2P8_M#o0h_sSw#sxVh~0tCxq2&zVEsY7E)P}mcqbNa|yqc zC6UaM!WXF={)Z8KE3z6NHnPYoo=kO(TNegQ4IwJp*=VmVug%_^d*||vw_d;Y<}a?k z@$%I-URj*Exi)`$b7i5uy&mG=iesuwn9f|H9i|X1^kJU%U>%(KhGHJQ8t|5*!j#hYaFiD!%#;5#=W5M`T zaAc}6aeQR*_~^v((aDpe6DNY93BzlN(EV8S!mN+m6WlA~1gnr?Ez-Mz*}MFQ;h+j+ z2L-?YU@BC6MJowt6$J$leIH*e3!zVt6 z*BbSsM~|MnaQ@Su{`AF*7cX46aOU(hB*V=i*TwPEY9*5>OydHuH=XCy8r1AMj5Ff7 zJn;MgKOFu^#9`QN?=q!nE&;B!PswoL;X!C>d;&Msv1X(0z_MhX^s=ycze&Q*(yi+Y zw{9%X+*q1>cYR@QeR*zcWodhDDeCSf-A>lu7fFa-P%UAHF0~9UPDzprD>5UJJd0!! zin!0Ma)@>*ahPFLLl?|wgB`apE2GPxl*-GXWIo^_0AFFim)UhC1P=y_9}FlkU@E?f zR(gldEd?PA2NX&{3lM^Z`~X;M9tc!m?*#A_AgEfxnkXtQ|A9v;=mUYIj|H~uCq_}( zA%oQwE6DX~L(KDYOH-lxY2MHB5RBAWl;xTRLu1FzoPYQ;Pd@&|XFmVcZ$AC?XP%bSj{I$=2>8rp~zxfs5b6ewf&yRwFaQ{!Vn7EN2rCA1Fb{?y7Sl`6L4sp@0Sl8PB8P6Mj}!Xv z(9p=-V>df@1^JmXocI ziUdbqX_R&tuLr@%aC35Ol&BOJLY4I6{k?8$b7y^deQ9oGVRruZ&H0&kmltN&mKL_x zS6f>f?bcRzZyWXoAE-rQafifZm0I|{8nz60W0hM_3`*tbr4*^iQfrhkca2afmFKt& z$~@02zM_a$Ky(1C`NKTw0U!hgzzl!}tTDC>n5M!Gv5DhALAj;;?lMB!2Z1e&_8?97N+>$HMe8878^c7#TS- zb>{rVzxKH=JpHAwKK#UQj2u0osbdMX1gjao4-1?SYOuLNzzO}Zfs_HI%HM|LP+j~tt<%d0?-q+h~l?Iuh(mLyL+8(yW8pP?}u@eNg?4wh=DCNYHp)}&lw!2 zxH#-~c3WwMh0h5fpeJs*Fggn2I8bWoFMs75-}=V0fBhTJ{r1q(_71-ncc_>g>amC#O!;o6TIpv^l}*L6Zfrh>9Qlt9tUG=%CbqL2>W^m;n$4 z4oAU50)Tlh6q90^CA9Eo*e-0rfDhv|48zWTVTYYwub(6W?=XY}Sn?F#^OCT)A4j1z zx>2u99+_y?Yj9;QXT)fk;RM?6cRHQjmcrsLN(EzMV|aHxapJ_($*E%}j=?HVpFR!A z$jAtc%@~tpaTGeVbG!4WyW`i z@3NZb)oaBE%x2xI2d?W-W^^vHGzydbZrp8ett_uEF9EBIi%W|OOAE6L^RtU{v#p)2 zz1GftryckE5;qkobS_a8`T@{AK$iiHRzS=sSf@sSWI(|TG7or24r5TKv8sSE)>?8X z(1XAjs`vWCdF9%@e zfT6Zvh@}8zCAh|PQZA`q!p#|8T-=-&|4mDC@A(&g@Vys*=ld`G;JM%W_7lJH`D0V3 zlp=e39jr%ISdHrhK|dpqk!#{JID z%Hqu2&1=hZx5CbD&E?qZ85VMR{zTshhJ*7bDFPfKx(V)sP-H`Xz+y|LjwsdUJB($n>ex=N~$E;oSN2=gvKJ=Ir?R#BgJXbH^yH;SwqJ{n~JIgyO(LIH$~^ zjzeLBl;qkdWi$g#9o~qEKdu(m9mpJ1nTVwYpy(Ut`<@lYYD3 z-fnMg>}{;=tu3w0&8{xYY%I^WHkaDlYu(+=erGf6ZgP{jCgnDDb;eBUsFZ2p;DHy_ z>YSRKYE4W5t2MROYQ>DD+7uMSww9E7r3Q%w2ytxnamzw2IN?)msj=1+lv+a#Va0-> zj9`gaP{wLCd^-v_cL|}^0t7iI_7{W7E$TPsFg2WU&JbvE#38w{N*e(%)MmAm8Pt?z z8M^H{e!bS@@c9IZj9QeyLL(MioJL1DBLh%IN>JMHg1Y0mmJ+EZ2hyBlJEOUFAT+hei=fFa3_+F$j=Zo~FS zwA0;~+g-bzcD6i|xQY*CywtO`Fn0iAP6#KIKY-%7kT@K$(1gQ5 z4Won>po|qjDv}PtA_H12bXjS%poS1u297d>LYdSOP|T%YcQu|6J>HAf;vj2}OGeEQ_{nNw$uPE2~-jr&n+Yi9!oy_MCqwRL680GL2S2v9KC zDl{dUQo{)1%Gwg$y>8fxbOtRssDGqhyo`-CN2ex^!B?I;{m}X8bJNF99vK;{aZaS9 zc+@GuwZ_VI3~>zZOpFqbQojJKoqL4y!blw#YlOQFbud`0T5Vy_GBYA>)_BvWb*_CQ z9GST?aSCK=za=``VQa0uxwNx>dwcEH#>$PY`O~wKaFSwRp9+K9lUOsNR;1 zJ5JVTS;Vr$h{!@wLgX@2LQtiu-ZC6+m7&TojNLM$h*kJNLvx9ABBVv$EW;RF%9$cm zXq`zdbE7mZo*IXFZ)F6-fz)1(xF>2Z2F# zP(&dk7)K#B^e?BDl6!zsKv9wqTcYACip-Q!PykFN957Y%FH&PD`eiI82>V~bBi&L| zZHh@izlpIhMP_kYC0c5Sdt;*$r%p}-lShu#YfVb{&h~C=XRp22-S76pew@Ua$Z{!E zEofjqT*v3wC7J6xejU?OYl=k3G|Mw#a)p**EWYCgm`_4I?lf!liP5nW$EMDno_^%~ zg-V|-15XGWj>814B}s<*q*S@F#$cUUEE0iOu5{t7U;&z2 z!>ln%02Y^9oii=D(T*|PD39YFNPTKtE2$QkXeFXN>+NnV?5@siE#6w2y}oes^32s= z-n#VWjkjLiUYc#K%IZP{*B-H(GQ%L zMsNTC3Cl@DK~#VA{qKJ7sn34y)QOY6>xwjq`n?_=8`^t2+qfVsEX>`WpS`)VG`qF2 zyxZE0<1kBOktH~js$6I#tk%{jNGfDlUrC%qA&|yVzuyl-G#MczNrF8h%Q7Lv{hfb* zNvVSekoPb3Ua6?)y^`Kv4&@^QXoZTeXeFuF>%Q-EI2^1L&I7zsj*Lu9Oq@D(>iF^F zxcEV$wT3p@?RKlxip!8BNu`rotu{VBj^~-7p`k{jfy|Cm93~B{Llw)h*=$yF9CVR{ z4FQNjZy2UhN|r%nnGvZQ>pLrp8w)dQbGKjpzyJGRf*?ybzV*Oqh^84-iZte+=68TVwg4{AgqHzEXzzrT|)k+Fpnw#u~{hbEU5 zA4Q9YB~Cp?Yk^mc%5wtGDGU+aLXRt2F#{gadw`?|Vvr4~;0F{V2QYX5asWy1gP_*H zqsM*}@AacdO5->@XwX`{pJrhcNy1J({E272^ZXD0&X2zH{P&-F>I;*TllUa>Qk)&4 z-L37_<)!8Mxuv<=D+{yB3wSG=Sy`TIZEYk`ms%Nk7`zj>j>~cQHX6<~OYq1L_j@u; zWR?inXPRUQ7|iED}s#y!^6W+4l+Yg0JMa%r~x^Vglx!8+Z z6_6P~PUy2zW+jK&qaox+TQGIlA#4)&)iY<#OrJV^^2CW_lSe1U$47>SVZ`;I7Wlpg zBXk@_aF(#}Glhu@$tlGsD5Z>n<%}`T3u?=Gvz8h|EH--_F-&2u&05e5ygH15Q_pHR zPl7X%NK|`AY_Ij!7B}W@%wNCs?pv>4dF}tb^@~4y=dIVSUwVD!`rE6sH(Tq=;ofG} z+f#8@MO~Hb+q6$*#AM8M;#%Po>6sjUm}vo6B}`sG;gQ+mskVScqv$aJMSy-3poR*l z1k8Z4I{|vBgh+ia7(#n-BCN%2op?d2Z8wqoun3VKKX>7gCqMi3=YIS77k}{Vx1ay? zx9t+NhItx0BuVaC>F(>M!T7y>;vAuYenu-vn-6 zc@t*2wKCIMo$G9^gnL^u+GC>c=`^qzl_?h~lNrrYDsX~LiA;&eWQkk~l}m;`q2C21 z<^F&j0y~90;32;U$oxPIvLW>_4@E=cP(4t|kpZ&>`as0+Ldq)23x(yx2DPb&&OiFp z7r*iC@BG$xU;NV7zBPGjdZ)dAb7p>ZV-s`6jE#ExtBVWQ-@bC~@};?3@3uBKlYTGi zwetb31XBC7?=s!+Ip9zwl3uT~(`n-^wAJtKhWp(#?BT#E6ZpVbWr>oR&82}-jAqtw zVi_d?jtv2}UEeE%b0<_|`8Co?pP<0|bOTC8DkuQvFd#V$BvnyVh*4s=F4i~akYm0E zQKTXYQ-SicEJIEJHVHcf;3okv)udP1U|p~=oM3^%GPH*L9#r+Cs;VG*f>vNiO6CT) zN=sbE1J56BG~o=#M@Ekyn>v2<*c32%^yrbvV@D<@ajP6Z>N+qkhx5V>VgijJT5F^5 zga&`;@bYgtVBnlN1-PqoWmEy8@VcXz*34*bH6B>FQI5?6ssnBtj%~VR$ajd5Bu{kI z33oSkSLat|uFqb(bo=rfSAY47>u>$y-OI1fUi;PJ%_}RjH#X*PZY|Ep-foW9hqzBf zOjXK_bggl@ZtI_qy}*i`U-1^6op==4NiMudZ}j+i|Ze zlTc-`&xuPdHJHLo$|y_wS+t)gwbnui*ckjCgphzD zCt8FC5Oo{}Issr^$Oel-5~46a7$Gi}aFT=LC<>xNR3)YCbUJXV{eB+>g%Bucj6vln z3!4W}Gnznc01BGINHo!g7|RJ|gu)sf#$k=a_)Ic1JU%*xN1bDnNAb*aV(K_dadLce zeEbN`w0PzjX%01;LybnW=HoMGt!RZisK2P$81%~VYTWe!R#>mcxm(mvSG+PV71%U51|`PSQ) zX5P6nfAgKyxm!Cci|x&g?(TN4y^D1yl33tIDl>-Od@O(-2lX80>7jrOhm#P!A2v5Z zv-!wlk3avyi+}s?{^+aU{8rEyzCFKyZ{^)E>L+QZA8u~97ME8S%don$XLj z7^R8Tm@R8mJqS1>xk#gaw{UuKXtZ#caa;xi!&L&iB3>C`Z-f+&k(Ov{m9?5$!WiL{ zRZGp~4j5Jj45jMuUpk5^+hK~b55(a-ADl;3A3XEnoK?>&TFEOO6o3R)0bq540`kuB z(%cDEQe{z~h$01L0r1F=%V88nP#E+Eqw;+pHi;uE4z75!0R<03MJkHJ6miP!bUG*n zhY7$kQ3;aJIx0kQJjuW^afU?q2)vq7TIR?vuoX+3TogLM2}Ok-cW{{mCMSz`9hf3o z92=b&9T~^&5ct09c*sTwgNIZ_(1^nD7;`A)s2`(1Z2FQ;)#V5MYJ$7!!Zgu2#g6mi~8Z-&fePM=ECgy?5($7edY42uUvZbjkhmdx_RyD z?5%h4Qn)lfx7*ro;kkLYwYRtX{{a91|Nq Date: Wed, 27 May 2026 11:28:37 +0200 Subject: [PATCH 7/7] Delete src/main/resources/README.md --- src/main/resources/README.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/main/resources/README.md diff --git a/src/main/resources/README.md b/src/main/resources/README.md deleted file mode 100644 index 308a0c1..0000000 --- a/src/main/resources/README.md +++ /dev/null @@ -1 +0,0 @@ -This is the projects' recourse folder used for documentation and diagrams